Digitakt not sending bank select (patch works)

This is the same problem as discussed above. The Digitakt does not send the correct Bank Select message for the SH-32.

The fiddly workarounds listed above may also work for the SH-32.

1 Like

I never got an email for this, but apparently they answered:

Hi, Have you tried using CC32 instead? The Mininova expects this instead of the regular Bank Change method. https://d2xhy469pqj8rc.cloudfront.net/sites/default/files/novation/downloads/9558/mininova-midi-implementation.pdf Regards, Simon M

Sadly, this makes it seem like the problem lies with Novation (and Acces, Behringer, Alesis, Clavia, DSI, Emu, Moog, Roland, Waldorf, Yamaha, etc), and it completely clears them of any responsibility.

Really, their only responsibility is that it works across elektron devices as those are the only devices they produce. Yes, a lot of other synths send bank change differently than the elektron OT and DT but by the many replies in the thread there is a functioning way to make everything play nicely together.
Just my thoughts

Elektron can choose how to handle program changes however they like, but I don’t like how they’ve implemented it at all. It’s just a source of problems, and forces everyone to have to use an awkward workaround when using the DT/OT with popular Roland, Novation, Berhinger, etc. gear.

I see zero benefit in the way Elektron chose to implement this feature. Sadly, this seems like one of those things that will never be improved because it’s not even considered an issue to them.

3 Likes

I don’t know whether what you quoted is an official response from the developers at Elektron. Whatever the source, it is contrary to the actual MIDI specification, which states:

Control Change numbers 00H and 20H are defined as the Bank Select message. 00H is the MSB and 20H is the LSB for a total of 14 bits. This allows 16,384 banks to be specified. The transmitter must transmit the MSB and LSB as a pair …

Both Octatrack and Digitakt fail to do this. The implementation of the Bank Select by all the other manufacturers listed above is correct. It’s a great shame that Elektron doesn’t recognize this, not least because the problem should be easily rectifiable within the UI constraints of the two instruments.

1 Like

It’s an official reply. I’ve told them to look in this thread, but they clearly didn’t bother.
I’ve received another reply to a request for at least a setting to make it work for non-Elektron devices:

1 Like

Another reply:


I’ve only cut off the name, because there was a whole thing about privacy on here a while back.

1 Like

So, at least the issue is on their feature request issue, even if the message you received does not quite acknowledge the actual details of the MIDI specification. Let’s hope they can get to it at some point.

2 Likes

Thanks for pointing to this thread for the MIDI patch bank issue. I would really like to see my SH-32 operate at its full potential while switching tracks on my DT. Hopefully they will be able to generate a quick fix and implement that into the next big OS update = )

Please Elektronites!

Just ran into this issue as well and it’s indeed rather annoying. The current behavior of the DT is clearly not following the MIDI specifications.

I just submitted the following ticket and I strongly urge anyone who has the same problem to submit a ticket as well. Feel free to use the same explanation, but make sure to only include references to synths you actually have tested with yourself:

Subject: MIDI Bank Select implementation is incomplete and doesn’t work with a lot of synths

It looks like the MIDI Bank Select implementation on the Digitakt doesn’t comply with the MIDI specifications. As a result, bank select doesn’t work with most synthesizers that support it.

I’ve tested bank select from the Digitakt with a Roland/Studio Electronics SE-02, a Roland D-05, and a Pioneer Toriaz AS-1 and it does not work from the Digitakt with any of these synths. On the Roland D-05, trying to do bank select even results in subsequent program change messages no longer working.

I can successfully perform bank selects on all these devices from other gear and from my computer by sending the correct sequence of MIDI messages according to the MIDI specifications.

 

If you’d allow me, I would like to first describe how MIDI Bank Select should be performed according to the MIDI specifications.

A bank select should always consist of two Control Change messages followed by a Program Change message. The Control Change messages select the bank number (0 to 16383), while the Program Change message then selects the program number (0 to 127) within that bank.

The control numbers for the Program Change messages are 00 and 32 respectively. CC 00 is used for the MSB (Most Significant Byte) and CC 32 for the LSB (Least Significant Byte) of the bank number.

Please note that a bank select must include both the MSB and the LSB sent using two Control Change messages (CC 00 and CC 32), even when the LSB is always zero because the receiving device doesn’t have more than 127 banks.

Also note that a bank select is not complete unless it also includes a Program Change message (sending a Program Change on its own is of course perfectly fine).

As an example, a complete bank select for program 13 in bank 3 should consist of the following 3 MIDI messages in sequence:

  1. Control Change message with control number 00 and value 00
  2. Control Change message with control number 32 and value 02
  3. Program Change message with value 12

 

Let me now describe the current behavior of the Digitakt:

