Make Linnstrument react to DAW's program change

Official support for: rogerlinndesign.com
RELATED
PRODUCTS

Post

Hi there, happy Linnstrument user from Germany here :-)

I've got a question - or maybe a feature request:
I want to play Linnstrument with Bitwig live. In my project I'd like to have several software synthiesizers ready to use, switched to active by an external controller like Ableton Push 2.

Now, I want to use one synth that implements MPE (one of Bitwigs own which needs Linnstrument in ChPerNote mode) and another that does not (SWAM, which needs Linnstrument in OneChan mode).
I need to switch global preset from 1 to 2 and vice versa in this case. Of course I can do that manually, but this takes some hectical switching action I would like to avoid.

It would be convenient to have Linnstrument react to Bitwigs channel change - maybe I can program a MIDI hook that will send a Program Change or a CC everytime I switch channel (and send that by MIDI out to Linnstrument).
But I don't know that (I'm fairly new to Bitwig).

So, first question: does anything like that already exists? Or any workaround?
And if not: would it be a good idea for Linnstrument to have that in some future firmware release?

Best regards
B.

Post

Hi B,

Program Change messages are intended to sent from the controller to the synth, and I'd prefer not to add a feature that responds to incoming Program Change messages because it would require a UI to assign what LinnStrument would do in response. Given the lack of an alphanumeric display, I try to limit features that aren't essential to its core function as an expressive musical instrument. My guidelines for feature additions are stated in the FAQ page under "Can you add this feature______?".

It's actually fairly fast to switch between Channel Per Note and One-Channel modes if you use the Per-Split Settings button as a momentary button (held more than .5 seconds) :
1) Hold Per-Split Settings
2) In column 1, select One Channel or ChPerNote
3) Release Per-Split Settings

Having said the above, you can remotely change anything in LinnStrument by sending MIDI messages. This is explained in the file midi.txt in the source code. For example, you could program a script in your DAW to send back specific MIDI messages whenever it receives a program change message from LinnStrument.

Post

bombasstard wrote:Hi there, happy Linnstrument user from Germany here :-)

I want to use one synth that implements MPE (one of Bitwigs own which needs Linnstrument in ChPerNote mode) and another that does not (SWAM, which needs Linnstrument in OneChan mode). I need to switch global preset from 1 to 2 and vice versa in this case. Of course I can do that manually, but this takes some hectic switching action I would like to avoid.

Best regards
B.
Perhaps I'm not fully understanding your workflow, but it sounds like I have a similar live setup: i.e. I play one MPE synth (Animoog) alongside several other non-MPE synths (both hardware and software), and I simply play them from different 'Splits' on the LinnStrument. I have the Left Split configured for MPE, and keep the Right Split in one-channel mode, so I just have to switch splits to address each synth. And if I want to change which non-MPE synth I'm playing, I simply change MIDI channels on the Right Split. Regardless, I'm only ever one button push away from whatever configuration I'm after. It doesn't get much more direct than that!

And if you address each synth on different MIDI channels, you shouldn't need to be activating and deactivating them from your PUSH controller. But again, maybe I'm missing something about your setup.

Anyway, that's my proverbial "two cents", for what it's worth (grin).

Cheers!

Post

You can achieve this in Bitwig automatically, as Bitwig is sort of prepared for that already.
Most non Bitwig plug-ins are assumed to be non MPE, then it will convert any incoming Midi channel to channel 1.
If you place a MPE plug-in like FXpansion in a track, you have to set it to "Force MPE Mode".
Only thing you have to take care of, is to set pitch bend range on all instruments to the same amount...
One thing which would not work in Bitwig until they fix it: If you have Channel per Row set and you expect Bitwig to record properly the Midi Channels, it won't do it... It always creates its own voice/channel assignment. Its so stupid, but they know it, and I hope they'll fix it before Bitwig 3.0....

As you are from Germany, where? I am in Berlin and also using Bitwig with a LinnStrument...

Post

I'm trying to do the same thing as bombasstard, only in Mainstage namely:

When I select a patch in MainStage, I want MainStage to send the appropriate MIDI to the Linnstrument so that it selects that correct global preset (and any other paramaters). That way I can fluently change a sound using a footswitch without having to press any extra buttons on the MAC or the Linnstrument.

However I'ver a couple of questions which I hope someone can help with.

* I've read up on sending NRPN messages to control the Linnstrument in the MIDI.txt file on GitHub and can see that to select a global preset I have to send NRPN message 243 with the appropriate value (0-3)

However I'm not clear on exactly should be the contents of the CC messages which should be sent. From what I can see that I should send the Linnstrument the following sequence of CC messages

CC 99, 98, 6, 38, 101, 100

CCs 99 and 98 specify the parameter number - in this case 243.

** What should the values of the messages be?

CC 99 value 127
CC 98 value 126

OR

CC 99 value 1 (representing 127)
CC 98 value 126


Or something else?

** What should the values of CC 6 and 38 (specifying the preset) be?

CC 6 value 0-3 (according to required preset)
CC 38 value 0

OR

CC 6 value 0
CC 38 value 0-3

Or something else?

* Finally does anyone know how to send MIDI from MainStage to the Linnstrument.

I tried adding an external instrument channel strip to a Mainstage patch with Linnstrument as the output and then inserting the Scripter plugin into the MIDI FX slot. I've written a script which sends the CC messages, and it definitely executes on program change, but no MIDI appears to be sent out of Mainstage.

So has anyone managed to send as specific set of MIDI messages to external devices from MainStage and if so what kind of voodoo or black magic is needed to make things work?

I was wrestling with this until 2am last night so I'll appreciate any help :-)

Post

It should be:

99, <parameter number MSB>, 98, <parameter number LSB>, 6, <parameter value MSB>, 38, <parameter value LSB>


MSB means most significant byte (larger), LSB means least significant byte (smaller).

Usually a Byte is 8 bits but in midi it is 7 bits.

So if we take 243, in binary it is: 11110011.

The low 7 bits (LSB) are 1110011 which is 115 in decimal
The high 7 bits (MSB) are 0000001 which is 1 in decimal.

Lets say we want to set it to 3, in binary this is: 11
The low 7 bits (LSB) are 0000011 which is 3 in decimal
The high 7 bits (MSB) are 0000000 which is 0 in decimal.

so you get :99, 1, 98, 115, 6, 0, 38, 3
Bitwig, against the constitution.

Post

Many thanks BobDog - that makes sense.

Now I've just got to figure out how to send those CCs to the Linnstrument.

Post

I think I've finally managed to get Mainstage to change Linnstrument's Global Presets on a patch change. - Once I've tested the solution I'll post details in case it would be useful for anyone else.

Post

Good stuff :)
Bitwig, against the constitution.

Post Reply

Return to “Roger Linn Design”