View Single Post
Old 08-17-2016, 07:37 AM   #1
mccrabney
Human being with feelings
 
mccrabney's Avatar
 
Join Date: Aug 2015
Posts: 3,671
Default MIDI overdub: infinite notelength bugs (FIXED)

6+ report confirmations

one aspect of this bug has been fixed in a recent pre but the others still exist as described.

this bug was discovered by snooks in the "Drum Machine Edit script" thread in the JS/Reascript forums (http://forum.cockos.com/showthread.php?t=175297). i'll summarize his findings and provide licecaps.



Reproduction:
1- Set a short time selection to loop.
2- create a midi item to fit that time selection
3- overdub arbitrary notes. make sure to hold a note past the end of the loop.

ISSUE:* additional note ons are recorded at the beginning of the loop.

ISSUE: the notes extending beyond the boundary have an end position before the start position.

ISSUE: in overdub mode, REAPER assumes midi notes have infinite length until it receives a NOTEOFF. this is not the case in other record modes. this is perhaps the root of all other described behaviors? see more on this issue here: http://forum.cockos.com/showthread.php?t=176552 -- desired behavior would be that notes should exist up til play cursor and, in the case of a looped overdub recording, drop a noteoff where the play cursor WOULD BE if the user was not looping.

* regarding the first issue, i can see/agree that this is useful behavior AS OPTION, but i would think that the desired behavior would be that the notes last as long as they are played and end as such, rather than assuming that additional noteons are desired.

Quote:
Originally Posted by snooks
[the] general bug here is that when notes like these exist, extending the unlooped item extends the note indefinitely. That's definitely not what was recorded, so it's defo a bug. Scripts not being able to do anything with these notes is just another symptom of the issue.

I think not recording the notes at the beginning of the loop and leaving the ends of the notes beyond the item boundary would be the way forward too.

The only thing that sets the end position of the note correctly is touching the note in the MIDI editor, you don't need to move it. Trying to 'touch' the note via a script doesn't work, it deletes the notes.

Calling MIDI_Sort also deletes the notes, maybe because it does that with invalid notes. Unless there's anything anyone can think about I think the solution lies with the devs perhaps making MIDI_Sort check for end positions of 0 PPQ for notes that start after that time and doing whatever the MIDI editor does when you touch one of the notes.
here is a another gif showing the issue as it pertains to snooks' "Drum Machine Edit" script. in this script, users are able to selectively delete notes by triggering the script, holding the notes they want to delete, and then turning off the script to return to normal operations. these "end-before-they-start" notes confuse the script and make it hard if not impossible to use when loop recording. see that the last notes are never deleted, because they have no known noteoff. big problem.



thank you for your time
the crab
__________________
mccrabney scripts: MIDI edits from the Arrange screen ala jjos/MPC sequencer
|sis - - - anacru| isn't what we performed: pls no extra noteons in loop recording
| - - - - - anacru|sis <==this is what we actually performed.

Last edited by mccrabney; 09-18-2016 at 10:39 AM.
mccrabney is online now   Reply With Quote