MIDI Slot request in Performance Mode

  • Has anyone figured this out yet? I'm going to buy a remote eventually but I just bought the KPA not too long ago so I'll have to save up some more cash. As it stands I can probably deal with what I have but I'd like to make it better if I can. I have an Arduino UNO with a routine loaded into it to change slots 1-5. It works great but I have to either keep the KPA in front of me or turn around to verify which slot I am on if unsure. Especially when changing performances. My goal is to set it up to where an LED will light up that corresponds to whatever the currently loaded performance is. I normally call up performances/slots from my Bandhelper app. This will allow me to load the slots with sounds for the Intro/Verse, Chorus, Solo, "Spacey Breakdown" :D You get the picture.


    I've been firing off sysex messages from Bandhelper and watching the results on a MIDI monitor program on my computer. I can get the rig names for each of the 5 slots returned in Hex format, I can get just about any parameter from any effect, turn things on and off, etc. The only thing that I can't seem to do is get a Slot# / ID. I can call one up with MIDI CC#50-54. The MIDI documentation claims that the MIDI parameters carry multiple types of info like numbers and text depending on what is requested. I've tried requesting a numeric value from CC#50-54 ($32 - $37) but all I get back is $00 no matter whether or not it's the current rig. All I want to do is write a routine that cycles through the slots to see which one is on and send a HIGH value to the corresponding LED. Seems simple. What am I missing? I've seen quite a few pretty elaborate controllers made by people much smarter than myself come up in various searches. I also found a few people that (I think) were asking the same question on this and other forums. It seems like nobody has gotten a definitive answer though. The threads just kinda fizzle out. I would love some insight if some of the MIDI-savvy folks wouldn't mind sharing.


    Thanks,
    -Aaron

  • Can you not just calculate the performance and slot number from the midi program change you send out?,
    Ie, prog 0-4= perf1,slot1-5 prog5-9= perf2,slot1-5, etc...


    I know its not actually "requesting" the info. But if you change slot/performance on the kpa it can send a midi program change from which you could establish the performance and slot numbers.

  • Can you not just calculate the performance and slot number from the midi program change you send out?,
    Ie, prog 0-4= perf1,slot1-5 prog5-9= perf2,slot1-5, etc...


    I know its not actually "requesting" the info. But if you change slot/performance on the kpa it can send a midi program change from which you could establish the performance and slot numbers.

    That's fine. I just can't seem to figure out how to access that info. If the message is sent from Bandhelper, my arudino won't do anything until I step on one of the buttons. No? I think it will need to be made aware when a new slot is selected, regardless of whether or not it was the device that made the selection. I hope I'm not misunderstanding your reply.

  • I searched for a simple method to get slot or program number from the KPA. Asked here a couple of times too.
    I came to the conclusion that it was not possible to do it simply.
    The only way I found was to continually poll the KPA with a request that sends pretty much everything. It returns way more than you will need and you have to do it continually to keep the KPA connected.
    Too much overhead and I decided that I can live without it.


    If you are really interested in digging in that deeply I can post the commends.

  • I searched for a simple method to get slot or program number from the KPA. Asked here a couple of times too.
    I came to the conclusion that it was not possible to do it simply.
    The only way I found was to continually poll the KPA with a request that sends pretty much everything. It returns way more than you will need and you have to do it continually to keep the KPA connected.
    Too much overhead and I decided that I can live without it.


    If you are really interested in digging in that deeply I can post the commends.

    Would you? I believe what you are saying but I'd still like to see what I'm missing. My hope is that it will be overwhelming enough to make me move onto to other, more obtainable, challenges. :D

  • Here goes, (bear in mind that I discovered these by lots of searches and experimentation, not from any official Kemper docs.


    The first one establishes connection with the KPA. It displays a string on the screen and says "connected". You can edit that string to say what you want.


    The second results in a huge list of sysex messages from the KPA. Most of them I couldn't figure out.


    The third sends a subset, i.e. just an update. It also sends the currently selected program number at the beginning.


    You have to send this request at least about every 5 seconds or so, otherwise the KPA loses connection and you have to start again. The KPA pits a message on the screen saying it is disconnected.


    Good luck!!!



    byte ConnectToKPA[] = {
    0xF0,0x00,0x20,0x33,0x02,0x7F,0x03,0x00,0x7F,0x7F,0x47,0x69,0x7A,0x6D,0x6F,0x27,0x73,
    0x20,0x50,0x65,0x64,0x61,0x6C,0x62,0x6F,0x61,0x72,0x64,0x20,0x00,0xF7};//Connect to and display name on KPA


    byte RequestAll[] = {
    0xF0,0x00,0x20,0x33,0x02,0x7F,0x7E,0x00,0x40,0x01,0x37,0x04,0xF7};//Request all data then update


    byte RequestUpdate[] = {
    0xF0,0x00,0x20,0x33,0x02,0x7F,0x7E,0x00,0x40,0x01,0x2e,0x04,0xF7};//Request an update only

    Edited once, last by Gizmo: damn auto-correct! ().

  • Thanks. I see what you mean. It spits out the MIDI Prg# which is the first time I’ve seen that. If only I could find the command to get just that and assign it to a variable, some simple math would return a value between 0 & 4 allowing me (us) to light up some proper indicators.

  • BTW, you can also

    allowing me (us) to light up some proper indicators.

    I was short of I/O on my Nano so I just use 3 LEDS to keep track of the 5 slot positions as I select the slot on my board. It's worked just fine for me for a couple of years.
    Just 3 LEDS in a row and I light them like this.... I made 1 and 3 RED and 2 GREEN to help show clearly.


    1=Slot 1
    1+2 = Slot 2
    2 = Slot 3
    2+3 = Slot 4
    3 = Slot 5

  • Here's an old post of mine from back in March that I think kinda describes what @absrec is looking to do.
    Most things you can get from the KPA via a SYSEX request, but not program number (which will give slot number and perf number)



    I’m not at my KPA just now so can’t check what you are trying to do. However, I do know that until I recently go a Remote I was using an RJM Mastermind PBC and everything worked fine. Not only were LEDs working properly but Rig names etc were all showing on the Mastermind screen using two way midi

  • RJM Mastermind, Uno4Kemper and a few others are using our proprietary bi-directional protocol, which isn't public.


    However, the following is from page 5 of the "PROFILER MIDI Parameter Documention" publicly available on our download page:


    Responses


    With firmware 2.3.0, the PROFILER, if in Performance Mode, will send back the current Performance number via CC47 and the appropriate Slot selection.


    Example:


    Floorboard (or another Client)__________________________________Kemper Profiler
    B0 2F 03 __________________________________________________Shows preselected performance 4
    B0 31 00 __________________________________________________Shows preselected performance 5
    __________________________________________________________B0 2F 04
    B0 35 01 __________________________________________________Selects and loads Performance 5, Slot 3
    __________________________________________________________B0 35 01
    Table 2: Example communication for Performance Mode preselection


    In order to leverage this functionality, you need to load Performances and Slots via control changes # 47-54 instead of bank select and program changes. No problem for Bandhelper. Details regarding CC# 47-54 are in the Main Manual. Then the PROFILER responds with CC# 47 indicating the Performance # and one of the CC#50-54 indicating the Slot. Possible, that this only works in combination with Performance Load "Pending", which shouldn't matter in your case.

  • In order to leverage this functionality, you need to load Performances and Slots via control changes # 47-54 instead of bank select and program changes.

    Never got this to work Burchard. All I ever get (and just checked it again) is a Performance preselection, then after selecting a slot via CC50-54 the KPA sends back nothing.
    Seems to me though, that it doesn't make much sense to have to do a program change in order to find out what program is currently selected.


    As usual though, I know I'm correct much less than I'd like to be ;)


    (That table is VERY unclear to me)

  • The KPA sends a messsge sometimes after a slot selection. But, as far as I can tell it contains no useful data. I think it’s -


    F0 00 20 33 00 00 01 00 00 00 32 00 F7


    At first, I thought that it was indicating 32 (CC#50 = Slot#1) was the selection but it sent same the message regardless of what Slot# I chose. And it seems inconsistent. Sometimes it spits out the message, sometimes it doesn’t. Sometimes it not a Sysex array, but a Bank# & a Slot selection in PC# format. This would be useful is there were any way to extract that info other than simply reading on the MIDI Monitor program display.