In this post I’ll be taking inventory of the available functionality for implementing my proposed MIDI editing system in REAPER.
I temporarily installed SWS extensions to see if it was valuable to use them at this stage, and it is not.
Currently using REAPER 6.16
- 30 days of Starting over with REAPER
- Rants and GUI Tweaks (again)
- Designing MIDI commands
- Item Editing Design and Inventory
- Project Template, Preferences and Mouse Modifiers
- Hotkeys, again! ...?
- Look Ma! No Hands
- Note Movement
- Note Velocity
- Step Movement
- Temporal Movement
- Note Split
- Note Length
Read the Last post for better context. I’ll be taking the ideas in that post and laying out the available commands in vanilla REAPER that apply to making this happen.
These settings are necessary for this layout to work:
MIDI Editor->Options->Sync editor transport to project transport
MIDI Editor->Options->Allow MIDI note edit to extend the media item would be nice, except it only works if you’re editing with the mouse. Step input does not extend the media item as of version 6.16.
- View: Zoom in horizontally
- View: Zoom out horizontally
- View: Zoom in vertically
- View: Zoom out vertically
- View: Zoom to selected notes/CC
- View: Scroll view up
- View: Scroll view down
- View: Scroll view left
- View: Scroll view right
- Edit: Move notes down one semitone ignoring scale/key
- Edit: Move notes up one semitone ignoring scale/key
- Edit: Move notes down one octave
- Edit: Move notes up one octave
Vanilla REAPER has no way to insert CC data with the keyboard, interpolate data with the keyboard or insert CC with the Step editor.
The inability to enter CC with the step editor is particularly annoying.
I previously ignored that changing note velocity is a common function. The 4 available commands are more than enough:
- Edit: Note velocity +01
- Edit: Note velocity +10
- Edit: Note velocity -01
- Edit: Note velocity -10
REAPER’s step editor only appears to allow automatically progressing the cursor by the grid amount on MIDI input. I have not found the ability to select notes at edit cursor via MIDI.
- Options: MIDI inputs as step input mode
- Navigate: Move edit cursor to start of measure
- Navigate: Move edit cursor right by grid
- Navigate: Move edit cursor left by grid
- Edit: Move pitch cursor to nearest A
- Multiple identical commands up to G#/Ab
- Grid: Set to 1
- Grid: Set to 1/2
- Grid: Set to 1/4
- Grid: Set to 1/6 (1/4 triplet)
- Grid: Set to 1/8
- Grid: Set to 1/12 (1/8 triplet)
- Grid: Set to 1/16
- Grid: Set to 1/24 (16 triplet)
REAPER seems to determine “previous” and “next” note by some dubious criteria. See video above.
What would you expect to happen with the command
Add next note with lower pitch to selection? I don’t know what I’d expect, but I know I wouldn’t expect what’s in the video above!
It appears that REAPER does something like:
- Look for notes that overlap the time range of the current note selection.
- Add a note that is in the range which wasn’t eligible previously, regardless of pitch, as long as it’s lower in pitch than the note in the selection with the highest pitch or
- Add a currently unselected note that’s lower in pitch.
Add next note to selection does the same thing, but it doesn’t care if the selection exceeds the initially selected note’s pitch.
There needs to be some sort of distinction for “Select Next Note” for it to be predictable without half an hour of thinking. Things like:
- Select next lower pitch at edit cursor.
- Select next lower pitch in time selection.
- Select nearest note with lower pitch.
- Select next MIDI input note.
The current behaviour breaks my note selection ideas. There does not appear to be any way to select notes effectively with the keyboard. (???)
REAPER has commands like
Edit: Select all notes at pitch cursor, but does not have
Edit: Deselect all notes at pitch cursor. This further breaks the notion of keyboard based selection.
Anything that is selectable should be deselectable via the same mechanism (if feasible).
If complementary deselect methods were available, then REAPER’s selection system would be workable:
- Make time selection.
- Select notes in time selection.
- Move Pitch cursor in thirds.
- Deselect all notes at pitch cursor or
- Deselect all notes below pitch cursor or
- Deselect all notes above pitch cursor.
Alternatively any sort of working “deselect next/previous pitch” notion as described in the previous section.
Arguably as fast as mouse selection.
Unfortunately, there’s only 1 command that uses the pitch cursor anyway!
Edit: Select all notes at pitch cursor. There’s a whole swath of commands that could use this. Insert notes on grid, at pitch cursor, in time selection? Insert note at pitch cursor? Delete note at pitch cursor? etc…
- Time selection: Set start point
- Time selection: Set end point
- Markers: Add/move marker 1 to play/edit cursor
- 2-10 Etc…
- Markers: Go to marker 01
- 2-10 Etc…
- Edit: Select all notes at pitch cursor
- Edit: Select all notes in time selection
- Edit: Split notes
If no selection then split notes works on all notes at edit cursor, or only selected notes.
- Edit: Trim left edge of note to edit cursor
- Edit: Trim right edge of note to edit cursor
- Edit: Set note length to 1/2
- Other divisions etc…
Looks like I’ll be using the mouse or writing a lot of scripts. Gross.
I’m not sure which one is worse, but I know my mousing hand hurts after trying to write this article.
This post took:
- 6 hours to write