Add octave jumps and jumping to notes that exist
Arrowing cell by cell is right inside a dense bar and tedious across an empty one. Three pairs of keys now jump straight to a note that is really there, one pair for each axis: Alt+Up/Down the column -- next pitch sounding in this cell Alt+Left/Right the row -- next note at the cursor's pitch Ctrl+Alt+Left/Right anywhere -- next note in the take, any pitch plus Ctrl+Alt+Up/Down for whole-octave movement, which needs no scale awareness because an octave preserves the pitch class. All the jumps ignore muted notes, which are not audible content, and the row and any-note jumps anchor on note starts, so a note held across eight cells is one stop rather than eight. Landing in a chord takes whichever note is nearest the pitch you came from rather than always the bottom one. They sit on Ctrl+Alt rather than plain Ctrl because REAPER already uses Ctrl+arrows to move between items. The logic lives in the lib as usual, with four run* drivers following the runShift pattern, so the eight new action scripts are seven lines each. test_lib.lua previously dofile'd an absolute D:\ path and so could not run outside one machine; it now resolves the lib relative to itself. Stubbing MIDI_GetNote and the PPQ conversions reaches further than the old "pure logic only" boundary, so the new tests cover the search functions and the drivers' speech and cursor movement too.
This commit is contained in:
+16
@@ -71,6 +71,14 @@ RSmidigrid_left|32060|MIDI Grid: Cursor left one cell|MidiGrid_Left.lua
|
||||
RSmidigrid_right|32060|MIDI Grid: Cursor right one cell|MidiGrid_Right.lua
|
||||
RSmidigrid_up|32060|MIDI Grid: Pitch up one scale degree|MidiGrid_Up.lua
|
||||
RSmidigrid_down|32060|MIDI Grid: Pitch down one scale degree|MidiGrid_Down.lua
|
||||
RSmidigrid_octup|32060|MIDI Grid: Pitch up one octave|MidiGrid_OctaveUp.lua
|
||||
RSmidigrid_octdn|32060|MIDI Grid: Pitch down one octave|MidiGrid_OctaveDown.lua
|
||||
RSmidigrid_colup|32060|MIDI Grid: Next note above in this cell|MidiGrid_ColumnUp.lua
|
||||
RSmidigrid_coldn|32060|MIDI Grid: Next note below in this cell|MidiGrid_ColumnDown.lua
|
||||
RSmidigrid_rownext|32060|MIDI Grid: Next note at this pitch|MidiGrid_RowNext.lua
|
||||
RSmidigrid_rowprev|32060|MIDI Grid: Previous note at this pitch|MidiGrid_RowPrev.lua
|
||||
RSmidigrid_notenext|32060|MIDI Grid: Next note anywhere|MidiGrid_NoteNext.lua
|
||||
RSmidigrid_noteprev|32060|MIDI Grid: Previous note anywhere|MidiGrid_NotePrev.lua
|
||||
RSmidigrid_cell|32060|MIDI Grid: Toggle note at cursor cell|MidiGrid_ToggleCell.lua
|
||||
RSmidigrid_hold|32060|MIDI Grid: Toggle hold mode|MidiGrid_ToggleHold.lua
|
||||
RSmidigrid_audit|32060|MIDI Grid: Repeat current cell|MidiGrid_AuditionCell.lua
|
||||
@@ -101,6 +109,14 @@ keys='
|
||||
1|32807|32060|RSmidigrid_right
|
||||
1|32806|32060|RSmidigrid_up
|
||||
1|32808|32060|RSmidigrid_down
|
||||
25|32806|32060|RSmidigrid_octup
|
||||
25|32808|32060|RSmidigrid_octdn
|
||||
17|32806|32060|RSmidigrid_colup
|
||||
17|32808|32060|RSmidigrid_coldn
|
||||
17|32807|32060|RSmidigrid_rownext
|
||||
17|32805|32060|RSmidigrid_rowprev
|
||||
25|32807|32060|RSmidigrid_notenext
|
||||
25|32805|32060|RSmidigrid_noteprev
|
||||
1|13|32060|RSmidigrid_cell
|
||||
17|72|32060|RSmidigrid_hold
|
||||
17|65|32060|RSmidigrid_audit
|
||||
|
||||
Reference in New Issue
Block a user