Hallo,
ich moechte gerne Toene generieren, kann aber nirgendwo finden, wass diese komische `ulaw' Kodierung machen soll. Weiss irgendwer, was (welches Format) ich an meine Soundkarte schicken muss?
Zur Erklaerung: Ich dachte, man kann einfach die Amplitude einer Schwingung mit 8000 Hz und 8 bit Breite `sampeln' und das ist es dann. Ein cat /dev/audio zeigte mir, dass totale Stille den Wert 0x80 (dezimal 128) bedeutet. Fein, dachte ich, und schrieb dieses Perl Skript:
$PI=3.141592654; $rate=8000; for ($i=0; $i<$rate; $i++){ $amp = 128+50*cos(2*$PI*400*$i/$rate); # Sinusfoermiger Ton mit 400 Hz print pack "c1", int($amp); }
und bei Aufruf als raw.pl >/dev/audio muesste dann eine Sekunde lang ein Ton mit 400 Hz kommen. Tut auch, aber es ist ein Nebengeraeusch drauf, so eine Art Rauschen. Das geht auch nicht weg, wenn ich die Sample-Rate auf 44100 Hz erhoehe. Also: wer weiss, wie es richtig geht?
Danke, Silvio.