Audacity 3.2.0
|
An Effect to bring the loudness level up to a chosen level. More...
#include <LoudnessBase.h>
Public Types | |
enum | kNormalizeTargets { kLoudness , kRMS , nAlgos } |
Public Types inherited from StatefulEffectBase | |
using | MessagePackage = EffectInstance::MessagePackage |
Public Types inherited from EffectPlugin | |
using | EffectSettingsAccessPtr = std::shared_ptr< EffectSettingsAccess > |
using | InstancePointer = std::shared_ptr< EffectInstanceEx > |
using | InstanceFinder = std::function< std::optional< InstancePointer >(EffectSettings &settings) > |
Public Types inherited from EffectDefinitionInterface | |
enum class | RealtimeSince : unsigned { Never , After_3_1 , Always } |
In which versions of Audacity was an effect realtime capable? More... | |
Public Member Functions | |
LoudnessBase () | |
virtual | ~LoudnessBase () |
ComponentInterfaceSymbol | GetSymbol () const override |
TranslatableString | GetDescription () const override |
ManualPageID | ManualPage () const override |
Name of a page in the Audacity alpha manual, default is empty. More... | |
EffectType | GetType () const override |
Type determines how it behaves. More... | |
bool | Process (EffectInstance &instance, EffectSettings &settings) override |
bool | UpdateProgress () |
Public Member Functions inherited from StatefulEffect | |
~StatefulEffect () override | |
std::shared_ptr< EffectInstance > | MakeInstance () const override |
Make an object maintaining short-term state of an Effect. More... | |
Public Member Functions inherited from StatefulEffectBase | |
virtual bool | Init () |
virtual bool | Process (EffectInstance &instance, EffectSettings &settings)=0 |
virtual bool | RealtimeInitialize (EffectSettings &settings, double sampleRate) |
virtual bool | RealtimeAddProcessor (EffectSettings &settings, EffectOutputs *pOutputs, unsigned numChannels, float sampleRate) |
virtual bool | RealtimeSuspend () |
virtual bool | RealtimeResume () |
virtual bool | RealtimeProcessStart (MessagePackage &package) |
settings are possibly changed, since last call, by an asynchronous dialog More... | |
virtual size_t | RealtimeProcess (size_t group, EffectSettings &settings, const float *const *inBuf, float *const *outBuf, size_t numSamples) |
virtual bool | RealtimeProcessEnd (EffectSettings &settings) noexcept |
settings can be updated to let a dialog change appearance at idle More... | |
virtual bool | RealtimeFinalize (EffectSettings &settings) noexcept |
virtual size_t | SetBlockSize (size_t maxBlockSize) |
virtual size_t | GetBlockSize () const |
virtual unsigned | GetAudioInCount () const |
How many input buffers to allocate at once. More... | |
virtual unsigned | GetAudioOutCount () const |
How many output buffers to allocate at once. More... | |
virtual sampleCount | GetLatency () const |
virtual bool | NeedsDither () const |
virtual bool | ProcessInitialize (EffectSettings &settings, double sampleRate, ChannelNames chanMap=nullptr) |
virtual bool | ProcessFinalize () noexcept |
Public Member Functions inherited from Effect | |
Effect () | |
virtual | ~Effect () |
PluginPath | GetPath () const override |
bool | VisitSettings (SettingsVisitor &visitor, EffectSettings &settings) override |
bool | VisitSettings (ConstSettingsVisitor &visitor, const EffectSettings &settings) const override |
ComponentInterfaceSymbol | GetSymbol () const override |
VendorSymbol | GetVendor () const override |
wxString | GetVersion () const override |
TranslatableString | GetDescription () const override |
EffectFamilySymbol | GetFamily () const override |
Report identifier and user-visible name of the effect protocol. More... | |
bool | IsInteractive () const override |
Whether the effect needs a dialog for entry of settings. More... | |
bool | IsDefault () const override |
Whether the effect sorts "above the line" in the menus. More... | |
RealtimeSince | RealtimeSupport () const override |
Since which version of Audacity has the effect supported realtime? More... | |
bool | SupportsAutomation () const override |
Whether the effect has any automatable controls. More... | |
bool | SaveSettings (const EffectSettings &settings, CommandParameters &parms) const override |
Store settings as keys and values. More... | |
bool | LoadSettings (const CommandParameters &parms, EffectSettings &settings) const override |
Restore settings from keys and values. More... | |
OptionalMessage | LoadUserPreset (const RegistryPath &name, EffectSettings &settings) const override |
bool | SaveUserPreset (const RegistryPath &name, const EffectSettings &settings) const override |
Save settings in the configuration file as a user-named preset. More... | |
RegistryPaths | GetFactoryPresets () const override |
Report names of factory presets. More... | |
OptionalMessage | LoadFactoryPreset (int id, EffectSettings &settings) const override |
OptionalMessage | LoadFactoryDefaults (EffectSettings &settings) const override |
virtual const EffectParameterMethods & | Parameters () const |
bool | CanExportPresets () const override |
Whether the effect supports export of presets to files, and importing too. More... | |
bool | HasOptions () const override |
const EffectSettingsManager & | GetDefinition () const override |
virtual NumericFormatID | GetSelectionFormat () |
bool | SaveSettingsAsString (const EffectSettings &settings, wxString &parms) const override |
OptionalMessage | LoadSettingsFromString (const wxString &parms, EffectSettings &settings) const override |
bool | IsBatchProcessing () const override |
void | SetBatchProcessing () override |
void | UnsetBatchProcessing () override |
unsigned | TestUIFlags (unsigned mask) |
bool | Delegate (Effect &delegate, EffectSettings &settings, InstanceFinder finder={}) |
Re-invoke DoEffect on another Effect object that implements the work. More... | |
Public Member Functions inherited from EffectBase | |
EffectBase () | |
~EffectBase () override | |
bool | IsLinearEffect () const |
bool | PreviewsFullSelection () const |
void | SetTracks (TrackList *pTracks) |
double | GetDefaultDuration () |
virtual std::any | BeginPreview (const EffectSettings &settings) |
Called when Preview() starts, to allow temporary effect state changes. More... | |
bool | DoEffect (EffectSettings &settings, const InstanceFinder &finder, double projectRate, TrackList *list, WaveTrackFactory *factory, NotifyingSelectedRegion &selectedRegion, unsigned flags, const EffectSettingsAccessPtr &pAccess) override |
virtual double | CalcPreviewInputLength (const EffectSettings &settings, double previewLength) const =0 |
void | CountWaveTracks () |
Public Member Functions inherited from EffectPlugin | |
EffectPlugin & | operator= (EffectPlugin &)=delete |
virtual | ~EffectPlugin () |
virtual bool | HasOptions () const =0 |
virtual bool | CanExportPresets () const =0 |
Whether the effect supports export of presets to files, and importing too. More... | |
virtual const EffectSettingsManager & | GetDefinition () const =0 |
virtual bool | SaveSettingsAsString (const EffectSettings &settings, wxString &parms) const =0 |
virtual OptionalMessage | LoadSettingsFromString (const wxString &parms, EffectSettings &settings) const =0 |
virtual bool | IsBatchProcessing () const =0 |
virtual void | SetBatchProcessing ()=0 |
virtual void | UnsetBatchProcessing ()=0 |
virtual bool | DoEffect (EffectSettings &settings, const InstanceFinder &finder, double projectRate, TrackList *list, WaveTrackFactory *factory, NotifyingSelectedRegion &selectedRegion, unsigned flags, const EffectSettingsAccessPtr &pAccess=nullptr)=0 |
Public Member Functions inherited from EffectInstanceFactory | |
virtual | ~EffectInstanceFactory () |
virtual std::shared_ptr< EffectInstance > | MakeInstance () const =0 |
Make an object maintaining short-term state of an Effect. More... | |
Public Member Functions inherited from EffectSettingsManager | |
virtual | ~EffectSettingsManager () |
virtual bool | VisitSettings (SettingsVisitor &visitor, EffectSettings &settings) |
virtual bool | VisitSettings (ConstSettingsVisitor &visitor, const EffectSettings &settings) const |
virtual EffectSettings | MakeSettings () const |
virtual bool | CopySettingsContents (const EffectSettings &src, EffectSettings &dst) const |
Update one settings object from another. More... | |
virtual std::unique_ptr< EffectOutputs > | MakeOutputs () const |
Produce an object to hold values to send to effect output meters. More... | |
Public Member Functions inherited from EffectDefinitionInterface | |
virtual | ~EffectDefinitionInterface () |
virtual EffectType | GetType () const =0 |
Type determines how it behaves. More... | |
virtual EffectType | GetClassification () const |
Determines which menu it appears in; default same as GetType(). More... | |
virtual EffectFamilySymbol | GetFamily () const =0 |
Report identifier and user-visible name of the effect protocol. More... | |
virtual bool | IsInteractive () const =0 |
Whether the effect needs a dialog for entry of settings. More... | |
virtual bool | IsDefault () const =0 |
Whether the effect sorts "above the line" in the menus. More... | |
virtual RealtimeSince | RealtimeSupport () const =0 |
Since which version of Audacity has the effect supported realtime? More... | |
bool | SupportsRealtime () const |
virtual bool | SupportsAutomation () const =0 |
Whether the effect has any automatable controls. More... | |
virtual bool | EnablesDebug () const |
Whether the effect dialog should have a Debug button; default, always false. More... | |
virtual ManualPageID | ManualPage () const |
Name of a page in the Audacity alpha manual, default is empty. More... | |
virtual FilePath | HelpPage () const |
Fully qualified local help file name, default is empty. More... | |
virtual bool | IsHiddenFromMenus () const |
Default is false. More... | |
Public Member Functions inherited from ComponentInterface | |
virtual | ~ComponentInterface () |
virtual PluginPath | GetPath () const =0 |
virtual ComponentInterfaceSymbol | GetSymbol () const =0 |
virtual VendorSymbol | GetVendor () const =0 |
virtual wxString | GetVersion () const =0 |
virtual TranslatableString | GetDescription () const =0 |
TranslatableString | GetName () const |
Static Public Member Functions | |
static LoudnessBase * | FetchParameters (LoudnessBase &e, EffectSettings &) |
Static Public Member Functions inherited from Effect | |
static Effect * | FetchParameters (Effect &e, EffectSettings &) |
Static Public Member Functions inherited from EffectBase | |
static std::optional< InstancePointer > | FindInstance (EffectPlugin &plugin) |
static InstanceFinder | DefaultInstanceFinder (EffectPlugin &plugin) |
Static Public Member Functions inherited from EffectDefinitionInterface | |
static Identifier | GetSquashedName (const Identifier &ident) |
A utility that strips spaces and CamelCases a name. More... | |
Static Public Attributes | |
static const ComponentInterfaceSymbol | Symbol |
Static Public Attributes inherited from EffectPlugin | |
static const wxString | kUserPresetIdent = wxT("User Preset:") |
static const wxString | kFactoryPresetIdent = wxT("Factory Preset:") |
static const wxString | kCurrentSettingsIdent = wxT("<Current Settings>") |
static const wxString | kFactoryDefaultsIdent = wxT("<Factory Defaults>") |
Protected Member Functions | |
const EffectParameterMethods & | Parameters () const override |
Protected Member Functions inherited from Effect | |
bool | CheckWhetherSkipEffect (const EffectSettings &settings) const override |
Default implementation returns false. More... | |
double | CalcPreviewInputLength (const EffectSettings &settings, double previewLength) const override |
Default implementation returns previewLength More... | |
bool | TotalProgress (double frac, const TranslatableString &={}) const |
bool | TrackProgress (int whichTrack, double frac, const TranslatableString &={}) const |
bool | TrackGroupProgress (int whichGroup, double frac, const TranslatableString &={}) const |
int | GetNumWaveTracks () const |
int | GetNumWaveGroups () const |
void | GetBounds (const WaveTrack &track, sampleCount *start, sampleCount *len) |
Protected Member Functions inherited from EffectBase | |
virtual bool | CheckWhetherSkipEffect (const EffectSettings &settings) const =0 |
After Init(), tell whether Process() should be skipped. More... | |
void | SetLinearEffectFlag (bool linearEffectFlag) |
void | SetPreviewFullSelectionFlag (bool previewDurationFlag) |
bool | IsPreviewing () const |
const TrackList * | inputTracks () const |
const AudacityProject * | FindProject () const |
Protected Attributes | |
bool | mStereoInd |
double | mLUFSLevel |
double | mRMSLevel |
bool | mDualMono |
int | mNormalizeTo |
double | mProgressVal |
int | mSteps |
TranslatableString | mProgressMsg |
double | mTrackLen |
double | mCurRate |
Floats | mTrackBuffer [2] |
size_t | mTrackBufferLen |
size_t | mTrackBufferCapacity |
bool | mProcStereo |
Protected Attributes inherited from EffectBase | |
double | mF0 {} |
double | mF1 {} |
wxArrayString | mPresetNames |
unsigned | mUIFlags { 0 } |
Static Protected Attributes | |
static constexpr EffectParameter | StereoInd |
static constexpr EffectParameter | LUFSLevel |
static constexpr EffectParameter | RMSLevel |
static constexpr EffectParameter | DualMono |
static constexpr EffectParameter | NormalizeTo |
Private Member Functions | |
void | AllocBuffers (TrackList &outputs) |
void | FreeBuffers () |
bool | ProcessOne (WaveChannel &track, size_t nChannels, double curT0, double curT1, float mult, EBUR128 *pLoudnessProcessor) |
void | LoadBufferBlock (WaveChannel &track, size_t nChannels, sampleCount pos, size_t len) |
bool | AnalyseBufferBlock (EBUR128 &loudnessProcessor) |
bool | ProcessBufferBlock (float mult) |
bool | StoreBufferBlock (WaveChannel &track, size_t nChannels, sampleCount pos, size_t len) |
Static Private Member Functions | |
static bool | GetTrackRMS (WaveChannel &track, double curT0, double curT1, float &rms) |
Additional Inherited Members | |
Public Attributes inherited from EffectBase | |
std::shared_ptr< TrackList > | mTracks {} |
int | mNumTracks {} |
BasicUI::ProgressDialog * | mProgress {} |
double | mProjectRate {} |
WaveTrackFactory * | mFactory {} |
double | mT0 {} |
double | mT1 {} |
bool | mIsPreview { false } |
An Effect to bring the loudness level up to a chosen level.
Definition at line 20 of file LoudnessBase.h.
Enumerator | |
---|---|
kLoudness | |
kRMS | |
nAlgos |
Definition at line 23 of file LoudnessBase.h.
LoudnessBase::LoudnessBase | ( | ) |
Definition at line 34 of file LoudnessBase.cpp.
References Parameters(), EffectParameterMethods::Reset(), and EffectBase::SetLinearEffectFlag().
Referenced by Parameters().
|
virtual |
Definition at line 40 of file LoudnessBase.cpp.
|
private |
Get required buffer size for the largest whole track and allocate buffers. This reduces the amount of allocations required.
Definition at line 214 of file LoudnessBase.cpp.
References Track::Any(), mProcStereo, mStereoInd, mTrackBuffer, mTrackBufferCapacity, ArrayOf< X >::reinit(), and TrackList::Selected().
Referenced by Process().
|
private |
Calculates sample sum (for DC) and EBU R128 weighted square sum (for loudness).
Definition at line 336 of file LoudnessBase.cpp.
References mProcStereo, mTrackBuffer, mTrackBufferLen, EBUR128::NextSample(), EBUR128::ProcessSampleFromChannel(), and UpdateProgress().
Referenced by ProcessOne().
|
inlinestatic |
Definition at line 30 of file LoudnessBase.h.
|
private |
Definition at line 240 of file LoudnessBase.cpp.
References mTrackBuffer.
Referenced by Process().
|
overridevirtual |
Implements ComponentInterface.
Definition at line 51 of file LoudnessBase.cpp.
References XO().
|
overridevirtual |
Implements ComponentInterface.
Definition at line 46 of file LoudnessBase.cpp.
References Symbol.
|
staticprivate |
Definition at line 246 of file LoudnessBase.cpp.
References WaveChannelUtilities::GetRMS().
Referenced by Process().
|
overridevirtual |
Type determines how it behaves.
Implements EffectDefinitionInterface.
Definition at line 63 of file LoudnessBase.cpp.
References EffectTypeProcess.
Referenced by Process().
|
private |
Definition at line 314 of file LoudnessBase.cpp.
References WaveTrack::Channels(), WaveChannel::GetTrack(), mTrackBuffer, and mTrackBufferLen.
Referenced by ProcessOne().
|
overridevirtual |
Name of a page in the Audacity alpha manual, default is empty.
Reimplemented from EffectDefinitionInterface.
Definition at line 56 of file LoudnessBase.cpp.
|
overrideprotectedvirtual |
Reimplemented from Effect.
Definition at line 26 of file LoudnessBase.cpp.
References DualMono, LoudnessBase(), LUFSLevel, NormalizeTo, RMSLevel, and StereoInd.
Referenced by LoudnessBase().
|
overridevirtual |
Implements StatefulEffectBase.
Definition at line 70 of file LoudnessBase.cpp.
References AllocBuffers(), DB_TO_LINEAR, FreeBuffers(), GetTrackRMS(), GetType(), AudioGraph::IsMono(), kLoudness, LUFSLevel, EffectParameter< Structure, Member, Type, Value >::max, mCurRate, mDualMono, EffectParameter< Structure, Member, Type, Value >::min, min(), mLUFSLevel, mNormalizeTo, mProcStereo, mProgressMsg, mProgressVal, mRMSLevel, mSteps, mStereoInd, EffectBase::mT0, EffectBase::mT1, EffectBase::mTracks, ProcessOne(), RMSLevel, staffpad::audio::simd::sqrt(), and XO().
|
private |
Definition at line 351 of file LoudnessBase.cpp.
References mProcStereo, mTrackBuffer, mTrackBufferLen, and UpdateProgress().
Referenced by ProcessOne().
|
private |
ProcessOne() takes a track, transforms it to bunch of buffer-blocks, and executes ProcessData, on it... uses mMult to normalize a track. mMult must be set before this is called In analyse mode, it executes the selected analyse operation on it... mMult does not have to be set before this is called
Definition at line 261 of file LoudnessBase.cpp.
References AnalyseBufferBlock(), details::end(), WaveChannel::GetBestBlockSize(), limitSampleBufferSize(), LoadBufferBlock(), mTrackBufferCapacity, mTrackLen, ProcessBufferBlock(), StoreBufferBlock(), and WideSampleSequence::TimeToLongSamples().
Referenced by Process().
|
private |
Definition at line 365 of file LoudnessBase.cpp.
References WaveTrack::Channels(), WaveChannel::GetTrack(), and mTrackBuffer.
Referenced by ProcessOne().
bool LoudnessBase::UpdateProgress | ( | ) |
Definition at line 388 of file LoudnessBase.cpp.
References Effect::GetNumWaveTracks(), mProcStereo, mProgressMsg, mProgressVal, mSteps, mTrackBufferLen, mTrackLen, and Effect::TotalProgress().
Referenced by AnalyseBufferBlock(), and ProcessBufferBlock().
|
staticconstexprprotected |
Definition at line 101 of file LoudnessBase.h.
Referenced by Parameters().
|
staticconstexprprotected |
Definition at line 95 of file LoudnessBase.h.
Referenced by Parameters(), EffectLoudness::PopulateOrExchange(), and Process().
|
protected |
Definition at line 82 of file LoudnessBase.h.
Referenced by Process().
|
protected |
Definition at line 75 of file LoudnessBase.h.
Referenced by EffectLoudness::PopulateOrExchange(), and Process().
|
protected |
Definition at line 73 of file LoudnessBase.h.
Referenced by EffectLoudness::PopulateOrExchange(), and Process().
|
protected |
Definition at line 76 of file LoudnessBase.h.
Referenced by EffectLoudness::OnChoice(), EffectLoudness::PopulateOrExchange(), and Process().
|
protected |
Definition at line 88 of file LoudnessBase.h.
Referenced by AllocBuffers(), AnalyseBufferBlock(), Process(), ProcessBufferBlock(), and UpdateProgress().
|
protected |
Definition at line 80 of file LoudnessBase.h.
Referenced by Process(), and UpdateProgress().
|
protected |
Definition at line 78 of file LoudnessBase.h.
Referenced by Process(), and UpdateProgress().
|
protected |
Definition at line 74 of file LoudnessBase.h.
Referenced by EffectLoudness::PopulateOrExchange(), and Process().
|
protected |
Definition at line 79 of file LoudnessBase.h.
Referenced by Process(), and UpdateProgress().
|
protected |
Definition at line 72 of file LoudnessBase.h.
Referenced by AllocBuffers(), EffectLoudness::PopulateOrExchange(), and Process().
|
protected |
Definition at line 84 of file LoudnessBase.h.
Referenced by AllocBuffers(), AnalyseBufferBlock(), FreeBuffers(), LoadBufferBlock(), ProcessBufferBlock(), and StoreBufferBlock().
|
protected |
Definition at line 87 of file LoudnessBase.h.
Referenced by AllocBuffers(), and ProcessOne().
|
protected |
Definition at line 86 of file LoudnessBase.h.
Referenced by AnalyseBufferBlock(), LoadBufferBlock(), ProcessBufferBlock(), and UpdateProgress().
|
protected |
Definition at line 81 of file LoudnessBase.h.
Referenced by ProcessOne(), and UpdateProgress().
|
staticconstexprprotected |
Definition at line 104 of file LoudnessBase.h.
Referenced by Parameters().
|
staticconstexprprotected |
Definition at line 98 of file LoudnessBase.h.
Referenced by Parameters(), EffectLoudness::PopulateOrExchange(), and Process().
|
staticconstexprprotected |
Definition at line 92 of file LoudnessBase.h.
Referenced by Parameters().
|
static |
Definition at line 34 of file LoudnessBase.h.
Referenced by GetSymbol().