When you turn the “BANK” knob (after enabling it), the Digitakt sends a MIDI Control Change message with control number 00 and the value the knob is changed to.

This means that the Digitakt does the following things incorrectly when the “BANK” knob is turned:

  • It only sends the MSB of the bank number.
  • It does not include a Program Change message.

When you change patterns to a pattern where the “BANK” knob is enabled, the Digitakt sends a MIDI Control Change message with control number 00 and the value the knob is set to, followed by a Program Change message with the value the “PROG” knob is set to.

This means that the Digitakt does the following thing incorrectly when patterns are changed:

  • It only sends the MSB of the bank number.

 

I would like to suggest the following changes to the behavior of the Digitakt to bring it in line with the MIDI specifications:

When the “BANK” knob is turned:

  • Always send both the MSB (CC 00) and the LSB (CC 32) of the bank number.
  • Always follow with a Program Change message.

When patterns are changed:

  • Always send both the MSB (CC 00) and the LSB (CC 32) of the bank number.

Personally, I don’t think it’s needed to extend the range of the “BANK” knob beyond 127. A benefit of not changing the range of the knob might be that the LSB (CC 32) can be hardcoded with a value of zero.

2 Likes

It appears that some manufacturers have implemented bank select incorrectly, and that Elektron has followed that incorrect implementation because bank select behaves a little differently from CC messages in general.

On page 13 of the “MIDI 1.0 Detailed Specification 4.2” (page 45 of the “The Complete MIDI 1.0 Detailed Specification” PDF you can download from http://midi.org) the correct behavior for bank select is described in detail:

Bank Select is a special controller. […]

Control Change numbers 00H and 20H are defined as the Bank Select message. 00H is the MSB and 20H is the LSB for a total of 14 bits. […]

The transmitter must transmit the MSB and LSB as a pair, and the Program Change must be sent immediately after the Bank Select pair. If their [sic] is any delay between these messages and they are passed through a merging device (which may insert another message) the message may be interpreted incorrectly. […]

What’s confusing is that the same document earlier states that with CC messages in general, you can simply leave out the LSB to get 128 steps of resolution without also mentioning that bank select is a special case that always requires both the LSB, MSB, and the Program Change message in that order.

2 Likes

I can’t speak about the DT, but as the OT was mentioned above i’d like to add/repeat a thought

The OT can send the Bank Change MSB (CC 0) paired with a Prg Change from the MIDI note setup page - i think this is maybe sent when the part is changed (and when you change values)

I am rather bemused that the CC 0 message is used in this place as it’s far more likely (that i am aware of) that a manufacturer would use the LSB data (CC 32) to switch banks in conjunction with a prog change message

The question is why - there may be a reason, yes, you can use a CC lock (if you can coordinate the messages) to send CC32 from either of the Ctrl pages and use 1 of your 10 cc slots ahead of a PRG change which can only be sent from the setup page (or part swap ?)

Take Clavia or DSI, big players in the MIDI world, they do not even send the MSB part of the message when selecting banks/programs (at least on my gear) and the MSB message is not needed (and is unlikely to be so if you think that 128*128prg worth of patches is sufficient) - so these devices work on the MSB being implicitly zero

:small_blue_diamond:Which devices if any actually use/need the CC 0 message ?


remember - Elektron can adapt prog change messages whichever way they like, they use them to change patterns and in the OT these are split amongst (perhaps confusingly) banks - so 1st bank uses 16 progs then the next bank uses the next 16 program numbers

But when it comes to real world patch selection (if that is what these messages are intended for (in OT Midi Note Setup page) ) i am a little unsure - please note - it is common when messages like bank select are used to only send those when banks are changed, this reduces midi blockages - a similar scheme exists for NRPN messages (4x size of CC msg) so you only need to send the varying part to minimise traffic

However - if you want your OT to select the patterns in banks 9 and up (the OT has 8 bits worth of patterns, so it NEEDS a bank select message, this (CC 0) is ONLY sent for changes between patterns in the upper half to the lower half of the 256 possibilities) … so there’s a possible reason why the CC0 is used - but i’m assuming this is so that the mapping between two Elektron devices can be different - rather than following a one to one mapping if you select to output Prg Chg messages from the Main MIID config options in the project menu

So there’s nuance to this debate

The question is whether the adoption of CC 0 (and only that, there are three blank dials there to use) in this MIDI Note Setup page is deliberate or a case of using the MSB (through habit) as opposed to the LSB which would be more useful - as per some of this discussion


Sending repeat messages to support is not the way to improve things imho (for people awaiting support on other matters) - it’s a well known logged issue; can i respectfully ask for @Olle or @Ess to pass comment here as to the intentions of the Bank select found at Fn+Note in MIDI mode and perhaps clarify for the purposes of DT users here if the implementation on the DT is following the same logic (i don’t know what the DT UI looks like) … btw, the OT manual only references a parts association


BANK
can be used for sending out a bank change message. Bank 0 to 127 can be sent. The maximum parameter value is OFF, which will make the track not send out any bank change message. The setting made here is sent every time a pattern linked to another part becomes active.
PROG
can be used for sending out a program change message. Program 0 to 127 can be sent. The maximum parameter value is OFF, which will make the track not send out any program change message. The setting made here is sent every time a pattern linked to another part becomes active.

The off-topicness of this can be tidied later, i suspect the issues are related

I think there are very, very few manufacturers that have a CC 0-only approach. In my experience, only Mutable Instruments Shruthi-1 and some aspects of some Korg gear do not use CC 32.

I strongly suspect that this is the origin of Elektron’s mistake in implementing Bank Select.

I suspect that Elektron simply misunderstood the MIDI spec.

A large amount of Korg, Roland, Yamaha gear and a few others. As you pointed out, so does the OT (although Elektron could just have easily used CC 32).

This is absolutely correct and appropriate for Elektron instruments when handling incoming Program Change messages. The problem occurs in the DT’s MIDI sequencer tracks when wanting to send Bank Select messages to other gear that requires CC 32.

This problem began on the OT and was continued on the DT and it’s a reasonable assumption that it is also implemented on the DN.

The solution would be to add another Bank Select control for LSB on the MIDI sequencer pages of each instrument.

1 Like

How is the Bank Select Prog Change scheduled on the DT - does it have more than just CC control for each the 8 encoders or it is analogous to the OT and is something only sent at specified changes (not that useful in some senses, which is why I think the intent is different from the presented usage cases) ?

The OT can freely schedule both Bank Messages (which other devices can use/abuse as they please), just not the program change messages ! But this was iirc possible with the MNM - so there may be method to the perceived madness

Even though the MSB is not needed to represent the first 128 values, it appears to be required by the MIDI specifications.

I can confirm that my Pioneer Toriaz AS-1 (which is for all practical purposes a DSI synth) does not send the MSB (CC 00), but only the LSB (CC 32).

I can’t think of a synth with more than 128 banks. I guess that when they added bank select, they wanted to make absolutely sure nobody would ever run out of 16384 banks times 128 programs…

That‘s correct, but the MIDI specifications make it very clear that bank select is supposed to be a special case. It seems that the incorrect implementation done by Elektron is the result of exactly this confusion.

Well, I don’t want anyone to break existing functionality, but I am currently unable to use the DT to do bank select on any of my synths. I’d love that to work. :slight_smile:

2 Likes

I’m not sure if I understand your question, so excuse me if this reply is not useful, but the DT’s (and presumably DN’s) MIDI tracks can set default BS and PC values associated with the pattern and also p-lock these values on every step of the sequence.

MM and MD could also p-lock PC messages on every step. It’s only the OT that restricts the circumstances in which the PC messages are sent.

I described this in detail above under “let me now describe the current behavior of the Digitakt” in Digitakt not sending bank select (patch works)

I’m sorry to say this, but you seem to be confusing a Bank Select (which should consist of 2 Control Change messages followed by a Program Change message) with the two control change numbers (00 and 32) that are used for the MSB and LSB part of the bank number.

MIDI allows you to send any CC as you please, but it’s not a Bank Select unless you do it properly (or at least sufficiently properly ;))

