I have new versions of SendMIDI and ReceiveMIDI available with MPE Profile support.
The intent of these versions of my tools is that people can focus on either the initiator or responder role for their product and leave the other part of the negotiation up to either SendMIDI or ReceiveMIDI. This should make it easier to bootstrap adding MPE Profile support.
SendMIDI allows simulating the role of an MPE Profile initiator, while ReceiveMIDI allows simulating the role of an MPE Profile responder (only on Linux/macOS due to virtual port creation)
Here's an basic example of usage:
Create a virtual MIDI port named profiletest
and configure it to support manager channel 1
with 15
member channels as a responder:
receivemidi mpp profiletest 1 15
Use profiletest
both as the MIDI output and input port and request the MPE profile to be enabled as an initiator with manager channel 1
and with 6
member channels:
sendmidi dev profiletest mpp profiletest 1 6
The relevant outputs could be:
receivemidi mpp profiletest 1 15
Responder MUID 0x0d1212d6 waiting for MPE Profile negotiation on channel 1
MUID 0x03926473 : MPE Profile enabled with manager channel 1 and 6 member channels
MUID 0x03926473 : MPE Profile details inquired for optional features
sendmidi dev profiletest mpp profiletest 1 6
Initiator MUID 0x03926473 negotating MPE Profile with manager channel 1 and 6 member channels
MUID 0x0d1212d6 : Discovered
MUID 0x0d1212d6 : Requesting MPE Profile enablement with manager channel 1 and 6 member channels
MUID 0x0d1212d6 : MPE Profile enabled with manager channel 1 and 6 member channels
MUID 0x0d1212d6 : Inquiring MPE Profile details for optional features
MUID 0x0d1212d6 : MPE Profile details received for optional features
MUID 0x0d1212d6 channel response : not supported
MUID 0x0d1212d6 pitch bend : supported
MUID 0x0d1212d6 channel pressure : standard controller
MUID 0x0d1212d6 3rd dimension : standard controller
This is another possible example:
Create a virtual MIDI port named profiletest
and configure it to support any manager channel with up to 8
member channels as a responder, this also disables pitch bend as a supported feature and enables bipolar controllers for channel pressure and 3rd dimension:
receivemidi mpp profiletest 0 8 mpb 0 mcp 2 m3d 2
Use profiletest
both as the MIDI output and input port and request the MPE profile to be enabled as an initiator with manager channel 2
and with 10
member channels:
sendmidi dev profiletest mpp profiletest 2 10
Then, use profiletest
both as the MIDI output and input port and request the MPE profile to be enabled as an initiator with manager channel 12
and with 6
member channels:
sendmidi dev profiletest mpp profiletest 12 6
The relevant outputs could be:
receivemidi mpp profiletest 0 8 mpb 0 mcp 2 m3d 2
Responder MUID 0x04b33d6f waiting for MPE Profile negotiation on all channels
MUID 0x00166e57 : MPE Profile enabled with manager channel 2 and 8 member channels
MUID 0x00166e57 : MPE Profile details inquired for optional features
MUID 0x001a9680 : MPE Profile disabled with manager channel 2
MUID 0x001a9680 : MPE Profile enabled with manager channel 12 and 4 member channels
MUID 0x001a9680 : MPE Profile details inquired for optional features
sendmidi dev profiletest mpp profiletest 2 10
Initiator MUID 0x00166e57 negotating MPE Profile with manager channel 2 and 10 member channels
MUID 0x04b33d6f : Discovered
MUID 0x04b33d6f : Requesting MPE Profile enablement with manager channel 2 and 10 member channels
MUID 0x04b33d6f : MPE Profile enabled with manager channel 2 and 8 member channels
MUID 0x04b33d6f : Inquiring MPE Profile details for optional features
MUID 0x04b33d6f : MPE Profile details received for optional features
MUID 0x04b33d6f channel response : not supported
MUID 0x04b33d6f pitch bend : not supported
MUID 0x04b33d6f channel pressure : alternate bipolar controller
MUID 0x04b33d6f 3rd dimension : alternate bipolar controller
sendmidi dev profiletest mpp profiletest 12 6
Initiator MUID 0x001a9680 negotating MPE Profile with manager channel 12 and 6 member channels
MUID 0x04b33d6f : Discovered
MUID 0x04b33d6f : Requesting MPE Profile enablement with manager channel 12 and 6 member channels
MUID 0x04b33d6f : MPE Profile disabled with manager channel 2
MUID 0x04b33d6f : MPE Profile enabled with manager channel 12 and 4 member channels
MUID 0x04b33d6f : Inquiring MPE Profile details for optional features
MUID 0x04b33d6f : MPE Profile details received for optional features
MUID 0x04b33d6f channel response : not supported
MUID 0x04b33d6f pitch bend : not supported
MUID 0x04b33d6f channel pressure : alternate bipolar controller
MUID 0x04b33d6f 3rd dimension : alternate bipolar controller
Full documentation can be found by typing sendmidi -h
or receivemidi -h
.
Hope this is helpful. Please let me know if you have any feedback.