OpenShot Audio Library | OpenShotAudio: juce::SynthesiserVoice Class Reference

OpenShot Audio Library | OpenShotAudio 0.6.0

Loading...
Searching...
No Matches
juce::SynthesiserVoice Class Referenceabstract

`#include <juce_Synthesiser.h>`

Inheritance diagram for juce::SynthesiserVoice:

## Public Member Functions
| SynthesiserVoice ()
virtual | ~SynthesiserVoice ()
int | getCurrentlyPlayingNote () const noexcept
SynthesiserSound::Ptr | getCurrentlyPlayingSound () const noexcept
virtual bool | canPlaySound (SynthesiserSound *)=0
virtual void | startNote (int midiNoteNumber, float velocity, SynthesiserSound *sound, int currentPitchWheelPosition)=0
virtual void | stopNote (float velocity, bool allowTailOff)=0
virtual bool | isVoiceActive () const
virtual void | pitchWheelMoved (int newPitchWheelValue)=0
virtual void | controllerMoved (int controllerNumber, int newControllerValue)=0
virtual void | aftertouchChanged (int newAftertouchValue)
virtual void | channelPressureChanged (int newChannelPressureValue)
virtual void | renderNextBlock (AudioBuffer< float > &outputBuffer, int startSample, int numSamples)=0
virtual void | renderNextBlock (AudioBuffer< double > &outputBuffer, int startSample, int numSamples)
virtual void | setCurrentPlaybackSampleRate (double newRate)
virtual bool | isPlayingChannel (int midiChannel) const
double | getSampleRate () const noexcept
bool | isKeyDown () const noexcept
void | setKeyDown (bool isNowDown) noexcept
bool | isSustainPedalDown () const noexcept
void | setSustainPedalDown (bool isNowDown) noexcept
bool | isSostenutoPedalDown () const noexcept
void | setSostenutoPedalDown (bool isNowDown) noexcept
bool | isPlayingButReleased () const noexcept
bool | wasStartedBefore (const SynthesiserVoice &other) const noexcept

## Protected Member Functions
void | clearCurrentNote ()

## Detailed Description

Represents a voice that a Synthesiser can use to play a SynthesiserSound.

A voice plays a single sound at a time, and a synthesiser holds an array of voices so that it can play polyphonically.

See also
  Synthesiser, SynthesiserSound

Definition at line 87 of file juce_Synthesiser.h.

## Constructor & Destructor Documentation

## ◆ SynthesiserVoice()

juce::SynthesiserVoice::SynthesiserVoice | ( |  | ) |

Creates a voice.

Definition at line 30 of file juce_Synthesiser.cpp.

Referenced by wasStartedBefore().

## ◆ ~SynthesiserVoice()

juce::SynthesiserVoice::~SynthesiserVoice | ( |  | ) |
| virtual

Destructor.

Definition at line 31 of file juce_Synthesiser.cpp.

## Member Function Documentation

## ◆ aftertouchChanged()

void juce::SynthesiserVoice::aftertouchChanged | ( | int | newAftertouchValue | ) |
| virtual

Called to let the voice know that the aftertouch has changed. This will be called during the rendering callback, so must be fast and thread-safe.

Definition at line 55 of file juce_Synthesiser.cpp.

Referenced by controllerMoved().

## ◆ canPlaySound()

virtual bool juce::SynthesiserVoice::canPlaySound | ( | SynthesiserSound * |  | ) |
| pure virtual

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.

Implemented in juce::SamplerVoice.

## ◆ channelPressureChanged()

void juce::SynthesiserVoice::channelPressureChanged | ( | int | newChannelPressureValue | ) |
| virtual

Called to let the voice know that the channel pressure has changed. This will be called during the rendering callback, so must be fast and thread-safe.

Definition at line 56 of file juce_Synthesiser.cpp.

Referenced by controllerMoved().

## ◆ clearCurrentNote()

