Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
mcoded7.hpp
Go to the documentation of this file.
1#pragma once
2
3// Mcoded7 — MIDI 2.0 Capability Inquiry property-exchange byte-packing.
4// Packs 7 arbitrary 8-bit bytes into 8 MIDI bytes (a leading high-bit byte
5// followed by seven low-7-bit bytes), so binary payloads can travel inside a
6// SysEx envelope without ever setting bit 7.
7//
8// Reference: MIDI 2.0 / MIDI-CI v1.2 spec, "Mcoded7 Data Encoding".
9
10#include <cstddef>
11#include <cstdint>
12#include <vector>
13
14namespace pulp::midi {
15
20std::vector<uint8_t> mcoded7_encode(const uint8_t* data, std::size_t size);
21
22inline std::vector<uint8_t> mcoded7_encode(const std::vector<uint8_t>& data) {
23 return mcoded7_encode(data.data(), data.size());
24}
25
30std::vector<uint8_t> mcoded7_decode(const uint8_t* data, std::size_t size);
31
32inline std::vector<uint8_t> mcoded7_decode(const std::vector<uint8_t>& data) {
33 return mcoded7_decode(data.data(), data.size());
34}
35
36} // namespace pulp::midi
Definition custom_node_events.hpp:26
std::vector< uint8_t > mcoded7_decode(const uint8_t *data, std::size_t size)
Decode an Mcoded7-encoded stream back to raw 8-bit bytes.
std::vector< uint8_t > mcoded7_encode(const uint8_t *data, std::size_t size)
Encode raw 8-bit bytes into Mcoded7.