A few quirks with editing patterns

Hello everyone, it’s been a while! Just updated to 3.2.1 a few weeks ago, awesome :smiley:

Two little quirks that have been bugging me forever in renoise:

(1) can’t insert note-off in chords, ie. shift+notes to enter them horizontally on the same track

(2) soloing/un-muting channels that are part of a group: imho should unmute the group when unmuting, and recursively upwards if that group is part of an upper group, etc.

Keep up the awesome work on the most powerful sequencer and best DAW ever in existence :smiley: !!!

…alternatively, when soloing a channel, don’t mute any groups - only (non-group) channels contained in them.

Note Off Row? - just search ‘off’ in shortcuts to find:

note off row - Copy

In my Note Off tool there are also extra related shortcuts that won’t overwrite notes, but ‘fills in the gaps’ if helpful:

Also included are two
Extra Short-cuts :

"Add Note-Offs To Empty Cells in Row "
"Add Note-Offs To Empty Cells in [Whole Pattern Row] "


Agree there is room for improvement there

Nope, that just replaces all notes in current row of track with note-offs. I meant insert a note-off like if it was a note. For ex. hold shift and type a C, an E, a G, and a note-off would give me C E G = in adjascent rows starting from the cursor. This is how it works in Scream Tracker, Impulse, Schism etc. (except there’s no multi-note channels so it just moves to the next channel for each note/note-cut/note-off inserted with shift)

Oops, correction… at some point Schism Tracker added something called “note fade (~~)”, which gets inserted instead of note off (==) when shift is down.

In any case it would probably be pretty easy to write a lua function that does it the “right” way, and map it to a key.

I see what you mean, would make sense and be handy.

Those extra shortcuts in the tool are what I use for not overwriting notes currently, though they will fill in all empty notes, so less fine control than the suggestion.

Oops2, i meant adjascent columns.

Was simple to add this to Note Off tool. Let me know if it works as expected:

Shortcut:

Add One Note-Off To Next Empty Column In Row

(just search ‘in row’ in shortcuts)

Test version:

ledger.scripts.NoteOffTool_V1.05.xrnx

Thanks for putting me on the right track (pun very much unintended)!!

This works:

-- Adds a note-off the same way a note would be added when shift is pressed
-- Added by delt 27/jul/2020
function add_note_off_at_cursor_and_move_right ()
  -- these are copied from add_note_off_to_next_non_note_off_col_rightwards ()
  --consts
  local NOTE_OFF = 120
  --local EMPTY_NOTE_CELL = 121
  --renoise vals
  local song = renoise.song()
  local line_index = song.selected_line_index
  local pattern_index = song.selected_pattern_index
  local track_index = song.selected_track_index
  local col_index = song.selected_note_column_index
  local current_pattern_track = song.patterns[pattern_index].tracks[track_index]
  local visible_columns = song.tracks[track_index].visible_note_columns
  
  --print ("col_index="..col_index..", visible_columns="..visible_columns)
  
  -- don't do anything if not on a note column
  if col_index > 0 and col_index <= visible_columns then
    -- first put a note-off at cursor
    current_pattern_track:line(line_index).note_columns [col_index].note_value = NOTE_OFF
    -- insert an extra note col. if we're on the rightmost one and possible
    if col_index == visible_columns and visible_columns < song.tracks[track_index].max_note_columns then
      song.tracks[track_index].visible_note_columns = song.tracks[track_index].visible_note_columns + 1
    end
    -- then move the cursor right
    if col_index <= song.tracks[track_index].max_note_columns - 1 then
      song.selected_note_column_index = song.selected_note_column_index + 1
    end
  end
end

Just to double check you made it:

  • Start from current column
  • Expand the column count if needed
  • Jump the cursor to the column of the OFF just added

The first two match the shift chord behaviour, but for chords in renoise, when you release shift the cursor jumps back to the original column. Would it not make sense to just leave the cursor where it is for the function to match (it’s then just minus the visual prompt you get for chords)?

Yep good point, also when shift is released after inserting notes, the rightmost column is deleted if it’s empty and was added in the process of inserting the chord.

Also my function (and yours too) forgets to check if edit mode is enabled, ie. the red outline around the pattern.

Just having another look, things do get a lot more complicated when column is not changed. As you can’t check if a modifier is pressed in the API without a gui dialog, the options seem to become:

  • Keep a check on the note/pattern/line the user is on and reset flags as that changes.
  • make a mini-gui with a keyhandler attached and require the use of Shift + somekey as assignment by the user.
  • some timer mess that could appear erratic/ buggy

and you still could have unwanted behaviour/ added noteoffs with the first option as there is no visual feedback.

I’ll have a think on it anyway.