Generator für Testtöne

OP #1440804
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 ;)
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.