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

Contents

Introduction

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.

Settings

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.

Zoom

MIDI Context

  • View: Zoom in horizontally
  • View: Zoom out horizontally
  • View: Zoom in vertically
  • View: Zoom out vertically
  • View: Zoom to selected notes/CC

Scroll

MIDI Context

  • View: Scroll view up
  • View: Scroll view down
  • View: Scroll view left
  • View: Scroll view right

Note Movement

MIDI Context

  • 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

CC

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.

Note Velocity

I previously ignored that changing note velocity is a common function. The 4 available commands are more than enough:

MIDI Context

  • Edit: Note velocity +01
  • Edit: Note velocity +10
  • Edit: Note velocity -01
  • Edit: Note velocity -10

Step Movement

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.

MIDI Context

  • Options: MIDI inputs as step input mode
    • (On/Off)

Temporal Movement

Main Context

  • 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

MIDI Context

  • 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)

Selection

Broken (sorta)

Select lower pitch???

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.

The command 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. (???)

Missing

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…

Main Context

  • 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…

MIDI Context

  • Edit: Select all notes at pitch cursor
  • Edit: Select all notes in time selection

Note Split

  • Edit: Split notes

If no selection then split notes works on all notes at edit cursor, or only selected notes.

Note Length

  • 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…

Conclusion

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.

Meta

This post took:

  • 6 hours to write