Teensy USB-Midi single client?

Status
Not open for further replies.

MatrixRat

Well-known member
Hi folks. I've been building some USB-Midi interface/ controllers using LC's and 3.2's. and although everything works as intended, Ive found that I can only make one single connection to a Teensy-Midi Port on the system's host PC.

Using a Win7 host. IDE1.8.5 TD 1.48.
Scenario. A T3_2 with the appropriate Din Midi interface hardware, coded as a USB-Midi interface shows up on the host as Teensy MIDI. I can plug a Roland synth into it and point the Synth editor to Teensy Midi and it works.

If I then start Midox and attempt to connect a keyboard to the same Teensy Midi port, Midiox reports an "Out of memory" error. Seemingly this is Midiox's generic error message response to Windows reporting an error with the respective Midi port but fails to notify the error type.

This is typically what happens when Midiox tries to connect to a Midi port that some other application has already connected to so in short, my Windows host sees a TeensyMidi port as single client.
Sure, a workaround is to use some more LoopMidi pipes.

Have I missed or messed something or is Teensy Midi not multi-client?

Thanks in advance. Teensy Rocks!
 
Teensy MIDI is class-compliant, meaning it uses whatever drivers the OS has by default. Thus the issue isn’t with Teensy itself it’s an issue with the Windows usbMIDI driver, I can confirm that this isn’t an issue in MacOS because they handle midi devices completely different from how Windows does it.
 
As far as I can tell they need their own Windows driver to work as multi client being that the factory one doesn’t allow it so it wouldn’t be class-compliant.
 
As far as I can tell they need their own Windows driver to work as multi client being that the factory one doesn’t allow it so it wouldn’t be class-compliant.

Yeah, so I am hoping for an example to look into it a bit more.
 
Looks like at some point Windows 10 added support for it, but I don't know how many apps have switched to the new API as it probably breaks backward compatibility.
Code:
One great feature of the new API is that it is multi-client. As long as all apps with the port open are using the Windows 10 
UWP MIDI API and not the older Win32 MME or DirectMusic APIs, they can share the same device. 
This is something the older APIs don’t handle without custom drivers and was a common request from our partners and customers.
 
Thanks guys, that helped put things in focus leading to some exploratory plug jockeying:-

Arturia's BSPro, class compliant, single client. Have usually used it's Din for Midi so had not previously noted it's single-client USB-Midi.

Behringer's BCR2000, class compliant, multi client - Win7 has a second look at it when plugged in so I'd say that Win7 pulls in some extra stuff from the device enabling multi-client. I don't usually use it's USB connection as it's necessary to cycle the power to guarantee that preset edits work correctly.

iConnectivity's MIO-10, class compliant, single client and generic port names until you install it's drivers, then is multi-client and Win7 finds it's user definable Midi port Names.

So will connect TeensyMidi via LoopMidi pipes to get what I'm looking for.

Thanks again and thank you to Paul Stoffregen for Teensy and this awesome forum.
 
Last edited:
Of note, the BCR2000 is not multi client without a driver, this picture is included with their driver for the device as a reference:
Setup.png
 
Strictly speaking I believe any device can technically use the driver you would just have to insert the VID and PID of the desired device into it since to my knowledge it is class compliant, but it is only preprogrammed for their devices and not a catchall for all midi devices. Similar to what this guy offers you would just have to add the VID and PID yourself, but it would probably work if my theory is correct.
 
Thank you for your thoughts vjmuzik. I get the idea, will look into permutations and combinations at some point. TE's offering looks like it would work too. I've got it sorted using Copperlan to connect LoopMidi pipes etc. Copperlan's big plus here is it I have access to the whole rig via LAN at the test bench. I've not had any real hands on with Win10 yet so will get one and see if what I have works on it. No hands on with Mac apart from resurrecting about a hundred dead Classics with the soldering iron back in the day.
 
I just prefer MacOS over Windows, I use both almost daily and the workflow is just so much better for me, not to mention Windows just seems to lack the ease of use of stuff that Mac has had for years such as multi client drivers for audio and midi.
 
I just prefer MacOS over Windows, I use both almost daily and the workflow is just so much better for me, not to mention Windows just seems to lack the ease of use of stuff that Mac has had for years such as multi client drivers for audio and midi.

Begs the question as to why Windows can't support this with its 'universal' diver. Doesn't it??
 
Windows could’ve always supported since obviously other “custom” drivers could do it at the time, I suppose now in Windows 10 it looks like it is supported natively, but that is a simple feature that should’ve been over a decade ago without having to use third party drivers.
 
Status
Not open for further replies.
Back
Top