alexs1 "With MIDI, there seems to be a twofold path: 1) Reverse=playing back the sequence of Notes/CCs in reverse order and/or 2) putting the actual audio tail of each note in Reverse. I'm guessing that it's probably much easier to implement the former?"
Reverse would be playing back the sequences of events in reverse order. The trick is that notes have an On and an Off, so the meaning of those needs to be swapped. It's actually a little more complicated for me because I don't store NoteOff, I store NoteOn and a Duration which makes a number of things easier for layering and editing. But it makes reverse harder.
For the audio tail, AFAIK, there is no way to ask a synth "this is a NoteOn but start your envelope at the end rather than the beginning" so it won't sound like true reverse, notes will attack and decay like they normally would just played in the reverse order.
This was touched on in the Bounce thread, but a hybrid solution is possible, the sequence is MIDI, but at the same time it is capturing the audio produced by the synth so that when you reverse, it is a true waveform reversal. You would lose the MIDI-ness of that though, you could no longer time stretch, transpose, or changes patches once it was captured as audio.