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 B6

    6 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 B

    Bei 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-------H

    Grundton = 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;// Losgelassen

    Um 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 = B2

    Also 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!!


Anmelden zum Antworten