Okay, I've been busy (too damned cold and wet to enjoy much outdoors!) and have made vast progress on the next set of enhancements.
- All note duration (in a pattern/sequence as well as a solo note) can now be specified as a MIDI tick duration. Simply use a value followed by a 't'. So, instead of a logical and understandable '4' for a quarter note you can now use the cryptic notation '192t'. If you read further you'll see why this is neat and important.
- In a solo line you can specify note pitches in the traditional 'a'...'g' AND you can use a MIDI pitch value (0..127).
- A note in a solo line can also specify the midi velocity. Just append "/dd" to the pitch.
- A option to the <> set in a solo line, Offset=dd, can set the current offset into the bar.
Examples of solos might include:
4f/88, +g#; <Offset=200> 22t 100,80/30; ....
Which decodes to:
4f/88 ... a quarter note f, velocity 88 (default is 90)
+g# --- quarter note g#, raised an octave (velocity 90)
; new chord
move offset pointer from 192 to 200 (ticks!)
100 --- duration 22 ticks, midi pitch 100 (velocity 90)
80 --- duration still 22 ticks, midi pitch 80, velocity 30
In most cases (other than, perhaps, the velocity) you'll probably not care or ever use this stuff. BUT, my next bit of coding will make it all make sense. I plan to modify the MidiInc command so that you can have "Riff=Track" as an additional option. In this case, we'll read the included file just like before. But, then, the file will be modified so that the duration of each note is calculated (normally MIDI doesn't know about duration, just a time to start and another time to end).
Once we know what the notes are in the included file and their durations we can push that information into the specified solo track as a series of RIFF lines (they'll not be totally readable, but close). Now, as we work though the chords in the main song file, each riff line will be included (just like a manually created solo line), articulation, transpose, HARMONY, etc. will be applied.
Idea is that you can play a little melody line on a keyboard, record the midi and then import it and use mma to do the chording, etc.
Okay, that's not working yet ... but I don't see any major problems. Getting the solo stuff to accept something which the MidiInc will generate was the major leap.
Hope you are getting anxious! But, it'll be a little while yet