One other way I see using Strasheela is in constructing 'groove templates'. These are MIDI files where there are, say, 16 16th notes per bar slightly offset in a way a human would play - ie not squarely quantized to grid. A groove template is used to mimick various 'feels' and I imagine using constraints to generate 'personalities' this way.
The groove template MIDI file is imported into a sequencer (Logic for example) and the offsets are applied to other MIDI tracks/performances.
With my limited understanding of constraint programming I have a hunch I could specify a 'personality', just like a music theory, and generate a number of MIDI files with interesting feels.
I assume we can understand the constraint-based creation of 'groove
templates' as a special case of constraint-based performance
creation. That is an interesting subject. I understand from your
explanation that 'groove templates' have the advantage that we only
need to create a relatively small output for performing a whole piece
(which, on the other hand, would be less suitable for classical music).
The problem, of course, is to know the exact performance constraints
(for this case and in general). What would be your suggestions?
Groove templates are interesting things. Each drummer have a unique imprint in how hits are placed within a measure. Bassdrum on beat one is almost always dead on. 16th note offbeats (notes 2 4 6 8 etc in a 16th note pattern) are often delayed somewhat for a looser feel. Quarter note 2 and 4 are delayed but less so. Then it all has a random element to it but the sum total has to come to 0 shift otherwise some measures will feel draggy if all hits are delayed and vice versa.
Brazilian percussion players have a very distinct push-pull pattern. African drummers too. I think they can all be expressed in a constraint fashion.
It would be a matter of generating (say) 4 bars of constant 16th notes but where each note is offset by small amounts of PPQ. +-10 or so. I'm pushing for Logic to implement sample accurate MIDI resolution and I hope Strasheela will be able to adapt to that once it's in place.
Sample-accurate MIDI resolution is not really what MIDI was designed
for :) The number of clock pulses per quarter note can be set in a
standard MIDI, though: have you tried to simple set that to some
extremely high value?
If you want a 4 bar 16th note sequence where some notes are off the
beat, but the total deviation sums to 0, then that could be expressed
as a constraint problem. We would have to set the time unit to some
very high resolution (e.g., msecs), but that can be done in Strasheela.
Still, I am a bit doubtful whether relatively simple constraints like
what you sketched would be sufficient for a convincing and lively
pattern. But we could give it a go and give you something to play
around with for eventual perfection :)