tomarus / midiseq

React/Redux Web MIDI Sequencer, Router & Drum Machine
51 stars 10 forks source link

Multiple USB devices with the same name show up as one entry #2

Open kevinjwalters opened 5 years ago

kevinjwalters commented 5 years ago

I am using some Adafruit boards which identify themselves as CircuitPython MIDI over USB. If I plug two of them into the same host computer only one appears in this browser application.

For comparison, Ableton Live distinguishes them as CircuitPython MIDI and CircuitPython MIDI #2. I'd imagine Ableton is adding the prefix to allow the user to specify each one.

tomarus commented 5 years ago

Hi Thanks for reporting this issue.

It's interesting since i just use the browser's capabilities to enumerate midi devices and all your devices should have a unique id.

I will certainly look into this for the next release.

kevinjwalters commented 5 years ago

In case it matters this was Chrome 73.0.3683.86 (Official Build) (64-bit) on Windows. It's possible this is a limitation with Web MIDI or the browser, I don't know anything about how this works at lower levels.

Unrelated, how do you handle SysEx? I spent a few hours yesterday trying to get something to work and it turns out Ableton Live doesn't forward them and then I realised I wasn't sure what the Router functionality in your Web MIDI application was doing with them. They don't show up in the Monitor, I think they were popping up as corrupted other events, possibly. The ability to tap in arbitrary SysEx too would be rather nice.

There's a curious note about permissions and requirement for https (TLS) for SysEx on Factotumo: Web MIDI Access, Sysex, and SSL

kevinjwalters commented 5 years ago

FYI, for what it's worth https://factotumo.com/web-midi-console/ also only lists one device, CircuitPython MIDI.

tomarus commented 5 years ago

FYI, for what it's worth https://factotumo.com/web-midi-console/ also only lists one device, CircuitPython MIDI.

That is interesting as well as it would imply browsers are currently not able to distinguish between the same devices.

Regarding sysex handling, i believe i only send start/stop and control speed/bpm to my own hardware. The idea is the router part will be completely handled in hardware in the future. I'm working on a hardware midi router for that (https://github.com/tomarus/midirouter) but it's far from finished ofcourse.

kevinjwalters commented 5 years ago

This is what I have been working on: Adafruit Learn: Circuit Playground Express USB MIDI Controller and Synthesizer

I've also got some ideas about how Ableton differentiates between MIDI devices with the same name: Adafruit Forums: USB midi identification

tomarus commented 5 years ago

Thank you this is valuable information!

kevinjwalters commented 5 years ago

I've started a discussion on https://forum.ableton.com/viewtopic.php?f=1&t=234679 but it's such a deeply technical question that it would take a developer to answer it and I doubt they do much noodling around there.