Greetings:
Ah, one of my favorite threads. I compose a lot with MIDI, and
sometimes I like to try making the results sound at least a little more
human. A few (probably obvious) notes :
No human player can play two notes in a row with exactly the same
precision, it's simply not possible. Small-range random changes to
velocity at least help shake up the flatness of MIDI parts. However, if
the range of variation is too wide the randomizations sound pointless.
No human players play with metronomic accuracy, nor is such a thing
desirable from human players. However, the range of variation is a
significant consideration. Set drummers often play the bass drum, snare,
hi-hat, and cymbal in slightly different tempo relations, creating the
various grooves and feels that underlie musical styles.
A "groover" would be a cool piece of software, i.e., something that
shapes the existing music into another rhythmic style, but I don't think
it would be easy to get right.
IMO the best way to humanize MIDI parts is to hand-code their
velocities, note by note where necessary, which means the coder must
have a practical knowledge of performance factors. I also routinely add
a tempo track that loops an asymmetric group of fluctuating tempo
values, like a very narrow-range LFO applied to tempo. Again, if the
width of the range is too great the looseness becomes sloppy, destroying
the intended effect. Usually I keep a range of +/-4 clicks, e.g.
120-121-122-121-120-119. If these values are applied to tempo events at
the level of 16th-note triplets they'll have a nice "upsetting" effect
on the rigidity of the sequencer's tempo.
Dynamics and tempo relativities are profound aspects of any engaging
performance, whether a player plans them in advance or they occur as an
improvised response to the music (and possibly to the other players).
Just some thoughts for further consideration.
Best,
dp