GetTuned 1.0 – PC-Stimmgerät … (EDIT)

Begonnen von RISA, 28. Mai 2008, 01:45:10

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema. (3 Antworten, 2.266 Aufrufe)

RISA

... oder traue keinem Stimmgerät, welches Du nicht selbst programmiert hast!

Vor einiger Zeit fragte ich mich, warum es so wenige softwarebasierte Stimmgeräte gibt. Schaut man sich die Bedienoberfläche eines Stimmgerätes an, dann kommt  sie doch eher trivial daher. Also dachte ich mir, dass ich mich einen Nachmittag hinsetzte und schnell ein kleines Stimmgerät schreibe, denn es gibt doch bestimmt einen Befehl in den gängigen Programmiersprachen, der die Frequenz aus einem Ton ermittelt; und der Rest ist Fleißarbeit. Doch weit gefehlt ...

Hut ab vor den kleinen Dingern unter €20,-, die da vorgeben eine genaue Stimmung zu ermöglichen, denn selbst ein leistungsstarker PC hat damit Schwierigkeiten. So zog sich das Projekt über Wochen hin. Resultat: ,,Traue keinem Stimmgerät, das Du nicht selbst programmiert hast!"

Zum Download steht hier für Windows die GetTuned 1.0 bereit. Was mich am meisten interessiert, ist die Performance auf Euren PCs für die Angabe der Systemvoraussetzungen. Ich habe das Programm mit drei Rechnern getestet:

EDIT 28.05.08: Download von GetTuned 0.9 gegen GetTuned 1.0 getauscht. Auflösung der Frequenz jetzt von 1 Hz auf 0.25 Hz erhöht, damit deutlich höhere Genauigkeit. Frequenzbereichbeschränkung bis 500 Hz aufgehoben, damit Flageolett-Stimmung möglich und Frequenzen bis ca. 1200 Hz messbar.

1.   1.6 GHz Prozessor, 512 MB RAM (nicht lauffähig)
2.   1.8 GHz Prozessor, 1 GB RAM (läuft ganz gut)
3.   2.6 GHz Prozessor , 2GB RAM (alles bestens)

Weiterhin ist die Qualität von Mikrofon und Soundkarte ausschlaggebend. Z. B. erreiche ich mit einem billigen WebCam-Mikrofon mit guter Soundkarte exakt die Ergebnisse  eines chromatischen Hardware-Stimmgerätes, während mit Top-Mikrofon und einfacher Soundkarte die Werte um einige Cents abweichen.

Für die Freaks:
Mal eben ein Stimmgerät programmieren?! Ein Ton besteht aus einer Grundschwingung und vielen oktavierten Oberschwingungen, aber auch aus vielen anderen Schwingungen z. B. Quint- und Quartfrequenzen, die man dem Instrument durch Flageolett-Töne bei der Stimmung gerne entlockt, von den Nebengeräuschen am PC (Lüfter, Festplatte u. v. m.) ganz zu schweigen. Es wundert mich auch nicht mehr, dass ein Hardware-Stimmgerät manchmal nicht den gespielten Ton, sondern die Quinte anzeigt. Denn es kann durchaus passieren, dass eine Quinten-Oberschwingung lauter ist, als die Grundschwingung. Dennoch kommt dem menschlichen Gehör die Summe der Grund- und Oktavschwingungen lauter vor. Allerdings kann das Stimmgerät nur die lauteste Frequenz analysieren.

Alles läuft also darauf hinaus, die dominante Frequenz aus dem Geräusch zu extrahieren und dann zu messen. Das wird im Allgemeinen mittels FFT (Fast-Fourier-Transformation) berechnet. Leider bieten selbst professionelle Tools, wie z. B. FMOD nur eine Analyse des Frequenzspektrums in 512 Frequenzbänder an. Für Anwendungen wie Equalizer ist das absolut ausreichend, für Stimmgeräte leider nicht. Damit könnte man Kammerton ,,a" höchstens auf 50 Cents genau messen. Die kommerzielle Anwendung von FMOD kostet dafür immerhin zwischen $1.500 und $6.000.

Gut, dann vergisst man erst einmal die Fast-Fourier-Transformation und versucht einen anderen Weg zu gehen. Gerüchten zufolge gibt es professionelle Stimmgeräte, die die Anzahl der Nulldurchgänge der Gesamtschwingung messen. Nach vielen Versuchen kann ich nur sagen, dass die Genauigkeit nicht befriedigend ist. Sch...ade, also zurück zur Fast-Fourier-Transformation.

Nun ging es also darum eine eigene FFT zu schreiben, die anstatt der professionell angebotenen 512 Frequenzbänder dann anspruchsvolle 16.384 Frequenzbänder analysiert, um auf eine hinreichende Genauigkeit für z. B. Kammerton ,,a" von +/-2 Cents zu kommen. Übrigens, das was die chromatischen Hardware-Stimmgeräte anzeigen, ist eher ungenauer, auch wenn die Skala etwas anderes vorgaukelt. Und schon ist selbst ein recht neuer PC eine Schnecke, um nicht zu sagen: ,,hängt sich auf". Dazu ist eine FFT nicht eine 1 + 1 = 2 –Gleichung, sondern bietet viel Potential sich über Details zu echauffieren: ,,Oops, gar keinen Ton gemessen" oder " Oops, falschen Ton gemessen". Eines der Grundprobleme besteht darin, dass der Zusammenhang zwischen Ton und Frequenz logarithmisch ist, d. h. dass zwischen A und A# in der tiefsten Oktave eines Klaviers nicht einmal 2 Hz liegen, während in der höchsten Oktave des Klaviers zwischen A und A# mehr als 200 Hz liegen. Man müsste also die üblichen 44,1 kHz einer Aufnahme in Echtzeit in über 2 Millionen Frequenzbänder zerlegen, um bis in alle Tiefen auf ein Cent genau den Ton bestimmen zu können. Unrealistisch!

