2 midi controllers assigned to same function

In my Live set up , I use reaper for playback of backing tracks.
I send midi to a seperate live GP keyboard rig PC via midi in ( roland UM-1 interface ).
So to the point, I have reaper sending out program changes ( on my laptop ) for each of the < A, B, C, D > patches for each song. automated. and it sends to the GP midi IN computer.
This works great when automated. The patches change during the song and i just play the keyboards.

Thing is, I also want to have a manual way of using a 4 way button selector , A B C D (for midi selecting the patches within a GP songlist ) from my alesis keyboard , ( for songs we dont use bacing tracks with ) .
How can I have assigned, 2 independant midi sources to each of the A B C D song patches that are going into my GP Live PC keyboard machine , as to select the A B C D patches manual and automated ??

Could you please tell us which MIDI message are produced at each of the position of this “4-way selector”? (You can use the GP MIDI monitor for this and post a screenshot)

If you can change your patches using PC messages from Reaper and everything works for you this way, why should it be more difficult to send the same PC messages from one or even several MIDI controllers? :thinking:

For SetList Mode you can map CC messages to select parts within a song.

When you are talking about patches, do you mean Rackspace Variations or Song Parts?
Are you in SetList Mode or in normal Rackspace List?

I will explain a bit better what I am trying to achieve.

The automated midi program changes come in via Komplete Audio 6 MK2 MIDI input
and my manual 4 buttons ( A, B,C,D ) are the UM-1 midi input. ( on front of my keyboard)
As you can see I have mapped them both to the same CC’s and also same midi channel ( Chn 16 )
although these are 2 physically different midi inputs.
the 4 buttons are to change the song parts ( patches ) within each song and NOT
the actual song. ( the song PC midi is perfect ! )
See attachedGP-snippet 2

Button A is control code 75
Button B is control code 76
Button C is control code 77
Button D is control code 78

When I talk about patches , I do mean rack space variations. Sorry !

But here you are talking about song parts?

As you can see, I have only the komplete audio MK2 Midi interface set to the Song Parts 1 to 4
Which I would love if I could also accept both the UM-1 and the komplete audio MK2 Midi In for Song Part 1 / 2 / 3 and 4.
( I only ever use 4 parts , or sound patches for each song )
GP-snippet 3


OK, now I understand.
I think a rackspace script could help or a hardware solution.
A Midi Merger, so Gig Performer would see both (Komplete and UM-1) as 1 device.

A script is cheaper.

Can you upload a small gig with a song, so I can see your configuration.
Maybe you have to include both MIDI In plugin (Komplete and UM-1) in a Rackspace and with scripting you could react on the incoming CC message from UM-1 and switch to the desired Song Part.

Are you using different rackspaces in 1 Song?

Or another idea:

You are sending Message to Gig Performer via Komplete from Reaper, right?
I know that from Ableton Live: You can define a track which gets Midi Data from Device A and can send out that data to Device B.
So the idea: Reaper sees incoming Message from UM-1 and sends it out to Komplete.
Would that be possible?

I put together a schematic of my Live set up . Although this only shows the midi aspects of it all.
It might give you a better idea what I am trying to achieve with reaper and my manual buttons.
Hope this gives you a better insight.
Keep up the great work !


So you want to change Song Parts from your Master-Keyboard with the 4 buttons on it?

With scripting I think there is a solution.
Try this gig
Map the Song Parts in the global preferences to your Komplete Audio and connect your Master Keyboard to the used MIDI IN /(you have to change the MIDI device)

CCMessages.gig (4.7 KB)

   MKB : MidiInBlock
   CCN : Integer
   CCV : Integer

//Called when a CC message is received at some MidiIn block
//The CC numbers must be within the specified range

On ControlChangeEvent(m : ControlChangeMessage) Matching [75..78] from MKB
 CCV = GetCCValue(m)
 if CCV == 127 then
  CCN = GetCCNumber(m)

The Idea is that scripting reacts on incoming CC Messages from your MasterKeyboard and switches the Song Parts.
You have to include the script in each Rackspace used in a Song.


Yes that is correct.

Ok, Interesting scripting work.

1 Like

And if you need to do it for more controllers at the same time, I.e. for other MIDI blocks you, simply have to copy paste what @pianopaul did for one MIIDI block and replace the MIDI block handle name by the one you defined for the other MIDI block. :+1:

1 Like