# How to bypass ToBytestreamConverter

**URL:** <https://forum.juce.com/t/how-to-bypass-tobytestreamconverter/68877>\
**Category:** General JUCE discussion\
**Created:** [May 23, 2026, 3:30pm UTC](https://forum.juce.com/t/how-to-bypass-tobytestreamconverter/68877 "2026-05-23T15:30:25Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![davestarkey](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/davestarkey/32/22178_2.png) [@davestarkey](https://forum.juce.com/u/davestarkey)\
**Post date:** [May 23, 2026, 3:30pm UTC](https://forum.juce.com/t/how-to-bypass-tobytestreamconverter/68877/1 "2026-05-23T15:30:25Z")

</div>

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](https://forum.juce.com/t/midi-2-0-preview-branch/66453)** 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

---

<div class="post-metadata">

**Author:** ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)\
**Post date:** [May 24, 2026, 12:50pm UTC](https://forum.juce.com/t/how-to-bypass-tobytestreamconverter/68877/2 "2026-05-24T12:50:47Z")

</div>

> [@davestarkey](#):
>
> 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.

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.
