microsoft / MIDI

Windows MIDI Services
MIT License
304 stars 25 forks source link

[BUG]Older MIDI 1.0 class drivers will drop some SysEx from USB-MIDI 1.0 devices #372

Open masahirokakishita opened 2 months ago

masahirokakishita commented 2 months ago

Describe the bug Older MIDI 1.0 class drivers will drop some SysEx from USB-MIDI 1.0 devices

To Reproduce

  1. Install the enclosed SevenColor4,uf2. This is a USB-MIDI 1.0 device. This is a USB-MIDI 1.0 device.

SevenColor4.uf2.zip

  1. Open a console
  2. Monitor UMP message

midi endpoint monitor -verbose

  1. Touch the touchpad "1" of ProtoZoA. ProtoZoA send following messages.

04 f0 0b 0c 04 0d 0e 0f 04 10 11 12 07 13 14 f7

  1. One MT3 message is displayed by the console.

30160B0C 0D0E0F10

Expected behavior

Two MT3 message is needed. Because there are ten bytes SysEx.

30260B0C 0D0E0F10 30341112 13140000

Screenshots image

Installer Name or Version dev-preview-6/Windows.MIDI.Services.App.SDK.Runtime.-.Developer.Preview.6.1.0.24194.2233-arm64.exe dev-preview-6/Windows.MIDI.Services.Console.-.Developer.Preview.6.1.0.24194.2233-arm64.exe dev-preview-6/Windows.MIDI.Services.In-Box.Service.-.Developer.Preview.6.1.0.24194.2233-arm64.exe 240713-USBMidi2-Arm64-TESTSIGNED

Desktop (please complete the following information): Snapdragon 3GHz Windows 11 Pro Build 26100.ge_release.240331-1435

Psychlist1972 commented 2 months ago

@masahirokakishita If you have the ability and desire to test this, can you tell me if you see the same dropping of messages if you send the equivalent byte data through the older WinMM or WinRT MIDI 1.0 APIs, not using Windows MIDI Services? Maybe looking at it through a tool like MIDI-OX?

I'm keen to understand if this is a problem with our old driver, or a problem with Windows MIDI Services.

MusicMaker commented 2 months ago

Also recommend look at Mountain MIDI tools, it seems to handle sysex a bit better but not perfect. Al of them including Pocket MIDI and OX have issues with sysex in some situations (i.e realtime, see the other bug posted today).

masahirokakishita commented 2 months ago

I used Pocket MIDI. And It’s no problem.

image

masahirokakishita commented 2 months ago

I have a mistake, the expected behavior is as below.

30160B0C 0D0E0F10 30341112 13140000

m-komo commented 2 months ago

* updated the driver information. (Thank you, Pete)

I was able to reproduce this issue with the UM-ONE (Class Compliant Mode).

Received following messages from the UM-ONE's MIDI INPUT: image

midi.exe ep monitor shows: image

Monitor with the PocketMIDI: image

Psychlist1972 commented 2 months ago

I was able to reproduce this issue with the UM-ONE (Class Compliant Mode).

Received following messages from the UM-ONE's MIDI INPUT: image

midi.exe ep monitor shows: image

Monitor with the PocketMIDI: image

  • Service: Windows.MIDI.Services.In-Box.Service.-.Developer.Preview.6.1.0.24194.2233-x64.exe
  • Driver: [interim preview build] 240719-USBMidi2-x86-TESTSIGNED.zip (DriverVer = 07/19/2024,23.22.46.475)
  • OS: Windows 11 24H2 (OS Build 26100.1150)

(Note for others viewing: this isn't using the MIDI 2 / UMP interim driver. It's using the older usbaudio.sys)

Psychlist1972 commented 2 months ago

This is likely related to the bug I just logged for libmidi2

https://github.com/midi2-dev/AM_MIDI2.0Lib/issues/23

Psychlist1972 commented 2 months ago

Andrew is working on updates to libmidi2 which should address this.

MusicMaker commented 2 months ago

I used Pocket MIDI. And It’s no problem.

image

Sorry. What I meant was also inserting F8 , FA, FB, FC into the sysex either UMP to legacy.

Psychlist1972 commented 1 month ago

Andrew has updated his libmidi2 code so this will be resolved in the next preview