Mit SoX können Sie ganz einfach Töne synthetisieren. Es gab einige Stolpersteine, aber ich konnte es schließlich herausfinden.
Ich hatte Probleme, SoX mit PulseAudio zu verbinden, sodass ich nur sox
Rohdaten einspeisepaplay
.
Die Pipeline ist mühsam, daher habe ich ein Skript erstellt:
$ cat sox-paplay
#!/bin/bash
: ${HZ:=44100}
: ${NCHAN:=6}
: ${SINK:=mysink}
sox -c $NCHAN -n -t raw -r $HZ -L -b 16 - "$@" | paplay --no-remix --no-remap --raw -v -p --rate $HZ -d $SINK --channels $NCHAN
z.B
sox-paplay synth sine 1000 gain -5 remix -m 0 0 1 0 0 0
Das remix
Effekt wird nur verwendet, um das Ergebnis an einen bestimmten Kanal zu senden. Es ist viel leistungsfähiger, aber wir verwenden hier nur die grundlegenden Funktionen. In diesem Beispiel haben wir ein Sechs-Kanal-Gerät und wir senden einen Ton an den dritten Kanal.
Ich habe ursprünglich ein ALSA-Gerät erstellt, das das PulseAudio-Gerät umhüllt, aber dann stellte ich fest, dass es unmöglich ist, die Kanalzuordnung mit ALSA zu steuern, und daher wurden zufällige Kanäle gemischt, je nachdem, wie sich meine benutzerdefinierte Kanalzuordnung von der ALSA-Standardeinstellung unterschied. Aus diesem Grund habe ich --no-remix --no-remap
in paplay
oben; Ich möchte nur die Reihenfolge der Rohkanäle für den Befehl sox.
Ich wünschte, Audiomaterial unter Linux hätte eine bessere Dokumentation und Fehlerberichterstattung.
Möglicherweise interessiert Sie eine Antwort, die ich kürzlich gepostet habe und die zeigt, wie Sie den PulseAudio Equalizer über die Befehlszeile einstellen .