June 20, 2024, 07:19:21 pm
Welcome, Guest. Please login or register

Arturia Forums

Author Topic: Trying to send program changes to a sound module but I can only use buttons???  (Read 6436 times)


  • Apprentice
  • *
  • Posts: 19
  • Karma: 0
I am stuck, do you think you could help and see what I am getting wrong. I am so close. I can increment with the Piz plugin but it doesn't stay relative to where I currently am in the banks. It always jumps around even though it does increment 1 by 1 correctly. Every time I make a change it messes up so I don't know how to proceed. Thank you so much.

(note:I tried this converter instead of MIDIProgChange because I got farther in the process and there is no way to convert the CC to change in that plugin by itself so I am confused)

Here's what I have so far.
The problem is I can only map the CC to either inc OR dec, but when I use two instances of the plugin, it conflicts with itself. I can either step up or step down, but not both. Because CC114 is in use or something, I don't quite understand. Sorry.
FYI the data from the Keylab MK 2 here is this:

0: B0 72 40 [CC114] chan 1 val 64
1: B0 72 41 [CC114] chan 1 val 65

2: B0 72 40 [CC114] chan 1 val 64
3: B0 72 3F [CC114] chan 1 val 63


0: B0 70 40 [CC112] chan 1 val 64
1: B0 70 41 [CC112] chan 1 val 65

2: B0 70 40 [CC112] chan 1 val 64
3: B0 70 3F [CC112] chan 1 val 63

What utilities do you suggest to workaround this, can you guide me please? I don't know the plugins you speak of, thank you.

Most DAW's have some type of native MIDI translation tools, but if yours won't doesn't, there's a collection of utilities by PizMIDI that includes a VST called MIDIProgChange that can take CC input and translate it into a +1 or -1 program change.

I think the wheel transmits on 113 and sends something like 63 (left turn) or 64 (right turn). (Don't hold me to those exact numbers--there are also tools like MIDIox that can tell you exactly what the keyboard's sending.) Using the PizMIDI plugin, you could map those values to increment/decrement program change.
« Last Edit: March 11, 2020, 04:29:14 pm by bostonsynth »


  • Apprentice
  • *
  • Posts: 9
  • Karma: 0
Hi, I have built a VST2 plug-in as work-around for this issue. It converts the Arturia default CC MIDI commands of the Preset knob to MIDI program changes.
Check it out at https://github.com/hrgraf/pizmidi and let me know if it works for you!


  • Guest
Old thread, but I just got a keylab61.

I'd hoped to use it some with older tone modules (Like Fantom XR) away from the studio/computer.

All the way back General MIDI 2, program changes require 21 bits of information to comply with the GM and GM2 standards.
CC32 = LSB
PC = Program Change

I can find no practical way at all to send the LSB effectively to units such as my Roland Fantom XR!

If there isn't room on the screen for a future firmware without redesigning far too much of the interface, it is possible to use a 14bit bank command and convert it to the proper MSB/LSB controllers internally on transmission.
The formula is MSB * 128 + LSB

Hence, one could have a single 14bit parameter for dialing in the bank change.
By GM2 standards, one calls the Grand Piano with:
CC0 = 121
CC32 = 0
PC = 0

In 14bit format it'd be:
121*128+0 = 15488

Because it's a pretty large number, instead of forcing the user to sit there and turn the wheel for hours to 'scroll' to the proper bank, it'd probably be helpful to use the code that allows 'naming' patches to enter the values, as one can scroll from character to character to get each digit of the bank in.

The 14bit thing is just an idea should it happen to make things a little easier with the firmware. If the user must scroll to the proper value, then it'd be much easier to just keep it as two different CCs.

So, it's pretty important to have some way to get the LSB in there, or bank changes are USELESS for almost anything other than Arturia's own Audio Lab.

GM compliant instruments expect CC0, CC32, and a PC. Some can stay in a single bank fine with just a PC, but almost all of them NEED the LSB  over CC32 to choose different banks! Out of the several I've owned, CC0 on its own is useless. It's ignored if not directly followed by a CC32 event, THEN a PC event.

With my PC connected it's not a big deal. I have dozens of bits of software that can make things work. If there is no PC in the situation, it really is something of a mess.


  • Guest
Apologies, I did find where one can program a pad or button in user mode.

Still, it'd be nice to have LSB part of the encoder/fader system as well.



Carbonate design by Bloc
SMF 2.0.17 | SMF © 2019, Simple Machines