Controlling Renoise for live performance with multiple keyboard midi c

I would like to use renoise for live performance, but I am not sure if it’s viable. I would like to use two keyboard midi controllers, each one playing different instruments. How would I set that up?

And what would be the best way to quickly select different instruments in this scenario, between songs or even during songs?

http://tutorials.renoise.com/wiki/Instrument_Settings#MIDI_Input

And use a different channel for each instrument you want to control with each keyboard and change the channel you are transmitting on.

Perfect - that should work fine as long as I don’t need more than 16 instruments per device.

thank you!

You could leave one as the Master keyboard, set in the main MIDI Preferences, and then it will always play whichever instrument you currently have selected in the track you have your cursor and get past the 16 channel limit. But things are likely to get more confusing this way. Using the Instrument Settings MIDI Input you can have your 2x 16 instrument for each song, assuming you only load a single song at a time. Plus that way you can assign the instrument to a track and thus have it’s effects chain ready for it without having to think about cursor position.

Good point, i think indeed that would be too confusing. I would probably prefer to just add another small keyboard to play the least-used / effect instruments.

If I did choose the “current instrument” approach though, I couldn’t find a way to set the current instrument using midi. I see the controls for it in the midi mappings window, but I don’t see any way to assign it to a midi controller. Do you know how?

You should be able to just click on it and then touch the controller (knob/slider) you want to use. There is a Set option, which will take the actual value 0-127 and select that instrument. I would imagine it might be hard to select the exact one you want though. Or there is the Trigger for Increase/Decrease, which you would set to a button and then go up or down by one instrument. I think it has to be a CC controller, not a note, but I’m not certain.

Would using the computer keyboard be too much? Sometimes it seems easier to have a few things on the computer keyboard, muting channels, some looping options, selecting instruments etc rather than on a MIDI controller. Or at least that’s the conclusion I always come to when thinking through these kinds of things…

I agree with kaza on some level; the midi assign always works, but in renoise it’s not bound to select instrument from the existing instruments (which is, just as you might find, not the best design choice imo)
luckily we have lua. I’ve bound a controller to map 0-127 to just the existing instruments (be there 3 or 128). I think it also creates an empty instrument at the end if the last existing instrument is not an empty one. If you want to look at the code I used for that, it’s over at github, check this link (the first 2 lines after the marked one #2274, select the instrument, then the if after that takes care of possibly adding a new instrument)

That’s actually quite a neat yet simple idea :)

here’s the code for a dead-simple version of this ‘Basement’ tool with just instrument selection:

  
-- nl.jeweett.MidiInstSelect.xrnx/main.lua  
local function mod_midi_value(mv, min, max, integer)  
 if integer then  
 local nv = mv / 128  
 return math.floor(nv*(max-min + 1)+min)  
 else  
 local nv = mv / 127  
 return (nv*(max-min)+min)  
 end  
end  
local function inst_sel(mm)  
 rs = renoise.song()  
 local nv = mod_midi_value(mm.int_value, 1, #rs.instruments, true)  
 rs.selected_instrument_index = nv  
end  
  
renoise.tool():add_midi_mapping {  
 name = "Navigation:Instruments:Current Instrument [Select or Add]",  
 invoke = inst_sel  
}  
  

This one would add an empty instrument as last if you push the midi selector to the end:

  
-- nl.jeweett.MidiInstSelect.xrnx/main.lua  
local function mod_midi_value(mv, min, max, integer)  
 if integer then  
 local nv = mv / 128  
 return math.floor(nv*(max-min + 1)+min)  
 else  
 local nv = mv / 127  
 return (nv*(max-min)+min)  
 end  
end  
local function inst_sel(mm)  
 rs = renoise.song()  
 local nv = mod_midi_value(mm.int_value, 1, #rs.instruments, true)  
 rs.selected_instrument_index = nv  
 if (nv == #rs.instruments and #rs.selected_instrument.samples > 0 and rs.selected_instrument:sample(1).sample_buffer.has_sample_data) or  
 (nv == #rs.instruments and #rs:instrument(nv-1).samples > 0 and rs:instrument(nv-1):sample(1).sample_buffer.has_sample_data) then  
 rs:insert_instrument_at(#rs.instruments+1)  
 end  
end  
  
renoise.tool():add_midi_mapping {  
 name = "Navigation:Instruments:Current Instrument [Select or Add]",  
 invoke = inst_sel  
}  
  

Cas, you rock. I just had a look at various scripts you’ve made - a most overwhelming collection :slight_smile:

This is amazing, thank you all for the help. I hope others will benefit from this as well.

Also check out MPE tool, it also allows map instrument selection and pattern selection if you want to play different kits or same kit with different fx ;)