Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
ump.hpp File Reference
#include <cstdint>
#include <array>
#include <string>

Go to the source code of this file.

Classes

struct  pulp::midi::UmpPacket
struct  pulp::midi::MpeZone
struct  pulp::midi::MpeConfig

Namespaces

namespace  pulp
namespace  pulp::midi

Enumerations

enum class  pulp::midi::UmpMessageType : uint8_t {
  pulp::midi::Utility = 0x0 , pulp::midi::System = 0x1 , pulp::midi::Midi1ChannelVoice = 0x2 , pulp::midi::DataSysEx = 0x3 ,
  pulp::midi::Midi2ChannelVoice = 0x4 , pulp::midi::Data128 = 0x5
}
enum class  pulp::midi::Midi2Status : uint8_t {
  pulp::midi::RegisteredPerNoteCC = 0x00 , pulp::midi::AssignablePerNoteCC = 0x10 , pulp::midi::RegisteredCC = 0x20 , pulp::midi::AssignableCC = 0x30 ,
  pulp::midi::RelativeRegisteredCC = 0x40 , pulp::midi::RelativeAssignableCC = 0x50 , pulp::midi::PerNotePitchBend = 0x60 , pulp::midi::NoteOff = 0x80 ,
  pulp::midi::NoteOn = 0x90 , pulp::midi::PolyPressure = 0xA0 , pulp::midi::ControlChange = 0xB0 , pulp::midi::ProgramChange = 0xC0 ,
  pulp::midi::ChannelPressure = 0xD0 , pulp::midi::PitchBend = 0xE0 , pulp::midi::PerNoteManagement = 0xF0
}
enum class  pulp::midi::UtilityStatus : uint8_t {
  pulp::midi::Noop = 0x0 , pulp::midi::JrClock = 0x1 , pulp::midi::JrTimestamp = 0x2 , pulp::midi::DeltaClockstampTicksPerQuarter = 0x3 ,
  pulp::midi::DeltaClockstamp = 0x4
}
 Utility message status codes (bits 20-23 of word 0 for type 0x0). More...

Functions

int pulp::midi::ump_words_for_message_type (uint8_t message_type)
 Spec-complete UMP packet length, in 32-bit words, for a raw message-type nibble (bits 28-31 of word 0, values 0x0-0xF).
template<typename Visitor>
void pulp::midi::walk_ump_packet (const uint32_t *words, uint32_t word_count, Visitor &&visit)
 Walk one UMP packet's contiguous word array, visiting each complete message in order.
UtilityStatus pulp::midi::utility_status (const UmpPacket &p)
 Extract the utility status nibble from a type-0 UMP packet (bits 20-23 of word 0).
uint16_t pulp::midi::jr_value_16 (const UmpPacket &p)
 Extract the 16-bit JR Clock / JR Timestamp value from a type-0 UMP packet (bits 0-15 of word 0).
double pulp::midi::jr_value_seconds (uint16_t value)
double pulp::midi::jr_value_microseconds (uint16_t value)
UmpPacket pulp::midi::make_jr_clock (uint8_t group, uint16_t value)
 Build a JR Clock utility packet (status 0x1).
UmpPacket pulp::midi::make_jr_timestamp (uint8_t group, uint16_t value)
 Build a JR Timestamp utility packet (status 0x2).

Variables

constexpr double pulp::midi::kJrTicksPerSecond = 31250.0
 One JR Clock tick is 1/31250 of a second (~32 microseconds).