Hello everyone, it’s been a while! Just updated to 3.2.1 a few weeks ago, awesome
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 !!!
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.
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
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.