Sound mixen in der Kommandozeile

Wenn ich den Tonschnitt für den Ohrkrampf mache, ist das ja immer eine Menge Handarbeit, weil zwei Monospuren zu einem halbwegs ausgewogenen Ganzen zusammengefügt werden müssen. Der NachtNerd-Podcast ist da deutlich pflegeleichter. Warum also nicht mal versuchen die Produktion zu automatisieren?

Ich nehme den Podcast mit einem Zoom H1 auf, das mir eine Wave-Datei auf den Desktop wirft. Diese Wave wird nun von einem Shellscript bearbeitet, das ich im folgenden zeilenweise erkläre. Zunächst mal in der Übersicht:

sox $3 /tmp/out.wav vad pad 6 3
a=`soxi -D /tmp/out.wav`
sox /tmp/out.wav /home/andy/Desktop/Projekte/NachtNerd/NachtNerd_Soundbed.wav --combine mix-power /tmp/mixed.wav
sox /tmp/mixed.wav /tmp/$1nachtnerd.wav trim 0 $a
lame -b 64 --resample 16 /tmp/$1nachtnerd.wav $1nachtnerd.mp3
id3v2 -a 'Andy Drop' -t "$1 - $2" -A 'Der NachtNerd' -y '2012' -T "$1" -c 'Gedanken am digitalen Lagerfeuer' $1nachtnerd.mp3
eyeD3 --add-image /home/andy/Desktop/Projekte/NachtNerd/mp3.jpg:FRONT_COVER:NachtNerd $1nachtnerd.mp3
cp $1nachtnerd.mp3 /home/andy/remline/static/podcast/nachtnerd/mp3/

Der Aufruf für die Folge 007 lautete

nachtnerd 007 "Jane Bond" ZOOM0002.WAV

Das erste Argument ist also die Nummer der Folge, Argument 2 ist der Titel und Argument 3 der Dateiname der Sounddatei. Mit diesem Wissen gehen wir das ganze mal durch

sox $3 /tmp/out.wav vad pad 6 3

sox ist das Universalwerkzeug, wenn es um Soundbearbeitung in der Kommandozeile geht, es kann filtern, mischen, bearbeiten, schneiden und noch vieles mehr. In unserem Fall beschneidet es die Datei am Anfang und am Ende, so das keine Stille mehr übrig bleibt (vad), danach werden am Anfang 6 und am Ende 3 Sekunden Stille hinzugefügt.

a=`soxi -D /tmp/out.wav`

In der Variablen a merken wir uns die so entstandene Länge der Datei in Sekunden.

sox /tmp/out.wav /home/andy/Desktop/Projekte/NachtNerd/NachtNerd_Soundbed.wav --combine mix-power /tmp/mixed.wav

Nun mischen wir die Sprachaufnahme mit dem Soundbett, welches 10 Minuten lang ist, und am Anfang den Vorspann, und danach das Lagerfeuer und die Grillen enthält, und insgesamt 10 Minuten lang ist. Die Gesamtaufnahme ist jetzt also auch 10 Minuten lang. Daher:

sox /tmp/mixed.wav /tmp/$1nachtnerd.wav trim 0 $a

Damit schneiden wir die Datei auf die zuvor gemerkte Länge der Sprachdatei zu. Ich hatte das beim manuellen Schnitt schon einmal vergessen, was am Ende zu ewig langem Grillenzirpen führte.

lame -b 64 --resample 16 /tmp/$1nachtnerd.wav $1nachtnerd.mp3

Das Ergebnis wird nun in eine mp3 Datei mit einer Samplerate von 16kHz und einer Bitrate von 64 bit/s umgewandelt

id3v2 -a 'Andy Drop' -t "$1 - $2" -A 'Der NachtNerd' -y '2012' -T "$1" -c 'Gedanken am digitalen Lagerfeuer' $1nachtnerd.mp3

Die Metadaten wie Titel und Autor werden in diese mp3 Datei geschrieben.

eyeD3 --add-image /home/andy/Desktop/Projekte/NachtNerd/mp3.jpg:FRONT_COVER:NachtNerd $1nachtnerd.mp3

Das Titelbild (Der Mond mit der Brille) wird auch noch in die Datei geschrieben.

cp $1nachtnerd.mp3 /home/andy/remline/static/podcast/nachtnerd/mp3/

Schlussendlich wird das ganze noch in das entsprechende Verzeichnis meines Nanoc Blogsystems geschrieben, und im Originalscript folgen jetzt noch einige Zeilen, die automatisch auch den Blogeintrag erstellen und in einem Editor öffnen, damit ich noch ein paar Zeilen schreiben kann.

Danach geht das ganze mit einem beherzten

rake deploy

online. Das pingt unter anderem auch Feedburner und kurz drauf weiss es auch Bitlove.org, dass es was neues gibt.