I'm looking for a stretch marker like functionality for midi items that are set to ignore project tempo. Effectively, what I want is something like stretch markers but for midi.
This is to help my workflow when quantizing midi drums that were not played to a click. To do this you need to set the midi item to ignore project tempo. I end up having to break the drum track down into 1-2 bar chunks and then slide the midi around manually...it's laborious.
What I'd like to be able to do is select a bunch of notes in a midi item and then apply an action that makes them effectively gradually (linearly) speed up, or slow down based on a factor (or even better based on a mouse click reference point).
Something a little like this algorithm:
1. TimeL = Note on time at left edge of selected group
2. TimeR = Note on time at right edge of selected group
3. TimeSpan = Time-R - TimeL
4. TimeR_new = The new desired note on time for the note at the right edge of the group
5. TotalStretchFactor = TimeSpan/(TimeR_new - TimeL) --> ie stretching to the right gives a factor less than than 1, and stretching to the left is greater than one. This would match the audio stretch marker convention. Maybe let the user type this value in.
5. New note on time for each note in the group is now:
NoteOnTime + ((NoteOnTime - TimeL)/TimeSpan) *(1 - TotalStretchFactor)
The last line there basically takes the original note on time, and then adds (or subtracts) a factor proportional to the amount of desired "stretch" based on how far along the selected time span we are.
Could also do a similar thing for note duration...
Is there already scripts (maybe in SWS) that do this? Or do I need to write something?
Really hope there's something built in...or easily available