MCPcopy Create free account
hub / github.com/TheWaveWarden/odin2 / handleMidiMessage

Method handleMidiMessage

Source/PluginProcessorMidi.cpp:181–238  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

179}
180
181void OdinAudioProcessor::handleMidiMessage(const MidiMessage &p_midi_message) {
182 //DBG(p_midi_message.getDescription());
183 // apply midi message
184 if (p_midi_message.isNoteOn()) {
185 handleMidiNoteOn(p_midi_message.getNoteNumber(), p_midi_message.getVelocity());
186 } else if (p_midi_message.isNoteOff()) {
187 handleMidiNoteOff(p_midi_message.getNoteNumber());
188 } else if (p_midi_message.isAllNotesOff() || p_midi_message.isAllSoundOff()) {
189 allNotesOff();
190 } else if (p_midi_message.isPitchWheel()) {
191 setPitchWheelValue(p_midi_message.getPitchWheelValue());
192 } else if (p_midi_message.isController() && p_midi_message.getControllerNumber() == 1) { // modwheel
193 setModWheelValue(p_midi_message.getControllerValue());
194 } else if (p_midi_message.isSustainPedalOn()) {
195 if (m_arpeggiator_on) {
196 m_arpeggiator.setSustainActive(true);
197 } else {
198 m_voice_manager.setSustainActive(true);
199 }
200 DBG("Sustain pedal pressed");
201 } else if (p_midi_message.isSustainPedalOff()) {
202 DBG("Sustain pedal released");
203 m_voice_manager.setSustainActive(false);
204 for (int voice = 0; voice < VOICES; ++voice) {
205 if (m_voice_manager.isOnKillList(voice)) {
206 m_voice[voice].startRelease();
207 }
208 }
209 m_arpeggiator.setSustainActive(false);
210 m_voice_manager.clearKillList();
211 checkEndGlobalEnvelope();
212 } else if (p_midi_message.isAftertouch()) {
213 // todo this is untested
214 DBG("receiving afterouch, note: " + std::to_string(p_midi_message.getNoteNumber()) +
215 ", value: " + std::to_string((float)p_midi_message.getAfterTouchValue() / 127.f));
216 for (int voice = 0; voice < VOICES; ++voice) {
217 m_voice[voice].setAftertouch(p_midi_message.getNoteNumber(),
218 (float)p_midi_message.getAfterTouchValue() / 127.f);
219 }
220 } else if (p_midi_message.isChannelPressure()) {
221 m_MIDI_channel_pressure = (float)p_midi_message.getChannelPressureValue() / 127.f;
222 } else if (p_midi_message.isSoftPedalOn()) {
223 m_soft_pedal = 1.f;
224 } else if (p_midi_message.isSoftPedalOff()) {
225 m_soft_pedal = 0.f;
226 } else if(p_midi_message.isController() && p_midi_message.getControllerNumber() == MIDI_CONTROLLER_NUMBER_BREATH) {
227 m_midi_breath = p_midi_message.getControllerValue() / 127.f;
228 }
229
230 else {
231 if (!p_midi_message.isMidiClock()) {
232 //DBG("UNHANDELED MIDI MESSAGE: " + p_midi_message.getDescription());
233 if (p_midi_message.isController()) {
234 //DBG("Controller with number: " + std::to_string(p_midi_message.getControllerNumber()));
235 }
236 }
237 }
238}

Callers

nothing calls this directly

Calls 5

isOnKillListMethod · 0.80
clearKillListMethod · 0.80
setAftertouchMethod · 0.80
setSustainActiveMethod · 0.45
startReleaseMethod · 0.45

Tested by

no test coverage detected