Hallo, Ich suche nach einer Möglichkeit die auf einem Klavier gespielten Noten auf einem Display anzuzeigen. Ganz wichtig, die Messung soll per billig Mikrofon erfolgen. Es wird nur eine Taste gleichzeitig gedrückt. Wenn es Paarhundert ms Verzögerung bei der Anzeige gibt, ist es egal. Das anzeigen der Noten ist kein Thema. Auch die Frequenzentabelle habe ich da. Ich habe auch das "AVR205: Frequency Measurement Made Easy with Atmel tinyAVR and Atmel megaAVR" durchgelesen. Ich habe nur keine Idee wie ich die Frequenz vom analogen Mikrofon-Eingang in dem AVR auslesen soll. Würde die Schaltung aus dem Bild dafür reichen ? Gruss
Ab 5€ gibt es Klavier- und Gitarrentuner, die genau dies mit einem eingebauten Mikrofon tun und die Frequenz/Note auf einem kleinen LCD anzeigen. Willst Du dies wirklich selbst bauen?
Wojciech Pietrzak schrieb: > Würde die Schaltung aus dem Bild dafür reichen ? Nein, du hättest dort, wo du sie herkopiert hast nachlesen sollen, was ihre Aufgabe ist. Die linke Hälfte allerdings, ja die könnte eventuell einigermaßen brauchbar für deinen Zweck sein...
Eine ähnliche Eingangsstufe hatte mal ein MiniSynth der den Eingangston verstärkte/anpasste und via 4046 PLL einen Gleichklang erzeugte. Das ist heute veraltet und würde riesigen Aufwand erfordern. Der richtige Weg liegt auf dem Tip mit dem Tuner. Nur dass eben etwas mehr erfasst und angezeigt werden sollte als Gitarrenstimmgeräte das können. Auf einem App (Android) habe ich das. Wirds auch für PC geben und ich wette irgendwer hat das auch schon mal mit nem uC gemacht... yooh
Murkser schrieb: > Willst Du dies wirklich selbst bauen? Nein, meine Schaltung soll nicht nur die Frequenz anzeigen. Das es solche Dinger wie Du beschreibst im Musikladen gibt, ist mir bewust. Der analoge Teil war das einzige womit ich nicht zurecht komme, deshalb habe ich hier gefragt, mit einem Stück Schaltung, wo das Signal in den Mikrocontroller eingespeist wird, ob das so passt.
Um welchen Tonumfang geht es? Normale Frequenzmessung ist schwierig wegen der Oberwellen, d.h. es gibt oft innerhalb eines Wellenzuges mehrere Flanken, je nach Lautstärke. Meine Idee ist deshalb: mehrere Görtzelfilter oder schmalbandige FFT http://de.wikipedia.org/wiki/Goertzel-Algorithmus
eProfi schrieb: > Um welchen Tonumfang geht es? Es geht um ein Klavier mit 88 Tasten, von ,,A(A0) bis c’’’’’(C8), der Frequenzbereich liegt bei 27,5000 Hz bis 4186,01 Hz. Es reicht aber locker die Genauigkeit ohne Komma, ich habe vor die gemessene Frequenz gegen eine Tabelle zu vergleichen, welcher Wert am nachsten passt, und dessen Note auf dem Display anzeigen. Es soll kein Gerät zum stimmen eines Klaviers werden...
In diesem Thread gibt es einige Links zu einfachen Tunerprojekten mit z.B. AVR: Beitrag "Töne einer Flöte erkennen"
Wojciech Pietrzak schrieb: > Ich habe nur keine Idee wie ich die Frequenz vom analogen > Mikrofon-Eingang in dem AVR auslesen soll. > > Würde die Schaltung aus dem Bild dafür reichen ? Nun, "die Frequenz auslesen" kann diese Schaltung nicht. Aber sie kann das Signal von einem Elektretmikrofon so weit verstärken und begrenzen, daß man es mit dem ADC eines µC oder notfalls sogar nur mit einem digitalen Eingang auswerten kann. Nach der Softwareseite hattest du ja nicht gefragt. XL
Axel Schwenke schrieb: > Nun, "die Frequenz auslesen" kann diese Schaltung nicht. Aber sie kann > das Signal von einem Elektretmikrofon so weit verstärken und begrenzen, > daß man es mit dem ADC eines µC oder notfalls sogar nur mit einem > digitalen Eingang auswerten kann. Genau, Es geht mit nur darum, das ich die "impulse" der frequenz vom Mikro als Low und High auf den Input Pin bekomme, denn Rest bastle ich mir schon zusammen.
Wojciech Pietrzak schrieb: > Es geht mit nur darum, das ich die "impulse" der frequenz vom Mikro als > Low und High auf den Input Pin bekomme, denn Rest bastle ich mir schon > zusammen. Schon einen Plan zum "zusammenbasteln" ? Das wären bei einem Klavier ja 88 Low oder Highs. Wenn die mit Hochpass,Tiefpass und/oder Bandpass - nach der Vorverstärkerstufe zerlegt werden ist ja abzusehen, dass es zuerst mal nur eine Note ist, die erkannt werden kann. Was ist mit einem Akkord? Eine Möglichkeit wäre die Filter, nach denen die Frequenz ermittelt wird nach Oktaven zu gruppieren. Und dann ob so oder einzeln zu errkennen. Hochwertige Programme auf dem PC sind da schon selten, und die Rechenleistung und Kompexität dort ist wesentlich höher. Das ist praktisch, wie wenn du mit einem Mofa Formel 1 fahren willst. Um Noten zu erkennen - und auch alle 10 Finger (was ich eher selten brauche) gibts Midi und Keyboards, Digitalpianos etc. Eine moderate Lösung kann ich mir lediglich mit Hilfe von DSPs vorstellen. Oder hochwertigen - komplexen - ADC- Stufen. Frequenz zu Voltage-Konvertern und anschliessender Berechnung im uC... Auf jedem Fall - Viel Spass und Erfolg
Ich habe ganz am Anfang geschrieben das nur eine Taste gedrückt wird, also keine Akorde vorhanden. Der Benutzer kann, wenn notwendig auch die Taste eine Sekunde lang halten. Meine Idee wie schon erwähnt ist die Eigangsfrequenz gegen eine Tabelle zu vergleichen, da die Tasten eine konkrete Anzahl sind so sind auch die Frequenzen zum Vergleich nicht unendlich viele / unbekannt. Was mir wirklich Sorgen macht ist die Frequenz Erkennung auf der Linken Seite der Tasten da dort der Frequenz Unterschied sehr klein ist (wird je weiter rechts größer).
Ja, bei den tiefsten Bässen auf dem Klavier sind es grad mal 1-Hz per Halbton und 2 Hz von A0 auf H0 Unterschied in der Frequenz. Frequenzmesser die im Netz zu finden sind haben eine Genauigkeit von 10 Hz Das ist mit einer verfeinerten Tabelle machbar. Weitere Beschaltung mit einem externen ADC wäre auch eine Möglichkeit.
Hallo, verrätst du uns auch, wozu du das ganze brauchst, also zu welchen Zweck du den Frequenzmesser einsetzen willst?
OAmp schrieb: > Frequenzmesser die im Netz zu finden sind haben eine Genauigkeit von 10 > Hz Das ist ja nun wirklich nicht wahr! Hier ein x-beliebiges Beispiel mit einer Genauigkeit von +- 1 Cent. Zur Erläuterung: 1 Cent ist ein hundertstel eines Halbtones! http://www.thomann.de/de/korg_ga1.htm?gclid=CJOa2Y69-LwCFagBwwodSUgAzg Hier noch eins: http://www.kirstein.de/Zubehoer-Stimmgeraete/Rocktile-BT-10-Stimmgeraet.html
ich schrieb: > Das ist ja nun wirklich nicht wahr! Wusste das das kommt :-) Klar dass es "käufliche" Geräte gibt, vermute aber wegen dem Problem der Auflösung Selbstbau.
Hab was gefunden das besser auflöst : Schaltung (mit Sinusgenerator) http://www.vitalstates.org/diy/amplifiers/sg-cct.pdf Kode: http://www.vitalstates.org/diy/amplifiers/sg-code.txt
OAmp schrieb: > Klar dass es "käufliche" Geräte gibt, vermute aber wegen dem Problem > der Auflösung Selbstbau. Ja, einer der Gründe ist die Auflösung, vor allem bei den niedrigen Tönen, aber jemand meinte hier es gibt Tuner die diesen Zweck erfüllen schon ab 5 EUR, so ein Gerät will ich mal sehen. Richard Clayderman schrieb im Beitrag #3559890 > verrätst du uns auch, wozu du das ganze brauchst, also zu welchen Zweck > du den Frequenzmesser einsetzen willst? Das ist der eigentliche Grund warum ich das bauen möchte: Level I: Das Gerät zeig eine Note auf dem Display an, wo nach es auf einen Ton wartet. Der Benutzer drückt eine Taste auf dem Klavier, auf dem Display vom Gerät wird angezeigt ob der Ton getroffen, niedriger oder tiefer gedrückt wurde, das Ergebnis wird gemerkt. Nach ein Paar "Runden" wird das Endergebnis angezeigt mit "Problemzonen", also welche Noten die meisten Schwierigkeiten gemacht haben. Dieser Level hilft das trainieren die Richtigen Tasten anhand der GELESENEN Noten zu treffen. Level II: Das selbe Spiel, nur anstatt die Noten anzuzeigen, werden diese per Ton ausgegeben, der Benutzer soll diese nachspielen. Das Resultat wird genauso angezeigt und gespeichert wie Level I. Dieser Level hilft das trainieren die Richtigen Tasten anhand der GEHöRTEN Noten zu treffen. Es könnte auch möglich sein die Anzahl der Oktaven auszuwählen etc, das ist ja dann alles pes Software gelöst. Ich bin Softwareentwickler, und überhaupt nicht musikalisch. Meine Frau ist aber Vollzeit musikalisch beschäftigt, sie spielt Orgel. Ich habe es unendliche male versucht unser Klavier zu erlernen, aber ohne Erfolg, Noten lesen kann ich, aber das spielen... na ja. Ich weiss, ich kann das auch auf einen PC per software machen, Mikro ist ja eingebaut, oder einfach per MIDI auslesen, aber ist doch ein nettes Projekt nebenbei auszuprobieren. Und am Rechner etwas wieder zu schreiben, ist nicht so interessant... Heutzutage kann man fast alles fertig kaufen, es ist einfach nur ein hobby Projekt. Und wenn mir jemand kommt mit einem Klaviertuner für 5 EUR, ohne das Problem verstanden zu haben, tut er mir leid. Gruss
Du liest das Signalspektrum das vom Mikro aufgenommen wird per ADC ein. Dann wird das ganze mittels FFT in ein Spektrum zerlegt. In dem Ausgangsarray der FFT suchst du dir die groesste Amplitude raus dann hast du deine gesuchte Frequenz. Die FFT must du allerdings so auslegen das deren Binbreite besser ist als die Frequenzaufloesung die du haben moechtest. Ob dann allerdings dein AVR in Rechengeschwindigkeit und Speicherverbrauch aussreicht must du dann sehen. Ohne FFT das zu machen duerfte schwierig werden. Einfach die Anzahl der Nulldurchgaenge zu zaehlen ist dabei nicht Zielfuehrend weil du ja auch Oberwellen im Signal hast.
OAmp schrieb: > Hab was gefunden das besser auflöst : > > Schaltung (mit Sinusgenerator) > > http://www.vitalstates.org/diy/amplifiers/sg-cct.pdf > > Kode: > > http://www.vitalstates.org/diy/amplifiers/sg-code.txt Ich zitere mal aus dem Quelltext: > determine frequency of the sin wave produced by the sig gen Das Teil kann also die Sinus - Frequenz des internen Generators anzeigen. Und das mit einem Mikrofon aufgenommene Klavier ist alles andere als ein Sinus. Das NF-Signal muß also noch aufbereitet werden. Aus dem Frequenzgemisch, welches ein Klavierklang darstellt, soll die Grundfrequenz herausgefiltert werden, damit er sie mit einem µC messen und darstellen kann. Und genau das möchte Wojciech haben. Ihm geht es nur um den analogen Teil. Er möchte keinen Generator haben, der seine eigene Frequenz anzeigen kann: Wojciech Pietrzak schrieb: > Der analoge Teil war das einzige womit ich nicht zurecht komme, deshalb > habe ich hier gefragt,
Wojciech Pietrzak schrieb: > Heutzutage kann man fast alles fertig kaufen, es ist einfach nur ein > hobby Projekt. Das ist die richtige Einstellung. Also einen Gehöhrtrainer, eine Übungssoftware bauen. Könnte mich auch reizen. Helmut Lenzen schrieb: > Ohne FFT das zu machen > duerfte schwierig werden. Einfach die Anzahl der Nulldurchgaenge zu > zaehlen ist dabei nicht Zielfuehrend weil du ja auch Oberwellen im > Signal hast. Das Zauberwort FFT wollte ich vermeiden. Es muss doch noch einen anderen Weg geben. Vermute allerdings dass der hardwareseitig ziemlich hoch werden kann.
Wojciech Pietrzak schrieb: > Ja, einer der Gründe ist die Auflösung, vor allem bei den niedrigen > Tönen, aber jemand meinte hier es gibt Tuner die diesen Zweck erfüllen > schon ab 5 EUR, so ein Gerät will ich mal sehen. Das hier geht von B0 bis B6 mit 1ct Genauigkeit: http://www.thomann.de/de/korg_ga1.htm?gclid=CJOa2Y69-LwCFagBwwodSUgAzg und das von A0 bis C8, ebenfalls 1ct: http://www.kirstein.de/Zubehoer-Stimmgeraete/Rocktile-BT-10-Stimmgeraet.html Von 5€ hatte ich allerdings nichts geschrieben, das war jemand anderes. Nachdem du jetzt deinen Einsatzzweck beschrieben hast, glaube ich auch nicht, daß ein fertiges Gerät dafür geeignet ist. Da kannst du ja die Anzeige schlecht auswerten mit deiner Elektronik.
OAmp schrieb: > Das Zauberwort FFT wollte ich vermeiden. Es muss doch noch einen > anderen Weg geben. Vermute allerdings dass der hardwareseitig > ziemlich hoch werden kann. Ja klar, Doppel Eurokarte mit jede Menge Filtern drauf. Was ist das Problem mit der FFT? Sourcecode dafuer gibt es jede Menge im I-Net.
Wojciech Pietrzak schrieb: > Der Benutzer drückt eine Taste auf dem Klavier, auf dem Display vom > Gerät wird angezeigt ob der Ton getroffen, niedriger oder tiefer > gedrückt wurde, das Ergebnis wird gemerkt. Also ein autogener Klaviertrainer.. Ich vermute mal, dass Du der Benutzer sein willst oder ein anderer Anfänger. Zu den technischen Problemstellungen wurde ja schon einiges geschrieben. Dass ein Klavier keinen Sinus liefert, ist dir sicher klar. Besonders in die Attack-Phase des Tones ändern sich die Frequenzbestandteile ständig (sog. Transienten) Um die dem Gerät zugedachte Aufgabe zu erfüllen, ist es mMn nicht notwendig, den gesamten Tonumfang des Instrumentes nutzen zu müssen. Im Sub- un Kontraoktavbereich hört man sowieso kaum Töne heraus, da "grummelt" es nur, und die Harmonischen sind direkt wahrnehmbar. Für einen Anfänger ohne absolutes Gehör reicht es, Übungen ab der kleinen Oktave, also dem kleinen "c" zu beginnen. Nach oben kann auf "c3" begrenzt werden, darüber kann man gehen, wenn die Grundtechniken beherrscht werden. Aber dann sollte sich dieses Hilfsmittel von selbst erübrigen. Vielleicht vereinfacht die Eingrenzung des Tonumfanges auch die technische Umsetzung, wenn die ganz tiefen und hohen Frequenzen ausgefiltert werden können.
Vielleicht ist die Eingangsschaltung vom PLL Synth brauchbar ( eventuell bessere Opamps nehmen) Übrigens erzeugen die PLLs eine Schwingung die wesentlich besser auszuwerten ist.
Helmut Lenzen schrieb: > Ja klar, Doppel Eurokarte mit jede Menge Filtern drauf. Was ist das > Problem mit der FFT? Sourcecode dafuer gibt es jede Menge im I-Net. Hast ja Recht. Vielleicht ist der TO ja befähigt genug das im uC via Code zu lösen. Richard Clayderman schrieb: > Um die dem Gerät zugedachte Aufgabe zu erfüllen, ist es mMn nicht > notwendig, den gesamten Tonumfang des Instrumentes nutzen zu müssen. > Im Sub- un Kontraoktavbereich hört man sowieso kaum Töne heraus, da > "grummelt" es nur, und die Harmonischen sind direkt wahrnehmbar. Für > einen Anfänger ohne absolutes Gehör reicht es, Übungen ab der kleinen > Oktave, also dem kleinen "c" zu beginnen. Nach oben kann auf "c3" > begrenzt werden, darüber kann man gehen, wenn die Grundtechniken > beherrscht werden. Aber dann sollte sich dieses Hilfsmittel von selbst > erübrigen. Das ist logisch und würde die Aufgabe sehr erleichtern.
Oh oh, der unerschütterliche Glaube an die Macht der technischen Hilfsmittel... Dein Vorhaben, ein Notenerkennungsgerät zu bauen, in Ehren, aber mein Rat wäre eher, einfach mal mit einem qualifizierten Klavierlehrer zu sprechen. Nein, bitte nicht falsch verstehen: Diese Leute können Dir keine Tipps zur Implementierung von FFT-Algorithmen auf digitalen Signalprozessoren geben. Aber sie wissen, wie man Klavierspielen lernt. Just my two cents...
Man könnte mit dem PC erst einmal sehen wie viele Oberwellen man im Signal wirklich hat. Ich könnte mir gut verstellen, dass die gar nicht so stark sind. Für die Auswertung gäbe es ggf. noch eine Lösung unterhalb der FFT, die auch mit stärkeren Oberwellen klar kommt, solange die konstant sind. Man könnt das Signal digitalisieren und dann einmal die Amplitude direkt berechnen und einmal das Signal differenzieren und davon die Amplitude bestimmen. Das Verhältnis der beiden Größen ist proportional zur Frequenz und unabhängig von der Lautstärke. Ein Problem könnte man aber bekommen, wenn tiefere Töne mehr Oberwellen enthalten, etwa durch Resonanzen. Ein anderer Weg wäre es von der grob geschätzten Frequenz (etwa mit dem verfahren oben) die Daten durch einen digitalen Filter zu schicken um die Oberwellen zu entfernen und dann für die genaue Frequenz rechnerisch zu bestimmen - z.B. aus der Zeit zwischen Nulldurchgängen. Mit einem groben Schätzwert für den Ton (etwa auf 1/2 Oktave) könnte man ggf. auch die Methode mit der Hilbert-Transformation nutzen um die Frequenz zu bestimmen - auch das gibt eine recht gute Unterdrückung von Oberwellen und auch eine sehr gute Frequenzauflösung (deutlich besser als 1/Messzeit ist möglich). Das wird aber mit dem Speicher und der Rechenzeit im AVR schon anspruchsvoll. Weniger mathematisch ausgedrückt werde die Daten auf eine niedrigere Frequenz runter gemischt (2 mal als I und Q), Tiefpass-gefiltert und dann bei der niedrigeren Frequenz mit reduzierten Daten ausgewertet.
LostInMusic schrieb: > Dein Vorhaben, ein Notenerkennungsgerät zu bauen, in Ehren, aber mein > Rat wäre eher, einfach mal mit einem qualifizierten Klavierlehrer zu > sprechen. Das weiß der TO mit Sicherheit. Dieses Gerät ersetz keinen Kla4lehrer, hilft auch nicht, Kla(5-1) Unterricht zu ersetzen. Es trainiert lediglich das Gehör mithilfe des Kla(2^2)s.
LostInMusic schrieb: > Oh oh, der unerschütterliche Glaube an die Macht der technischen > Hilfsmittel... > > Dein Vorhaben, ein Notenerkennungsgerät zu bauen, in Ehren, aber mein > Rat wäre eher, einfach mal mit einem qualifizierten Klavierlehrer zu > sprechen. Nein, bitte nicht falsch verstehen: Diese Leute können Dir > keine Tipps zur Implementierung von FFT-Algorithmen auf digitalen > Signalprozessoren geben. Aber sie wissen, wie man Klavierspielen lernt. > > Just my two cents... Fragt sich nur wozu ? Ich habe nicht vor Klavierunterricht zu nehmen, ich habe oben geschrieben, es soll ein Hobbyprojekt werden. Was dein Rat mit meiner hier gestellten Frage zu tun hat ist mir auch ein Rätsel.
OK, no problem, war dann wohl ein Missverständnis meinerseits... bitte ignoriere mein Geschreibsel einfach. Viel Spaß + Erfolg für Dein Projekt :-)
Mein Vorschlag ist, mache es über Midi, das ist ein schneller Weg zum Erfolg. Aber das wolltest Du ja nicht, also empfehle ich Dir, mal ins DSP-Unterforum zu wechseln. Das wird aber ein deutlich steinigerer Weg. Ein 2003- Projekt fällt mir noch ein (weil Du ja im Eingangspost AVR nanntest): Beitrag "Audio Spectrum Analyzer"
eProfi schrieb: > Mein Vorschlag ist, mache es über Midi, das ist ein schneller Weg zum > Erfolg. Wie soll dieser Weg denn aussehen? Er nimmt den Klang des Klavieres über ein Mikrofon auf, dann kommen ein paar Fragezeichen, und plötzlich ist da ein MIDI-Signal, oder? Entschuldige den Sarkasmus, aber wie willst du ein Mikrofonsignal in MIDI-Daten umsetzen? Wenn schon MIDI vom Intrument vorliegen würde (ein Keyboard beispielsweise), dann gebe ich dir recht. Die MIDI-Daten dann anzuzeigen ist wirklich kein Problem. Aber in diesem Falle sind keine MIDI-Daten vorhanden...
Wojciech Pietrzak schrieb: > Das ist der eigentliche Grund warum ich das bauen möchte: [...] Das sind doch endlich mal Fakten, mit denen man was anfangen kann. Als Exzerpt aus deiner Darstellung kann man als "springenden Punkt" postulieren, daß die zu erkennende Grundfrequenz dem Gerät _vorab bekannt_ ist. Damit reduziert sich das Problem (einigermaßen korrekt gestimmtes Klavier vorausgesetzt) auf eine Goertzelbank mit einer ziemlich kleinen Zahl von Kanälen (z.B. 11, um die richtige und +- 5 benachbarte falsche Tasten erkennen zu können) und einen RMS-Filter mit gemäßigtem IIR-Notch um die Sollfrequenz, der die völlig falschen Anschläge mitbekommt. Das ganze Filterwerk muß natürlich je nach Sollfrequenz neu parametriert werden. Man braucht also schon ein paar Byte Flash, um das Setup für alle Klaviertasten speichern zu können, wenn man es nicht zur Laufzeit berechnen möchte (was aber auch nicht völlig unmöglich wäre). Das alles ist jedenfalsl auch auf einem kleinen 8-Bitter @20MHz definitiv realisierbar. Wenn man die richtige Sprache beherrscht oder die Compiler der Falschen so gut, daß man sie hinreichend vergewaltigen kann, daß sie fast so effizient wird, wie eine Lösung in der richtigen Sprache... An Hardware brauchst du einen Mikrofon-Vorverstärker und einen Tiefpass, der alles oberhalb der halben Samplingfrequenz der ADC möglichst weitgehend ausfiltert. Zwei OVs (oder ein Doppel-OV) und Hühnerfutter.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.