View Single Post
Old 07-03-2011, 06:02 AM   #33
jnif
Human being with feelings
 
jnif's Avatar
 
Join Date: Dec 2008
Posts: 2,111
Default

I'm also hoping that this bug will be fixed soon.

Quote:
Originally Posted by hamish View Post
What may be better is FR: Give MIDI items audio-like Item timebase: 'Time' mode

Meaning that MIDI recorded to an ARBITRARY bpm (we record with no click at default project bpm = 120) has tempo map written into the item and we do away with the need for the 'ignore project tempo' box. When the timeline is changed by inserting tempo change markers the item tempo map will be re-written preserving the midi events in time.

(as is audio with Item timebase: 'Time' in such a project)

How is that? Feel free to adapt...
I think it is not necessary to write tempo maps to midi items.
There might be another way to handle this problem.

All MIDI items in Reaper are always internally stored using "ticks per quarter note" units. So, MIDI events' time position (in seconds) always depend on tempo. This is different compared to audio items which are stored as samples where sampling rate is defined in Hz = samples per second.

What does this mean?
It means that MIDI items are automatically using project's tempo map. There is no need to write separate tempo maps to MIDI items.
For example if you copy a midi item to a new position where the project tempo is different (or even has multiple tempo changes within the item) the stored MIDI data does not change at all. You can see this when you open the project file in text editor and look at the MIDI data. MIDI event data in the copied item is identical to the original although it plays at different tempo.

Also, it means that if you record for example a 95 bpm midi song with no click at default project bpm = 120, then those recorded midi events are still internally stored "relative to 120 bpm tempo". Probably all notes are "out of grid" and you can't use quantize operations in any musical way.

To get the project grid to follow your recording you need to do the tempo mapping as already described in this thread (set midi item time base to time, set midi "ignore project tempo" in item source properties, change project tempo map to match midi notes). However, this does not really make the MIDI item editable. For example quantizing the note lengths to grid does not work as expected and there can be unexpected problems if item is splitted.

To make the original midi item editable you have to temporarily disable all FX and VSTi on the track and then "Apply track FX to items as new take (MIDI output)". This operation rewrites the MIDI events to a new take so that the events are internally stored in relation to the modified tempo map. To the user this new take looks like an exact copy of the original. The new take will be completely editable and the "ignore project tempo" is automatically disabled in the new take. This can be used as a workaround in current Reaper version. It can be quite confusing to make these operations if you don't know what is happening under the hood. It should not be required to understand the internal implementation details when doing this kind of tempo/timing edits.

As you can see this is really much more complex process than it should be. And I hope there will bugfixes or new features that will make this process a lot easier.

jnif

Last edited by jnif; 07-03-2011 at 06:21 AM.
jnif is offline   Reply With Quote