Stimmprogramm

Das Oberton-Stimmen eines Instruments, wie z.B. einem Marimbaphon,ist sehr komplex. Es kostet viel Zeit, und ist mit konventionellen (bezahlbaren) Stimmgeräten kaum zu bewerkstelligen. Denn einfache chromatische Stimmgeräte haben Probleme mit Obertönen. Das zeigt sich dann dadurch, dass die Anzeige des Stimmgerätes wie wild herumspringt, wenn man mit "schwer" stimmbaren Instrumenten, wie z.B. einem Marimbaphon oder Röhrenglocken zu tun hat.

 

Deshalb habe ich mich dafür entschieden ein Stimmgerät in Form eines Computerprogramms speziell für Malletinstrumente selbst zu entwickeln.

 

Das Programm ist in C++ geschrieben und verwendet einige plattformunabhängige Bibliotheken:

  • wxWidgets - für die grafische Benutzeroberfläche
  • SFML - für das Einlesen des Mikrophon (wird evtl. durch PortAudio ersetzt)
  • zukünftig auch FFTW

Ich bin ein sehr großer Freund von Open-Source. Deshalb wird der Quellcode demnächste auch auf Github veröffentlicht, sobald ich den Code enstsprechend "leserlich" für dritte gemacht habe.

 

In den folgenden Seiten möchte ich ein bisschen auf die Funktionen der einzelnen Software-Blöcke eingehen. Und auch ein bisschen die Theorie dahinter näher bringen.

Oberton Stimmgerät, FFT, DFT, C++, wxWidgets
Screenshoot der Alpha Version des Stimmgerätes

Das Stimmgerät besteht aus einem Fenster mit drei (ausblendbaren) Oberflächen. Ganz oben bei "LiveAudio" ist das aufgenommene Audio-Signal zu sehen. Mit Hilfe des Schiebereglers rechts der Anzeige kann die Trigger-Schwelle (graue Linie in Grafik) eingestellt werden. Somit kann das Stimmgerät auf verschieden laute Umgebungen angepasst werden. Um auch die die Klänge vor dem Auslösen des Triggers erfassen zu können wurde ein, derzeit noch auf 10% fest eingestellter, Pre-Trigger implementiert.

 

In der nächsten Oberfläche, "FFT", ist die Darstellung des Signals im Frequenzbereich zu sehen. Das aufgenommene Signal wird hierbei mit Hilfe des FFT-Algorithmus in seine einzelnen Frequenzanteile zerlegt. Einzelne Peaks (Spitzen) in diesem Signal entsprechen dann entsprechend den Frequenzen des gespielten Tons. Der Peak ganz links im Signal ist ist der Grundton des E3 meines selbstgebauten Marimbaphons. Die Nachfolgenden Peaks sind entsprechend die Obertöne.

 

In der letzen Oberfläche wird zum einen der ermittelte Grundton mit seinem Tonabstand in Cent dargestellt. Zum anderen eine Liste mit den übrigen, gefundenen Peaks/Tönen und deren Abweichung in Cent. Cent ist eine Maßeinheit um Intervalle und deren Abweichungen sehr exakt zu bestimmen. Ist der Cent-Bereich des Grundtons zwischen -5 und +5 erscheint die Anzeige grün, andernfalls rot.

 

In den Einstellungen kann der Audio-Eingang und dessen Abtastrate, sowie diverse Einstellungen der FFT-Analyse vorgenommen werden.

Folgende Punkte sind noch offen:

  • Kalibrierung des Stimmgeräts
  • Einstellung des Kammertons (derzeit fest auf 442.0 Hz)
  • Seperater Thread zur Berechnung der FFT
  • Implementierung von Zero-Padding der FFT
  • "Einmessen" des Frequenzgangs des Mikrophons
  • Implementierung verschiedener Trigger-Modi: Auto und Single-Shoot
  • Darstellung des Triggerstatus: warten, getriggert, pausiert
  • Klaviturdarstellung und Auswahl des zu stimmenden Ton
  • Liste mit gespeicherten, schon gestimmten Tönen inkl. Speicherung und Laden
  • ...

Dateidownload

Zum Verwenden des Stimmgerätes müsst ihr die Zip-Datei entpacken und die Exe-Datei ausführen. Es ist keine Installation des Programms notwendig. Für Schäden und etwailige Fehler im Programm übernehme ich keine Haftung.

Gefundene Fehler und Bugs im Programm könnt ihr mir gerne mitteilen. Die Source-Dateien zum programm werde ich demnächst veröffentlichen.

Download
Overtone Tuner V0.0.1 Alpha
Overtone Tuner V0.0.1.zip
Komprimiertes Archiv im ZIP Format 2.1 MB

Hinweis: Bitte die mit * gekennzeichneten Felder ausfüllen.