winealsa.drv uses ALSA sequencer interface to access MIDI ports. It is generally the preferred API for that in Linux, as it allows multiple applications access MIDI hardware at the same time and to route messages between software MIDI ports. The connections between the applications and hardware can be controlled within the app or by external tools.
Unfortunately wine uses the API in a way that won't allow other aplications to alter its MIDI connections. It disallows external changes to the connections and does not use the configured connection (subscriptions) to send outgoing messages (instead, it addresses the target device directly).
That has been already confusing, as e.g. https://bugs.winehq.org/show_bug.cgi?id=43725 shows.
Enabling other apps to alter wine MIDI connection has many use cases, like: - fixing Windows application that fail to select proper MIDI device - reverse-engineering Windows application controlling external MIDI hardware (recording SYSEX messages) - adding Linux application in the MIDI chain for processing MIDI streams before they hit the target device
Jacek Konieczny (2): winealsa.drv: allow external MIDI port connection changes winealsa.drv: send MIDI events to port subscribers
dlls/winealsa.drv/midi.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)