OpenShot Library | OpenShotAudio
0.2.2
|
A subclass of SynthesiserVoice that can play a SamplerSound. More...
#include <juce_Sampler.h>
Public Member Functions | |
SamplerVoice () | |
Creates a SamplerVoice. | |
~SamplerVoice () override | |
Destructor. | |
bool | canPlaySound (SynthesiserSound *) override |
Must return true if this voice object is capable of playing the given sound. More... | |
void | startNote (int midiNoteNumber, float velocity, SynthesiserSound *, int pitchWheel) override |
Called to start a new note. More... | |
void | stopNote (float velocity, bool allowTailOff) override |
Called to stop a note. More... | |
void | pitchWheelMoved (int newValue) override |
Called to let the voice know that the pitch wheel has been moved. More... | |
void | controllerMoved (int controllerNumber, int newValue) override |
Called to let the voice know that a midi controller has been moved. More... | |
void | renderNextBlock (AudioBuffer< float > &, int startSample, int numSamples) override |
Renders the next block of data for this voice. More... | |
virtual void | renderNextBlock (AudioBuffer< float > &outputBuffer, int startSample, int numSamples)=0 |
Renders the next block of data for this voice. More... | |
virtual void | renderNextBlock (AudioBuffer< double > &outputBuffer, int startSample, int numSamples) |
A double-precision version of renderNextBlock() | |
![]() | |
SynthesiserVoice () | |
Creates a voice. | |
virtual | ~SynthesiserVoice () |
Destructor. | |
int | getCurrentlyPlayingNote () const noexcept |
Returns the midi note that this voice is currently playing. More... | |
SynthesiserSound::Ptr | getCurrentlyPlayingSound () const noexcept |
Returns the sound that this voice is currently playing. More... | |
virtual bool | isVoiceActive () const |
Returns true if this voice is currently busy playing a sound. More... | |
virtual void | aftertouchChanged (int newAftertouchValue) |
Called to let the voice know that the aftertouch has changed. More... | |
virtual void | channelPressureChanged (int newChannelPressureValue) |
Called to let the voice know that the channel pressure has changed. More... | |
virtual void | renderNextBlock (AudioBuffer< double > &outputBuffer, int startSample, int numSamples) |
A double-precision version of renderNextBlock() | |
virtual void | setCurrentPlaybackSampleRate (double newRate) |
Changes the voice's reference sample rate. More... | |
virtual bool | isPlayingChannel (int midiChannel) const |
Returns true if the voice is currently playing a sound which is mapped to the given midi channel. More... | |
double | getSampleRate () const noexcept |
Returns the current target sample rate at which rendering is being done. More... | |
bool | isKeyDown () const noexcept |
Returns true if the key that triggered this voice is still held down. More... | |
void | setKeyDown (bool isNowDown) noexcept |
Allows you to modify the flag indicating that the key that triggered this voice is still held down. More... | |
bool | isSustainPedalDown () const noexcept |
Returns true if the sustain pedal is currently active for this voice. | |
void | setSustainPedalDown (bool isNowDown) noexcept |
Modifies the sustain pedal flag. | |
bool | isSostenutoPedalDown () const noexcept |
Returns true if the sostenuto pedal is currently active for this voice. | |
void | setSostenutoPedalDown (bool isNowDown) noexcept |
Modifies the sostenuto pedal flag. | |
bool | isPlayingButReleased () const noexcept |
Returns true if a voice is sounding in its release phase. | |
bool | wasStartedBefore (const SynthesiserVoice &other) const noexcept |
Returns true if this voice started playing its current note before the other voice did. | |
Additional Inherited Members | |
![]() | |
void | clearCurrentNote () |
Resets the state of this voice after a sound has finished playing. More... | |
A subclass of SynthesiserVoice that can play a SamplerSound.
To use it, create a Synthesiser, add some SamplerVoice objects to it, then give it some SampledSound objects to play.
Definition at line 125 of file juce_Sampler.h.
|
overridevirtual |
Must return true if this voice object is capable of playing the given sound.
If there are different classes of sound, and different classes of voice, a voice can choose which ones it wants to take on.
A typical implementation of this method may just return true if there's only one type of voice and sound, or it might check the type of the sound object passed-in and see if it's one that it understands.
Implements juce::SynthesiserVoice.
Definition at line 74 of file juce_Sampler.cpp.
|
overridevirtual |
Called to start a new note.
This will be called during the rendering callback, so must be fast and thread-safe.
Implements juce::SynthesiserVoice.
Definition at line 79 of file juce_Sampler.cpp.
References juce::SynthesiserVoice::getSampleRate(), juce::ADSR::noteOn(), juce::ADSR::setParameters(), and juce::ADSR::setSampleRate().
|
overridevirtual |
Called to stop a note.
This will be called during the rendering callback, so must be fast and thread-safe.
The velocity indicates how quickly the note was released - 0 is slowly, 1 is quickly.
If allowTailOff is false or the voice doesn't want to tail-off, then it must stop all sound immediately, and must call clearCurrentNote() to reset the state of this voice and allow the synth to reassign it another sound.
If allowTailOff is true and the voice decides to do a tail-off, then it's allowed to begin fading out its sound, and it can stop playing until it's finished. As soon as it finishes playing (during the rendering callback), it must make sure that it calls clearCurrentNote().
Implements juce::SynthesiserVoice.
Definition at line 101 of file juce_Sampler.cpp.
References juce::SynthesiserVoice::clearCurrentNote(), juce::ADSR::noteOff(), and juce::ADSR::reset().
Referenced by renderNextBlock().
|
overridevirtual |
Called to let the voice know that the pitch wheel has been moved.
This will be called during the rendering callback, so must be fast and thread-safe.
Implements juce::SynthesiserVoice.
Definition at line 114 of file juce_Sampler.cpp.
|
overridevirtual |
Called to let the voice know that a midi controller has been moved.
This will be called during the rendering callback, so must be fast and thread-safe.
Implements juce::SynthesiserVoice.
Definition at line 115 of file juce_Sampler.cpp.
|
overridevirtual |
Renders the next block of data for this voice.
The output audio data must be added to the current contents of the buffer provided. Only the region of the buffer between startSample and (startSample + numSamples) should be altered by this method.
If the voice is currently silent, it should just return without doing anything.
If the sound that the voice is playing finishes during the course of this rendered block, it must call clearCurrentNote(), to tell the synthesiser that it has finished.
The size of the blocks that are rendered can change each time it is called, and may involve rendering as little as 1 sample at a time. In between rendering callbacks, the voice's methods will be called to tell it about note and controller events.
Implements juce::SynthesiserVoice.
Definition at line 118 of file juce_Sampler.cpp.
References juce::SynthesiserVoice::getCurrentlyPlayingSound(), juce::ADSR::getNextSample(), juce::AudioBuffer< Type >::getNumChannels(), juce::AudioBuffer< Type >::getWritePointer(), and stopNote().
virtual void juce::SynthesiserVoice::renderNextBlock |
Renders the next block of data for this voice.
The output audio data must be added to the current contents of the buffer provided. Only the region of the buffer between startSample and (startSample + numSamples) should be altered by this method.
If the voice is currently silent, it should just return without doing anything.
If the sound that the voice is playing finishes during the course of this rendered block, it must call clearCurrentNote(), to tell the synthesiser that it has finished.
The size of the blocks that are rendered can change each time it is called, and may involve rendering as little as 1 sample at a time. In between rendering callbacks, the voice's methods will be called to tell it about note and controller events.