93 bool isMemberChannel (
int midiChannel)
const noexcept;
100 bool isMasterChannel (
int midiChannel)
const noexcept;
108 bool isUsingChannel (
int midiChannel)
const noexcept;
127 void setPressureTrackingMode (TrackingMode
modeToUse);
130 void setPitchbendTrackingMode (TrackingMode
modeToUse);
133 void setTimbreTrackingMode (TrackingMode
modeToUse);
142 virtual void processNextMidiEvent (
const MidiMessage& message);
169 virtual void pitchbend (
int midiChannel,
MPEValue pitchbend);
177 virtual void pressure (
int midiChannel,
MPEValue value);
186 virtual void timbre (
int midiChannel,
MPEValue value);
200 virtual void sustainPedal (
int midiChannel,
bool isDown);
207 virtual void sostenutoPedal (
int midiChannel,
bool isDown);
213 void releaseAllNotes();
329 void enableLegacyMode (
int pitchbendRange = 2,
339 void setLegacyModeChannelRange (
Range<
int> channelRange);
345 void setLegacyModePitchbendRange (
int pitchbendRange);
357 uint8 lastPressureLowerBitReceivedOnChannel[16];
358 uint8 lastTimbreLowerBitReceivedOnChannel[16];
359 bool isMemberChannelSustained[16];
370 TrackingMode trackingMode = lastNotePlayedOnChannel;
371 MPEValue lastValueReceivedOnChannel[16];
372 MPEValue MPENote::* value;
373 MPEValue& getValue (MPENote& note)
noexcept {
return note.*(value); }
376 LegacyMode legacyMode;
377 MPEDimension pitchbendDimension, pressureDimension, timbreDimension;
379 void updateDimension (
int midiChannel, MPEDimension&, MPEValue);
380 void updateDimensionMaster (
bool, MPEDimension&, MPEValue);
381 void updateDimensionForNote (MPENote&, 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;
400 const MPENote* getNotePtr (
int midiChannel, TrackingMode)
const noexcept;
401 MPENote* getNotePtr (
int midiChannel, TrackingMode)
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&);
410 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MPEInstrument)