[sdiy] New device, weird midi behavior
rsdio at audiobanshee.com
rsdio at audiobanshee.com
Sun Dec 31 03:38:22 CET 2017
On Dec 30, 2017, at 5:03 PM, Joel B <onephatcat at earthlink.net> wrote:
> I have this new device, a kickstarter product, it is USB Powered, and it only works well with a few of my synthesizers. For others it seems to send nothing at all, others it makes them stop making any sound at all while plugged in, as if it is sending a stream of all notes off. In my emagic midi interface it either sends nothing, or, on another Unitor 8 in the Unitor daisy chain it sends bank select 0 every so often. Plugged into an old Opcode midi interface it seems to send proper note on off though. Seems to work ok on Roland JX8p and Yamaha tx816... not on DX7 though. Korg Minilogue but not sequential max. Seems to send proper midi data to my iconnectMidi1 for iOS.
> Same keyboards and interfaces all respond properly to other midi sources. So I’m thinking something electrical is wrong here?
> What would you investigate to try to understand what is going on?
> Any hypotheses?
Having designed several commercial USB-MIDI products, and having looked at many open source projects from beginners and amateurs in the USB and USB-MIDI universe, I've learned that there are quite a few ways to get the design wrong on a USB Device. Even the venerable MOTU (Mark of the Unicorn) managed to release a USB-MIDI Device that failed miserably under particular conditions. Reading through the history of USB Specifications, especially if you have access to every version (the earliest of which are not really made available any more), you'll note that the designers have pointed out the many ways in which manufacturers and designers have misinterpreted the specifications. The USB folks have even modified the USB Specifications in some ways over the years to account for the fact that so many manufacturers have misinterpreted the rules and requirements. The promise of USB is that it’s “universal,” but that promise isn’t always delivered. It's actually somewhat difficult to maintain compatibility when so many manufacturers do not fully implement the required standards.
In other words, it's entirely possible that this Kickstarter product is not 100% USB compliant.
That said, your description makes it sound like you're mostly having trouble with the classic MIDI interface, so perhaps it has little or nothing to do with USB, per se.
As someone else pointed out, if this USB Device does not have a full 5 V boost regulator on board for the classic MIDI interface, then it may not be 100% compatible with classic MIDI devices. USB is nominally running on 5 V, but if you read the details of the spec then you'll find that a USB powered Device hanging off a bus-powered hub will only get 4.01 V, and that's perfectly legal within the USB Specifications. Unfortunately, nearly all 5 V chips require the supply to be in the range from 4.75 V to 5.25 V, and 4.01 V is not nearly enough. Some manufacturers end up shipping devices with chips that are underpowered, while others end up shipping devices with classic MIDI ports that don't match the specifications 100%. MIDI is technically a 5 mA current loop, so the exact Voltage “shouldn’t” be important. However, the transmitter and receiver circuits both involve specific resistances that won’t produce the right 5 mA current if the Voltage isn’t 5 V.
Moving on from USB-MIDI Voltage compatibility to the classic MIDI protocol, there are a few infamous quirks among the big MIDI manufacturers that caused no end of trouble for musicians who combined products from specific different companies. Namely, there are a few All Notes Off messages that are intended to be used only in emergency situations, but one company (I think it was Roland?) who decided to send All Notes Off from their keyboard controllers every time the keyboard player lifted all fingers off the keyboard. The MMA was adamant that this was an incorrect use of that message, and that All Notes Off should only be sent when a user presses some sort of Reset button, but for decades there were still keyboard controllers from that manufacturer (and perhaps others) which violated the MIDI Specification. In particular, this posed problems for multi-timbral synthesizers, because All Notes sometime come from a sequencer and not a keyboard player, so All Notes Off messages could seriously interfere with rhythm or backing tracks that aren't played by hand.
So, you could have a firmware problem, an electrical problem, or one of many potential specification violations.
I'm not quite clear on how all of your gear is communicating. I assume that you have a computer as a USB Host, this USB powered Kordbot, but also an eMagic Unitor 8 or Opcode MIDI interface, and then Roland, Yamaha, and Korg synthesizers. Are you using the Kordbot and the MIDI interfaces at the same time? Or are you merely using them alternatively as a test to swap out individual components in an attempt to find the problem?
One highly useful diagnostic technique would be to use a MIDI splitter and connect some sort of MIDI dump software so that you can view the messages coming out of the Kordbot. You could then potentially play back those exact same messages without the Kordbot in the MIDI path, just to see whether it's a MIDI data protocol problem with these classic synths, or if it's an electrical problem with the new USB-powered hardware.
I've designed a lot of MIDI and USB-MIDI hardware, and it really helps to be able to see the MIDI messages when things aren't working. That's getting a bit harder these days, because USB-MIDI slightly alters the protocol as its passes through, so I often revert to simpler, 8-bit computers with only classic MIDI interfaces so I can see the raw MIDI data. One thing to keep in mind is that when testing with USB-MIDI, certain data sequences that are possible in MIDI cannot be transmitted verbatim over USB-MIDI, so you can't use USB-MIDI to diagnose those kinds of problems with the protocol. It's rare, but still important to know that your tests might be obscuring the problem itself. For one thing, Running Status simply doesn't exist on USB-MIDI. That technically should not be a problem, but if there are errors in the interpretation of Running Status then USB-MIDI will totally obscure that.
More information about the Synth-diy