Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] MidiSrv enumerates redundant/wrong ports if the device consists of multiple KS filter. #456

Open
m-komo opened this issue Dec 6, 2024 · 1 comment
Assignees
Labels
bug 🐞 Something isn't working dp8-fixed Fixed in developer preview 8

Comments

@m-komo
Copy link
Collaborator

m-komo commented Dec 6, 2024

Describe the bug
As described in the following feedback, third party's custom driver may instantiate multiple KS filter for MIDI 1.0 device.

#305

With such devices, MidiSrv may enumerate redundant or wrong legacy ports.

To Reproduce

  1. To enable MidiSrv enumerated ports, make sure the wdmaud2.drv is registered.
  2. Download & install the Roland A-Series Keyboard driver:
    https://www.roland.com/global/support/by_product/a-49/updates_drivers/4506be14-ffe5-4beb-8064-48ddf78fe56a/
  3. Attach the Roland A-49 keyboard to PC and make sure the device is working with the installed custom driver.
  4. Run 'midi.exe enum legacy'.

"A-Series Keyboard O-1" and "A-Series Keyboard I-1" are duplicated.
The output port "A-Series Keyboard MIDI OUT" is also enumerated as the input port with the name of "A-Series Keyboard MIDI OUT I-1".

Image

Expected behavior
There are no redundant ports and no ports with the wrong direction.

Screenshots
Image

Installer Name or Version
Windows.MIDI.Services.In-Box.Service.-.1.0.1-preview.7.24305.1438-x64.exe

Desktop (please complete the following information):

  • OS: Windows 11 24H2 build 26120.2215 (Insider Dev channel)

Device information, if this is with an external MIDI device:

  • Device: Roland A-49 keyboard
  • Driver: Roland A-Series Keyboard driver

Application Information

  • midi.exe
  • WinMM apps
@m-komo m-komo added the bug 🐞 Something isn't working label Dec 6, 2024
@Psychlist1972
Copy link
Contributor

This should be fixed in DP8. I spent the time today to redo the aggregate (KSA) enumeration so it goes through devices rather than filters. It makes it slightly less efficient, but the end result is more what folks will expect to see, and it also eliminates the issues created by having a KS filter-per-port.

Here are the new generated Group Terminal Blocks for a vendor-driver device, the MOTU Express 128. It reports each port # as its own KS filter.

Image

There are still some bugs to work out, but the enumeration piece is largely complete other than fixing GTB numbers, and dealing with the auto-generated pin names our USB/KS stack creates, like these:

Image

This change also makes it so the actual endpoint name is the name of the device itself, if the user doesn't override it.

Image

I have an A-88 here, but it's in MIDI 2.0 mode at the moment. I'll test it later, as I assume it will respond in the same way the A-49 does.

The naming for WinMM ports is still being worked on as it is far more restrictive, but we will use these generated GTB names as the starting point, adding the direction and group #, and truncating to 32 characters as required.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug 🐞 Something isn't working dp8-fixed Fixed in developer preview 8
Projects
Status: No status
Development

No branches or pull requests

2 participants