Tabelle Erstellen
-
Hallo Leute
Bin Anfänger!!
ich möchte eine Akkorderkennung programmiren.
nach diese Tabelle://////////////////////////////////////////////////////////////////////////////
Sus2 Moll DUR Sus4 7
Grundton Sekunde Terz Quarte Quinte Sexte Septe
1 B2 2 B3 3 4 B5 5 B66 7 Ç7
C Cis D Dis E F Fis G Gis A B H
Cis D Dis E F Fis G Gis A B H C
D Dis E F Fis G Gis A B H C Cis
Dis E F Fis G Gis A B H C Cis D
E F Fis G Gis A B H C Cis D Dis
F Fis G Gis A B H C Cis D Dis E
Fis G Gis A B H C Cis D Dis E F
G Gis A B H C Cis D Dis E F Fis
Gis A B H C Cis D Dis E F Fis G
A B H C Cis D Dis E F Fis G Gis
B H C Cis D Dis E F Fis G Gis A
H C Cis D Dis E F Fis G Gis A BBei spiel zu Grundton
"Grundton"--"B2"---"sus2"--"Moll"-"Dur"-"sus4"--"B5"-"Quinte"-" B6"-"sexte"--"septe" "7"
------C----------Cis-------D-------Dis-----E------F--------Fis-----G--------Gis-----A----------B-------HGrundton = Grundton + Quinte
////////////////////////////////////////////////////////////////////////////
Wenn ich ein C-Dur Akkord greife(C,E,G) dann muss C-Dur angezeigt werden.
ich habe alle noten auf null gesetzt
int NoteAnAus[12]={0,0,0,0,0,0,0,0,0,0,0,0} ;
wenn die Tasten am Keyboard für NoteAnAus[?] gedrückt wird dann ist
NoteAnAus[?]= 1;// Gedrückt
NoteAnAus[?]= 0;// LosgelassenUm erst den Grundton zu ermitten habe ich es so gemacht:
//////////////////////////////////////////////////////////////
if(NoteAnAus[0]==1 && NoteAnAus[7]==1) { m_sAkk=("C");}
else if(NoteAnAus[1]==1 && NoteAnAus[8]==1){m_sAkk=("C#");}
else if(NoteAnAus[2]==1 && NoteAnAus[9]==1){m_sAkk=("D");}
else if(NoteAnAus[3]==1 && NoteAnAus[10]==1){m_sAkk=("D#");}
else if(NoteAnAus[4]==1 && NoteAnAus[11]==1){m_sAkk=("E");}
else if(NoteAnAus[5]==1 && NoteAnAus[0]==1){m_sAkk=("F");}
else if(NoteAnAus[6]==1 && NoteAnAus[1]==1){m_sAkk=("F#");}
else if(NoteAnAus[7]==1 && NoteAnAus[2]==1){m_sAkk=("G");}
else if(NoteAnAus[8]==1 && NoteAnAus[3]==1){m_sAkk=("G#");}
else if(NoteAnAus[9]==1 && NoteAnAus[4]==1){m_sAkk=("A");}
else if(NoteAnAus[10]==1 && NoteAnAus[5]==1){m_sAkk=("A#");}
else if(NoteAnAus[11]==1 && NoteAnAus[6]==1){m_sAkk=("H#");}/////////////////////////////////////////////////////////////////
kann man es einfacher machen ?
wenn ich den Grundton habe und jetz eine der Krakter note dazu gedrückt wird. Muss die Anzeige (Grundton + Karakterton) anzeigen
Grundton = Grundton + Quinte
Karakterton = Alles was zwichen (Grundton + Quinte) ist.Angenommen wenn C , G und E gedückt wird E=Dur
oder Dis = moll
oder D = sus2
oder Cis = B2Also wie oben in der Tabelle.
Wie kann ich so was am besten und einfachsten machen???
Für Hilfe jetz schon mal Danke!!!!
Grüße Fuat
-
upss
Die Tabelle ist nicht so in der Reinfolge wie ich es wollte!!