LMMS
Loading...
Searching...
No Matches
juce::universal_midi_packets::Midi1ToBytestreamTranslator Class Reference

#include <juce_UMPMidi1ToBytestreamTranslator.h>

Public Member Functions

 Midi1ToBytestreamTranslator (int initialBufferSize)
void reset ()
template<typename MessageCallback>
void dispatch (const View &packet, double time, MessageCallback &&callback)

Static Public Member Functions

static MidiMessage fromUmp (const PacketX1 &m, double time=0)

Private Member Functions

template<typename MessageCallback>
void processSysEx (const PacketX2 &packet, double time, MessageCallback &&callback)
void pushBytes (const PacketX2 &packet)
void startSysExMessage (double time)
template<typename MessageCallback>
void terminateSysExMessage (MessageCallback &&callback)

Static Private Member Functions

static bool shouldPacketTerminateSysExEarly (uint32_t firstWord)
static SysEx7::Kind getSysEx7Kind (uint32_t word)
static bool isJROrNOP (uint32_t word)
static bool isSysExContinuation (uint32_t word)
static bool isSystemRealTime (uint32_t word)

Private Attributes

std::vector< uint8_tpendingSysExData
double pendingSysExTime = 0.0

Detailed Description

Parses a raw stream of uint32_t holding a series of Universal MIDI Packets using the MIDI 1.0 Protocol, converting to plain (non-UMP) MidiMessages.

@tags{Audio}

Constructor & Destructor Documentation

◆ Midi1ToBytestreamTranslator()

juce::universal_midi_packets::Midi1ToBytestreamTranslator::Midi1ToBytestreamTranslator ( int initialBufferSize)
inlineexplicit

Ensures that there is room in the internal buffer for a sysex message of at least initialBufferSize bytes.

Member Function Documentation

◆ dispatch()

template<typename MessageCallback>
void juce::universal_midi_packets::Midi1ToBytestreamTranslator::dispatch ( const View & packet,
double time,
MessageCallback && callback )
inline

Converts a Universal MIDI Packet using the MIDI 1.0 Protocol to an equivalent MidiMessage. Accumulates SysEx packets into a single MidiMessage, as appropriate.

Parameters
packeta packet which is using the MIDI 1.0 Protocol.
Timethe timestamp to be applied to these messages.
callbacka callback which will be called with each converted MidiMessage.

◆ fromUmp()

MidiMessage juce::universal_midi_packets::Midi1ToBytestreamTranslator::fromUmp ( const PacketX1 & m,
double time = 0 )
inlinestatic

Converts from a Universal MIDI Packet to MIDI 1 bytestream format.

This is only capable of converting a single Universal MIDI Packet to an equivalent bytestream MIDI message. This function cannot understand multi-packet messages, like SysEx7 messages.

To convert multi-packet messages, use Midi1ToBytestreamTranslator to convert from a UMP MIDI 1.0 stream, or ToBytestreamDispatcher to convert from both MIDI 2.0 and MIDI 1.0.

◆ getSysEx7Kind()

SysEx7::Kind juce::universal_midi_packets::Midi1ToBytestreamTranslator::getSysEx7Kind ( uint32_t word)
inlinestaticprivate

◆ isJROrNOP()

bool juce::universal_midi_packets::Midi1ToBytestreamTranslator::isJROrNOP ( uint32_t word)
inlinestaticprivate

◆ isSysExContinuation()

bool juce::universal_midi_packets::Midi1ToBytestreamTranslator::isSysExContinuation ( uint32_t word)
inlinestaticprivate

◆ isSystemRealTime()

bool juce::universal_midi_packets::Midi1ToBytestreamTranslator::isSystemRealTime ( uint32_t word)
inlinestaticprivate

◆ processSysEx()

template<typename MessageCallback>
void juce::universal_midi_packets::Midi1ToBytestreamTranslator::processSysEx ( const PacketX2 & packet,
double time,
MessageCallback && callback )
inlineprivate

◆ pushBytes()

void juce::universal_midi_packets::Midi1ToBytestreamTranslator::pushBytes ( const PacketX2 & packet)
inlineprivate

◆ reset()

void juce::universal_midi_packets::Midi1ToBytestreamTranslator::reset ( )
inline

Clears the concatenator.

◆ shouldPacketTerminateSysExEarly()

bool juce::universal_midi_packets::Midi1ToBytestreamTranslator::shouldPacketTerminateSysExEarly ( uint32_t firstWord)
inlinestaticprivate

◆ startSysExMessage()

void juce::universal_midi_packets::Midi1ToBytestreamTranslator::startSysExMessage ( double time)
inlineprivate

◆ terminateSysExMessage()

template<typename MessageCallback>
void juce::universal_midi_packets::Midi1ToBytestreamTranslator::terminateSysExMessage ( MessageCallback && callback)
inlineprivate

Member Data Documentation

◆ pendingSysExData

std::vector<uint8_t> juce::universal_midi_packets::Midi1ToBytestreamTranslator::pendingSysExData
private

◆ pendingSysExTime

double juce::universal_midi_packets::Midi1ToBytestreamTranslator::pendingSysExTime = 0.0
private

The documentation for this class was generated from the following file: