Is there a way to enter MIDI notes as numeric values?

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.

Yes indeed and you have both conveniences if you want to work the other way around:
note_value = 13
note_string=‘C-1’

I put the code up on GitHub: https://github.com/Neurogami/renoise-ng