Again, please see the specifications:

1 Like

Yes, very likely. And a lack of actual testing with more than one or two hardware synths during development. :wink:

1 Like

This is asking for extra delays (for a slow serial message) when we’ve established that there’s very few synth (if any) needing both messages for the real world size of the patch array - it may be that some synth are expecting both

Just quoting a part of the spec as if it’s a black/white matter is not the whole picture imho

I’m not confusing it, I clearly state that the CC messages themselves are always useful out of context - the default use for the CC0/32 pair is well known and the OT can schedule these per step in the correct order, but as I go on to say it cannot schedule the prog change messages so freely - so it’s hacky

Pushing for ‘by the book’ implementation is not without its drawbacks - so as I say - these things are nuanced and as we’ve seen in the real world, big players are using a part of the documented message structure and this works fine for most people and there’s no unnecessary additional traffic - it’s pragmatic

I wonder if Elektron use Bank 0 in isolation in order to avoid these conflicts as they intend the bank/prg string to be used in a different way

The ability to lock this in the DT is definitely a step up - so why don’t folk just lock CC 32 and a Prg Change message in the correct order - I believe the encoders are sent sequentially EncA before B etc (unless Prg messages are set up elsewhere - that post doesn’t explain where these are set up - I wondered if they were optional to a CC)

Looking at the spec it’s clear that manufacturers (like shruti) who use the MSB for the range 0-127 are doing so in error