diff --git a/modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp b/modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp index 96a52711a5..4df64603e0 100644 --- a/modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp +++ b/modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp @@ -304,7 +304,7 @@ void Synthesiser::startVoice (SynthesiserVoice* const voice, voice->currentPlayingMidiChannel = midiChannel; voice->noteOnTime = ++lastNoteOnCounter; voice->currentlyPlayingSound = sound; - voice->keyIsDown = true; + voice->setKeyDown (true); voice->sostenutoPedalDown = false; voice->sustainPedalDown = sustainPedalsDown[midiChannel]; @@ -342,7 +342,7 @@ void Synthesiser::noteOff (const int midiChannel, { jassert (! voice->keyIsDown || voice->sustainPedalDown == sustainPedalsDown [midiChannel]); - voice->keyIsDown = false; + voice->setKeyDown (false); if (! (voice->sustainPedalDown || voice->sostenutoPedalDown)) stopVoice (voice, velocity, allowTailOff); diff --git a/modules/juce_audio_basics/synthesisers/juce_Synthesiser.h b/modules/juce_audio_basics/synthesisers/juce_Synthesiser.h index 961e90188b..cad5ac393f 100644 --- a/modules/juce_audio_basics/synthesisers/juce_Synthesiser.h +++ b/modules/juce_audio_basics/synthesisers/juce_Synthesiser.h @@ -182,6 +182,8 @@ public: virtual void renderNextBlock (AudioBuffer& outputBuffer, int startSample, int numSamples) = 0; + + /** A double-precision version of renderNextBlock() */ virtual void renderNextBlock (AudioBuffer& outputBuffer, int startSample, int numSamples); @@ -214,6 +216,11 @@ public: */ bool isKeyDown() const noexcept { return keyIsDown; } + /** Allows you to modify the flag indicating that the key that triggered this voice is still held down. + @see isKeyDown + */ + void setKeyDown (bool isNowDown) noexcept { keyIsDown = isNowDown; } + /** Returns true if the sustain pedal is currently active for this voice. */ bool isSustainPedalDown() const noexcept { return sustainPedalDown; }