Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 15 of 15

Thread: Teensy USB-Midi single client?

  1. #1
    Member
    Join Date
    Aug 2019
    Location
    Melbourne Australia
    Posts
    29

    Teensy USB-Midi single client?

    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!

  2. #2
    Senior Member oddson's Avatar
    Join Date
    Feb 2013
    Location
    Isle in the Salish Sea
    Posts
    1,225
    Quote Originally Posted by MatrixRat View Post
    ...Have I missed or messed something or is Teensy Midi not multi-client?...
    Have I missed something? What is a multi-client?

    edit - answer appears to be 'yes'
    https://users.cognitone.com/wiki/lis...rivers-windows
    https://forum.juce.com/t/windows-mul...-drivers/10766

  3. #3
    Senior Member vjmuzik's Avatar
    Join Date
    Apr 2017
    Location
    Florida
    Posts
    403
    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.

  4. #4
    Senior Member oddson's Avatar
    Join Date
    Feb 2013
    Location
    Isle in the Salish Sea
    Posts
    1,225
    @OP - do you know of a controller that does work as a 'multi-client' device?

  5. #5
    Senior Member vjmuzik's Avatar
    Join Date
    Apr 2017
    Location
    Florida
    Posts
    403
    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.

  6. #6
    Senior Member oddson's Avatar
    Join Date
    Feb 2013
    Location
    Isle in the Salish Sea
    Posts
    1,225
    Quote Originally Posted by vjmuzik View Post
    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.

  7. #7
    Senior Member vjmuzik's Avatar
    Join Date
    Apr 2017
    Location
    Florida
    Posts
    403
    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.

  8. #8
    Member
    Join Date
    Aug 2019
    Location
    Melbourne Australia
    Posts
    29
    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 by MatrixRat; 10-10-2019 at 02:19 AM. Reason: typo

  9. #9
    Senior Member vjmuzik's Avatar
    Join Date
    Apr 2017
    Location
    Florida
    Posts
    403
    Of note, the BCR2000 is not multi client without a driver, this picture is included with their driver for the device as a reference:
    Click image for larger version. 

Name:	Setup.png 
Views:	2 
Size:	97.1 KB 
ID:	17857

  10. #10
    Senior Member oddson's Avatar
    Join Date
    Feb 2013
    Location
    Isle in the Salish Sea
    Posts
    1,225
    A registered trademark for a 'universal' driver for only their stuff?

  11. #11
    Senior Member vjmuzik's Avatar
    Join Date
    Apr 2017
    Location
    Florida
    Posts
    403
    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.

  12. #12
    Member
    Join Date
    Aug 2019
    Location
    Melbourne Australia
    Posts
    29
    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.

  13. #13
    Senior Member vjmuzik's Avatar
    Join Date
    Apr 2017
    Location
    Florida
    Posts
    403
    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.

  14. #14
    Senior Member oddson's Avatar
    Join Date
    Feb 2013
    Location
    Isle in the Salish Sea
    Posts
    1,225
    Quote Originally Posted by vjmuzik View Post
    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??

  15. #15
    Senior Member vjmuzik's Avatar
    Join Date
    Apr 2017
    Location
    Florida
    Posts
    403
    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.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •