93 bool isMemberChannel (
int midiChannel)
const noexcept;
100 bool isMasterChannel (
int midiChannel)
const noexcept;
108 bool isUsingChannel (
int midiChannel)
const noexcept;
142 virtual void processNextMidiEvent (
const MidiMessage& message);
151 virtual void noteOn (
int midiChannel,
int midiNoteNumber,
MPEValue midiNoteOnVelocity);
159 virtual void noteOff (
int midiChannel,
int midiNoteNumber,
MPEValue midiNoteOffVelocity);
169 virtual void pitchbend (
int midiChannel,
MPEValue pitchbend);
177 virtual void pressure (
int midiChannel,
MPEValue value);
186 virtual void timbre (
int midiChannel,
MPEValue value);
193 virtual void polyAftertouch (
int midiChannel,
int midiNoteNumber,
MPEValue value);
200 virtual void sustainPedal (
int midiChannel,
bool isDown);
207 virtual void sostenutoPedal (
int midiChannel,
bool isDown);
213 void releaseAllNotes();
217 int getNumPlayingNotes() const noexcept;
224 MPENote getNote (
int index) const noexcept;
230 MPENote getNote (
int midiChannel,
int midiNoteNumber) const noexcept;
237 MPENote getMostRecentNote (
int midiChannel) const noexcept;
244 MPENote getMostRecentNoteOtherThan (
MPENote otherThanThisNote) const noexcept;
259 virtual ~Listener() =
default;
304 void addListener (
Listener* listenerToAdd);
307 void removeListener (
Listener* listenerToRemove);
329 void enableLegacyMode (
int pitchbendRange = 2,
333 bool isLegacyModeEnabled()
const noexcept;
336 Range<int> getLegacyModeChannelRange()
const noexcept;
339 void setLegacyModeChannelRange (
Range<int> channelRange);
342 int getLegacyModePitchbendRange()
const noexcept;
345 void setLegacyModePitchbendRange (
int pitchbendRange);
357 uint8 lastPressureLowerBitReceivedOnChannel[16];
358 uint8 lastTimbreLowerBitReceivedOnChannel[16];
359 bool isMemberChannelSustained[16];
371 MPEValue lastValueReceivedOnChannel[16];
376 LegacyMode legacyMode;
377 MPEDimension pitchbendDimension, pressureDimension, timbreDimension;
379 void updateDimension (
int midiChannel, MPEDimension&,
MPEValue);
380 void updateDimensionMaster (
bool, MPEDimension&,
MPEValue);
382 void callListenersDimensionChanged (
const MPENote&,
const MPEDimension&);
383 MPEValue getInitialValueForNewNote (
int midiChannel, MPEDimension&)
const;
385 void processMidiNoteOnMessage (
const MidiMessage&);
386 void processMidiNoteOffMessage (
const MidiMessage&);
387 void processMidiPitchWheelMessage (
const MidiMessage&);
388 void processMidiChannelPressureMessage (
const MidiMessage&);
389 void processMidiControllerMessage (
const MidiMessage&);
390 void processMidiResetAllControllersMessage (
const MidiMessage&);
391 void processMidiAfterTouchMessage (
const MidiMessage&);
392 void handlePressureMSB (
int midiChannel,
int value) noexcept;
393 void handlePressureLSB (
int midiChannel,
int value) noexcept;
394 void handleTimbreMSB (
int midiChannel,
int value) noexcept;
395 void handleTimbreLSB (
int midiChannel,
int value) noexcept;
396 void handleSustainOrSostenuto (
int midiChannel,
bool isDown,
bool isSostenuto);
398 const MPENote* getNotePtr (
int midiChannel,
int midiNoteNumber)
const noexcept;
399 MPENote* getNotePtr (
int midiChannel,
int midiNoteNumber) noexcept;
402 const MPENote* getLastNotePlayedPtr (
int midiChannel)
const noexcept;
403 MPENote* getLastNotePlayedPtr (
int midiChannel) noexcept;
404 const MPENote* getHighestNotePtr (
int midiChannel)
const noexcept;
405 MPENote* getHighestNotePtr (
int midiChannel) noexcept;
406 const MPENote* getLowestNotePtr (
int midiChannel)
const noexcept;
407 MPENote* getLowestNotePtr (
int midiChannel) noexcept;
408 void updateNoteTotalPitchbend (
MPENote&);
virtual void noteKeyStateChanged(MPENote changedNote)
virtual void noteAdded(MPENote newNote)
virtual void noteTimbreChanged(MPENote changedNote)
virtual void noteReleased(MPENote finishedNote)
virtual void notePitchbendChanged(MPENote changedNote)
virtual void notePressureChanged(MPENote changedNote)