# MIDI 2.0 Preview Branch

**URL:** <https://forum.juce.com/t/midi-2-0-preview-branch/66453>\
**Category:** News and Announcements\
**Created:** [June 25, 2025, 11:26am UTC](https://forum.juce.com/t/midi-2-0-preview-branch/66453 "2025-06-25T11:26:35Z")\
**Posts on this page:** 2\
**Page:** 2

<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:** [September 18, 2025, 10:31am UTC](https://forum.juce.com/t/midi-2-0-preview-branch/66453/22 "2025-09-18T10:31:13Z")

</div>

> [@DaAwesomeP](#):
>
> Struggling to find the `ump::Input` class in the sources.

The docs for the new `ump`/`universal_midi_packets` types are now available on the docs site:

> **[JUCE: universal\_midi\_packets Namespace Reference](https://docs.juce.com/develop/namespaceuniversal __midi__ packets.html)**

---

<div class="post-metadata">

**Author:** ![DaAwesomeP](https://avatars.discourse-cdn.com/v4/letter/d/cab0a1/32.png) [@DaAwesomeP](https://forum.juce.com/u/DaAwesomeP)\
**Post date:** [September 23, 2025, 8:45am UTC](https://forum.juce.com/t/midi-2-0-preview-branch/66453/23 "2025-09-23T08:45:27Z")

</div>

> [@reuk](#):
>
> Sorry, I missed your comment previously!

No worries! My turn to apologize for the delay.

> [@reuk](#):
>
> `MidiMessage` isn’t going to see any changes, it’s always going to represent a MIDI 1.0 bytestream message. If you want to send/receive bytestream messages through `ump::Input` or `ump::Output`, you’re responsible for converting between UMP and bytestream representations on either side. JUCE includes some mechanisms to assist: there’s `GenericUMPConverter` for conversion from bytestream to UMP-formatted MIDI 1.0 or MIDI 2.0; to go in the other direction, you can use `ToBytestreamConverter`. The new implementations of `MidiInput` and `MidiOutput` do this conversion internally, so you can look at those implementations for pointers if necessary.
> 
> We do intend to add some improved setters and getters for properties of MIDI 2.0 messages in UMP format, but those aren’t present in the initial release.

My question stems from how `MidiBuffer` is provided for each sample in the `processBlock` loop. It doesn’t seem like there is an equivalent way to receive UMP messages once per sample (instead there is an event-based consumer if I understand correctly). I’m also wondering what the current trend/plans/thoughts are on how to implement this in the plugin format (i.e. will it be a `UmpBuffer` addition to `processBlock` or the same consumer).

It looks like `universal_midi_packets::Consumer::consume()` runs separately from `processBlock`, so I could implement equivalent `MidiBuffer` behavior by adding messages to a queue that is read by `processBlock`. How are these functions scheduled? Are they in separate threads or interleaved in one thread?

> [@reuk](#):
>
> We don’t have a ‘flex data message’ type. But, there’s nothing stopping you from reading/writing flex data messages to a `ump::Input` or `ump::Output`. You may need to write your own helpers to pack/unpack plain data into UMP flex-data format. We already supply similar facilities for packing/unpacking 7-bit sysex data, so those might serve as a starting point.

Perfect, thank you!

> [@reuk](#):
>
> The docs for the new `ump`/`universal_midi_packets` types are now available on the docs site:

Thank you!

[Previous page](https://forum.juce.com/t/midi-2-0-preview-branch/66453.md?page=1)
