MCPcopy Create free account
hub / github.com/DISTRHO/Cardinal / writeMidiMessage

Method writeMidiMessage

src/CardinalCommon.cpp:199–264  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

197}
198
199void CardinalPluginContext::writeMidiMessage(const rack::midi::Message& message, const uint8_t channel)
200{
201 if (bypassed)
202 return;
203
204 const size_t size = message.bytes.size();
205 DISTRHO_SAFE_ASSERT_RETURN(size > 0,);
206 DISTRHO_SAFE_ASSERT_RETURN(message.frame >= 0,);
207
208 MidiEvent event;
209 event.frame = message.frame;
210
211 switch (message.bytes[0] & 0xF0)
212 {
213 case 0x80:
214 case 0x90:
215 case 0xA0:
216 case 0xB0:
217 case 0xE0:
218 event.size = 3;
219 break;
220 case 0xC0:
221 case 0xD0:
222 event.size = 2;
223 break;
224 case 0xF0:
225 switch (message.bytes[0] & 0x0F)
226 {
227 case 0x0:
228 case 0x4:
229 case 0x5:
230 case 0x7:
231 case 0x9:
232 case 0xD:
233 // unsupported
234 return;
235 case 0x1:
236 case 0x2:
237 case 0x3:
238 case 0xE:
239 event.size = 3;
240 break;
241 case 0x6:
242 case 0x8:
243 case 0xA:
244 case 0xB:
245 case 0xC:
246 case 0xF:
247 event.size = 1;
248 break;
249 }
250 break;
251 default:
252 // invalid
253 return;
254 }
255
256 DISTRHO_SAFE_ASSERT_RETURN(size >= event.size,);

Callers 3

sendMessageMethod · 0.45
sendMessageMethod · 0.45
onMessageMethod · 0.45

Calls 3

sizeMethod · 0.45
dataMethod · 0.45
writeMidiEventMethod · 0.45

Tested by

no test coverage detected