HART  0.1.0
High level Audio Regression and Testing
Loading...
Searching...
No Matches
GainLinear< SampleType > Class Template Reference

Applies linear gain (not decibels) to the signal. More...

#include <hart_gainlinear.hpp>

Inheritance diagram for GainLinear< SampleType >:

Public Types

enum  Params { gainLinear }
 

Public Member Functions

 GainLinear (double initialGainLinear=1.0)
 Constructor.
 
void prepare (double, size_t, size_t, size_t) override
 Prepare for processing.
 
void process (const AudioBuffer< SampleType > &input, AudioBuffer< SampleType > &output, const EnvelopeBuffers &envelopeBuffers) override
 Processes the audio.
 
void reset () override
 Resets to initial state.
 
void setValue (int id, double value) override
 
double getValue (int id) const override
 
virtual bool supportsChannelLayout (size_t numInputChannels, size_t numOutputChannels) const override
 
virtual void represent (std::ostream &stream) const override
 Makes a text representation of this DSP effect for test failure outputs.
 
bool supportsEnvelopeFor (int id) const override
 
 HART_DSP_DEFINE_COPY_AND_MOVE (GainLinear)
 
- Public Member Functions inherited from DSP< SampleType >
virtual bool supportsSampleRate (double) const
 Tells whether this effect supports given sample rate.
 
virtual std::unique_ptr< DSP< SampleType > > copy () const =0
 Returns a smart pointer with a copy of this object.
 
virtual std::unique_ptr< DSP< SampleType > > move ()=0
 Returns a smart pointer with a moved instance of this object.
 
virtual ~DSP ()=default
 Destructor.
 
 DSP ()=default
 Default constructor.
 
 DSP (const DSP &other)
 Copies from another DSP effect instance.
 
 DSP (DSP &&other) noexcept
 Move constructor.
 
DSPoperator= (const DSP &other)
 Copies from another DSP effect instance.
 
DSPoperator= (DSP &&other) noexcept
 Move assignment.
 
DSPwithEnvelope (int paramId, Envelope &&envelope)
 Adds envelope to a specific parameter by moving it.
 
DSPwithEnvelope (int paramId, const Envelope &envelope)
 Adds envelope to a specific parameter by copying it.
 
bool hasEnvelopeFor (int paramId)
 Checks if there's an automation envelope attached to a specific parameter.
 
void prepareWithEnvelopes (double sampleRateHz, size_t numInputChannels, size_t numOutputChannels, size_t maxBlockSizeFrames)
 Prepares all the attached envelopes and the effect itself for processing.
 
void processWithEnvelopes (const AudioBuffer< SampleType > &input, AudioBuffer< SampleType > &output)
 Renders all the automation envelopes and processes the audio.
 

Additional Inherited Members

Detailed Description

template<typename SampleType>
class hart::GainLinear< SampleType >

Applies linear gain (not decibels) to the signal.

To set gain in decibels, consider using GainDb class instead

Definition at line 17 of file hart_gainlinear.hpp.

Member Enumeration Documentation

◆ Params

Enumerator
gainLinear 

Linear gain.

Definition at line 21 of file hart_gainlinear.hpp.

Constructor & Destructor Documentation

◆ GainLinear()

template<typename SampleType >
GainLinear ( double  initialGainLinear = 1.0)
inline

Constructor.

Parameters
initialGainLinearLinear gain

Definition at line 28 of file hart_gainlinear.hpp.

Member Function Documentation

◆ prepare()

template<typename SampleType >
void prepare ( double  sampleRateHz,
size_t  numInputChannels,
size_t  numOutputChannels,
size_t  maxBlockSizeFrames 
)
inlineoverridevirtual

Prepare for processing.

In real-time DSP, such methods are usually used for allocating memory and other non-realtime-safe and heavyweight operations. But keep in mind that that HART does not do real-time processing, so this merely follows common real-time DSP design conventions, where non-realtime operations are done in a separate callback like this one. This method is guaranteed to be called after supportsChannelLayout() and supportsSampleRate(), but before process(). It is guaranteed that the number of input and output channels obeys supportsChannelLayout() and supportsSampleRate() preferences. It is guaranteed that all subsequent process() calls will be in line with the arguments received in this callback.

