JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, LV2 and AAX audio plug-ins.
I'm building my own MIDI-CI client in Kotlin, and noticed that my Set Profile On requests to JUCE CapabilityInquiryDemo is ignored when its address is 0x7E or 0x7F.
It is because my client sets "Number Channels Requested" field as 0 which is what MIDI-CI version 1.2 specification states (section 7.8).
*Note: When the Profile Destination field is set to address 0x7E or 0x7F, the number of Channels is determined
by the width of the Group or Function Block. Set the Number of Channels Requested field to a value of 0x0000.
This field in Set Profile On message is, however, defined as active field in SupportedAndActive struct, and when it is 0 then isActive() returns false, resulting in a Profile Disabled Report reply.
Repro steps:
Build and run examples/Audio/CapabilityInquiryDemo(.h)
In the app, connect a MIDI client that is being used as a MIDI-CI Initiator
On Local Configuration tab, enable "Profiles" and add a profile, select either "All" on group 1 or "Block" and click "Toggle Member Channels"
create a Discovery Inquiry message and get the app's MUID from its reply
send a Profile Inquiry message and get the corresponding Profile Reply
send Set Profile On to the profile with the address (0x7E or 0x7F)
Or, in case you really want to use, my midi-ci-tool in this GitHub repo https://github.com/atsushieno/ktmidi/ (0a3d819 is known to reproduce, HEAD may not as it is under heavy development). It has a bug workaround switch for this exact issue on its Settings option on the main UI. (I'm not going to give full explanation on how to use IntelliJ IDEA to build and launch the app...)
What is the expected behaviour?
juce_midi_ci Responder (maybe some code in ProfileHost) should really set profile on when it received Set Profile On message whose address is 0x7E or 0x7F.
Detailed steps on how to reproduce the bug
I'm building my own MIDI-CI client in Kotlin, and noticed that my Set Profile On requests to JUCE CapabilityInquiryDemo is ignored when its
address
is0x7E
or0x7F
.It is because my client sets "Number Channels Requested" field as
0
which is what MIDI-CI version 1.2 specification states (section 7.8).This field in Set Profile On message is, however, defined as
active
field inSupportedAndActive
struct, and when it is0
thenisActive()
returns false, resulting in aProfile Disabled Report
reply.Repro steps:
examples/Audio/CapabilityInquiryDemo(.h)
0x7E
or0x7F
)Or, in case you really want to use, my
midi-ci-tool
in this GitHub repo https://github.com/atsushieno/ktmidi/ (0a3d819 is known to reproduce, HEAD may not as it is under heavy development). It has a bug workaround switch for this exact issue on its Settings option on the main UI. (I'm not going to give full explanation on how to use IntelliJ IDEA to build and launch the app...)What is the expected behaviour?
juce_midi_ci Responder (maybe some code in
ProfileHost
) should really set profile on when it received Set Profile On message whoseaddress
is0x7E
or0x7F
.Operating systems
macOS
What versions of the operating systems?
13.5.2 (22G91)
Architectures
ARM
Stacktrace
No response
Plug-in formats (if applicable)
No response
Plug-in host applications (DAWs) (if applicable)
No response
Testing on the
develop
branchThe bug is present on the
develop
branchCode of Conduct