Digitakt not sending bank select (patch works)

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

I can confirm that it indeed appears to be broken on the Shruthi-1.

What’s interesting is that constants are defined for both in https://github.com/pichenettes/shruthi-1/blob/master/midi/midi.h#L25 but that the MSB is subsequently only used in https://github.com/pichenettes/shruthi-1/blob/master/shruthi/midi_dispatcher.h#L69

1 Like

I’m not advocating that they follow the spec to the letter, I’m just trying to understand why they ended up using CC 00 when most manufacturers who decided to be pragmatic about the number of bytes to send decided to drop the MSB and only send the LSB (CC 32).

Again, I am not pushing for a “by the book” implementation. I’m just trying to understand the book, and hope to help others understand the book as well so that we can get to a point where we get the best interoperability possible.

In the end I just want to switch banks from my DT using the ”BANK” knob. :slight_smile:

That might be possible, but because they also send a Program Change, I don’t see how using CC 00 instead of CC 32 helps in this context.

On the DT, the pages where you set “CHAN”, “BANK”, and “PROG” are part of the MIDI tracks which seem primarily intended for controlling a few external synths, not for switching patterns on your other Elektron boxes. At least, so I hope.

Elektron could change the “BANK” knob on this page to send CC 32 instead of CC 00, and keep using CC 00 for sending program changes to sync up pattern switches between Elektron boxes.

Elektron is doing the exact same thing on the MIDI tracks in the DT. It would follow that they’re in error as well, right?

2 Likes

If they don’t want to trigger bank changes in other devices (whilst knowing nobody needs those bank select MSB messages)

Let’s be clear - the prg change to switch patterns is a source of a lot of these complications, it’s messy - some of this may be a reflection of that

if that’s the intended usage scenario

but I, like you, have asked if they could provide background as to the expected use of the Bank/Prg pair in the OT (and therefore if similar DT) - I don’t follow the logic through, but I’m not saying it’s an error (and I’ve explained why)

basically I’m giving them the benefit of the doubt - they are professionals, so I don’t think these things are simply to be read as mistakes (especially as they have the pattern select complications)

I’m all for pushing for fixes - but let’s see whether it’s intentional

As for the OT (where the prg change messages are only sent at part/pattern swaps) even though there’s room for an extra Bank dial - I don’t think it’d improve matters much - the DT sounds like it’d benefit from a fix and possibly a user definable bank definition as discussed above 0, 0/32, 32

I’ll chime in and say that changing banks on the Blofeld using the DT does not work, though it does work using the Monomachine.

1 Like

Mitigation of extra delays seems implausible as an explanation.

The cost of the missing BS LSB is two bytes, exactly the same payload as the CC 32 message that users in this topic are having to send as a workaround for the non-standard implementation. DT is designed to be able to send 10 CC messages plus PC, pitchbend, and aftertouch per step per track.

MIDI sequencers from other manufacturers have for decades been able to send full BS and PC messages.

Presumably, if there were some timing issue, they could have pragmatically used CC 32 only and satisfied a larger proportion of users.

And again, the problem is not in how Elektron instruments respond to incoming BS & PC messages, which is entirely appropriate and in accordance with the recommended practice for sequencers; the problem arises on MIDI sequencer tracks where the intention is to communicate with external devices that are following the MIDI spec.

That’s what users are doing (see previous posts in the topic) as a workaround for the incorrect implementation of the Bank Select message by Elektron. The requests that several of us have made is for Bank Select transmission to be implemented in accordance with the MIDI specification so that there is less need for such a fiddly workaround.

1 Like

I don’t think this is optimal: there need to be separate controls for BS MSB (CC 0) and BS LSB (CC 32) with both being capable of being set to “Off”.

I disagree: Program Change (incoming or outgoing) is perfectly fine. The only problem comes in the incorrect implementation of the Bank Select message on the outgoing MIDI sequencer tracks on the DT (and OT and DN).

I disagree: there are several topics here where users have had exactly the same problem with outgoing Bank Select messages from the OT’s MIDI sequencer tracks. It’s exactly the same issue.

1 Like

Completely agree.

I can however see why they wouldn’t add two BANK knobs on the same page. It’s also a bit unelegant and confusing to require users to set the MSB and LSB values separately.

Ideally, they would always send both the MSB (CC 00) and the LSB (CC 32) of the bank number. The range of the BANK knob could be limited to 1-128 by default, maybe with a configuration setting that allows it to be extended to the full range.

