97 bool isMemberChannel (
int midiChannel)
const noexcept;
104 bool isMasterChannel (
int midiChannel)
const noexcept;
112 bool isUsingChannel (
int midiChannel)
const noexcept;
146 virtual void processNextMidiEvent (
const MidiMessage& message);
155 virtual void noteOn (
int midiChannel,
int midiNoteNumber,
MPEValue midiNoteOnVelocity);
163 virtual void noteOff (
int midiChannel,
int midiNoteNumber,
MPEValue midiNoteOffVelocity);
173 virtual void pitchbend (
int midiChannel,
MPEValue pitchbend);
181 virtual void pressure (
int midiChannel,
MPEValue value);
190 virtual void timbre (
int midiChannel,
MPEValue value);
197 virtual void polyAftertouch (
int midiChannel,
int midiNoteNumber,
MPEValue value);
204 virtual void sustainPedal (
int midiChannel,
bool isDown);
211 virtual void sostenutoPedal (
int midiChannel,
bool isDown);
217 void releaseAllNotes();
221 int getNumPlayingNotes() const noexcept;
228 MPENote getNote (
int index) const noexcept;
234 MPENote getNote (
int midiChannel,
int midiNoteNumber) const noexcept;
241 MPENote getMostRecentNote (
int midiChannel) const noexcept;
248 MPENote getMostRecentNoteOtherThan (
MPENote otherThanThisNote) const noexcept;
263 virtual ~Listener() =
default;
308 void addListener (
Listener* listenerToAdd);
311 void removeListener (
Listener* listenerToRemove);
333 void enableLegacyMode (
int pitchbendRange = 2,
337 bool isLegacyModeEnabled()
const noexcept;
340 Range<int> getLegacyModeChannelRange()
const noexcept;
343 void setLegacyModeChannelRange (
Range<int> channelRange);
346 int getLegacyModePitchbendRange()
const noexcept;
349 void setLegacyModePitchbendRange (
int pitchbendRange);
361 uint8 lastPressureLowerBitReceivedOnChannel[16];
362 uint8 lastTimbreLowerBitReceivedOnChannel[16];
363 bool isMemberChannelSustained[16];
375 MPEValue lastValueReceivedOnChannel[16];
380 LegacyMode legacyMode;
381 MPEDimension pitchbendDimension, pressureDimension, timbreDimension;
383 void updateDimension (
int midiChannel, MPEDimension&,
MPEValue);
384 void updateDimensionMaster (
bool, MPEDimension&,
MPEValue);
386 void callListenersDimensionChanged (
const MPENote&,
const MPEDimension&);
387 MPEValue getInitialValueForNewNote (
int midiChannel, MPEDimension&)
const;
389 void processMidiNoteOnMessage (
const MidiMessage&);
390 void processMidiNoteOffMessage (
const MidiMessage&);
391 void processMidiPitchWheelMessage (
const MidiMessage&);
392 void processMidiChannelPressureMessage (
const MidiMessage&);
393 void processMidiControllerMessage (
const MidiMessage&);
394 void processMidiResetAllControllersMessage (
const MidiMessage&);
395 void processMidiAfterTouchMessage (
const MidiMessage&);
396 void handlePressureMSB (
int midiChannel,
int value) noexcept;
397 void handlePressureLSB (
int midiChannel,
int value) noexcept;
398 void handleTimbreMSB (
int midiChannel,
int value) noexcept;
399 void handleTimbreLSB (
int midiChannel,
int value) noexcept;
400 void handleSustainOrSostenuto (
int midiChannel,
bool isDown,
bool isSostenuto);
402 const MPENote* getNotePtr (
int midiChannel,
int midiNoteNumber)
const noexcept;
403 MPENote* getNotePtr (
int midiChannel,
int midiNoteNumber) noexcept;
406 const MPENote* getLastNotePlayedPtr (
int midiChannel)
const noexcept;
407 MPENote* getLastNotePlayedPtr (
int midiChannel) noexcept;
408 const MPENote* getHighestNotePtr (
int midiChannel)
const noexcept;
409 MPENote* getHighestNotePtr (
int midiChannel) noexcept;
410 const MPENote* getLowestNotePtr (
int midiChannel)
const noexcept;
411 MPENote* getLowestNotePtr (
int midiChannel) noexcept;
412 void updateNoteTotalPitchbend (
MPENote&);
#define JUCE_API
This macro is added to all JUCE public class declarations.
This class represents the current MPE zone layout of a device capable of handling MPE...
Encapsulates a MIDI message.
virtual void noteKeyStateChanged(MPENote changedNote)
Implement this callback to be informed whether a currently playing MPE note's key state (whether the ...
The highest note (by initialNote) on the channel with the note key still down.
The most recent note on the channel that is still played (key down and/or sustained).
Derive from this class to be informed about any changes in the expressive MIDI notes played by this i...
virtual void noteAdded(MPENote newNote)
Implement this callback to be informed whenever a new expressive MIDI note is triggered.
Holds a set of objects and can invoke a member function callback on each object in the set with a sin...
TrackingMode
The MPE note tracking mode.
The lowest note (by initialNote) on the channel with the note key still down.
virtual void noteTimbreChanged(MPENote changedNote)
Implement this callback to be informed whenever a currently playing MPE note's timbre value changes...
virtual void noteReleased(MPENote finishedNote)
Implement this callback to be informed whenever an MPE note is released (either by a note-off message...
Holds a resizable array of primitive or copy-by-value objects.
virtual void notePitchbendChanged(MPENote changedNote)
Implement this callback to be informed whenever a currently playing MPE note's pitchbend value change...
virtual void notePressureChanged(MPENote changedNote)
Implement this callback to be informed whenever a currently playing MPE note's pressure value changes...
This struct represents a playing MPE note.
This class represents an instrument handling MPE.
This class represents a single value for any of the MPE dimensions of control.