23namespace juce::universal_midi_packets
28 const auto velocity =
helpers.byte2;
36 (
uint32_t) (Conversion::scaleTo16 (uint8_t (velocity)) << 0x10)
45 Conversion::scaleTo32 (uint8_t (
helpers.byte2))
73 const auto byte =
helpers.byte2;
82 const auto bank = bytes[0];
83 const auto index = bytes[1];
84 const auto msb = bytes[2];
85 const auto lsb = bytes[3];
94 Conversion::scaleTo32 (value)
104 groupBanks[group][channel].setMsb (uint8_t (
byte));
110 groupBanks[group][channel].setLsb (uint8_t (
byte));
117 Conversion::scaleTo32 (uint8_t (
helpers.byte2))
122PacketX2 Midi1ToMidi2DefaultTranslator::processProgramChange (
const HelperValues helpers)
const
126 const auto bank = groupBanks[group][channel];
127 const auto valid = bank.isValid();
131 Utils::bytesToWord (helpers.typeAndGroup,
135 Utils::bytesToWord (helpers.byte1,
137 valid ?
std::byte { bank.getMsb() } :
std::byte { 0 },
138 valid ?
std::byte { bank.getLsb() } :
std::byte { 0 })
142PacketX2 Midi1ToMidi2DefaultTranslator::processChannelPressure (
const HelperValues helpers)
146 Utils::bytesToWord (helpers.typeAndGroup, helpers.byte0,
std::byte { 0 },
std::byte { 0 }),
147 Conversion::scaleTo32 (uint8_t (helpers.byte1))
151PacketX2 Midi1ToMidi2DefaultTranslator::processPitchBend (
const HelperValues helpers)
153 const auto lsb = helpers.byte1;
154 const auto msb = helpers.byte2;
155 const auto value =
uint16_t (uint16_t (msb) << 7 | uint16_t (lsb));
159 Utils::bytesToWord (helpers.typeAndGroup, helpers.byte0,
std::byte { 0 },
std::byte { 0 }),
160 Conversion::scaleTo32 (value)
164bool Midi1ToMidi2DefaultTranslator::PnAccumulator::addByte (uint8_t cc,
std::byte byte)
166 const auto isStart = cc == 99 || cc == 101;
170 kind = cc == 99 ? PnKind::nrpn : PnKind::rpn;
176 const auto shouldContinue = [&]
180 case 0:
return isStart;
181 case 1:
return kind == PnKind::nrpn ? cc == 98 : cc == 100;
182 case 2:
return cc == 6;
183 case 3:
return cc == 38;
189 index = shouldContinue ? index + 1 : 0;
191 if (index != bytes.size())
Type unalignedPointerCast(void *ptr) noexcept
Casts a pointer to another type via void*, which suppresses the cast-align warning which sometimes ar...