Ton von der Shell abspielen - sofort

Ton von der Shell abspielen - sofort

Ich versuche, einen Piepton zu erzeugen, der aus der Shell über meine Lautsprecher abgespielt wird.

Ich kann dies ganz einfach mit aplay erreichen,Aberdauert es ungefähr eine Sekunde, bis die tatsächliche Wiedergabe erfolgt.

Ich muss es praktisch sofort haben, da ich es in einem (headless) Shell-Skript verwende, um bei einem Tastendruck einen Ton abzuspielen. Bei Verwendung von aplay kommt der Piepton viel zu spät.

Ich denke darüber nach, etwas direkt auf ein /dev-Soundgerät oder so etwas zu schreiben, aber das hat bisher keinen Erfolg gehabt.

Ich verwende einen Odroid-W (Raspberry Pi-Klon) und habe gehört, dass zumindest beim Pi die Audiobuchse tatsächlich mit zwei PWM-GPIO-Pins (40, 45) verbunden ist; das direkte Schreiben auf diese Pins führt jedoch nur zu Stille.

Es muss kein ausgefallener Ton sein, jedes Summen oder Piepen reicht aus.

(Wenn alles fehlschlägt, werde ich wahrscheinlich einen GPIO-Pin an einen provisorischen Mixer anschließen und diesen mit dem Verstärker verbinden.)

Antwort1

Da die Latenz für das „Gefühl“ der Anwendung (hörbares Benutzerfeedback) wichtig ist, habe ich beschlossen, sie zu erzeugen, indem ich einen aktiven Summer (der aktive Teil hier macht einen PWM-Ausgang überflüssig) an einen der GPIO-Pins anschließe, wodurch sofort ein Ton erzeugt wird. Auf die GPIO-Pins kann direkt mit dem Befehlszeilenprogramm WiringPi von Drogon zugegriffen werden. Der Nachteil ist, dass Sie keine Kontrolle über den Ton selbst haben, aber der erzeugte Piepton ist für den Moment gut genug.

Zur Verbesserung/Steuerung des Klangs könnte man sich einen Software-PWM und einen passiven Summer oder Lautsprecher zulegen.

Weitere Informationen zu WiringPi: http://wiringpi.com/

Was ist ein aktiver Summer?: https://electronics.stackexchange.com/questions/224374/active-vs-passive-buzzer

verwandte Informationen