please please please proper Program Change for Drumkits!!! possible on every synth

Hoping for this to happen for so long already!

I love the sound of the LXR so much, but LXR just makes sense for my setup with program change for real studio integration.

have so many cool drumkits already and when I recall a song from my sequencer, I always don't know, which drumkit was used for that song.

Every synth loads correctly, only LXR doesn't (so far)

Is there any problem in implementing this or why wasn't this done until now??

all the best from an LXR lover, youkon


  • Right now the program change is tied to pattern change on the LXR. It would be possible to fix it to have it change the kit. If I were to implement it, I'd probably have bank select determine whether to switch pattern or switch kit. Either that or have a global option that determines whether PC changes kit vs pattern. To me it's more useful for pattern change, but I can understand how it could be useful for kit change.
  • thanks for your answer, rudeog!

    it's just that thing, 8 bars (with repeat or not) is just too few for me.. fills, breaks, glitches etc... eats up lots of pattern for a song. I'm always asking myself how you all do it with your LXR? just jamming around? minimal beat creating? jam and record to audio?

    I'm a midi fetishist, always only store midi.

    for a proper song, I just need more bars, that's why going to external sequencing

    Aren't here any DAW programmers? (I sequence with Cirklon, my "DAW")

    do you know how many drumkits are possible? 127 or more?

    I would definitely use bank select.

    The question would be if bank select for kit/performance/pattern or only performance/pattern?

    performance/pattern might be a good compromise (you could leave the pattern empty) but I would go for all possibilities

    I know, you do this just for fun for you and us/ the community, which is really great, so I could never demand this from you and I even don't know if this is a lot of work to realize, perhaps Julian should do this as this is really good for many people's workflow and not for nothing implemented in about every midi machine 

    btw: I'm very happy about your performance mode! thanks a lot for pushing the LXR OS forwards

  • I'll look into program change after my holliday.
    It's easy to implement propperly, it's just me not being a big midi person and I was sloppy implementing it ;)
    sorry *g* but we are getting there!
  • edited April 2014
    it 's a good news, i'm a DAW user to and it would be much easier...
    good holidays julian, hope it will be relaxing  :)

  • edited April 2014
    Id say Bank Select for Drum Kits and Program Change for Patterns. This way you can step either thru the DrumKits or the Patterns

    Could be fun tweaking Patterns with A and Drumkits with B Knob in the Big Mighty C ;-)
  • @ julian: thanks a lot!!! I will be soooooooo happy!!!!!

    @fcd72 interesting thought!! drive the LXR to insanity :-D

    this would mean btw a max of 128 drumkits/ 128 patterns or am I missing something? are more patterns/ drumkits possible with the LXR in general?

  • edited April 2014
    Correct me if I'm wrong, but normally Bank Select and Program Change work together. And for Bank Select there is a MSB and LSB. So you have 128 x 128 Banks, and every Bank can handle 128 Programs. Together: 2097152 options! The question is, which combination for Drum Kits, Sub Pattern, Pattern Sets, Performance Sets make most sense.
  • correct.

    I think, if there were no more than 128 programs, you wouldn't need the bank change (was it CC 32? ..always forget)

  • I always usse CC 0 and CC 32 for pgm and bank change. always forget which one is what for :-)

    here a link to the common used midi CC's

  • "The Bank Select messages are actually MIDI Controller messages, just like Volume, Pan, Sustain Pedal, Wind, and other controllers. Specifically, the controller number for the "Most Significant Byte" (ie, MSB) of Bank Select is controller 0. The controller number for "Least Significant Byte" (ie, LSB) of Bank Select is controller 32. The data for these messages are the bank number you want to select. (Sometimes the MSB Bank Select is referred to as the coarse adjustment for bank, and the LSB Bank Select is referred to as the fine adjustment).

    NOTE: We need to use 2 messages to contain the bank number because, due to MIDI's design, it's not possible to transmit a value greater than 128 in just one controller message. Remember that a bank number can go as high as 16,384, and you need 2 MIDI controller messages to send such a large value. But, since most modules do not have more than 128 banks anyway, these modules typically use only the MSB message (ie, controller number 0) to select bank, and ignore any LSB message (ie, controller number 32). Here then are the two messages (in hexadecimal, assuming MIDI channel 1, and assuming that the module only uses the MSB Bank Select controller) to select that "Gungho" patch:"

    ...found in the www here:

  • thanx for that. i just discovered how to send PC with this topic....thanx a lot
    :-)) :)>-
  • bumpobump :-)
  • noted for the next update.
    I'm currently quite busy solving some production problems for upcoming projects and a cooperation with another developer, but I hope to be doing some LXR work soon again!
  • Hi Julian! i bumped Brendon, and now i am bumping you. All the best:)
  • OK, spent some time with the MIDI code, and reporting back with my findings.

    As I understand it, the way the MIDI implementation stands now, using 'Bank MSB' for anything isn't really possible. The MIDI CC interpreter and the functions that pass parameter messages between the cortex and the front panel share a lot of code. In addition to this, there is a very frustrating offset that happens where sometimes the first sound parameter is given a value of 1, and sometimes it is 2. This makes both Mod Wheel (CC1) and Bank MSB (CC0) pretty unusable since that first parameter squashes the Mod Wheel, and 'zero' gets used as a null. I've tried to fix this offset, and things mostly go ok (all the knobs etc control all the right things), except that presets don't load properly.

    SO what I did is left the parameter offsets in place, but patched the function that responds to external MIDI CC messages only. The interpreter I'm working on has the voices respond to MIDI CCs on the channels to which they are assigned, rather than the global channel. This frees up a lot of message space (for the original intention of Global Bank and Mod Wheel), allows for parameters that have a General MIDI number to respond to the right CC's, and means you won't have to muck around with NRPNs for those 'above 127' parameters.

    At the moment, I still have to slog through and populate the tables with the right parameters, but I have the first few working nicely - when recording, the CC data is sent to automation nodes, and when not, it updates the kit parameters. So, you could configure a BCR or a Max4Live patch to be your programmer and never dive into the voice menu again. If multiple voices are assigned the same channel, they will all respond.

    If this humble proposition meets with your approval, I expect the original intention of this little rabbit-hole, getting the Mod Wheel on the Global channel to do Morph, and Bank Select (CC0) to do kit changes, to take about a week, maybe 10 days with next weekend to test things.

    Just wanted to put that out there since it's sure to conflict with any kit change stuff Julian might be working on. But, I haven't seen any commits on his github since June so hopefully I'm not stepping to too many toes :)

    The branch I'm working this stuff into now is:

    And a draft of the per-channel MIDI assignments is:
    (might be a hard read since it's right out of the code, but hopefully gives an idea, I'll update when possible).

    Sorry for the wall of text! hopefully that gives a sense of where things stand with me.
  •  I expect the original intention of this little rabbit-hole, getting the Mod Wheel on the Global channel to do Morph, and Bank Select (CC0) to do kit changes

    WOW!! hard work you did and do! this sounds like paaaarty!

  • phew!

    so, bank select seems to be working - check it out on the branch above if you dare!

    If you send it a MIDI CC#0 signal on the global midi channel, it will change to that number kit. There is some minor weirdness going on (if you do this while you're actually on the 'load kit' menu, the NAME of the kit changes, but not the NUMBER), so consider this all very 'alpha' and back up your cards first if you want to try it.

    I haven't completely nailed the rest of the MIDI CC parameters for all the voice channels (specifically, the 'above 127' params need work) but they're getting there. Lots of other goodies to come!
  • In the branch above, I've added support for bank change per voice (oh and all the params work too now). If CC0 messages are sent on the voice MIDI channels instead of global, that voice will change to the kit specified (0-127), while leaving the rest of the drumkit the same.

    You can do this in Ableton, too, there's a dropdown box in midi clip view for 'Bank Select' (leave sub-bank at 0).

    I'll add this into the 'load' menu at some point too but, for now, this might be a slightly less laborious way of moving drums between kits than writing all the values down :)

    as an added bonus, there is a global option to make 'shift' a toggle.

    A few minor glitches:
    - if you send a bank change while on the load/save menu, the NAME of the kit changes, but not the number. I haven't tried saving anything while like this but it is corrected by jiggling the encoder or stepping out of the load/save menu.
    - bank changes are fast, but not instantaneous. If you send a LOT of them (like, assigning a fader or knob to CC0 ) it can lock up the LXR, so don't do that :) I'll stick a ready/waiting routine in there when I can.
    - if you set the shift button to toggle and save global settings, some sequencer LEDs can hang on after turning the LXR on, but they clear after a menu change.

    prizes for finding any more bugs! :)
  • Hi, is it possible ? to change kits and pasterns sets with CC?
  • you can do this in my custom firmware branch - There is a global option 'bank to perf'. If this is enabled, incoming bank (CC0) messages on the master channel will cause the LXR to load that performance file. There is the usual delay switching the patterns, so you will have to send an addition Program Change MIDI message to change the pattern, or switch patterns manually before the new performance file is active.
  • great news, thank you, i am already using your firmware version ;)
  • There is a bug i think.

    When i change performance sending cc from my comp:
     say, i am on pattern 1,
     i manually switch to pattern 8, 
     than i send cc to switch to next ( other ) performance, 
     when that  lxr will automatically switch to patter 1 ( as next pattern 1 ) and it was next pattern 8 !  
  • bump..
  • is the sequencer running? I think there is a known bug (with all firmwares) where the pattern chaining *sometimes* doesn't load correctly when a pattern is loaded (while the sequencer is running). This will naturally affect performance loading as well.

    It would be nice to have that fixed, but I haven't looked into this since I don't use pattern chaining at all and I'm fairly sure the bug is in the stock firmware. If a fix gets written I'll certainly port it into mine. I haven't specifically checked where the bug is present because it only seems to show up in some patterns. Makes it a pain to debug.
  • edited May 2016
    Thanks brendanclark for clearing this up. I do not use pattern chaining, but yes, sequencer is running.

    I like the sound and sequencer of LXR, but it is a bit unreliable at this point for going live on stage ... It would be great if this bugs could be fixed ..
Sign In or Register to comment.