Gibt es so etwas wie einen Stereo-Klangerzeuger (linker und rechter Kanal getrennt) für Linux? Hier können Sie Lautstärke und Tonhöhe für jeden Kanal einstellen und vorzugsweise auch die Wellenform (Sinus, Quadrat, Sägezahn, ...) einstellen und einen Kanal invertieren (im Gegensatz zum anderen).
Wenn nicht, Ideen für einen guten Ort, um einen zu machen? Ich denke, das einfachste wäre, vorhandene Programme wie Synthesizer anzupassen ... Aber wenn das schlecht funktioniert, gibt es Bibliotheken (wie SDL?), Die als Basis für ein solches Programm verwendet werden können?
Antworten:
Es hört sich so an, als würden Sie nach Audacity suchen einem plattformübergreifenden Open-Source-Audio-Editor. Eine der Funktionen ist, dass Sie Töne erzeugen können. Es ist ein mehrspuriger Audio-Editor, mit dem Sie problemlos einen Stereoton erstellen können.
Unter dem
Generate
Menü können Sie Sinus-, Sägezahn- und Rechteckwellenformtöne mit beliebiger Frequenz, Amplitude und Länge erstellen, ohne dass zusätzliche Eingabedateien aufgezeichnet oder benötigt werden.quelle
Vielleicht schaust du dir an
speaker-test
, welche (auf einem Arch-Rechner) ich im alsa-utils-Paket finde.speaker-test -c2 -t sine
lief von einem xterm, gab mir eine 440 Hz Sinuswelle für jeweils ca. 6 Sekunden, abwechselnd linken und rechten Lautsprecher. Im xterm gab es einige Informationen darüber, welchen Lautsprecher es zu verwenden glaubte.Laut Manpage kann es Sinuswellen beliebiger Frequenz und rosa Rauschen erzeugen.
quelle
speaker-test -c2 -t sine -f 440
wird Ihr Beispiel durch Angabe des Frequenzparameters ergänzen. Danke.Das
siggen
Programm sollte den Trick machen.Es hat zwei Kanäle mit unabhängigen Signalen und einer Phase zwischen ihnen. Jeder Kanal kann diese Signaltypen ausführen:
Sie können es im Stereomodus wie folgt ausführen:
Da
/dev/dsp
es in den meisten modernen Linux-Distributionen veraltet ist, müssen Sie wahrscheinlich eine Kompatibilitätsbibliothek installieren. Installieren Sie das Paket auf Debian-basierten Distributionenalsa-oss
und führen Sie es folgendermaßen aus:Sie können es auch mit dem PulseAudio OSS Wrapper versuchen:
quelle
Das saugns- Programm kann das auch. (Es handelt sich um einen Befehlszeilen-Audiogenerator, der (derzeit) 8 Wellentypen und FM / PM / AM-Modulationstechniken unterstützt.)
Um zwei in Stereo getrennte 100-Hz-Wellen zu erzeugen, eine mit Sinus und eine mit Dreieck sowie eine mit invertierter Amplitude, kann das folgende Skript in eine Datei eingefügt und durch das Programm ausgeführt werden (wie in
./saugns filename
):Die
t
s geben die Zeit in Sekunden an.Die
P
s sind für das Schwenken pro Stimme (0,0 = links, 1,0 = rechts). Dies kann zu etwas anderem alsP
in zukünftigen Versionen geändert werden ; Die README-Datei beschreibt die aktuelle Syntax.Edit: Ich bin in der Tat der Entwickler des Programms.
Eine alternative Möglichkeit, die Amplitude umzudrehen (für einige Wellentypen, z. B.
sin
aber nichtsaw
), besteht darin, die Phase mit einem Kleinbuchstaben einzustellenp
. Das Hinzufügenp0.5
setzt die Phase auf 50% des Wellenzyklus (negative Hälfte). Da es keinen benannten Cosinustyp gibt,p0.25
können Sie Sinus in Cosinus (oderp0.75
für negativen Cosinus) umwandeln.quelle
ffmpeg
ffmpeg kann es wie gewohnt.
Erstellen Sie eine 5-Sekunden-Mono-1000-Hz-Sinus-Sounddatei
out.wav
:Stereo statt:
Die Datei wird 2x so groß sein und
ffprobe
wird sagen, dass es hat2 channels
statt1 channel
.Spielen Sie den Ton 5 Sekunden lang ab, ohne eine Datei zu erstellen:
Spiele für immer, bis du verrückt wirst:
Dokumentation:
Die anderen Abschnitt Sunder Audio Quellen dokumentieren andere nützliche Klangerzeugungsalgorithmen zusätzlich zu
sine
, zum Beispiel:anoisesrc
: Geräusche verschiedener Farben, z. B. Weiß, Rosa, Braunaevalsrc
Nimmt beliebige mathematische Ausdrücke an und sollte daher in der Lage sein, dreieckige Wellenformen zu erzeugen (TODO-Ausdruck)Literaturverzeichnis:
Getestet in Ubuntu 18.04, ffmpeg 3.4.6.
Beispiel für minimale C-Audioerzeugung ohne zusätzliche Bibliotheken
Nur zum Spaß: /programming/732699/how-is-audio-represented-with-numbers-in-computers/36510894#36510894
quelle
Möglicherweise suchen Sie nach Gnaural .
quelle
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:
z.B
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
inpaplay
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 .
quelle