53 instrument->enableLegacyMode (pitchbendRange, channelRange);
63 return instrument->getLegacyModeChannelRange();
68 instrument->setLegacyModeChannelRange (channelRange);
73 return instrument->getLegacyModePitchbendRange();
78 instrument->setLegacyModePitchbendRange (pitchbendRange);
84 instrument->setPressureTrackingMode (modeToUse);
89 instrument->setPitchbendTrackingMode (modeToUse);
104template <
typename floatType>
111 jassert (sampleRate != 0);
116 bool firstEvent =
true;
122 while (numSamples > 0)
130 auto samplesToNextMidiMessage = midiEventPos - startSample;
132 if (samplesToNextMidiMessage >= numSamples)
139 if (samplesToNextMidiMessage < ((firstEvent && ! subBlockSubdivisionIsStrict) ? 1 : minimumSubBlockSize))
149 startSample += samplesToNextMidiMessage;
150 numSamples -= samplesToNextMidiMessage;
164 if (sampleRate != newRate)
168 sampleRate = newRate;
175 jassert (numSamples > 0);
176 minimumSubBlockSize = numSamples;
177 subBlockSubdivisionIsStrict = shouldBeStrict;
void setNextSamplePosition(int samplePosition) noexcept
bool getNextEvent(MidiMessage &result, int &samplePosition) noexcept
void setPitchbendTrackingMode(TrackingMode modeToUse)
virtual void handleMidiEvent(const MidiMessage &)
bool isLegacyModeEnabled() const noexcept
MPEZoneLayout getZoneLayout() const noexcept
void setZoneLayout(MPEZoneLayout newLayout)
int getLegacyModePitchbendRange() const noexcept
void setLegacyModeChannelRange(Range< int > channelRange)
void setLegacyModePitchbendRange(int pitchbendRange)
void enableLegacyMode(int pitchbendRange=2, Range< int > channelRange=Range< int >(1, 17))
void setTimbreTrackingMode(TrackingMode modeToUse)
std::unique_ptr< MPEInstrument > instrument
void setPressureTrackingMode(TrackingMode modeToUse)
Range< int > getLegacyModeChannelRange() const noexcept
virtual void setCurrentPlaybackSampleRate(double sampleRate)
void renderNextBlock(AudioBuffer< floatType > &outputAudio, const MidiBuffer &inputMidi, int startSample, int numSamples)
void setMinimumRenderingSubdivisionSize(int numSamples, bool shouldBeStrict=false) noexcept
virtual void renderNextSubBlock(AudioBuffer< float > &outputAudio, int startSample, int numSamples)=0