25namespace juce::universal_midi_packets
38 void reset() { currentPacketLen = 0; }
46 template <
typename PacketCallbackFunction>
50 PacketCallbackFunction&& callback)
52 std::for_each (begin, end, [&] (uint32_t word)
54 nextPacket[currentPacketLen++] = word;
58 callback (View (nextPacket.data()), timeStamp);
65 std::array<uint32_t, 4> nextPacket;
66 size_t currentPacketLen = 0;
86 : concatenator (storageSize),
103 template <
typename PacketCallbackFunction>
107 PacketCallbackFunction&& callback)
109 using CallbackPtr =
decltype (std::addressof (callback));
112 #define JUCE_MINGW_HIDDEN_VISIBILITY __attribute__ ((visibility ("hidden")))
114 #define JUCE_MINGW_HIDDEN_VISIBILITY
117 struct JUCE_MINGW_HIDDEN_VISIBILITY Callback
122 void handleIncomingMidiMessage (
void*,
const MidiMessage& msg)
const
126 dispatch.converter.convert (view, *callbackPtr);
130 void handlePartialSysexMessage (
void*,
const uint8_t*,
int,
double)
const {}
133 CallbackPtr callbackPtr =
nullptr;
136 #undef JUCE_MINGW_HIDDEN_VISIBILITY
138 Callback inputCallback { *
this, &callback };
139 concatenator.pushMidiData (begin,
int (end - begin), timestamp, (
void*)
nullptr, inputCallback);
163 : converter (storageSize) {}
180 template <
typename BytestreamMessageCallback>
184 BytestreamMessageCallback&& callback)
186 dispatcher.
dispatch (begin, end, timestamp, [&] (
const View& view,
double time)
188 converter.convert (view, time, callback);
void dispatch(const uint8_t *begin, const uint8_t *end, double timestamp, PacketCallbackFunction &&callback)
BytestreamToUMPDispatcher(PacketProtocol pp, int storageSize)
void dispatch(const uint32_t *begin, const uint32_t *end, double timeStamp, PacketCallbackFunction &&callback)
ToBytestreamDispatcher(int storageSize)
void dispatch(const uint32_t *begin, const uint32_t *end, double timestamp, BytestreamMessageCallback &&callback)
static void toMidi1(const BytestreamMidiView &m, PacketCallbackFunction &&callback)
static uint32_t getNumWordsForMessageType(uint32_t)