void juce::SynthesiserVoice::clearCurrentNote | ( |  | ) |
| protected

Resets the state of this voice after a sound has finished playing.

The subclass must call this when it finishes playing a note and becomes available to play new ones.

It must either call it in the stopNote() method, or if the voice is tailing off, then it should call it later during the renderNextBlock method, as soon as it finishes its tail-off.

It can also be called at any time during the render callback if the sound happens to have finished, e.g. if it's playing a sample and the sample finishes.

Definition at line 48 of file juce_Synthesiser.cpp.

Referenced by juce::SamplerVoice::stopNote().

## ◆ controllerMoved()

virtual void juce::SynthesiserVoice::controllerMoved | ( | int | controllerNumber,
|  | int | newControllerValue )
| pure virtual

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.

Implemented in juce::SamplerVoice.

## ◆ getCurrentlyPlayingNote()

int juce::SynthesiserVoice::getCurrentlyPlayingNote | ( |  | ) | const
| inlinenoexcept

Returns the midi note that this voice is currently playing. Returns a value less than 0 if no note is playing.

Definition at line 101 of file juce_Synthesiser.h.

Referenced by juce::Synthesiser::findVoiceToSteal(), isVoiceActive(), and juce::Synthesiser::stopVoice().

## ◆ getCurrentlyPlayingSound()

SynthesiserSound::Ptr juce::SynthesiserVoice::getCurrentlyPlayingSound | ( |  | ) | const
| inlinenoexcept

Returns the sound that this voice is currently playing. Returns nullptr if it's not playing.

Definition at line 106 of file juce_Synthesiser.h.

Referenced by juce::SamplerVoice::renderNextBlock(), and juce::Synthesiser::stopVoice().

## ◆ getSampleRate()

double juce::SynthesiserVoice::getSampleRate | ( |  | ) | const
| inlinenoexcept

Returns the current target sample rate at which rendering is being done. Subclasses may need to know this so that they can pitch things correctly.

Definition at line 215 of file juce_Synthesiser.h.

Referenced by juce::SamplerVoice::startNote().

## ◆ isKeyDown()

bool juce::SynthesiserVoice::isKeyDown | ( |  | ) | const
| inlinenoexcept

Returns true if the key that triggered this voice is still held down. Note that the voice may still be playing after the key was released (e.g because the sostenuto pedal is down).

Definition at line 221 of file juce_Synthesiser.h.

Referenced by juce::Synthesiser::findVoiceToSteal(), and isPlayingButReleased().

## ◆ isPlayingButReleased()

bool juce::SynthesiserVoice::isPlayingButReleased | ( |  | ) | const
| inlinenoexcept

Returns true if a voice is sounding in its release phase

Definition at line 241 of file juce_Synthesiser.h.

Referenced by juce::Synthesiser::findVoiceToSteal().

## ◆ isPlayingChannel()

bool juce::SynthesiserVoice::isPlayingChannel | ( | int | midiChannel | ) | const
| virtual

Returns true if the voice is currently playing a sound which is mapped to the given midi channel.

If it's not currently playing, this will return false.

Definition at line 33 of file juce_Synthesiser.cpp.

Referenced by renderNextBlock().

## ◆ isSostenutoPedalDown()

bool juce::SynthesiserVoice::isSostenutoPedalDown | ( |  | ) | const
| inlinenoexcept

Returns true if the sostenuto pedal is currently active for this voice.

Definition at line 235 of file juce_Synthesiser.h.

Referenced by isPlayingButReleased().

## ◆ isSustainPedalDown()

bool juce::SynthesiserVoice::isSustainPedalDown | ( |  | ) | const
| inlinenoexcept

Returns true if the sustain pedal is currently active for this voice.

Definition at line 229 of file juce_Synthesiser.h.

Referenced by isPlayingButReleased().

## ◆ isVoiceActive()

bool juce::SynthesiserVoice::isVoiceActive | ( |  | ) | const
| virtual

Returns true if this voice is currently busy playing a sound. By default this just checks the getCurrentlyPlayingNote() value, but can be overridden for more advanced checking.

Definition at line 43 of file juce_Synthesiser.cpp.

Referenced by isPlayingButReleased(), and stopNote().

## ◆ pitchWheelMoved()

virtual void juce::SynthesiserVoice::pitchWheelMoved | ( | int | newPitchWheelValue | ) |
| pure virtual

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.

Implemented in juce::SamplerVoice.

## ◆ renderNextBlock() [1/2]

void juce::SynthesiserVoice::renderNextBlock | ( | AudioBuffer< double > & | outputBuffer,
|  | int | startSample,
|  | int | numSamples )
| virtual

A double-precision version of renderNextBlock()

Reimplemented in juce::SamplerVoice.

Definition at line 63 of file juce_Synthesiser.cpp.

## ◆ renderNextBlock() [2/2]

virtual void juce::SynthesiserVoice::renderNextBlock | ( | AudioBuffer< float > & | outputBuffer,
|  | int | startSample,
|  | int | numSamples )
| pure virtual

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.

Implemented in juce::SamplerVoice.

Referenced by renderNextBlock(), and renderNextBlock().

## ◆ setCurrentPlaybackSampleRate()

void juce::SynthesiserVoice::setCurrentPlaybackSampleRate | ( | double | newRate | ) |
| virtual

Changes the voice's reference sample rate.

The rate is set so that subclasses know the output rate and can set their pitch accordingly.

This method is called by the synth, and subclasses can access the current rate with the currentSampleRate member.

Definition at line 38 of file juce_Synthesiser.cpp.

Referenced by juce::Synthesiser::addVoice(), and renderNextBlock().

## ◆ setKeyDown()

void juce::SynthesiserVoice::setKeyDown | ( | bool | isNowDown | ) |
| inlinenoexcept

Allows you to modify the flag indicating that the key that triggered this voice is still held down.

See also
  isKeyDown

Definition at line 226 of file juce_Synthesiser.h.

Referenced by juce::Synthesiser::startVoice().

## ◆ setSostenutoPedalDown()

void juce::SynthesiserVoice::setSostenutoPedalDown | ( | bool | isNowDown | ) |
| inlinenoexcept

Modifies the sostenuto pedal flag.

Definition at line 238 of file juce_Synthesiser.h.

Referenced by juce::Synthesiser::startVoice().

## ◆ setSustainPedalDown()

void juce::SynthesiserVoice::setSustainPedalDown | ( | bool | isNowDown | ) |
| inlinenoexcept

Modifies the sustain pedal flag.

Definition at line 232 of file juce_Synthesiser.h.

Referenced by juce::Synthesiser::startVoice().

## ◆ startNote()

virtual void juce::SynthesiserVoice::startNote | ( | int | midiNoteNumber,
|  | float | velocity,
|  | SynthesiserSound * | sound,
|  | int | currentPitchWheelPosition )
| pure virtual

Called to start a new note. This will be called during the rendering callback, so must be fast and thread-safe.

Implemented in juce::SamplerVoice.

Referenced by juce::Synthesiser::startVoice().

## ◆ stopNote()

virtual void juce::SynthesiserVoice::stopNote | ( | float | velocity,
|  | bool | allowTailOff )
| pure virtual

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().

Implemented in juce::SamplerVoice.

Referenced by juce::Synthesiser::startVoice(), and juce::Synthesiser::stopVoice().

## ◆ wasStartedBefore()

bool juce::SynthesiserVoice::wasStartedBefore | ( | const SynthesiserVoice & | other | ) | const
| noexcept

Returns true if this voice started playing its current note before the other voice did.

Definition at line 58 of file juce_Synthesiser.cpp.

Referenced by juce::Synthesiser::findVoiceToSteal().

The documentation for this class was generated from the following files:

- juce_Synthesiser.h
- juce_Synthesiser.cpp