Loading...
Searching...
No Matches
score-plugin-vst3/Vst3/MidiEvents.hpp
1#pragma once
2#include <Process/Dataflow/MidiSysexArena.hpp>
3
4#include <libremidi/ump.hpp>
5
6#include <pluginterfaces/vst/ivstevents.h>
7
8#include <optional>
9
10namespace vst3
11{
19inline std::optional<Steinberg::Vst::Event> toSysexEvent(
20 const libremidi::ump& mess, Steinberg::int32 bus, Steinberg::int32 sampleOffset,
21 Process::MidiSysexArena& arena, Process::MidiSysexArena::stream& stream) noexcept
22{
23 const auto bytes = arena.feed(stream, mess);
24 if(bytes.empty())
25 return std::nullopt;
26
27 Steinberg::Vst::Event e{};
28 e.busIndex = bus;
29 e.sampleOffset = sampleOffset;
30 e.ppqPosition = 0;
31 e.flags = Steinberg::Vst::Event::kIsLive;
32 e.type = Steinberg::Vst::Event::kDataEvent;
33 e.data.type = Steinberg::Vst::DataEvent::kMidiSysEx;
34 e.data.size = Steinberg::uint32(bytes.size());
35 e.data.bytes = bytes.data();
36 return e;
37}
38}
Definition MidiSysexArena.hpp:30