For most cases it’s fine for me to enter notes using the computer keyboard, but I’m using MIDI sent from Renoise to drive an external application. Different note values trigger different behavior in this other app. Right now I wanted to enter MIDI note value 8, and “translating” such notes to the matching keyboard/octave setting is tedious.
What I really would like to do is just type in “08” someplace to set that as the note value. From my searching I don’t think this is possible but I thought I’d ask in case someone knows of a tool or a trick or some hack. (This is using Renoise 2.8.2).
Worst case I have to figure out what laptop key and octave setting this and other notes map to, but raw MIDI value editing would be sweet.
In this case it is best to either use one of the existing tools (Duplex) or create a tool that does that for you.
Duplex allows you to create XML templates where you can more easily assign CC values and note values to functions and buttons.
It even has a default midi keyboard layout that you can adjust.
I’ve yet to package this up for any proper release but here’s a (relatively) quick tool that lets you insert a plain numeric value for a note:
--[[============================================================================
com.neurogami.RawMidi.xrnx/main.lua
============================================================================]]--
function showUI()
local ui_dialog = nil
local vb = renoise.ViewBuilder()
local DIALOG_MARGIN = renoise.ViewBuilder.DEFAULT_DIALOG_MARGIN
local CONTENT_SPACING = renoise.ViewBuilder.DEFAULT_CONTROL_SPACING
local dialog_title = "Raw MIDI value entry"
local note_value_from_text
local dialog_content = vb:column {
vb:row {
margin = DIALOG_MARGIN,
spacing = CONTENT_SPACING,
vb:text {
text = "Enter raw MIDI note value:"
} , vb:textfield {
value = "",
width = 90,
notifier = function(v)
note_value_from_text = v + 0
end
}
} ,
vb:horizontal_aligner {
mode = "center",
vb:button {
text = "OK",
notifier = function()
local rs = renoise.song()
local edit_pos = rs.transport.edit_pos.line
local track = rs.selected_track
local pattern = rs.selected_pattern
local pattern_track = rs.selected_pattern_track
local number_of_lines = pattern.number_of_lines
local note_column_index = 1
local note = pattern_track:line(edit_pos):note_column(note_column_index)
print("note.note_value = " , note.note_value )
note.note_value = note_value_from_text
end
},
vb:button {
text = "Cancel",
notifier = function()
ui_dialog:close()
end
}
}
}
ui_dialog = renoise.app():show_custom_dialog( dialog_title, dialog_content)
end
renoise.tool():add_menu_entry {
name = "--- Main Menu:Tools:Neurogami Raw MIDI Value Entry",
invoke = showUI
}
What made this easier than I expected was that Renoise stores the note values as integers anyway; it just displays them as “C#-3” (for example), so setting the note value did not require any custom code to figure out what a given numeric maps to.
Note, too, that you do not have to have editing turned on (e.g. hit Esc). This will alter the note value (or insert one) no matter what.