Komme gerade (wegen Gateprotect) nicht auf deine Seite.
Für deine Analyse:
Verwende ein Array:
Mal hier als Pseudocode als Mitschmatsch aus Java, Actionscript, C und PHP;
var Quintenzirkel = new Array{\"Fb\", \"Cb\", \"Gb\", \"Db\", \"Ab\", \"Eb\", \"Bb\"};
Quintenzirkel.push(\"F\", \"C\", \"G\", \"D\", \"A\", \"E\", \"B\");
Quintenzirkel.push(\"F#\", \"C#\", \"G#\", \"D#\", \"A#\", \"E#\", \"B#\");
Wie du die einzelnen Akkorde und Basstöne von den Intervallen isolierst weiß ich zwar nicht, aber ich gehe einfach mal davon aus, dass es eine String-Analyse ist.
Wenn du aber eine String-Analyse hast, dann sollte das Austauschen von H und B langfristig gesehen auch zu bewältigen sein.
Vermutlich würde ich mit Objekten arbeiten:
Akkordliste[i] = new Akkord(Grundton, Intervalle, Basston ){
...
var Ausgabe = \"\";
Ausgabe += Grundton;
Ausgabe += Intervalle;
Ausgabe += Basston;
return Ausgabe;
...
}
Und wenn ein Akkord unklar ist, dann könnte man ja eine Anfrage starten, die zur Eingabe des Akkordes auffordert:
Der Akkord \"Hmaj5b7\" ist mir unbekannt, wie soll ich diesen interpretieren.
Mit dem oben genannten Array lässt sich die Tonart recht einfach ermitteln, und auch bei Fehlern ist dieses Array sehr tolerant.
Man kann sogar mit einigen Tests die wahrscheinlichste Tonart herausfinden. (Wenn man die Enharmonischen Verwechslungen zuerst einmal gleich setzt, und dann das wahrscheinlichste durchgeht. )
Dieses war mein Abschlussprojekt zum Fachinformatiker. Jedoch hatte ich mich auf xml dtd xslt und die PHP-Verarbeitung mit Sablotron begrenzt, (obwohl das Projekt für die Prüfung viel zu groß war. Es hat aber trotzdem noch für eine gute 3 gereicht.)
Man kann nach ein paar Standard-Trennzeichen suchen...
( und )
[ und ]
<und>
<sup> und </sup>
Wenn die Standrard-Trenner nicht da sind, dann kann man die Zeilen durchgehen. Eine über die andere Zeile bzw. Wieviele Elemente lassen sich als Akkorde umwandeln. > 50% warscheinlich Akkordzeile.
Ich kenne jetzt nicht deinen Ansatz, aber ich hoffe du kannst etwas damit anfangen. Wenn nicht, vielleicht bringt es dich auf eine neue Idee.
Ich habe den Ansatz mit dem Quintenzirkel-Array schon in ähnlicher Weise in kleineren Java-Projekten, VC++-Projekten und Flash eingesetzt.
Und weiterhin viel Erfolg beim Gelingen deines Projektes.
Gruß Mjchael
--
Mein Gitarrenkurs bei den Wikibooks und
die besten Lern-Threads