Ich war schon länger auf der Suche nach einem simplen Tool, mit dem ich kurze Soundschnippsel (z.B. Jingles) während eines Live-Mixes schnell auswählen und einspielen kann. Das Tool sollte dabei übersichtlich, unmittelbar und ohne Zeitverzögerung arbeiten (z.B. für Podcasts, Radio, DJ usw.).
Größere DJ-Tools wie die Internet DJ Console schießen für diese simple Aufgabe ein bisschen über das Ziel hinaus und erfordern eine gewisse Einarbeitungszeit. Medienplayer wie VLC (mit Playlist) fühlen sich für solche Zwecke ungelenk an und haben manchmal das Problem der Zeitverzögerung.
Vor kurzem habe ich dann erstmals mit Zenity herumgespielt. Damit kann man Shellskripten in simple GUI-Fenster umsetzen (basierend auf GTK+). Ich habe gestaunt, wie einfach sich mit ein paar Zeilen Skript eigentlich genau das umsetzen lässt, was ich gesucht habe:

Neben dem Paket zenity sollte sox installiert sein,welches das Paket play enthält, mit dem Audiodateien auf der Kommandozeile abgespielt werden können. Oder ihr nutzt einfach einen anderen Kommandozeilenplayer wie z.B. aplay.
Das folgende Skript “Jinglebox” wird einfach in dem Ordner abgelegt, in dem (u.a.) die abzuspielenden Dateien liegen. Beim Aufruf filtert das Skript die Audiodateien (hier: mp3 und wav) und bietet sie zum Abspielen an. Den Sound einfach auswählen und “OK” (oder per Doppelklick starten).
Durch den “while true” Loop (und da play in den Hintergrund gesendet wird) öffnet sich sofort die nächste Instanz von “Jinglebox”, so dass auch mehrere Sounds kurz hintereinander überlappend abgespielt werden können. Zum Download von “Jinglebox” bitte diesen Link nutzen, da Copy & Paste nicht funktioniert (irgendwas haut hier mit der Demaskierung nicht hin, das Demaskierungszeichen für den Zeilenumbruch ist hier im Blogeintrag nicht sichtbar…)
#!/bin/sh
while true
do
INPUT=$(zenity \
--title "Jingle Box" \
--text="Choose sound and doubleclick or hit OK" \
--width=400 \
--height=800 \
--list \
--column Sounds `ls | grep -Ei "(.wav|.mp3)"`)
play $INPUT &
done