mirror of
https://github.com/UberGuidoZ/Flipper.git
synced 2024-12-23 15:00:13 +00:00
144 lines
3.7 KiB
C
144 lines
3.7 KiB
C
#include "message.h"
|
|
|
|
/** Returns the data within the MidiEvent as a NoteOffEvent struct */
|
|
NoteOffEvent AsNoteOff(MidiEvent* event) {
|
|
NoteOffEvent m;
|
|
m.channel = event->channel;
|
|
m.note = event->data[0];
|
|
m.velocity = event->data[1];
|
|
return m;
|
|
}
|
|
|
|
/** Returns the data within the MidiEvent as a NoteOnEvent struct */
|
|
NoteOnEvent AsNoteOn(MidiEvent* event) {
|
|
NoteOnEvent m;
|
|
m.channel = event->channel;
|
|
m.note = event->data[0];
|
|
m.velocity = event->data[1];
|
|
return m;
|
|
}
|
|
|
|
/** Returns the data within the MidiEvent as a PolyphonicKeyPressureEvent struct */
|
|
PolyphonicKeyPressureEvent AsPolyphonicKeyPressure(MidiEvent* event) {
|
|
PolyphonicKeyPressureEvent m;
|
|
m.channel = event->channel;
|
|
m.note = event->data[0];
|
|
m.pressure = event->data[1];
|
|
return m;
|
|
}
|
|
|
|
/** Returns the data within the MidiEvent as a ControlChangeEvent struct.*/
|
|
ControlChangeEvent AsControlChange(MidiEvent* event) {
|
|
ControlChangeEvent m;
|
|
m.channel = event->channel;
|
|
m.control_number = event->data[0];
|
|
m.value = event->data[1];
|
|
return m;
|
|
}
|
|
|
|
/** Returns the data within the MidiEvent as a ProgramChangeEvent struct.*/
|
|
ProgramChangeEvent AsProgramChange(MidiEvent* event) {
|
|
ProgramChangeEvent m;
|
|
m.channel = event->channel;
|
|
m.program = event->data[0];
|
|
return m;
|
|
}
|
|
|
|
/** Returns the data within the MidiEvent as a ProgramChangeEvent struct.*/
|
|
ChannelPressureEvent AsChannelPressure(MidiEvent* event) {
|
|
ChannelPressureEvent m;
|
|
m.channel = event->channel;
|
|
m.pressure = event->data[0];
|
|
return m;
|
|
}
|
|
|
|
/** Returns the data within the MidiEvent as a PitchBendEvent struct.*/
|
|
PitchBendEvent AsPitchBend(MidiEvent* event) {
|
|
PitchBendEvent m;
|
|
m.channel = event->channel;
|
|
m.value = ((uint16_t)(event->data[1]) << 7) + (event->data[0] - 8192);
|
|
return m;
|
|
}
|
|
|
|
SystemExclusiveEvent AsSystemExclusive(MidiEvent* event) {
|
|
SystemExclusiveEvent m;
|
|
m.length = event->sysex_message_len;
|
|
for(int i = 0; i < SYSEX_BUFFER_LEN; i++) {
|
|
m.data[i] = 0;
|
|
if(i < m.length) {
|
|
m.data[i] = event->sysex_data[i];
|
|
}
|
|
}
|
|
return m;
|
|
}
|
|
|
|
MTCQuarterFrameEvent AsMTCQuarterFrame(MidiEvent* event) {
|
|
MTCQuarterFrameEvent m;
|
|
m.message_type = (event->data[0] & 0x70) >> 4;
|
|
m.value = (event->data[0]) & 0x0f;
|
|
return m;
|
|
}
|
|
|
|
SongPositionPointerEvent AsSongPositionPointer(MidiEvent* event) {
|
|
SongPositionPointerEvent m;
|
|
m.position = ((uint16_t)(event->data[1]) << 7) | (event->data[0]);
|
|
return m;
|
|
}
|
|
|
|
SongSelectEvent AsSongSelect(MidiEvent* event) {
|
|
SongSelectEvent m;
|
|
m.song = event->data[0];
|
|
return m;
|
|
}
|
|
|
|
AllSoundOffEvent AsAllSoundOff(MidiEvent* event) {
|
|
AllSoundOffEvent m;
|
|
m.channel = event->channel;
|
|
return m;
|
|
}
|
|
|
|
ResetAllControllersEvent AsResetAllControllers(MidiEvent* event) {
|
|
ResetAllControllersEvent m;
|
|
m.channel = event->channel;
|
|
m.value = event->data[1];
|
|
return m;
|
|
}
|
|
|
|
LocalControlEvent AsLocalControl(MidiEvent* event) {
|
|
LocalControlEvent m;
|
|
m.channel = event->channel;
|
|
m.local_control_off = (event->data[1] == 0);
|
|
m.local_control_on = (event->data[1] == 127);
|
|
return m;
|
|
}
|
|
|
|
AllNotesOffEvent AsAllNotesOff(MidiEvent* event) {
|
|
AllNotesOffEvent m;
|
|
m.channel = event->channel;
|
|
return m;
|
|
}
|
|
|
|
OmniModeOffEvent AsOmniModeOff(MidiEvent* event) {
|
|
OmniModeOffEvent m;
|
|
m.channel = event->channel;
|
|
return m;
|
|
}
|
|
|
|
OmniModeOnEvent AsOmniModeOn(MidiEvent* event) {
|
|
OmniModeOnEvent m;
|
|
m.channel = event->channel;
|
|
return m;
|
|
}
|
|
|
|
MonoModeOnEvent AsMonoModeOn(MidiEvent* event) {
|
|
MonoModeOnEvent m;
|
|
m.channel = event->channel;
|
|
m.num_channels = event->data[1];
|
|
return m;
|
|
}
|
|
|
|
PolyModeOnEvent AsPolyModeOn(MidiEvent* event) {
|
|
PolyModeOnEvent m;
|
|
m.channel = event->channel;
|
|
return m;
|
|
} |