Arturia Forums

Controllers => KeyLab MkII => KeyLab MkII - Technical issues => Topic started by: shiny on January 09, 2020, 05:11:26 am

Title: Trying to send program changes to a sound module but I can only use buttons???
Post by: shiny on January 09, 2020, 05:11:26 am
I am a bit confused here; I read the manual of my sound module, which accept program changes, so I told myself that I can assign buttons to change banks, and a knob or a slider to change the actual value (0-127), but this proven to be impossible from what I can tell.

In the midi editor, I can assign the knob to CC0 which is Bank selector MSB; which in my controller case goes from 86 to 121. Same for the bank selector LSB, which is set to be CC32 and values between 0 and 72.
Now as you may know; changing those 2 values does nothing, because you need to send a program change message to the device, which is the one that hold the value between 0 and 127. And sadly I can't see any CC message that send a program change. Both sliders and knobs have only 2 modes: Control and RPN/NRPN.

The only way to send a program change is to use a button. Although the button, when set as program change, can send only 1 value for bank LSB, bank MSB and program number. You can imagine that if you need to change MSB and LSB aand Program number, even 3x10 buttons are not enough for a 3000+ sound module.

Not sure how to do this; even because I can't see a way to send SYSEX from the arturia keylab MK2; and the midi control center has no option for sysex; so I am stuck.

The idea was to have 3 knobs to set MSB, LSB and program number, or have a button to set LSB and MSB and program 0 to move to the first patch of the bank, and then changing the program number via knob or slider, but this is not possible, or if it is, there is no obvious way to do so.

Any thoughts?
Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: LBH on January 09, 2020, 03:39:36 pm
I don't have the controller as you know. But as far as i can tell, then Keylab MKII can send specific programChange messages using different buttons and pads. You can't step through banks and presets it look like.
A specific change is a bank messages (0-127) and the same range for a programChange. I can also see this is the case in the Midi Control Center. So i don't understand the limited values you mention.
You can also set midi channel for the change - also as the "User" midi channel. ProgramChange work for user presets. In total that give many possibilities for live performances.

In a playing situation i think it's great and i assume best for most people, that you actually can set values for a specific preset. I think that's what's most needed for live performances. This add functionality to synths.
But a way to step through banks and presets could also be nice to have, like a way to assign programChange to sliders and knobs. It does'nt look like that's possible.


Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: shiny on January 09, 2020, 06:20:29 pm
Midi messages are very peculiar, and in some cases, you need multiple messages to perform an action, because you are accessing different registry. This is one of those cases.

Do do a change on the bank; you need to have the most significant byte, the less significant byte and the value of the actual program change. If you change just 2 parameters without the 3rd, nothing happen. It is not a coincidence that the only place where you can assign those 3 values is on a button, and that's where it works. MIDI implementation sadly does not include a program change on a CC message, so each maker does its own thing and have to expose the program change.When you change preset in analog lab using the buttons, this is exactly what it does: it set bank for analog lab and load the first patch of that bank; and the arrows are sending a program change, since at that point you don't need MSB and LSB since you are already on the bank you want.

The problem is that Arturia decided to not actually expose these arrow buttons to the User profiles, nor in the midi editor, nor it allow you to send sysex, like a roland controller would, for example. Why is it a problem? Because you need to send those 3 values together, so even after I pass MSB and LSB via CC 0 and CC32, I have no 3rd value controller because there is no program change assignable control (it require to send a 0-127 value prefixed by hex C0).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
Try to browse banks, one parameter at time, and tell me if you can do that. This apply for external hardware of course; if you never use external hardware that require something beside CC messages or CV, then you are covered.

For live performances you create a set, that is true; but you do not have only sets; you have parameters too, so if you consider that you are driving external gear, and you need 2 pages just for the synth controllers and parameters; you are left with one page of controls, and out of these, you can only use the buttons, so only 9 preset. If you can run a live preset with just 9 patches; I am happy for you, but I can't do that even if I was using one single external piece of gear, imagine 3 :)

Other companies with less shills on youtube are able to deliver simple sysex transmission from their midi controllers via their midi editor; which is why I am surprised that Arturia decided that it was a good idea to have only CC in their editor, and not even plan to add things like program change exposed. I bought the keylab to drive external gear; and to use it in a DAW, and so far, bot things have been borderline impossible in the measure I need them, because of limitations mostly on the hardware and software side of things. I bent backwards to make it work, but I am tired to have to compromise, especially after spending 500 dollars for a midi controller, not even a rompler keyboard or a proper synth.
Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: LBH on January 09, 2020, 08:09:38 pm
Hi Shiny,

