MCPcopy Create free account
hub / github.com/BespokeSynth/BespokeSynth / SendMidiMessage

Method SendMidiMessage

Source/MidiDevice.cpp:299–402  ·  view source on GitHub ↗

static

Source from the content-addressed store, hash-verified

297
298//static
299void MidiDevice::SendMidiMessage(MidiDeviceListener* listener, const char* deviceName, const MidiMessage& message)
300{
301 listener->OnMidi(message);
302
303 if (message.isNoteOnOrOff())
304 {
305 MidiNote note;
306 note.mDeviceName = deviceName;
307 note.mTimestampMs = message.getTimeStamp() * 1000; //message.getTimeStamp() is equivalent to Time::getMillisecondCounter() / 1000.0 (see juce_MidiDevices.h)
308 note.mPitch = message.getNoteNumber();
309 if (message.isNoteOn())
310 note.mVelocity = message.getVelocity();
311 else
312 note.mVelocity = 0;
313 note.mChannel = message.getChannel();
314 listener->OnMidiNote(note);
315 }
316 if (message.isController())
317 {
318 MidiControl control;
319 control.mDeviceName = deviceName;
320 control.mControl = message.getControllerNumber();
321 control.mValue = message.getControllerValue();
322 control.mChannel = message.getChannel();
323 listener->OnMidiControl(control);
324 }
325 if (message.isProgramChange())
326 {
327 MidiProgramChange program;
328 program.mDeviceName = deviceName;
329 program.mProgram = message.getProgramChangeNumber();
330 program.mChannel = message.getChannel();
331 listener->OnMidiProgramChange(program);
332 }
333 if (message.isPitchWheel())
334 {
335 MidiPitchBend pitchBend;
336 pitchBend.mDeviceName = deviceName;
337 pitchBend.mValue = message.getPitchWheelValue();
338 pitchBend.mChannel = message.getChannel();
339 listener->OnMidiPitchBend(pitchBend);
340 }
341 if (message.isChannelPressure())
342 {
343 MidiPressure pressure;
344 pressure.mDeviceName = deviceName;
345 //TODO_PORT(Ryan) - is this correct for the pitch? does pitch have meaning for channel pressure messages?
346 pressure.mPitch = message.getNoteNumber();
347 pressure.mPressure = message.getChannelPressureValue();
348 pressure.mChannel = message.getChannel();
349 listener->OnMidiPressure(pressure);
350 }
351 if (message.isAftertouch())
352 {
353 MidiPressure pressure;
354 pressure.mDeviceName = deviceName;
355 pressure.mPitch = -1;
356 pressure.mPressure = message.getAfterTouchValue();

Callers

nothing calls this directly

Calls 6

OnMidiMethod · 0.45
OnMidiNoteMethod · 0.45
OnMidiControlMethod · 0.45
OnMidiProgramChangeMethod · 0.45
OnMidiPitchBendMethod · 0.45
OnMidiPressureMethod · 0.45

Tested by

no test coverage detected