128 void setPressureTrackingMode (TrackingMode modeToUse);
131 void setPitchbendTrackingMode (TrackingMode modeToUse);
134 void setTimbreTrackingMode (TrackingMode modeToUse);
143 virtual void processNextMidiEvent (
const MidiMessage& message);
152 virtual void noteOn (
int midiChannel,
int midiNoteNumber,
MPEValue midiNoteOnVelocity);
160 virtual void noteOff (
int midiChannel,
int midiNoteNumber,
MPEValue midiNoteOffVelocity);
170 virtual void pitchbend (
int midiChannel,
MPEValue pitchbend);
178 virtual void pressure (
int midiChannel,
MPEValue value);
187 virtual void timbre (
int midiChannel,
MPEValue value);
194 virtual void polyAftertouch (
int midiChannel,
int midiNoteNumber,
MPEValue value);
201 virtual void sustainPedal (
int midiChannel,
bool isDown);
208 virtual void sostenutoPedal (
int midiChannel,
bool isDown);
214 void releaseAllNotes();
218 int getNumPlayingNotes() const noexcept;
225 MPENote getNote (
int index) const noexcept;
231 MPENote getNote (
int midiChannel,
int midiNoteNumber) const noexcept;
234 MPENote getNoteWithID (uint16 noteID) const noexcept;
241 MPENote getMostRecentNote (
int midiChannel) const noexcept;
248 MPENote getMostRecentNoteOtherThan (
MPENote otherThanThisNote) const noexcept;
368 uint8 lastPressureLowerBitReceivedOnChannel[16];
369 uint8 lastTimbreLowerBitReceivedOnChannel[16];
370 bool isMemberChannelSustained[16];
374 bool isEnabled =
false;
376 int pitchbendRange = 2;
381 TrackingMode trackingMode = lastNotePlayedOnChannel;
382 MPEValue lastValueReceivedOnChannel[16];
387 LegacyMode legacyMode;
388 MPEDimension pitchbendDimension, pressureDimension, timbreDimension;
390 void resetLastReceivedValues();
392 void updateDimension (
int midiChannel, MPEDimension&, MPEValue);
393 void updateDimensionMaster (
bool, MPEDimension&, MPEValue);
394 void updateDimensionForNote (MPENote&, MPEDimension&, MPEValue);
395 void callListenersDimensionChanged (
const MPENote&,
const MPEDimension&);
396 MPEValue getInitialValueForNewNote (
int midiChannel, MPEDimension&)
const;
398 void processMidiNoteOnMessage (
const MidiMessage&);
399 void processMidiNoteOffMessage (
const MidiMessage&);
400 void processMidiPitchWheelMessage (
const MidiMessage&);
401 void processMidiChannelPressureMessage (
const MidiMessage&);
402 void processMidiControllerMessage (
const MidiMessage&);
403 void processMidiResetAllControllersMessage (
const MidiMessage&);
404 void processMidiAfterTouchMessage (
const MidiMessage&);
405 void handlePressureMSB (
int midiChannel,
int value)
noexcept;
406 void handlePressureLSB (
int midiChannel,
int value)
noexcept;
407 void handleTimbreMSB (
int midiChannel,
int value)
noexcept;
408 void handleTimbreLSB (
int midiChannel,
int value)
noexcept;
409 void handleSustainOrSostenuto (
int midiChannel,
bool isDown,
bool isSostenuto);
411 const MPENote* getNotePtr (
int midiChannel,
int midiNoteNumber)
const noexcept;
412 MPENote* getNotePtr (
int midiChannel,
int midiNoteNumber)
noexcept;
413 const MPENote* getNotePtr (
int midiChannel, TrackingMode)
const noexcept;
414 MPENote* getNotePtr (
int midiChannel, TrackingMode)
noexcept;
415 const MPENote* getLastNotePlayedPtr (
int midiChannel)
const noexcept;
416 MPENote* getLastNotePlayedPtr (
int midiChannel)
noexcept;
417 const MPENote* getHighestNotePtr (
int midiChannel)
const noexcept;
418 MPENote* getHighestNotePtr (
int midiChannel)
noexcept;
419 const MPENote* getLowestNotePtr (
int midiChannel)
const noexcept;
420 MPENote* getLowestNotePtr (
int midiChannel)
noexcept;
421 void updateNoteTotalPitchbend (MPENote&);
423 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MPEInstrument)