HephAudio v3.0.6
A cross-platform C++ library for recording, playing, and processing audio on Windows, Android, Linux, iOS, and macOS.
Loading...
Searching...
No Matches
HephAudio::Chorus Class Reference

delays the audio data and changes its pitch periodically. Then mixes the result with the input signal. More...

#include <Chorus.h>

Inheritance diagram for HephAudio::Chorus:
HephAudio::Flanger HephAudio::ModulationEffect HephAudio::DoubleBufferedAudioEffect HephAudio::AudioEffect

Public Member Functions

 Chorus ()
 
 Chorus (double depth, double constantDelay, double variableDelay, double extent, const Oscillator &lfo)
 
virtual ~Chorus ()=default
 
virtual std::string Name () const override
 
virtual size_t CalculateRequiredFrameCount (size_t outputFrameCount, const AudioFormatInfo &formatInfo) const override
 
virtual double GetExtent () const
 
virtual void SetExtent (double extent)
 
- Public Member Functions inherited from HephAudio::Flanger
 Flanger ()
 
 Flanger (double depth, double constantDelay, double variableDelay, const Oscillator &lfo)
 
virtual ~Flanger ()=default
 
virtual void Process (AudioBuffer &buffer, size_t startIndex, size_t frameCount) override
 
virtual double GetConstantDelay () const
 
virtual void SetConstantDelay (double constantDelay)
 
virtual double GetVariableDelay () const
 
virtual void SetVariableDelay (double variableDelay)
 
- Public Member Functions inherited from HephAudio::ModulationEffect
virtual ~ModulationEffect ()=default
 
virtual void SetOscillator (const Oscillator &lfo)
 
virtual double GetDepth () const
 
virtual void SetDepth (double depth)
 
virtual void Process (AudioBuffer &buffer)
 
virtual void Process (AudioBuffer &buffer, size_t startIndex)
 
- Public Member Functions inherited from HephAudio::DoubleBufferedAudioEffect
virtual ~DoubleBufferedAudioEffect ()=default
 
- Public Member Functions inherited from HephAudio::AudioEffect
virtual ~AudioEffect ()=default
 
virtual bool HasMTSupport () const
 
virtual bool HasRTSupport () const
 
virtual size_t GetThreadCount () const
 
virtual void SetThreadCount (size_t threadCount)
 
virtual size_t CalculateOutputFrameCount (const AudioBuffer &buffer) const
 

Protected Member Functions

virtual void ProcessST (const AudioBuffer &inputBuffer, AudioBuffer &outputBuffer, size_t startIndex, size_t frameCount) override
 
virtual size_t CalculatePastSamplesSize (const AudioBuffer &inputBuffer) const override
 
- Protected Member Functions inherited from HephAudio::ModulationEffect
 ModulationEffect ()
 
 ModulationEffect (double depth, const Oscillator &lfo)
 
- Protected Member Functions inherited from HephAudio::DoubleBufferedAudioEffect
 DoubleBufferedAudioEffect ()
 
- Protected Member Functions inherited from HephAudio::AudioEffect
 AudioEffect ()
 
virtual void ProcessMT (const AudioBuffer &inputBuffer, AudioBuffer &outputBuffer, size_t startIndex, size_t frameCount)
 

Protected Attributes

double extent
 
- Protected Attributes inherited from HephAudio::Flanger
AudioBuffer pastSamples
 
double constantDelay
 
double variableDelay
 
- Protected Attributes inherited from HephAudio::ModulationEffect
Heph::DoubleBuffer lfoBuffer
 
size_t lfoIndex
 
double depth
 
- Protected Attributes inherited from HephAudio::AudioEffect
size_t threadCount
 

Detailed Description

delays the audio data and changes its pitch periodically. Then mixes the result with the input signal.

Note
this is a non-causal effect.

Constructor & Destructor Documentation

◆ Chorus() [1/2]

HephAudio::Chorus::Chorus ( )

creates a new instance and initializes it with default values.

◆ Chorus() [2/2]

HephAudio::Chorus::Chorus ( double depth,
double constantDelay,
double variableDelay,
double extent,
const Oscillator & lfo )

creates a new instance and initializes it with the provided values.

Parameters
depthcontrols the dry/wet mix ratio. Ranges between 0 and 1.
lfolow-frequency oscillator.
constantDelayconstant delay in milliseconds.
variableDelaymaximum value of the variable delay in milliseconds.
extentmaximum pitch change in terms of semitones.

◆ ~Chorus()

virtual HephAudio::Chorus::~Chorus ( )
virtualdefault

releases the resources and destroys the instance.

Member Function Documentation

◆ Name()

virtual std::string HephAudio::Chorus::Name ( ) const
overridevirtual

gets the name of the audio effect.

Reimplemented from HephAudio::Flanger.

◆ CalculateRequiredFrameCount()

virtual size_t HephAudio::Chorus::CalculateRequiredFrameCount ( size_t outputFrameCount,
const AudioFormatInfo & formatInfo ) const
overridevirtual

calculates the number of frames required to obtain the number of frames desired for the output buffer. Useful for applying effects that depend on past and/or future samples in real-time.

Parameters
outputFrameCountthe number of frames desired for the output buffer.
formatInfothe format info of the input buffer.

Reimplemented from HephAudio::AudioEffect.

◆ GetExtent()

virtual double HephAudio::Chorus::GetExtent ( ) const
virtual

gets the maximum pitch change in terms of semitones.

◆ SetExtent()

virtual void HephAudio::Chorus::SetExtent ( double extent)
virtual

sets extent.

Parameters
extentmaximum pitch change in terms of semitones.

◆ ProcessST()

virtual void HephAudio::Chorus::ProcessST ( const AudioBuffer & inputBuffer,
AudioBuffer & outputBuffer,
size_t startIndex,
size_t frameCount )
overrideprotectedvirtual

applies the effect using single thread.

Parameters
inputBuffercontains the dry data.
outputBuffercontains the wet data.
startIndexindex of the first sample to process.
frameCountnumber of frames to process.

Reimplemented from HephAudio::Flanger.

◆ CalculatePastSamplesSize()

virtual size_t HephAudio::Chorus::CalculatePastSamplesSize ( const AudioBuffer & inputBuffer) const
overrideprotectedvirtual

calculates the number of past samples required.

Parameters
inputBuffercontains the dry data.

Reimplemented from HephAudio::Flanger.

Member Data Documentation

◆ extent

double HephAudio::Chorus::extent
protected

maximum pitch change in terms of semitones.