Forum: Projekte & Code Generator für Testtöne


von Kai G. (runtimeterror)


Angehängte Dateien:

Lesenswert?

Tag zusammen,

ich hatte mir gerade zum Testen meines Audiosystems ein kleines Script 
geschrieben, welches Sinustöne unterschiedlicher Frequenzen als 
WAV-Dateien ablegt. Ist eigentlich nichts Besonderes, aber vielleicht 
erweist es dem einen oder anderen von euch gute Dienste beim Testen 
analoger Filter, beim Kontrollieren des eigenen Hörvermögens, beim 
Kontrollieren von Line-Pegeln oder was euch sonst noch einfällt ;)

Jede WAV-Datei beinhaltet einen 3-sekündigen Sinuston. Im ersten Drittel 
wird die Amplitude linear von 0 % auf 100 % angehoben und im zweiten 
Drittel gehalten. Im letzten Drittel wird die Amplitude von 100 % auf 0% 
linear abgesenkt. (ramp-up, sustain, ramp-down)

Die Verteilung der Frequenzen ist exponentiell.

Das Programm wird einfach über die Kommandozeile mit einem 
php-Interpreter gestartet. Die Konfiguration erfoglt einfach über die 
darin enthaltenen Konstanten. Die Dateien werden im aktuellen 
Verzeichnis abgelegt und "01234.567 Hz.wav" benannt.

Die wichtigsten Stellschrauben sind wie folgt:
1
Gesamtdauer der WAV-Datei in Sekunden
2
define('DURATION', 3.0);
3
4
Die Sample-Rate in Hz
5
define('SAMPLE_RATE', 44100);
6
7
Anzahl der Audiokanäle (die anderen Kanäle werden phasenverschoben generiert)
8
define('CHANNEL_COUNT', 1); // mono
9
10
Audioqualität, Auflösung in Bit
11
(andere Werte funktionieren möglicherweise nicht richtig)
12
define('BITS_PER_SAMPLE', 16);
13
14
Unteres Limit für die Frequenzen in Hz
15
define('MIN_FREQ', 20.0);
16
17
Oberes Limit für die Frequenzen in Hz
18
define('MAX_FREQ', 20000.0);
19
20
Garantierte Frequenz
21
Alle anderen Frequenzen ordnen sich darum an (Beispiel: Kammerton a1)
22
define('FIX_FREQ', 440.0);
23
24
Anzahl der Töne Pro Oktave (auf 1 setzen um nur 2er-Potenzen von FIX_FREQ zu erzeugen)
25
define('TUNES_PER_OCTAVE', 12);

Die oben genannte Voreinstellung generiert alle (weitgehend) hörbaren 
Frequenzen einer Klaviatur mit gleichstufig temperiertem Intervall um 
den Kammerton a1.

Ich versuche nachher mal ein paar Proben anzuhängen - durch die Größe 
der WAV-Dateien kann ich leider nur Auszüge anhängen.

Wenn begründetes Interesse besteht kann ich bei der Code-Qualität 
nochmal nachbessern.

Schöne Grüße und viel Spaß damit,
Kai

ps: meine obere Hörgrenze liegt bei etwa 17 kHz ;)

von Kai G. (runtimeterror)


Angehängte Dateien:

Lesenswert?

Anbei ein Beispiel mit 2 Tönen Pro Oktave.

von Kai G. (runtimeterror)


Angehängte Dateien:

Lesenswert?

Anbei ein Beispiel mit 12 Tönen Pro Oktave als Ergebnis der obigen 
Konfiguration.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.