Make instrument changes mappable to a key or pad

I would like to use two drum controllers.

One of the drum controllers would be for instrument changes, the other for drumming.

That way I could change instrument quickly with the press of a drum pad, and continue the performance seamlessly on the other pad. (this way you dont have to scroll through the instrument list or repeatedly press the program change button)

It would be like having sixteen sets of sixteen sounds (sixteen instruments containing sixteen sounds each for each of the sixteen pads)

SIXTEEN!!!

hope the renoise team will seriously consider implementing this awesome feature for live pad controller performances.

this should already be possible via lua scripting. probably better via messing with midi routings instead of switching the active instrument (my feeling tells me this somehow…), but as I see it both would be possible with some codemonkey work.

this should already be possible via lua scripting. probably better via messing with midi routings instead of switching the active instrument (my feeling tells me this somehow…), but as I see it both would be possible with some codemonkey work.

I wonder if xRules would work for this.

I haven’t looked into how lua scripting works yet.

Do you know of any workaround using midi instead of instrument change to achieve the same result?

(change instantly between 16 different instruments/drumpad programs at the press of any one of 16 pads)

Sorry, I don’t have the muse atm to try something proper. And I’m a beginner in renoise scripting yet.

But you could first look into making custom midi mappings.

Then, there is a lua access to the currently active instrument. It is “renoise.song().selected_instrument_index”. You can read it or set it to a number of your choice, like “renoise.song().selected_instrument_index = 5”, which will select instrument number “04” for you. The number is instrument number plus one (don’t ask why…), you can’t set it to zero, likewise if you set it to “1” it will select instrument “00”.

Maybe adding 16 mappings like this to your midi mappings config file, and then map each button of the first controller to one of those oneliners, you could try exploring the possibilities of your idea. Like spreading the instruments of choice to instrument number 00 - 15, and then bang on.

My idea to use midi would go even more into depth of manipulating the current midi mappings and routings for each swap. This wouldn’t be oneliners and would require some cold, dark, winter days…

Ok, waiting for my food to cook I’ve done something half assed for you to get started:

  1. Locate the file “GlobalMidiActions.lua” in the “…/Resources/Scripts/” folder of you renoise installation

  2. Copy it into the user library Renoise “…/Scripts/” folder

  3. Add the following lines to it:

Click to view contents

add_action(“Custom:Select Instrument 00 [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 1
end
end)

add_action(“Custom:Select Instrument 01 [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 2
end
end)

add_action(“Custom:Select Instrument 02 [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 3
end
end)

add_action(“Custom:Select Instrument 03 [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 4
end
end)

add_action(“Custom:Select Instrument 04 [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 5
end
end)

add_action(“Custom:Select Instrument 05 [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 6
end
end)

add_action(“Custom:Select Instrument 06 [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 7
end
end)

add_action(“Custom:Select Instrument 07 [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 8
end
end)

add_action(“Custom:Select Instrument 08 [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 9
end
end)

add_action(“Custom:Select Instrument 09 [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 10
end
end)

add_action(“Custom:Select Instrument 0A [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 11
end
end)

add_action(“Custom:Select Instrument 0B [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 12
end
end)

add_action(“Custom:Select Instrument 0C [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 13
end
end)

add_action(“Custom:Select Instrument 0D [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 14
end
end)

add_action(“Custom:Select Instrument 0E [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 15
end
end)

add_action(“Custom:Select Instrument 0F [trigger]”,
function(message)
if message:is_trigger() then
renoise.song().selected_instrument_index = 16
end
end)

  1. restart renoise, you should in your midi mapping dialoge now have 16 options to trigger with notes in the cathegory “Custom” to select Instrument 00-0F

Hey, thanks!

This looks interesting. I haven’t tried it out yet. I’m going to give it a go.

I really hope the “change instrument by hitting drumpad / map each instrument to a single drumpad” feature makes it into the next renoise version.

It would be so useful for live performance. I’m not really impressed by akais MPC software or maschine or ableton…personally I think renoise is better for drumpad controller peeps (only its missing “16 levels” [granular pitch shifting]).

Another thing that would be good is to be able to split a single midi keyboard between two instruments…like in the keyzones editor you could assign the lower half of the midi keyboard to instrument 1 and the upper half of the keyboard to instrument 2., or you could have the lower part the of the keyboard used to change instruments and the upper part to play chords and melodies…

You know, your feature is already implemented in renoise. No Fake! But it has to be programmed, or activated, first. And I think it is wanted this way! Renoise has capabilities to map midi inputs to programmed actions. Switching the instrument is one possibility to react to midi input. Or changing the midi mappings of a controller so it will affect different instruments, this is the other way I thought of.

You see what I proposed above is the daft simplest solution. Much more complex (to implement, but easy to use) or configurable (by the user to adapt behaviour to his preference) actions are already possible, even with a gui to config them. It just takes some effort of people who are capable and want this to be real in the best possible way. Without the main renoise team even need to be involved, they already made the basics into renoise & opened the documentations on how to do it.

You know, your feature is already implemented in renoise. No Fake! But it has to be programmed, or activated, first.

Not even that, I believe you just need to open MIDI mapping dialog (CMD/CTRL+M) and search for “Instrument”

The mapping “Current Instrument [Set]” will accept Notes/MIDI-CC messages which you can use to select any instrument.

If your controller is not outputting something useful then you can probably use xRules to convert it (I’ll be happy to make the script for you).

OK, awesome. So good for a live drumpad routine!

I’m going to try that and get back to you…