Nun ist die Trickkiste gefragt! Um mit 16.384 Frequenzbändern hinzukommen (sonst Performance = 0), musste ich die maximale Frequenz auf 8.192 Hz beschränken. Damit ist nach dem H für ADF#H-Stimmung leider das Ende des Messbereiches erreicht (zum Unmut aller Spieler von Violinen und Mandolinen, die sicherlich noch gerne das E über dem H gehabt hätten.) Nun denn, das Ganze war dann doch mathematisch und programmtechnisch anspruchsvoller als erhofft.

Ergo: Mich wundert nicht mehr, warum es so wenige PC-basierte Stimmgeräte gibt ;-)

wwelti

Hi Rigk!

Da hast Du Dir nicht das einfachste Thema ausgesucht. Das Stimmgerät, welches 100%ig das menschliche Ohr ersetzen kann, wird es wohl so schnell nicht geben. Vielleicht kannst Du jetzt nachempfinden warum ich über die \"ungenauen Stimmgeräte\" lästere ;)

Übrigens gibt es hervorragende (auch freie) Signalverarbeitungsbibliotheken. Für FFT ist z.B. die fftw - Bibliothek nicht schlecht.

Für die Ermittlung einer Grundfrequenz ist eine beliebte Methode die Berechnung einer Autokorellation. (Das geht fast genauso wie eine FFT, aber das Ergebnis ist etwas völlig anderes -- hiermit lässt sich besonders gut die Zyklizität einer Wellenform analysieren, und genau das ist was man eigentlich sucht.

Übrigens ist es so daß einige (eher basslastige) Instrumente gar keinen Grundton erzeugen -- alles was hörbar wird sind Oberwellen ab einer bestimmten Frequenz! Hier hat die FFT-Methode keine Chance. Die Zyklizität ist aber trotzdem vorhanden, weshalb die Autokorrelations-Methode auch hier noch annehmbar funktioniert.

Die Methode mit den Nulldurchgängen funktioniert deshalb nicht gut, weil aufgrund der Oberwellen und des Rauschens mehr Nulldurchgänge auftreten als Grundschwingungszyklen. Die Methode kann aber trotzdem gut funktionieren, wenn Du mit steilflankigen Tiefpassfiltern arbeitest. Diese können entweder adaptiv eingesetzt werden (der Algorithmus \"sucht\" also dynamisch mit dem Filter im Frequenzbereich herum) oder in parallel betriebenen Bänken.

Es gibt noch eine Menge anderer Methoden, Tricks und Fallstricke... eine komplette Abhandlung des Themas wäre wohl ein Fall für eine Doktorarbeit ;)

Dein Programm läuft auf meinem PC (2.0 GHz Core2Duo) gut.

Viele Grüße
  Wilfried

RISA

Die meisten freien Signalverarbeitungsbibliotheken sind leider nur solange frei, wie sie nicht kommerziell eingesetzt werden. Letztendlich habe auch ich etwas freies gefunden, was allerdings für die Anwendung noch zu modifizieren und zu optimieren war. Mit anderen Methoden der Frequenzbestimmung habe ich mich auch beschäftigt, jedoch ist es nicht mein Ziel eine Doktorarbeit zu verfassen, sondern eine pragmatische Lösung zu finden. Hier muss man einfach sagen, dass es bisher nichts Vernünftiges in diesem Bereich gibt. Die einzige (mir bekannte) gut arbeitende Software ist G-Tune, die allerdings viel mehr kann, als der Durchschnittsanwender braucht. Sie kostet €24,-. Das ist für den Leistungsumfang absolut gerechtfertigt, jedoch geht der Leistungsumfang weit über die Funktion eines Stimmgerätes hinaus http://www.jhc-software.com/gtune_features.htm

Ich stelle mir vor eine 3-Jahres-Lizenz von GetTuned für €10,- zu verkaufen. Das halte ich für einen fairen Preis, zumal es einerseits nichts anderes gibt und man andererseits immer häufiger mit dem Instrument vor dem PC hockt, wo man TABs, Akkorde und Texte im Internet sucht.

wwelti

So ist es, ich verwende auch G-Tune. Ich finde das Programm ist nicht übel, und schon die Demo-Version tut eigentlich alles was man braucht.

Was ich bei G-Tune ansprechend finde ist die hohe Zeit- und Frequenzauflösung der Anzeige. Viele Stimmgeräte sind mir schlicht zu träge oder zu ungenau -- oder beides ;)

Du hast recht, ein wirklich gutes aber einfaches Programm für den PC ist eine gute Idee :)

Viele Grüße
  Wilfried