Guten Tag, ich bin Frischling, also einmal blutiger Anfänger, und offen für jede Hilfe, lernfähig, leistungsbereit,kooperativ. Der Weg ist das Ziel, mir gehts also ums Basteln und Lernen. Es geht um folgende Herausforderung: Wenn man Klavier spielt, oder Violine, oder sonstiges, dann führt man bestimmte Bewegungen mit den Finger und den Händen aus. Diese Bewegungen sind Tastenschläge, Bogenstriche, Finger die auf Saiten fallen, etc. Diese Bewegungen der Finger will ich nun in digitaler Form in einem Array gespeichert haben. Aber ohne dass ich Sensorische Handschuhe oder sowas trage die meine Tastenschläge registrieren. Sondern nur über das Audiosignal. Wo findet ein Tastenschlag im Audiosignal statt? Da wo eine neue Noten erklingt. Man spielt z.B. ein A, dann ein E#. Es sind 2 Events geschehen. Im Audiosignal hört man zunächst "nichts", dann ein A. Das ist eine Änderung von "nichts" auf A. Dann spielt man E#, das ist eine Änderung von A auf E#. Man kann sogar dann als drittes Event A und E# gleichzeitig anschlagen, dann ist das eine Änderung von E# auf eine Addition von A und E#. Diese 3 Events will ich dann in einem Array als den Zustand 1 abspeichern. Es sollen z.B. 4 Takte eines Musikstücks analysiert werden, die insgesamt 12 Sekunden dauern. Das Array soll meinetwegen im Millisekundenbereich getaktet sein. Das heißt es wird jede Millisekunde geguckt, ob grade eine Event passiert ist oder nicht. Wenn ja, 1, wenn nein 0. Nein heißt: Keine neue Taste wurde angeschlagen, die selbe erklingt weiter. Wenn der Finger von der Taste abgehoben wird,d.h. wenn der Ton schnell ausklingt, dann ist das eine 1,keine 0, denn es hat ein Event/Änderung stattgefunden, nämlich von einem Ton zu "nichts". Bei 12 Sekunden hätte das Array 12000 Slots. Wie kann man sowas umsetzen? Beschränken wir uns erstmal auf die Geige. Wie filter man am besten die Audiosognale raus die man braucht? Die Geige klingt z.B. zwischen 100 Hz und 2600 Hz. Kann man das analog machen, in dem man einfach einpaar Tief und Hochpässe parallel schaltet, die jeweils einen Frequenzbereich abdecken? Sind Fouriertransformationen nötig? Mich würde es interessieren wie man diese mit einfließen lässt. Wo finden die Fouriertransformationen z.B. statt? Kann man die irgendwie analog umsetzen? "Analoge Fouriertransformation"... muss ich mal googeln. Ich hab so wenig Ahnung, und entsprechend viele Fragen. Alle elektrotechnisch nötigen Mittel werden vorhanden sein. Das einzige was fehlt ist mein KnowHow. Ich kann mir noch nicht vorstellen wie die fertige Platine am Ende aussieht. Wie würde sie ungefähr aussehen? Was ist alles nötig? Ich würde mir über Hilfe,Tipps,und Erläuterungen freuen. Danke im Voraus Mit freundlichen Grooves, wallew PS: falls ich im falschen Forumsbereich bin, und eher in den analogen Bereich oder sonst was gehöre, entschuldigung, denn ich weiß ja selbst nicht wo mein Projekt einzuordnen ist. Eher in beide. Vielleicht sogar was mit DSP.
Das Stichwort heißt Kurzzeitspektralanalyse. Heißt also: Du nimmst n ms an Abtastwerten, wendest die FFT darauf an und schaust, was Du für ein Betragsspektrum bekommst (die Phase interessiert Dich ja nicht). Da wirst Du dann ein Frequenzgemisch bekommen, aus dem Du dann den Grundton (oder bei mehreren Noten gleichzeitig die Grundtöne) herausfinden musst. Bei mehreren gleichzeitig gespielten Noten ist das eine nicht triviale Aufgabe. Bei der FFT ist noch etwas zu beachten: Du nimmst ja nur ein kurzes Audiostück. Damit multiplizierst Du Dein Eingangssignal quasi mit einer Rechteckfunktion. Im Frequenzbereich ergibt das eine Faltung mit einer (sin x)/x Funktion, was Dir Dein Spektrum versaut. Wenn Du anstelle der Rechteckfunktion eine andere "Fensterfunktion" verwendest, verringerst Du diesen Effekt. Das ganze hat bis hierhin noch nichts mit angewandter Schaltungstechnik zu tun, sondern ist primär Signaltheorie und damit zu 90% höhere Mathematik. Dafür gibts Bücher, die Du durcharbeiten und verstehen solltest - dieses Forum kann das nicht leisten. Elektronik brauchst Du nicht, ein PC oder Mac und ein Mikrofon zum Aufnehmen von Audiobeispielen sind alles, was Du brauchst. Und natürlich solide Mathematikkenntnisse - ohne die bist Du verloren. fchk
"wendest die FFT darauf an und schaust, was Du für ein Betragsspektrum bekommst " Das habe ich jetzt nicht verstanden. Wofür brauch ich eine Spektralanalyse? Ich will doch nicht ein Betragsspektrum eines Musikabschnitts wissen, sondern die genauen Zeitpunkte, an denen neue Noten einsetzen. Ein Betragsspektrum gibt mir ja keine Aussage darüber, wann eine bestimmte Änderung passiert ist. Kann sein dass ich aufgrund meiner Unwissenheit hier etwas missverstanden habe. Im Prinzip braucht man ja "nur" eine Art Stimmgerät, das sehr schnell reagiert, höhere Harmonische ignoriert, und polyphon ist, also mehrere Töne wahrnimmt. Auf einer Geige schafft man höchstens 6 Töne zu überlappen. Kommt auch auf den Raum an, in dem gespielt wird. Können also etwas mehr als 6 sein. Auf einem Klavier ist es mit Abstand mehr. Es geht aber nicht unbedingt darum, einen zweiten oder dritten hinzugekommenen Ton unbedingt als solchen zu identifizieren. Es geht nur darum zwischen Vorher und Nachher zu unterscheiden. Vorher war es 1 Ton, aufeinmal mischt sich was dazwischen und die Summe der beiden Töne Nachher ist signifikant anders als Vorher.
Was Du suchst geht ungefähr in die Richtung "Onset Detection". Hier mal ein Paper dazu, das ich jetzt auf die schnelle gefunden habe und in die richtige Richtung geht: http://nagasm.org/ASL/icmc2003/closed/CR1047.PDF Die Kurzzeitspektralanalyse bzw. das Spektrogramm ist auf jeden Fall ein wichtiges Werkzeug. Dazu gibt es genug Literatur und Infos im Internet. Das solltest du verstehen bevor Du Dich an Dein eigentliches Problem wagst.
Achso. Die Spektralanalyse bezieht sich nicht auf den Takt, sondern nur auf die Millisekunde? PS: Vielen Dank für das Paper.
So richtig Musiker bist du aber auch nicht, oder? E# gibts nicht, da bist du schon beim F. Zwischen E und F und zwischen H(int. B) und C gibts keine Halbtöne... Insgesamt ein nicht ganz triviales Thema, was du dir da ausgesucht hast.Vielleicht solltest du für den Anfang etwas einfacheres versuchen, mit dem großen Ziel, irgendwann deine Musikerkennung zu bauen? LG, Björn
Björn R. schrieb: > So richtig Musiker bist du aber auch nicht, oder? E# gibts nicht, da > bist du schon beim F. Zwischen E und F und zwischen H(int. B) und C > gibts keine Halbtöne... Es gibt 'richtige' Musiker, die keine einzige Note lesen/schreiben können. Diese Truppe macht Musik quasi aus dem Bauch heraus und das oftmals sehr gut ;-)
Achso, muss ich mich hier auch noch rechtfertigen? E# ist trotzdem eine mögliche Notation. Damit wird zwar das F beschrieben, manchmal ist diese Notation aber sinnvoller als ein F, da man beim Notenlesen z.B. Intervalle besser erkennen kann,da sich die Augen an Notenabstände auf den Notenlinien gewöhnen. So ist es z.B. einfacher eine Quinte zu erkennen. Würde man ein F notieren, wäre der Abstand (in mm) größer. Das Auge bräuchte länger um die Quinte zu erkennen. E# vereinfacht also das Notationssystem. So gibt es z.B. Tonarten die ein "erhöhtes E" besitzen. Damit ist das F gemeint. Notiert wird es aus systematischen Gründen trotzdem als E#. Du hast recht, ich kann nicht viel mit Noten anfangen. Dafür ist mein musikalisches Gehör stark ausgeprägt. Somit sind für mich meistens keine Noten notwendig. Passiert alles per "Raushören", oder wie Knut sagen würde " aus dem Bauch heraus". Nur manchmal in schnellen, komplexen Passagen schau ich mal drüber.
James Karl Maxiwell schrieb: > Achso, muss ich mich hier auch noch rechtfertigen? Ist nicht neu hier - leider...
Lade dir mal "Audacity" herunter (gibt es für Windows, Mac, Linux). Dort hast du die Möglichkeit, eine Audio-Aufnahme zu erstellen und dir die enthaltenen Frequenzen anzeigen zu lassen. http://audacity.sourceforge.net/ und http://manual.audacityteam.org/man/Plot_Spectrum
Jo, bin schon dabei. Da gibts die Funktion der Spektralanalyse. Aber was soll ich da analysieren? Es macht ja keinen Sinn einen ganzen Musikabschnitt zu spektrographieren. Ich müsste Diesen Abschnitt in kleinere Abschnitte zerlegen, und diese spektrographieren, um die Auflösung zu erhalten, die man braucht, um eine Notennänderung zu erfassen. Ich sag mal... wenigtens in 100ms Abschnitte. Muss man das per Hand machen? oder gibts bei Audacity Möglichkeiten, Abschnitt von Abschnitt zu trennen? Übrigens: das Paper auf das mich abcd hingewiesen hat: http://nagasm.org/ASL/icmc2003/closed/CR1047.PDF ist genau das richtige. Allerdings müsste ich mir nochmal die Herleitung und Implementation der Formeln anschauen. Man erfährt außerdem nicht, wie er genau diese Analyse gemacht hat, hat er sowas wie Labview benutzt?
Matlab ist das Tool der Wahl in der Signalverarbeitung. fchk
Frank K. schrieb: > Matlab ist das Tool der Wahl in der Signalverarbeitung. > > fchk Oder alternativ Octave ( http://www.gnu.org/software/octave/ ) wenn man keine Matlab Lizenz zur Verfügung hat.
Ich denke auch, Notenlesen hat mit Musikmachen erstmal nichts zu tun. Mein Nachwuchs kann z.B. gerade die Noten absehen und spielen, aber sie nicht benennen! Ist aber ein anderes Thema. Solche Software gibt es doch schon. Da gibts eine die überprüft, ob jemand richtig spielt und das automatisch benotet (Schulnoten ;-) Jain, sie setzt auch die falsche gespielte Note ins Notenblatt neben die korrekte Note. Reicht die sowas nicht?
Ach das gibts wirklicH? Mist.Aber nicht für im-Takt-Spielen oder? Aber nein, das reicht mir nicht, ich treffe alle Noten. Allerdings wäre eine Taktüberwachung eine gute Hilfe, Geschwindigkeit aufzubauen. Die Noten zu treffen ist nicht das Problem ,das ich angehen will sondern eine im-Takt-sein-Überprüfung.
Ich weiß aber immernoch nicht ob diese aufwändigen Rechenarbeiten wirklich nötig sind. Ich schwanke jetzt zwischen 2 Wegen: entweder ich geh den STFT-Weg, oder vertiefe meinen ursprünglichen Gedanken: Mein ursprünglicher Gedanke war, dass ich die Eigenschaften eines Stimmgeräts ausnutze. Ich will ja nicht ne kontinuierliche Spektralanalyse, sondern ich weiß ja von vornherein schon welche Töne, bzw welche Frequenzen auftreten werden. Ein Klavier hat z.B. 88 Tasten. Man muss also nur nach diesen 88 Frequenzen suchen. Dazu kommen noch kleine Abweichungen von höchstens +-20 cent, alles andere ist verstimmt. Wir gehen von gut gestimmten Instrumenten mit gut intonierten Solisten aus. Wenn man eine Taste anschlägt, kommt am Anfang so viel Scheisse an (Scheisse die den guten Klang ausmacht, aber in der digitalen Analyse nur im Weg steht). Kann man das nicht einfach verwerfen? Einfach nen Filter für jede Taste, 88 Pässe, die parallel arbeiten. Ist mein Gedanke hirnrissig?Um eine Spektralanalyse wird man wohl nicht herum kommen, aber wenigstens den Input säubern? EDIT: Eine kleine Ergänzung zu meinem ursprünglichen Gedanken. Ich hab meine Idee in einer schlaflosen Nacht mal weiter vertieft. Dabei ist mir ein einfacher Weg eingefallen, Fouriertransformationen völlig weg zu lassen. Gleichzeitig sind mir einige Schwachpunkte aufgefallen. 1.Die Einschwingzeit 2.Die Zuverlässigkeit und das Rauschen. Ein Filter verursacht manchmal fehlerhafte Ergebnisse... z.B. durch Umwelteinflüsse, oder durch die Laune der Natur. Bei 88 Filtern dagegen ist die Wahrscheinlichkeit für Fehler praktisch vorprogrammiert hoch. 3.Wenn man 88 Filter nebeneinander stehen hat, beeinflussen die sich nicht gegenseitig? entweder durch Dipolstrahlung, oder einfach dadurch dass sie scahltungsmäßig nicht voneinander getrennt sind? Es kommt auch drauf an wie die genau verschaltet sind. Dazu habe ich mir folgende Schaltung überlegt: Es ist nicht so kompliziert, dass man es als Skizze hochlädt. Jeder der 88 Filter, der aus einem Kondensator und Spule besteht ist mit dem einen Ende an einem Operationsverstärker verbunden, der die Audiosignale verstärkt. Die anderen Enden der Filter sind jeweils mit einem FlipFlop verbunden, der den Zustand der Filter (ob sie in diesem kleinen Zeitraum momentan angesprochen sind oder nicht) digitalisiert speichert. Der FlipFlop sollte eine gewisse Mindestspannung haben, damit nicht jedes kleine Etwas als Zustand 1 gespeichert wird. Über diesen 88 Flipflops sind nochmal 88 FlipFlops, die den vorherigen Zustand speichern. Diese 2 Reihen von 88 FlipFlops sind mit 88 Vergleichsoperationen verbunden, eine einfache "="-Operation. Also jeder Flipflop ist mit seinem Partner aus der darüberliegenden Reihe über diese Vergleichsoperation verbunden. Jeder Vergleich liefert jeweils 0 oder 1. Man muss insgesamt 88 Vergleichsoperationen überprüfen. Diese 88 Vergleichsergebnisse laufen in einen 7-bit Addierer, mit 88 Eingängen. Je mehr Unterschiede zum vorherigen Zustand der gespielten Töne festgestellt werden, umso höher ist die Summe des Addierers. Diese Summe wird von einem Microcontroller in einen Datensatz mit zeitlicher Auflösung verwandelt. Also im Prinzip eine 2-Darstellung der Events. X-achse = zeit Y-achse= Events, und deren Signifikanz(Summe der Unterschiede). Im nächsten Schritt wird die Reihe Flipflops, die eben grade beschrieben wurde so gelassen wie sie ist. Stattdessen wird die andere Reihe, die nochweiter vorher beschrieben wurde, neu beschrieben. Die beiden werden wieder verglichen ... usw.
Suche doch mal bei Tante G00-GEL nach "wav to midi converter". ...
danke, das könnte helfen. jetzt nur die frage: wie kann man das als echtzeit version umsetzen?
Aber würde trotzdem gerne wissen ob meine Methode überhaupt in Frage kommt. Denn das Umwandeln in Midi erfordert wieder rechnungsaufwändige Spektranalysen. Und es wird sehr unsaubere Ergebnisse geben wie ich grade festgestellt habe: http://www.pluto.dti.ne.jp/araki/amazingmidi/ Das Programm ist sehr gut. Allerdings in Sachen Takt nicht so genau. Hab grade z.B. Bachs Invention Nr 8 in Midi umwandeln lassen, hab die midi datei im anhang. Als Mensch, und als jemand der das Original kennt, lässt sich der Takt wiedererkennen. Als Maschine wirds schwer. Außerdem beinhaltet midi zu viele Informationen. Ich will ja nicht die Noten an sich wissen, sondern nur ob sie sich verändert haben.
James Karl Maxiwell schrieb: > bzw welche Frequenzen auftreten werden. Ein Klavier hat z.B. 88 Tasten. > Man muss also nur nach diesen 88 Frequenzen suchen. Dazu kommen noch Meep. Da sieht man, dass Du keine Ahnung hast. Wenn Du am Klavier eine Taste drückst, kommt ein Frequenzgemisch heraus. Du hast einen Grundton und viele, viele Obertöne. Deine Vorstellung würde nur stimmen, wenn Du reine Sinustöne erzeugen würdest. Tust Du aber nicht. Beschäftige Dich erst einmal mit der Theorie. Lies das hier: http://www.dspguide.com/ Und ja, an einem Wochenende ist das nicht geschafft. fchk
Eine Geige ist leichter als ein Klavier und eignet sich deshalb auch besser als eine Orgel für leichte Musik. ;-) MfG Paul
fchk schrieb: >Wenn Du am Klavier eine >Taste drückst, kommt ein Frequenzgemisch heraus. Du hast einen Grundton >und viele, viele Obertöne. Deine Vorstellung würde nur stimmen, wenn Du >reine Sinustöne erzeugen würdest. Tust Du aber nicht. Ja das mit den Obertönen ist mir schon klar (Geige-und-Klavier-Spieler), ich sagte ja "da kommt viel Scheisse an, die zwar den guten Klang ausmacht, aber für Signalverarbeitung nur im Weg steht". Diese Obertöne werden doch durch den Filter ausgelöscht, oder nicht? Der Filter lässt nur eine Frequenz passieren. Oder meinst du, dass die Obertöne eines tiefen Ton eventuell die Filter eines höheren Tons ansprechen? Ja, das wäre ärgerlich, aber dennoch kein Problem.... Dann spricht ein tiefes G halt einpaar Oktaven drüber auch an, was solls. Ist doch kein Problem oder? Dann hat sozusagen jeder Tastenschlag eine Charakteristik. Außerdem sind die Amplituden der Oberwellen geringer als der Grundton. Kann man das ganze eventuell dadurch optimieren dass man ne Mindestgrenze einführt? EDIT:Aber Danke für das Buch, bzw den Guide. Ich schau mir das aber erst an, wenn ihr mich vollständig von meinen anfängerhaften Fantasien abgebracht habt.
James Karl Maxiwell schrieb: >>Wenn Du am Klavier eine >>Taste drückst, kommt ein Frequenzgemisch heraus. Du hast einen Grundton >>und viele, viele Obertöne. Deine Vorstellung würde nur stimmen, wenn Du >>reine Sinustöne erzeugen würdest. Tust Du aber nicht. > > Ja das mit den Obertönen ist mir schon klar (Geige-und-Klavier-Spieler), > ich sagte ja "da kommt viel Scheisse an, die zwar den guten Klang > ausmacht, aber für Signalverarbeitung nur im Weg steht". > > Diese Obertöne werden doch durch den Filter ausgelöscht, oder nicht? Der > Filter lässt nur eine Frequenz passieren. > > Oder meinst du, dass die Obertöne eines tiefen Ton eventuell die Filter > eines höheren Tons ansprechen? Ja, das wäre ärgerlich, aber dennoch kein > Problem.... Dann spricht ein tiefes G halt einpaar Oktaven drüber auch > an, was solls. Ist doch kein Problem oder? Die Obertöne sind ganzzahlige Vielfache der Grundfrequenz. Wobei der Grundton nicht unbedingt der stärkste Ton im Spektrum sein muss. Es kann auch sein, dass die Obertöne dominieren - dann bekommst Du den Grundton nur aus den Abständen der Obertöne heraus. Die Summe aller Frequenzen ergibt die instrumentenspezifische Wellenform, die sich auch noch ändern kann, je nachdem, wie gespielt wird. fchk PS: steht alles auch im Buch
Hmm,Ok... Da sind außerdem nicht nur ganzzahlige Vielfache drin, sondern auch Quintensprünge, also reine Intervalle (das was auch bei Flageoletten rauskommt). Aber dennoch bin ich nicht zu 100 % überzeugt, ich entschuldige mich für meine Sturheit. Wenn ich z.B. ein tiefes G anschlage, dann hat es eine andere Charakteristik als wenn ich das G eine Oktave höher anschlage. Mag sein, dass dann die falschen Filter angesprochen werden, aber insgesamt besteht dennoch ein Unterschied, sonst würde ja das tiefe G so klingen wie das nächste G. Dann müsste ich mein Konzept ändern und sagen:ich addiere nicht die einzelnen Vergleichsergebnisse, sondern guck mir die Charakteristik an. ... Da muss man 88 bit überprüfen, das sind 2^88 Kombinationen. Ich weiß grade auf die Schnelle nicht wie man das effizient machen kann. > die sich auch noch ändern >kann, je nachdem, wie gespielt wird. Das könnte ein Problem bereiten. Meine Methode ist sehr unsicher. Man darf deshalb nicht bloß schauen, ob sich ein Muster vom anderen unterscheidet oder nicht, sondern wie stark es sich unterscheidet. Denn es kann ja sein dass der gleiche gehaltene Ton zwischenzeitlich andere Filter anspricht. Andererseits ist es vorteilhaft, wenn man 2 mal den selben Ton anschlägt, dies auch als 2 Events zu erfassen. Wenn man einen Ton anschlägt, erhält man erstmal diese Transienten, und die unterscheiden sich beim nächsten Anschlagen mit hoher Wahrscheinlichkeit. Die klingen aber schnell ab.
Ich weiß es ist etwas anstrengend das hier alles zu lesen. Aber ich danke Euch echt für jede Unterstützung. Da fühlt man sich nicht ignoriert, und halbwegs gefördert. Ich bin angehender Physikstudent, Semenster beginnt im Winter. Eure Feedbacks geben mir weiteren Ansporn der Sache nachzugehen und zu lernen,und solches Wissen, gekoppelt mit praktischer Umsetzung, kann fürs Studium nicht schaden. Den DSP Guide nehm ich mir auf jedenfall vor. Hab extra jetzt ne Sammlung an Papern und PDFs und Links, das ist schon viel Lernstoff. Aber das mit dem Analogkram will ich erstmal für mich klarstellen.
Du willst also einen 88bit Flash ADC bauen!? Die Auswertung ist doch dann ganz einfach. Nimm einfach genug RAM und bau dir einen Lookup table. Wird mir hoher wahrscheinlichkeit keine sinnvollen Ergebnisse liefern aber die Sturheit ist befriedigt. Jaja das bisschen Analogkram intererssiert heutzutage ja keinen mehr. Wir leben schließlich im digitalen Zeitalter;-)
Dein Problem ist komplexer als Dir vielleicht bewusst ist. Ohne digitale Signalverarbeitung ist es wahrscheinlich kaum oder nur mit massivem Aufwand und Know-How lösbar. Schon die handelsüblichen Stimmgeräte funktionieren ja nicht immer so perfekt und brauchen meiner Erfahrung nach schon ein paar 100ms, um einen Ton sauber zu erkennen. Generell gibt es mal noch zu sagen: Eine FFT ist so eine Art Filterbank. Natürlich kannst du das auch analog aufbauen, aber wozu? Damit wird es weder besser noch einfacher. Mir ist nun auch noch nicht ganz klar, was du nun genau willst. Wenn es wirklich nur um die Erkennung von Notenanfängen geht, hast du schon ein Paper in dem genau das beschrieben wird und es gibt noch viele ähnliche verfahren. Wenn es dir zusätzlich auch noch um die Erkennung der Tonhöhe geht wird es extrem kniffelig. Es gibt schon Systeme dafür. Aber so wie die angesprochenen wav-to-midi-converter funktioniert das eben nicht immer wirklich gut. Tatsächlich ist mir kein Algorithmus bekannt, der für jegliche Arten von Eingangssignalen zufrieden stellende Ergebnisse gibt. Wahrscheinlich gibt es etwas, das für reine Pianosignale einigermaßen zufriedenstellend funktioniert. Aber dieser Algorithmus ist dann weit entfernt von den Grundlagen, die dir noch fehlen. Mein Tipp: Arbeite dich in Octave ein. Nimm eine 10s Pianoaufnahme mit einer überschaubaren Anzahl an Anschlägen und versuche mal einen Onset-Detector zu programmieren der halbwegs funktioniert. Dann kannst du weiter schauen. Aber bis dahin ist es schon ein ordentliches Stück Arbeit für jemanden ohne DSP Vorkenntnisse.
>Die Obertöne sind ganzzahlige Vielfache der Grundfrequenz. Bei einem echten Klavier (und ich vermute auch anderen Saiteninstrumenten) kommt dann noch dazu, dass die Frequenzen aller Oberschwingungen etwas nach oben "verzogen" sind - je mehr, desto höher die Harmonische ist. Der Grund dafür ist die leicht nichtlineare Charakteristik realer Saiten aus Stahl und Kupfer. Kein Material ist ja perfekt linear. Der Effekt ist nicht sehr groß, aber (auch) er trägt zum klanglichen Reichtum des Pianosounds wesentlich bei - übrigens einem der komplexesten Klänge aller Musikinstrumente überhaupt. Klavierstimmer berücksichtigen das, indem sie den Diskant frequenzmäßig absichtlich etwas "stretchen". >Mag sein, dass dann die falschen Filter angesprochen werden, Das wird garantiert so sein. Lass Dir mit einem Wort sagen, worin das zentrale Problem der Angelegenheit besteht: Mustererkennung. Leider ist das ein Feld, auf dem sich PCs nach wie vor nur ausgesprochen bescheidene Fähigkeiten abringen lassen, im Vergleich mit jenen, zu denen ein menschliches Gehirn fähig ist. Auch Jahrzehnte intensiver Forschung auf dem Gebiet der künstlichen Intelligenz haben daran erstaunlich wenig ändern können. https://www.youtube.com/watch?v=qmB27SIGtho (Der erste Teil von 7 insgesamt.)
Ja, "onset detection" ist genau die richtige Sache. Ich hab mir nur gedacht: In dem paper das du mir gezeigt hast, da wird praktisch nur nach irgendeiner Art Onset gesucht, also irgendeiner Art Änderung. Dafür wurde ein kontinuierliches Spektrum benutzt. Ich dachte, es würde die Sache vereinfachen, wenn ich statt eines kontinulierlichen Spektrums ein "diskretes Spektrum" nehme, da ich ja schon weiß, welche Töne vorkommen werden. Ich wollte also so viele Informationen wie möglich als Vorbedingung voraussetzen.
Genau, Patternrecognition.88-bit Muster. Da fällt mir spontan Stichwort "neural networks" ein. Die sind durch ihrer massiv-parallele Verarbeitungsweise dafür besser geeignet. Aber das führt schon zu weit oder?
James Karl Maxiwell schrieb: > Dafür > wurde ein kontinuierliches Spektrum benutzt. > Ich dachte, es würde die Sache vereinfachen, wenn ich statt eines > kontinulierlichen Spektrums ein "diskretes Spektrum" nehme, da ich ja > schon weiß, welche Töne vorkommen werden. "Kontinuierlich" im Sinne der Signaltheorie sind die Spektren in dem Paper nicht. Auch wenn es wahrscheinlich nicht explizit erwähnt wird handelt es sich dabei immer um abgetastete Signale und dementsprechend auch um abgetastete, nicht-kontinuierliche Spektren. Abgesehen davon weißt du zwar welche Töne vorkommen, aber nicht welche Frequenzen vorkommen bzw. welche (eventuell mehrere) Frequenzen zu welchem gespielten Ton gehören. Aber wenn du wirklich nur einen Onset-Detector bauen willst kann dir das auch völlig egal sein. Da musst du eben nur schauen, wann sich das Spektrum entsprechend stark verändert. Und da ist es auch wichtig, dass du möglichst das komplette Spektrum betrachtest und nicht nur deine ausgewählten Frequenzen. In den Obertönen steckt ja auch Energie und Information über Notenanschläge. Mit der FFT hat man einen schnellen schönen Algorithmus für das Spektrum. Also warum es sich nicht einfach machen und den nutzen? Wenn du das geschafft hast kannst du immer noch verfeinern. Aber anstatt Dich jetzt weiter mit theoretischen Vorüberlegungen aufzuhalten solltest du nun einfach mal einen einfachen Onset-Detector implementieren und verstehen und DANN überlegen was und wie du etwas verbessern kannst.
James Karl Maxiwell schrieb: > Ach das gibts wirklicH? Mist. Offensichtlich hast du keine Recherche hinter dir, oder? > Aber nicht für im-Takt-Spielen oder? > Aber nein, das reicht mir nicht, ich treffe alle Noten. Allerdings wäre > eine Taktüberwachung eine gute Hilfe, Geschwindigkeit aufzubauen. > Wir wissen nicht, was es werden soll! > Die Noten zu treffen ist nicht das Problem ,das ich angehen will sondern > eine im-Takt-sein-Überprüfung. Vermutlich kann diese erwähnte Software das auch. Und es wird nicht die einzige sein, die verfügbar ist. Ich glaube ich hatte das hier gesehen: http://www.google.de/search?q=mdr+genial+musiklehrer+noten+pc Mach doch erstmal ne ordentliche Recherche!! z.B. Namen von Stimmgeräteherstellern auflisten und deren Patente durchforsten.
Das was ich am Ende vorhabe, das gibt es in der Form wahrscheinlich doch noch nicht. Ich hab jetzt keine Recherche gemacht, aber zumindest meinte mein Geigenlehrer mal, als ich vor einem Jahr mal sowas angedeutet hab, gesagt, sowas gäbe es noch nicht als Gerät. Ich weiß nicht ob es richtig ist, einfach alles preis zu geben. Es ist jetzt nichts atemberaubendes komplett neues. Das ist in etwa das gleiche wie die Software in der MDR Doku. Aber spezialisiert sich auf bestimmte Bereiche, und ist für bestimmte Spieler gedacht: Leute die schon spielen können und keine Intonationsprobleme haben. Wenn ich sowas hätte, hätte ich es gebraucht. Somit ist es nützlich. Es soll helfen, besser zu werden. Es kann einen Lehrer nicht ersetzen. Eine Software kann sowas nicht von sich behaupten. Kleine Kritik zur Schülerin aus dem MDR video: Einmal pro Woche zum Geigenunterricht zu gehen, das reicht absolut. Mehr Unterricht ist schlechter als wenig Unterricht, wie Fritz Kreisler sagen würde. Man muss den Unterricht nur wertschätzen. Das klappt nicht, wenn man Unterricht im Überfluss hat. Das ist wie ne Sitzung beim Psychologen. Es kommt nicht drauf an, wie oft man hingeht und wie intensiv man therapiert wird, sondern es kommt drauf an, wie man die Informationen die man erhält - und es sind in der Regel mehr als genug - zuhause reflektiert und verarbeitet. Im Prinzip ist mann dann sein eigener Geigenlehrer, man fragt sich z.B. , " was würde man Geigenlehrer sagen". Auch wenn es der Fall sein sollte, dass es sowas schon gibt, auch wenn es nur in der Form einer Android-App ist oder so etwas, es würde sich trotzdem für mich persönlich lohnen, sich mit dem Thema auseinander zu setzen. Wie gesagt: Der Weg ist das Ziel. Dann auch noch ein neues Patent dafür anzumelden wäre dann das Sahnehäubchen oben drauf. PS: Mich würde auch mal interessieren wie man das Thema aus der Sicht neuraler Netzwerke angehen kann? Ich glaube im DSP-Guide war ein Kapitel extra für sowas, falls ich mich nicht verguckt habe.
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.