Verwenden von Sox zum Erzeugen eines Rechtecksignals

678
user39049

Ich habe ein Skript ( http://paste.ubuntu.com/24497460/ ), das mit Sox eine Wellenform aus einer Reihe von "Pulsen" und "Leerzeichen" generiert, die von Lirc mit einer Fernbedienung erzeugt werden. Das Skript erzeugt eine 19-kHz-Sinuswelle für die Impulse und "Stille" für die Räume.

Ich möchte die resultierende Wave-Datei in digitale Daten konvertieren (wobei die Impulse (und ihre Länge) eine Eins und die Leerstellen eine Null markieren. Da es sich hierbei um Ein-Aus-Tasten handelt, gibt es verschiedene Tools, die dies für mich tun. Das Problem ist, dass diese Werkzeuge erfordern, dass die "maximale Lautstärke" anstelle einer Sinuswelle ist.

Meine Frage ist - was kann ich mit sox verwenden, um Perioden mit "hohem Volumen" zu generieren? Wie die "Pad" -Option, aber die maximale Lautstärke anstelle von 0 ausgeben?

0
Verwenden Sie "Quadrat" anstelle von "Sinus"? Siehe "man sox". Dies sollte die maximale Lautstärke sein. Verwenden Sie den Gain-Effekt, um die Lautstärke zu ändern. dirkt vor 7 Jahren 0

1 Antwort auf die Frage

2
user39049

Ich habe es herausgefunden. Ich habe Square anstelle von Sinus verwendet, wie @dirkt vorschlug, aber ich musste die Rechteckwellenfrequenz so weit absenken, dass eine "Square" -Periode größer ist als meine längste Bitlänge. Ich habe eine 10Hz-Rechteckwelle ausprobiert und hier ist der Unterschied:

< SOX_OPT="$ synth $s square 10 0 0" # square wave 10Hz --- > SOX_OPT="$ synth $s sine 19k 0 0 sine 19k 0 50" # sine wave 19kHz 2ch phase shift 

Die Ergebnisse sehen so aus:

  • modulierte Sinuswelle:

    Modulated sine wave

  • Rechtecksignal:

    square signal