Generic MIDI Channel Routing with Rig Manager

This has come up a few times, so I did think a generic approach to channel splitting in Rig Manager may be helpful. The previous solution required the use of Local GP Port, this limited the solution to just lifting one channel from the incoming multi channel MIDI stream. This generic solution requires use of a virtual MIDI cable, one per required channel. On windows use loopMIDI and on the Mac use the IAC driver. Two solutions are described.

Virtual Devices

This step is required for both solutions. Set up the number of Virtual MIDI cables, as required (upto 16 for a single MIDI device). Use a name that is easy to determine the source of data, eg. Widi_Bud_1, Widi_Bud_2 etc…

The virtual cables will be available as devices in Rig Manager and can be used or aliased as required.

Once aliased the incoming MIDI channels can now be used as if they are discrete devices and can swapped for other devices in the normal manner of reassigning the alias source. In addition the the incoming channel stream can be safely remapped to channel 1 as there is only a single MIDI channel on the incoming MIDI data stream. This is to avoid having to set channels in VST’s or having to remap MIDI in the wiring diagrams.

Next we must extract and route the data from the multi channel MIDI stream onto the new virtual devices using one of the following two methods.

Global Wiring Method

This is easy to add if you wish to avoid scripts. In the global rackspace wiring, simply split the channels from the multi channel input and send each to the virtual MIDI ports as required. Check the Ignore global transpose checkbox in the MIDI In block, failure to do this will result in a doubling of the transpose when using the global transpose.

In this method the data flows out of GP through the virtual MIDI cable and back into GP via the Rig Manager devices.

Gig Script Method

This short script can be added to the Gig Script. Ensure that the cable definitions have been created in your virtual MIDI cable application. And the alias’s have been defined and applied in Rig Manager. Check that they match the MidiInDevice’s in the script. Or adjust the script to match your device alias’s.


var Multi_Channel : MidiInDevice
var Lower_88 : MidiInDevice
var Upper_61 : MidiInDevice
var Control_Surface : MidiInDevice

On MidiEvent(m : MidiMessage) from Multi_Channel
    var c : Integer = GetChannel(m)
    Select
        c == 1 do InjectMidiEventViaRigManager(Lower_88,m)
        c == 2 do InjectMidiEventViaRigManager(Upper_61,m)
        c == 16 do InjectMidiEventViaRigManager(Control_Surface,m)
    End
End

In this method no data flows through the virtual MIDI cables they are used only to provide an active input device. If required, this method could be added to the Include "$rigs$" scripts that are loaded whenever needed by the Rig selection in Rig Manager.

4 Likes

spav - like the way you worked this using Global midi non script options Im following the instructions but stuck at step 1 using IAC - not sure what you mean (new to GP and a Mac user)

just getting the hang of rig manager

Im at a remote setup using rig manager - if I make the set up here will it be easy to use on other rig manager set ups?:

First one is my remote set up (Skyfall Studio -where I use the widi for my keytar and maybe set up the other widis per midi channel routing - Im using a Roland 88 digital piano and the midi fighter twister to replace the controls of the keylab in the rig below)

Second image is the Keylab Performance - this is where ill have the keytar on top (using widi), the keylab on the bottom and then a remote minicab 3 and a few other widi pedals alll going though the widi bud


Here is a link to help you set up IAC driver on a Mac. It is the same as loopMidi on windows. Once created they remain so setup is just once.
Set up IAC on Mac

By using Rig manager you can easily swap out keybeds and controllers without touching the GP gigfile. Splitting out the channels (as described above) means that you can swap out any of the devices served over the Widi connections without affecting the remaining Widi connections.

A tip for rig manager, try not to use device names for the alias names. I would use something like Lower_88, Upper_61 and Control_Surface. It helps keep your head straight when swapping out boards.

Awesome - I’ll give it a go

Just a note - I recently used a 61 key controller - but since im paring down to 49 (keytar) I will have to go through all my splits and presets yes?

Going forward if I add 61 I would think it wouldn’t matter

I usually rename the MIDI In Blocks when wiring rather than leaving the default name (as it includes the alias). When you change the name in Rig Manager, the connection remains but the name in the block becomes confusing. This is what I do…

