eigene Sounds für die Taranis X9D erstellen (Mac OS)

veröffentlicht am : Mo, 09. 10. 2017 geändert am: Mi, 23. 05. 2018

Kategorie: Computer --> Programmierung

Schlagworte: quad taranis bash macos drohne


Jeder, der eine Taranis X9D (oder Ähnliche Sender für den Modellflug hat) kennt das: die mitgelieferten Soundfiles sind müll und die Soundpacks sind sehr umfangreich und können vieles, aber eben nicht das, was man gerade braucht...

So kann man ja jetzt bei der aktuellen Kiss Firmware mit Hilfe der Telemetrie und von LUA-Scripten seine PIDs einstellen und auch den VTX konfigurieren. Einige Funktionen kann / Muss man aber auf Schalter legen. Z.B. die Outputpower des VTX...

Allerdings hat kein mir bekanntes Soundpack dafür vernünftige Sounds.

Mein aktuelles Soundpack ist eh schon aus mehreren zusammenkopiert also warum nicht mal "aurfäumen".

Auf OSX gibt’s zum Glück das kommando say mit dem man die Text-2-Speech Engine des Betriebssystems zum Arbeiten bringt. Damit kann man beliebige Texte "vorsagen" lassen - und das von der Kommandozeile aus.

Heureka - das Wunder des Unix-Betriebssystems emoji people:smirk

Say versteht noch einige optionen, mit einer kann man die Stimme festlegen (-v) mit der anderen ein output file (-o). Da wird das file als .aiff file abgelegt. Das ist etwas blöd, denn die Taranis kann damit nix anfangen.

Wenn ihr brew noch nicht auf eurem Mac installiert habt, solltet ihr das jetzt tun, denn damit kann man sich die ganzen tollen Unix-Tools holen, die man von linux so kennt, z.B. auch ffmpeg. Und genau das kann uns das aiff in wav umwandeln.

man muss nur noch aufpassen, dass man die richtigen Settings wählt (32000 Hz, mono). Dann kann die Taranis auch diese Files nutzen.

Das ist übrigens auch nötig, wenn ihr ein MP3 oder so auf der Taranis abspielen wollt.

Das script habe ich hier mal hochgeladen, mit dem ich das Soundpack erzeugen kann.

Wichtig: Nutzung auf eigene Gefahr! Und: Vorsicht, am Anfang wird im Aktuellen Verzeichnis das Verzeichnis SOUNDS gelöscht! Bitte aufpassen, wenn ihr das aufruft!!!!

im File selbst, könnt ihr ziemlich am Anfang die Stimme auswählen, mit der ihr das ganze erzeugen wollt.

#!/bin/bash

voice="Daniel"

#generate 1-100 first

rm  -rf SOUNDS
mkdir SOUNDS
mkdir  SOUNDS/en
mkdir  SOUNDS/en/SYSTEM
cd   SOUNDS/en/SYSTEM

sayToWav(){
        fn=$1
        txt=$2
        say  -v $voice -o $fn "$txt"
        ffmpeg  -i $fn.aiff -ar 32000 ;$fn.wav >/dev/null 2>&1 &
        echo -n "."
}

hier nutze ich die Stimme "Daniel" - ein UK-English Stimme, die aber ganz witzig klingt.

Wichtig: habt ihr eine Deutsche Fimrware installiert und wollt auch deutsche Ausgabe, dann müsst ihr als Stimme natürlich eine Deutsche wählen.

Außerdem werdet ihr in dem Fall das Verzeichnis von SOUNDS/en auf SOUNDS/de umbenennen müssen.

Da hab ich noch eine Funktion definiert, die mir text in ein Wav schreibt.

Achtung: das AIFF file bleibt vorerst liegen, da die Aufrufe von ffmpeg im Hintergrund laufen. Das beschleunigt das ganze ein wenig, die Files werden später noch gelöscht.

Mit Hilfe der Funktion kann man dann beliebige Sounds erzeugen. Parameter sind zuerst der Dateiname gefolgt von dem zu sagenden Text:

echo "Generating system sounds..."

for in $(seq -f "%04g" 0 ;100); do
        n=$(echo $i | bc)
        sayToWav $i "$n"
done

sayToWav "101" "200"
sayToWav "102" "300"
sayToWav "103" "400"
sayToWav "104" "500"
sayToWav "105" "600"
sayToWav "106" "700"
sayToWav "107" "800"
sayToWav "108" "900"
sayToWav "109" "thousand"
sayToWav "110" "and"
sayToWav "111" "minus"
sayToWav "112" "point"

Die Files in dem oberen Teil des Scripts sollte man nicht ändern, denn da werden die SYSTEM files erzeugt, die z.B. für das Vorlesen von Werten nötig sind. Da am besten nichts ändern.

Unten kann man dann beliebige Text/Dateien hinzufügen, ich habe hier nur die Meldungen angefügt, die ich auch wirklich brauche - oder zumindest fast... ein paar Alternativen sind noch da emoji people:smirk

cd ..
echo "Creating custom sounds"
###custom Sounds
## quads only
sayToWav acromd "acro mode"
sayToWav acro "acro"
sayToWav levelmd "level mode"
sayToWav level "level"
sayToWav stblzmd "stabelized mode"
sayToWav stblz "stabelized"

sayToWav beep_on "beeper on"
sayToWav beep_off "beeper off"
sayToWav vtx_hi "VTX high power"
sayToWav vtx_low "VTX low power"

sayToWav thract "throttle active"
sayToWav arm "quad armed"
sayToWav disarm "quad disarmed"

sayToWav eng_on "engines on"
sayToWav eng_off "engines off"

sayToWav thr_dis "throttle disabled"
sayToWav thr_rel "throttle release"
sayToWav idle_up "idle up"
sayToWav idle_dow "idle down"

sayToWav batlow "battery low"
sayToWav batcrit "battery critical"
sayToWav landnow "you should land now"
sayToWav batfail "battery failure imminent"
sayToWav timres "timer reset"

Da könnt ihr euch aber austoben...

hier könnt ihr das File runterladen!

viel Spass damit

erstellt Stephan Bösebeck (stephan)