How far along are you?  To get started something like this may work for

preg_match_all('/[A-G]{1}#?/', $line, $matches);

That SHOULD return each note of the line (you can retrieve them via the
$matches array), given that there are no other upper-case characters that
are not notes. Also this assumes that $line has exactly one line in it. :)

If you get that working, perhaps you can setup something using the
preg_replace method?

Another option is to use the str_replace function.

I gotta run (else I would type some more) but let me know if you want any
advice on using those!


On Fri, Oct 1, 2010 at 11:20 AM, Don Wieland <> wrote:

> 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 "*" and end with the line break.
> This is the string 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
> I am working on a function, but still not producing the proper results.
> Hopefully this break down is more clear and someone will bail me out ;-)
> Thanks again for the feedback.
> Don
> On Oct 1, 2010, at 7:02 AM, Richard Quadling wrote:
>  Changing the NormalKeyID and using that ID with NoteSequenceNumber
>> should give you the new note to play.
>> I think.
> --
> PHP General Mailing List (
> To unsubscribe, visit:

Reply via email to