Device Name (usually manufacturer name from USB device)
Device Alias Name (non-device specific usually rig related Lower 88)
Midi In Block (renamed to something rackspace related, eg Lower LH Zone)

In this way nothing changes when you change the Alias association in rig manager.

I feel like a MIDIot.

Keylab Performance is the main Rig Manager set up - I have a bunch of items listed on the device aliases - and not sure if I did it right - no channels specified. (not sure what AX-Edge Midi out is on the device alias )

Im not sure what I did - I don’t need any of the control aliases as they are all coming from my Lower 88

look at the IAC - it didn’t give me any channels I could only add the items that are separate on the widibud (I named them based on what unit they are plugging into)

Also mapped them to channel 1 as instructed.

At the moment I only have 2 rackspaces where I need to add the Minilab - so I can label the midi inputs accordingly.

1 - IAC
2 - Rig Manager
3- Global wiring
4 - Wiring of a song with MiniLab3 and Keytar they both play strings (The mini lab is to the far right - when I play it the keytar also plays so its not separate at the moment)

What should I change and how would you name this particular rackspace - and Ill apply the rules to the rest.





You are missing the channel constrainers from your global wiring.

IAC drivers will not give you anything you must create the ports within it.

This solution is for extracting channels from a multiple channeled midi input. So create Widi_Bud_1 etc. one for each channel you need to pick off the widi bud in the IAC control panel. In this way it is easier to know where to run the output of the constrainers. You can ignore the existing IAC ports if you didn’t create them.

You must get this far before starting to play with the alias’s.

The name from IAC driver will be IAC Driver Widi_Bud_x, the loopMidi names in Windows are slightly different.

Not sure what to do here - how can you create channels from IAC?

The first thing I did is open IAC buy double clicking the IAC driver from midi studio.

It leads you to and IAC Driver Properties Window

