Akkorde transponieren

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Criss
Beiträge: 126
Registriert: 21.09.2004 18:45
Kontaktdaten:

Akkorde transponieren

Beitrag von Criss »

Hallo,

ich hab da ein Problem, und bis jetzt habe ich noch keinen Lösungsweg gefunden! :freak:

Ich will ein Programm machen das Gitarren-Akkorde transponiert!

Also, hier erstmal die Reihenfolge, der Tonarten:

A A# B C C# D D# E F F# G G#

Nun, will ich z.b. mittels Trackbar, die Akkorde in einem geöffneten Textfile ändern! Also, wenn dort z.b. steht; G D C und ich die Trackbar eins nach rechts schiebe sollten sich die Akkorde ändern in G# D# C#. Wenn ich zwei nach rechts schiebe; A E D etc.

Hoffe Ihr könnt mir irgendwie helfen!

Danke schonmal zum voraus!
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag von Froggerprogger »

So in der Art könntest Du z.B. das Transponieren einer Note bewerkstelligen:

Code: Alles auswählen

Dim Noten.s(11)

Noten(0) = "C"
Noten(1) = "C#/Db"
Noten(2) = "D"
Noten(3) = "D#/Eb"
Noten(4) = "E"
Noten(5) = "F"
Noten(6) = "F#/Gb"
Noten(7) = "G"
Noten(8) = "G#/Ab"
Noten(9) = "A"
Noten(10) = "A#/B[b]"
Noten(11) = "H[B]"

Procedure.l TransposeNote(note.l, transpose.l)
  If transpose = 0
    ProcedureReturn note
  Else
    Protected res.l
    res = (note + transpose) % 12 ; % 12, damit z.B. Wert 13 wieder zu 1 wird
    ; -11 <= res <= 11
    If res < 0
      ProcedureReturn 12+res ; z.B. -1 = 11
    Else
      ProcedureReturn res
    EndIf
  EndIf
EndProcedure

aktuelleNote = 9
Debug Noten(aktuelleNote)
schieberegler = 4
Debug "Transpose " + Str(schieberegler) + " Halbtöne"
neueAktuelleNote = TransposeNote(aktuelleNote, schieberegler)
Debug "=> " + Noten(neueAktuelleNote)

aktuelleNote = neueAktuelleNote
schieberegler = -9
Debug "Transpose "+Str(schieberegler) + " Halbtöne"
neueAktuelleNote = TransposeNote(aktuelleNote, schieberegler)
Debug "=> " + Noten(neueAktuelleNote)
!UD2
Antworten