How to bypass ToBytestreamConverter

Hi,

I am using the UMP MIDI IO API (ump::::Session ump::endpoints etc.). I communicating with my device using UMP over MIDI Windows.

When I try to transmit Message type 4 CVMs juce demotes them to Message type 2 CVMs.

When I transmit Message type 4 Registered Parameters it demotes them to Message Type 2 RPNs.

When I try to transmit Message Type 5 Sysex 8 nothing happens.

An AI search returns

“f your application requires native, un-demoted MIDI 2.0 processing, you will need to bypass JUCE’s legacy ToBytestreamConverter and build on the JUCE MIDI 2.0 Preview Branch using UMP input/output streams directly.”

I thought since I am using juce 8.0.13 i would no longer need the Preview Branch.

Thanks for listening

Dave

At what point are you observing the transmitted messages? Are you sure that it is JUCE converting the messages, and not the operating system?

If you’re on Windows, you can only send MIDI 2.0 messages using the Windows MIDI Services backend. Have you checked that ump::Endpoints::getInstance()->getBackend() is returning ump::Backend::wms? If it’s returning some other value then your project may not be set up correctly to use WMS. JUCE’s WMS backend doesn’t use ToBytestreamConverter.

I thought since I am using juce 8.0.13 i would no longer need the Preview Branch.

That’s correct, ump::Input and ump::Output are available on 8.0.13. However, on Windows, it’s still necessary to manually configure the project to use Windows MIDI Services.