you can add ports with the + button and name them whatever you want - (I named them Widi_1 and Widi_2

Then I go to Rig manager

I see the widi without alias - what’s next?

You don’t. IAC is simply a way to allow MIDI messages to be sent between different applications on a Mac. It looks like a MIDI port (because it essentially is) — you still need to use channel constrainers if you want to control from which channel messages are allowed (or not)

1 Like

add the global wiring from widi device input to the outputs you have created and filter the channels using the constrainers. You will then have each channel in rig manager as a separate device, which you can assign to your alias as required.

Alias names should not be the name of the device, it should refer to the position in the rig such as upper or lower, these can the be assigned to real physical inputs or the widi channel devices you have created.

1 Like

Sorry guys - I just am missing how to do this.let me show you what I did so far. Is there a GPT way to layout more detailed instructions - Im not getting it.

1 - IAC Driver - labeled the wides Widi_1 and Widi_2 = to create 2 ports NOTE the connectors cant change - they remain at 1

2 - Open rig manager - create aliases for the widi bud (as Widi Bud multi channel) IAC driver Widi _1 (as Keytar upper 49) and Widi_2 (as Remote Keys 25)

3 - then remap keytar upper f49 and remote keys 25 to midi channel one

4 - go to global rackspace - use Widi Bud Multi channel and rechannelize the Midi outs to channels 2 and 3

5 - go to song and play - no signal going through on either controller - - the one that says AX-edge midi out1 in the rig manager is transmitting (maybe because the keytar has bluetooth?)

Im missing something - I just chose two random channels (2 and 3 ) on the rechannelizer and the midi in

when I press the remote 25 - the signal goes to both channel 2 and 3 and stops
when I press the keytar 49 the signal goes to both channel 2 and 3 and goes through to both IAC drivers

do I need to change the controller midi channels? when I change them to 2 or 3 the will make it though

I give up





Your setup of IAC is okay.

When you create the alias in Rig Manager are you applying the change to the rig?

In the global wiring, the MIDI Out Blocks should be to the virtual cables that you created. Look closely at the names of the MIDI Out blocks in my example.



In your case these should be MIDI Out (IAC Driver Widi_1) and MIDI Out (IAC Driver Widi_2)

The name you are using for the IAC cables is intended to identify the MIDI channel, so as in my example Widi_Bud_1 is Channel 1 from the Widi Bud and Widi_Bud_16 is Channel 16 from the Widi Bud, ie. the contrainers match the name of the MIDI Out block.

You seem to have Widi Ax-Edge connected?

I just chose two random channels (2 and 3 ) on the rechannelizer and the midi in

Constrainers are not rechannelisers, they are channel filters only allowing midi data on the specified channel to pass through.

The channels you choose should be the channels being used for the incoming WIDI devices. As I understand each device connected via a WIDI bud should be using a different channel. If you do not know what channels each device is arriving on from the Widi Bud, check using the global MIDI monitor OR create 16 virtual cables with 16 constrainers (one for each channel) and look in the wiring view for which channel wire is highlighted when you press keys.

I cannot express how quickly things become confused if you use Keyboard names as your alias. Choose names like Lower, Upper and Remote.

If you are still struggling. I would start with an empty gig file and a new Rig Manager profile with no alias’s defined. Connect your keyboards and start by looking at the global MIDI monitor to understand what MIDI data is flowing in your system. Then add the Global router as in the diagram above and again watch what is being shown in the global MIDI monitor.


This is the global midi monitor output from my example. Notice the note On/Off from the Widi Bud Device arrives on channels 1,2 and 16 the same note shown from each device. After the global wiring the note On/Off arrives on Widi_Bud_1 on channel 1 from the Widi bud device on channel 1, Widi_Bud_2 on channel 1 from the Widi bud device on channel 2 and Widi_Bud_16 on channel 1 from the Widi bud device on channel 16. Your channel numbers will be dependent what is assigned in your system.

If you can get this far in an empty gig file you can the apply the learning to your intended gig file.

The remote minilab has changed to a default channel of 3 and looks like its only going to Widi Bud 3 as intended.

For some reason - the keytar is transmitting more than channel 2 - even though it is set in the keytar and written as only transmitting channel 2.

I don’t understand why the widibud is getting channels 3 4 when pressed




I moved the remote 25 to midi channel 5 as a work around and now the signals of each keyboard are split.

however - now Im having transpose issues BIGTIME - since this set up when I globally transpose - the Keytar49 drops a WHOLE STEP instead of a HALF ?!?! - GLOBALLY.

This is getting worse by the minute.

I suspect that most of your routing issues stem from the fact that you are getting multiple messages from one of your keyboards. It will serve you well to understand this and solve that problem before moving on. Random or unintended events should never be left unanswered in any rig you wish to be used live.

Click ignore global transpose in the MIDI In (Widi Bud) in your wiring view. I have added this to the instructions.

Unchecking global transpose was a major fix. thanks

my workaround at the moment for the keytar is just to avoid channels 2-4 for other controls which seems to be not impacted once we are at 5 and up - could be a Roland edge thing.

OK I spent some time working with John on this one.

Turns out that his Roland Axe was sending messages on three different channels. Once he fixed that, we were able to get everything running by the following:

  • Defined aliases for his weighted keyboard and for his WIDI device (though strictly speaking) he does not really need to use Rig Manager

His scenario is a Keylab which sends notes from key presses on channel 1 and notes from pads on channel 10
His Axe is sending messages just on channel 1
His Remote is sending messages just on channel 5

So we created four different MIDI In block “templates” where each one only allowed incoming messages from a specific channel and then (if that incoming channel was not 1, rerouted to channel 1)

We then saved those blocks as GP User Presets so via the popup menu or the quick insert dialog you can choose

LowerKeys (gets you the Keylab keys)
LowerPads (gets you the pads)
Upper (gets you the Axe)
Remote (gets you the Minilab)

Going forward, inserting MIDI in blocks via those presets completely solves the routing problem.

1 Like

I went back and changed the Axe to Midi Channel 2 - since my guitarist has a pedal that wont move off of channel 1 (and Ill need that for his program changes). Roland Ax-Edge is a bit tricky but set it right to transmit on midi channel 2 - even though it is set for each individual patch I’ll deactivate the buttons that allow patch changing on the keytar so I don’t inadvertently change program buttons and lose my Midi programming)