I have the need for a FUNCTION:
Transpose($Song, $direction)
The logic I need is pretty straight forward, but I am having a hard time replicating it using PHP functions. I will try to break it down to it's simplest form:
I have a field that has several lines of text. Chords and Song Lyrics.
The "Chord" lines begin with an asterisk "*" (first character) and end with the line break. These are the strings I want to parse. Lines with NO asterisk at the beginning are ignored.
Based on 3 arrays of NOTES, I want SUBSTITUTE the text (based on exact text character patterns - just NOTES not the chord type) of the lines in my field that start with an asterisk "*".
original_chord_array = A, A#, B, C, C#, D, D#, E, F, F#, G, G#
transpose_up_array = A#, B, C, C#, D, D#, E, F, F#, G, G#, A
transpose_down_array = G#, A, A#, B, C, C#, D, D#, E, F, F#, G
It is important that it only effects EXACT strings. Notes will always be capitalized and chord types will be lower case. Maybe we can use that characteristic to better identify what to change. Here are some examples of chords:
A
Asus7
Csus add9
Dmaj7
F#m7
G#
C#dim no3
When I transpose UP these chords, just the NOTE should change:
A#
A#sus7
C#sus add9
D#maj7
Gm7
A
Ddim no3
When I transpose DOWN these chords, just the NOTE should change:
G#
G#sus7
Bsus add9
C#maj7
Fm7
G
Cdim no3
Hopefully this break down is clear and someone will bail me out ;-)
Thanks again for the feedback.