Parameters
sampleRateHzsample rate at which the audio should be interpreted and processed
numInputChannelsNumber of input channels
numOutputChannelsNumber of output channels
maxBlockSizeFramesMaximum block size in frames (samples)

Implements DSP< SampleType >.

Definition at line 34 of file hart_gainlinear.hpp.

◆ process()

template<typename SampleType >
void process ( const AudioBuffer< SampleType > &  input,
AudioBuffer< SampleType > &  output,
const EnvelopeBuffers envelopeBuffers 
)
inlineoverridevirtual

Processes the audio.

Depending on circumstances, this callback will either be called once to process an entire piece of audio from start to finish, or called repeatedly, one block at a time (see AudioTestBuilder::withBlockSize()). All audio blocks except the last one are guaranteed to be equal to maxBlockSizeFrames set in prepare() callback. It is guaranteed that input and output buffers are equal in length in frames (samples) to each, but they might have different number of channels. Use supportsChannelLayout() to indicate whether the effect supports a specific i/o configuration or not, as it will be called before prepare(). It is guaranteed that envelopeBuffers will only contain the values for all attached envelopes for this instance of DSP effect, and will not contain any data (including key with empty item) if there's no envelope attached to a specific parameter ID in this effects's instance. It will never contain envelopes for IDs that get rejected by supportsEnvelopeFor().

Note
This method may be called in a replacing manner, i. e. input and output may be references to the same object.
Warning
Remember that the very last block of audio is almost always smaller than the block size set in prepare(), so be careful with buffer bounds.
Note
Note that this method does not have to be real-time safe, as all rendering always happens offline. Also note that, unlike real-time audio applications, this method is called on the same thread as all others like prepare().
Parameters
inputInput audio block
outputOutput audio block
envelopeBuffersEnvelope values for this block, see EnvelopeBuffers

Implements DSP< SampleType >.

Definition at line 36 of file hart_gainlinear.hpp.

◆ reset()

template<typename SampleType >
void reset ( )
inlineoverridevirtual

Resets to initial state.

Ideally should be implemented in a way that audio produced after resetting is identical to audio produced after instantiation

Implements DSP< SampleType >.

Definition at line 65 of file hart_gainlinear.hpp.

◆ setValue()

template<typename SampleType >
void setValue ( int  id,
double  value 
)
inlineoverridevirtual
Parameters
idOnly GainLinear::gainLinear is accepted
valuelinear gain

Implements DSP< SampleType >.

Definition at line 69 of file hart_gainlinear.hpp.

◆ getValue()

template<typename SampleType >
double getValue ( int  id) const
inlineoverridevirtual
Parameters
idOnly GainLinear::gainLinear is accepted
Returns
linear gain

Implements DSP< SampleType >.

Definition at line 77 of file hart_gainlinear.hpp.

◆ supportsChannelLayout()

template<typename SampleType >
virtual bool supportsChannelLayout ( size_t  numInputChannels,
size_t  numOutputChannels 
) const
inlineoverridevirtual

Supports either 1-to-n or n-to-n configurations

Implements DSP< SampleType >.

Definition at line 86 of file hart_gainlinear.hpp.

◆ represent()

template<typename SampleType >
virtual void represent ( std::ostream &  stream) const
inlineoverridevirtual

Makes a text representation of this DSP effect for test failure outputs.

It is strongly encouraged to follow python's repr() conventions for returned text - basically, put something like "MyClass(value1, value2)" (with no quotes) into the stream whenever possible, or "<Readable info in angled brackets>" otherwise. Also, use built-in stream manipulators like dbPrecision wherever applicable. Use HART_DEFINE_GENERIC_REPRESENT() to get a basic implementation for this method.

Parameters
[out]streamOutput stream to write to

Implements DSP< SampleType >.

Definition at line 97 of file hart_gainlinear.hpp.

◆ supportsEnvelopeFor()

template<typename SampleType >
bool supportsEnvelopeFor ( int  id) const
inlineoverridevirtual
Parameters
idOnly GainLinear::gainLinear is accepted return true for GainLinear::gainLinear, else otherwise

Reimplemented from DSP< SampleType >.

Definition at line 104 of file hart_gainlinear.hpp.

◆ HART_DSP_DEFINE_COPY_AND_MOVE()

template<typename SampleType >
HART_DSP_DEFINE_COPY_AND_MOVE ( GainLinear< SampleType )

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