128 void setPressureTrackingMode (TrackingMode
modeToUse);
131 void setPitchbendTrackingMode (TrackingMode
modeToUse);
134 void setTimbreTrackingMode (TrackingMode
modeToUse);
143 virtual void processNextMidiEvent (
const MidiMessage& message);
170 virtual void pitchbend (
int midiChannel,
MPEValue pitchbend);
178 virtual void pressure (
int midiChannel,
MPEValue value);
187 virtual void timbre (
int midiChannel,
MPEValue value);
201 virtual void sustainPedal (
int midiChannel,
bool isDown);
208 virtual void sostenutoPedal (
int midiChannel,
bool isDown);
214 void releaseAllNotes();
308 virtual void zoneLayoutChanged();
340 void enableLegacyMode (
int pitchbendRange = 2,
350 void setLegacyModeChannelRange (
Range<
int> channelRange);
356 void setLegacyModePitchbendRange (
int pitchbendRange);
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)