Don’t forget that the other thing that’s not done correctly right now is that turning the BANK knob does not append a Program Change message, which really should happen for proper interoperability.

Yes, with the addition that the only truly correct implementation of a Bank Select consists of the following 3 MIDI messages sent in succession:

  1. A Control Change message with control number 00 for the MSB of the bank number (will have the value zero in most cases).
  2. A Control Change message with control number 32 for the LSB of the bank number.
  3. A Program Change message.

Elektron should also send a Program Change message with the value from the PROG knob when the BANK knob is turned.

On the DT, Elektron should also not allow the BANK knob to be enabled on its own. When you enable the BANK knob, it should always also enable the PROG knob.

Again, I strongly agree.

The sad thing is that most users will just give up in frustration and start using fiddly workaround because they’re so used to MIDI things being broken.

2 Likes

Very insightful posts, @t.

Really hope Elektron will stick to the midi spec. It’s not like its new or something. Most of the midi problems with the DT could’ve been fixed by actually testing it with a few h/w boxes like you said.

The missing of sysex dumping in the DT also affirms my believe the DT has unfinished midi. Really hope it all gets sorted in the next firmware. Midi is something that should work properly out of the box cuz the spec is so old already and not that hard to test.

y’all ain’t getting my point(s) about why Elektron maybe went down this route - but we can split hairs all day about this and that, it’s all second guessing - if the OT sends those bank/prg messages as a method to change patterns in other Elektron devices then my logic stands - it’s clearly not intended to be helpful for patch changes on the OT - so maybe the underlying purpose isn’t as most of us may rather use it

I’d be happy if a user could pick/choose between patch selection on any device and pattern swapping with paired Elektrons - but I think it’s too early to say it’s an oversight - this may be for the benefit of pattern mapping on Elektron boxes - so avoiding sending the CC32 message is possibly by design

my point being that even with Both CC0&CC32 the user is still hamstrung with no ability to send Prg changes at will (as on DT) without part hopping

but again this s predicated on the bank message being for primarily patch changing - this is what I asked for clarification on in my very first post


I’ll never map patterns with this functionality but i’d use it to switch patches in a heartbeat - I’m just proposing that it’s not a black/white issue - I’m not suggesting it’s not an oversight, just explaining why it may not be

if the device functionality (DT, as it’s not as useful on OT by a long way) is intended to switch synth patches then it’s definitely a bad decision

One control, limited to a range of 128 values, would not solve the problem for all the gear that requires both bytes of the Bank Select message. There would have to be a configuration setting somewhere to determine whether the control covered MSB or LSB.

One control covering 128 x 128 values would be very tricky to use.

Two knobs, each with a range of 128 values and “Off”, would cover all scenarios. There is space in the UI for it, it corresponds to the implementation as described in other instruments, and the MIDI payload is no more than people are currently using anyway. It would also be backward-compatible with the existing arrangement.

That’s an independent issue. It’s not an argument for not implementing Bank Select correctly.

Incorrect. You can limit the range of the control and still send both the MSB (which would always be zero in that case) as well as the LSB.

This would solve the problem for all gear that requires the bank change to contain both the MSB as well as the LSB to function, it would just limit the number of banks that can be selected to the first 128.

I agree and I don’t have a strong opinion on how Elektron solves it in the user interface. I just want them to send out the correct messages so that it works with most gear. :slight_smile:

Bank Select is simply a means for extending the size of the range of Program Change messages. A generic MIDI sequencer simply sends the messages. The receiving device responds to them in the way it’s been designed: the MIDI spec suggests that a sequencer responds by changing patterns while another device (synth, effects etc) changes patches. There’s nothing special about a Bank Select message on the receiving end.

1 Like

Bank messages are always intended to change the program. With MIDI, you can not change the bank without also choosing a program within that bank.

It doesn’t matter if the program is a “patch” or “tone” on a synth, or a “pattern” in a sequencer. MIDI explicitly allows for both (MIDI 1.0 Detailed Specification 4.2 page 19):

“Program change messages do not necessarily need to change tones. In some instruments, such as a drum machine, the message may be used to switch to a different rhythmic pattern. In MIDI controlled effects devices, the program change message may be used to select a different preset effect.”

1 Like

How would it solve the case for external gear that requires both a non-zero MSB and a non-zero LSB?

This is the difference in what we’re saying: I want it to work for all ( my :grinning: ) gear, not just most gear.
:grinning:

1 Like