I've allready confirmed the Keylab MKII functionality you mention.

As you can read in the Keylab MKII manual, then the options for Pads, User buttons, Select buttons and Pedals is this:

-"Channel: Select the MIDI channel output for the selected button, between 1 to 16.
This can also be set to “User”, which will make the button output to the MIDI
channel selected for the MIDI Ch button [p.64].
• Program Number: Select the MIDI Program number the button will send when
activated. Click/drag the knob or enter a value between 0 and 127 in the field
below.
• Bank LSB: Defines the Bank Select value for Least Significant Byte (MIDI CC# 32)
that the button will send when activated. Click/drag the knob or enter a value
between 0 and 127 in the field below. Not all devices respond to Bank LSB, so
consult the documentation of the hardware or software instrument you want to
control.
• Bank MSB: Defines the Bank Select value for Most Significant Byte (MIDI CC# 0)
that the button will send when activated. Click/drag the knob or enter a value
between 0 and 127 in the field below. Not all devices respond to Bank MSB, so
consult the documentation of the hardware or software instrument you want to
control."-

Off course this also is limited to what the unit to be controlled has.
I can't rule out compatibility issues.


Can you please post some examples of controllers that you say can do all the things you mention? I'm interested in knowing them, just like i'm interested in the implemetation of MIDI 2.0 like i've posted about here: https://forum.arturia.com/index.php?topic=100623.0
Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: shiny on January 09, 2020, 11:12:02 pm
Hi,

Let me clarify: you can change program but you can change only 1 program per button/pad. If you assign 16 pads to do program change, you can assign 16 different patches, but you can't use the pads anymore. Same for the buttons. I do not use a pedal so I didn't even try with that.

The problem is simply that you can't send a value dynamically when changing program, it has to be set. While you can assign CC0 and CC32 to controls, that is useless until you send a program change message; which does not have a CC, as you are aware of. The workaround that Arturia made was to hardcode the message of MSB, LSB and program change (the other 2 bytes which are the data and the chanel where to send the change) into a control, so you have 1 button/pad ==  1 patch and that's immutable, unless you change the control where you assign the program change 0-127 value.

As example of controllers that allow you to send different signals, check the roland A500 pro; that one can send CC, sysex and few other parameters from the editor. There are a few more, but I didn't try them yet. The novation SL mk3 does allow you to do the same I believe.

I am writing my own midi CC -> sysex program in python at this point; although it is a bunch of work I never asked for to be honest
Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: LBH on January 10, 2020, 12:00:38 am
I have allready confirmed that behavior and said i can't see there are other options in Keylab MKII, and i have noted you can use 16 midi channels, that you can change from the keyboard, and there is User presets. It's not too easy to work with no, but there are some possibilities. And i have wished for more possibilities.

Rolands old hardware synths is using sysex, so perhaps that's why A500 can use sysex. It's not a new controller either.
I've just seen that Rolands new A-88MKII come prepared for MIDI 2.0. I can't see sysex is mentioned in it's functionality.
Actually it to me look like Novation have removed sysex from the newest SL MK3. I have it in my old Novation SL MK2.
I thought you had some videos.

I think this is on the way in 2020 https://electra.one/tech-specs
It has no keys. But the specs say: "Support of proprietary SysEx MIDI messages (currently Rhodes Chroma, Yamaha DX7, Roland TB3 are supported)"  Not too much i'd say -
and it say: "Support of Control change, Program Change, Start, Stop, NRPN MIDI messages".
It's not prepared for midi 2.0 it look like.

It's hard to find controllers that can do it all i a way one wan't to work.

Hardware synths and keyboards also have it's own dedicated controls.
Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: winddealer on January 21, 2020, 11:17:41 pm
I am in the same boat. 

I would like to dynamically cycle through any of the patches of my External Tyros/Genos Voice Banks using "any" of the nine MKII faders, or "knobs" (above the faders). 

As described in this thread, a fader or knob should be able to support a static LSB and MSB for the Bank Select and permit bounding  of both High and Low Ranges limits for each entity.  The knob or fader would then dynamically cycle through the bounded values set for the entity (ex. 23,24 or 0-127).   

The KeyLab could potentially then support up to 81 settings (3 Parts (1/2/Live) x 27 entities (9 knobs and 9 faders and 9 buttons)) per User Bank.

Please understand that this is not a one off request from one owner.   Having to purchase another "gizmo" to facilitate what is claimed to be a premium Midi Controller should be capable of doing is a tough pill to swallow.   

For another $350 US you can buy the glorious faderfox EC4 gizmo which does it all! 
http://www.faderfox.de/ec4.html

Merci?
 
   
Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: diehard on February 26, 2020, 12:55:25 pm
I really miss this too. My old Akai MPK249 can do this easily and it makes browsing banks and patches from external synths so much easier so I don't have to have access to the actual synths.
Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: shiny on February 27, 2020, 03:54:21 am
My only assumption is that Arturia, like many other makers, do things based on what their numbers tell them what is more beneficial and efficient, from the perspective of usage and popularity.

Those features are not important for the majority clearly; as such, they are not implemented.
Which is a shame; I would never imagine to have to praise Akai for being more flexible than Arturia; but the MPK249 is indeed a far superior product under these circumstances. Matter not that it is not solid and well built like the Arturia; but I could buy a bugatti and be happy about how well built is, but if it does not satisfy me when I drive, it is as good as the cheaper car that is not as solid but fun to drive.
Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: chasmo on March 01, 2020, 07:48:31 am
Unlike most in this thread, I use the Keylab MKII solely in a software environment, but I was also very disappointed to learn that it doesn't support incremental program change - particularly given the many promo vids boasting of "infinitely configurable" user presets.

In a DAW or live-laptop system there's a workaround. There are freeware, third-party utilities allowing you to map two of the Keylab's buttons to "increment" and "decrement" actions, which the utility then translates into the necessary bank and program change messages. Still, stepping through potentially thousands of a soft synth's presets one by one without benefit of a knob or slider is not an ideal way to navigate.

I definitely understand the additional frustration of those using it in a hardware environment where the only option is either adding a laptop or an outboard device to handle the translation of one of the most basic and necessary functions a keyboard should have, particularly when the Keylab was touted as an all-in-one controller bridging MIDI and CV.

How could they have missed this?
Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: shiny on March 01, 2020, 07:33:42 pm
I do not believe they missed it. They just forced their workflow upon users; assuming that they will quietly accept things.

Arturia probably made a research with some individuals that were considered representative or more influential, and took their workflow as gospel and assumed that everyone else will adapt.
I think I rarely buy a product where I spend more time trying to hack the firmware to let it do what I need, but with the Keylab it is fundamentally the only way to use it. The other is to sell it to someone whom is happy with what the device offer out of the box.

It is not working for studio workflow, nor for hardware workflow; unless all you want to do is to use mouse and keyboard all the time, use analog lab or other pre-defined cases. Heck, can't even consider the option to send sysex; something that other midi controllers customization software offer out of the box.
Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: bostonsynth on March 10, 2020, 09:08:54 pm
Unlike most in this thread, I use the Keylab MKII solely in a software environment, but I was also very disappointed to learn that it doesn't support incremental program change - particularly given the many promo vids boasting of "infinitely configurable" user presets.

In a DAW or live-laptop system there's a workaround. There are freeware, third-party utilities allowing you to map two of the Keylab's buttons to "increment" and "decrement" actions, which the utility then translates into the necessary bank and program change messages. Still, stepping through potentially thousands of a soft synth's presets one by one without benefit of a knob or slider is not an ideal way to navigate.

I just signed up here and posted a similar question, not sure how I missed this thread sorry. But I also am struggling to find incremental preset changes using my Keylab and it's data dial center knob. I've never had a synth where the main knob *wouldn't* cycle through presets. Can't this be easily added with firmware maybe?

What utilities do you suggest to workaround this, can you guide me please? I don't know the plugins you speak of, thank you.
Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: bostonsynth on March 10, 2020, 10:50:01 pm
Actually, I was able to solve this in Reaper using JSFX. Now I can switch both PRESET/PATCH and BANK using the center knob on my Keylab MK II. I wish it wasn't tied to a DAW fix but, it's good enough for my main workflow at least. Hopefully they can maybe add this feature with a future update. Seems silly not to have it :)
Title: Re: Trying to send program changes to a sound module but I can only use butt
Post by: chasmo on March 11, 2020, 06:17:06 am

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.
Title: Re: Trying to send program changes to a sound module but I can only use butt
Post by: bostonsynth on March 11, 2020, 01:47:48 pm
Thank you for this it's very helpful.


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.
Title: Re: Trying to send program changes to a sound module but I can only use butt
Post by: bostonsynth on March 11, 2020, 04:14:55 pm
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:

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

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

BANK:

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

decrement
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.
Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: hrgraf on January 19, 2021, 10:10:13 pm
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!

Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: Beej1970 on May 02, 2023, 03:23:43 am
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.
CC0 = MSB
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.
Example:
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.
Title: Re: Trying to send program changes to a sound module but I can only use buttons???
Post by: Beej1970 on May 02, 2023, 03:39:08 am
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.

Thanks,
Brian