audacia/src/effects/Fade.cpp
Paul Licameli 5e7d41ec07 Each .cpp/.mm file includes corresponding header before any other...
... except Audacity.h

This forces us to make each header contain all forward declarations or nested
headers that it requires, rather than depend on context.
2019-03-17 22:54:52 -04:00

103 lines
1.9 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
Fade.cpp
Robert Leidle
*******************************************************************//**
\class EffectFade
\brief An Effect that reduces the volume to zero over achosen interval.
*//*******************************************************************/
#include "../Audacity.h"
#include "Fade.h"
#include <wx/intl.h>
EffectFade::EffectFade(bool fadeIn)
{
mFadeIn = fadeIn;
}
EffectFade::~EffectFade()
{
}
// ComponentInterface implementation
ComponentInterfaceSymbol EffectFade::GetSymbol()
{
return mFadeIn
? FADEIN_PLUGIN_SYMBOL
: FADEOUT_PLUGIN_SYMBOL;
}
wxString EffectFade::GetDescription()
{
return mFadeIn
? _("Applies a linear fade-in to the selected audio")
: _("Applies a linear fade-out to the selected audio");
}
// EffectDefinitionInterface implementation
EffectType EffectFade::GetType()
{
return EffectTypeProcess;
}
bool EffectFade::IsInteractive()
{
return false;
}
// EffectClientInterface implementation
unsigned EffectFade::GetAudioInCount()
{
return 1;
}
unsigned EffectFade::GetAudioOutCount()
{
return 1;
}
bool EffectFade::ProcessInitialize(sampleCount WXUNUSED(totalLen), ChannelNames WXUNUSED(chanMap))
{
mSample = 0;
return true;
}
size_t EffectFade::ProcessBlock(float **inBlock, float **outBlock, size_t blockLen)
{
float *ibuf = inBlock[0];
float *obuf = outBlock[0];
if (mFadeIn)
{
for (decltype(blockLen) i = 0; i < blockLen; i++)
{
obuf[i] =
(ibuf[i] * ( mSample++ ).as_float()) /
mSampleCnt.as_float();
}
}
else
{
for (decltype(blockLen) i = 0; i < blockLen; i++)
{
obuf[i] = (ibuf[i] *
( mSampleCnt - 1 - mSample++ ).as_float()) /
mSampleCnt.as_float();
}
}
return blockLen;
}