is this is the right fonction to smooth volume changes ?
void sdkSmoothEvent (TPrecision &oldValue, UsineEventPtr currentEvent, TPrecision target, TPrecision factor)
is someone has a working example ?
I want to use it on the volume series I did few weeks ago.
I think I should put it on top, to have it process only once each time all the audio channel are processed
am I right ?
void AudioVolumeDCblock::onProcess ()
{
sdkSmoothEvent(m_smoothOldCoeff, m_tevtSmoothCurrentCoeff, coeffGain, SMOOTH_FAST);
for (int i = 0; i < numOfAudiotInsOuts; i++)
{
sdkCopyEvt(audioInputs, audioOutputs);
for (int j = 0; j < sdkGetEvtSize(audioOutputs); j++)
{
audioOutputsM1 = 0.995f*audioOutputsM1 - audioInputsM1 + sdkGetEvtArrayData(audioInputs, j);
sdkSetEvtArrayData(audioOutputs, j, audioOutputsM1);
audioInputsM1 = sdkGetEvtArrayData(audioInputs[i], j);
//y = x - xm1 + 0.995 * ym1;
//xm1 = x;
//ym1 = y;
}
sdkMultEvt2Audio(m_tevtSmoothCurrentCoeff, audioOutputs[i]);
}
}
smooth volume change
http://oli-lab.org
Win11 Ryzen9/32GB RAM - RME MADIFACE - SSL alpha link 4-16 - OSC capable interfaces
follow OLI_LAB adventures on Mastodon
@olivar_premier@mastodon.social
Win11 Ryzen9/32GB RAM - RME MADIFACE - SSL alpha link 4-16 - OSC capable interfaces
follow OLI_LAB adventures on Mastodon
@olivar_premier@mastodon.social
does not work : I get an "on process" error
http://oli-lab.org
Win11 Ryzen9/32GB RAM - RME MADIFACE - SSL alpha link 4-16 - OSC capable interfaces
follow OLI_LAB adventures on Mastodon
@olivar_premier@mastodon.social
Win11 Ryzen9/32GB RAM - RME MADIFACE - SSL alpha link 4-16 - OSC capable interfaces
follow OLI_LAB adventures on Mastodon
@olivar_premier@mastodon.social
-
martignasse
- Site Admin
- Posts: 611
- Location: Lyon, FRANCE
- Contact:
hi oli_lab,
you can found an implementation example in the onProcess of the matrix audio sources
MatrixAudio.cpp, line 765
you can found an implementation example in the onProcess of the matrix audio sources
MatrixAudio.cpp, line 765
Martin FLEURENT - Usine Developer - SDK maintainer
765 ?
I tried few over things but I still amazed at the speed I get lost !
as soon as coeffgain is >0 I get a massive "on process"error
void AudioVolumeDCblock::onProcess ()
{
//sdkSmoothEvent(m_smoothOldCoeff, m_tevtSmoothCurrentCoeff, coeffGain, SMOOTH_SLOW);
for (int i = 0; i < numOfAudiotInsOuts; i++)
{
sdkCopyEvt(audioInputs, audioOutputs);
//sdkClearAudioEvt(audioOutputs);
for (int j = 0; j < sdkGetEvtSize(audioOutputs); j++)
{
audioOutputsM1 = 0.995f*audioOutputsM1 - audioInputsM1 + sdkGetEvtArrayData(audioInputs, j);
sdkSetEvtArrayData(audioOutputs, j, audioOutputsM1);
audioInputsM1[i] = sdkGetEvtArrayData(audioInputs[i], j);
//y = x - xm1 + 0.995 * ym1;
//xm1 = x;
//ym1 = y;
}
//sdkMultEvt1(coeffGain, audioOutputs[i]);
if ((coeffGain > 0) || (m_smoothOldCoeff[i] > 0.0f)) //
{
float tmp = std::pow(coeffGain, 4.0f);
sdkSmoothEvent(m_smoothOldCoeff[i], m_tevtSmoothCurrentCoeff[i], tmp, SMOOTH_SLOW);
//sdkMultEvt2Audio(m_tevtSmoothCurrentCoeff[i], audioOutputs[i]);
//sdkMultEvt2Audio(m_tevtSmoothCurrentCoeff[i], m_tevtAudioMixBuffer);
sdkMultEvt2Audio(m_tevtSmoothCurrentCoeff[i], audioOutputs[i]);
//sdkAddEvt2(m_tevtAudioMixBuffer, audioOutputs[i]);
}
}
}
I tried few over things but I still amazed at the speed I get lost !
as soon as coeffgain is >0 I get a massive "on process"error
void AudioVolumeDCblock::onProcess ()
{
//sdkSmoothEvent(m_smoothOldCoeff, m_tevtSmoothCurrentCoeff, coeffGain, SMOOTH_SLOW);
for (int i = 0; i < numOfAudiotInsOuts; i++)
{
sdkCopyEvt(audioInputs, audioOutputs);
//sdkClearAudioEvt(audioOutputs);
for (int j = 0; j < sdkGetEvtSize(audioOutputs); j++)
{
audioOutputsM1 = 0.995f*audioOutputsM1 - audioInputsM1 + sdkGetEvtArrayData(audioInputs, j);
sdkSetEvtArrayData(audioOutputs, j, audioOutputsM1);
audioInputsM1[i] = sdkGetEvtArrayData(audioInputs[i], j);
//y = x - xm1 + 0.995 * ym1;
//xm1 = x;
//ym1 = y;
}
//sdkMultEvt1(coeffGain, audioOutputs[i]);
if ((coeffGain > 0) || (m_smoothOldCoeff[i] > 0.0f)) //
{
float tmp = std::pow(coeffGain, 4.0f);
sdkSmoothEvent(m_smoothOldCoeff[i], m_tevtSmoothCurrentCoeff[i], tmp, SMOOTH_SLOW);
//sdkMultEvt2Audio(m_tevtSmoothCurrentCoeff[i], audioOutputs[i]);
//sdkMultEvt2Audio(m_tevtSmoothCurrentCoeff[i], m_tevtAudioMixBuffer);
sdkMultEvt2Audio(m_tevtSmoothCurrentCoeff[i], audioOutputs[i]);
//sdkAddEvt2(m_tevtAudioMixBuffer, audioOutputs[i]);
}
}
}
http://oli-lab.org
Win11 Ryzen9/32GB RAM - RME MADIFACE - SSL alpha link 4-16 - OSC capable interfaces
follow OLI_LAB adventures on Mastodon
@olivar_premier@mastodon.social
Win11 Ryzen9/32GB RAM - RME MADIFACE - SSL alpha link 4-16 - OSC capable interfaces
follow OLI_LAB adventures on Mastodon
@olivar_premier@mastodon.social
YEAHAAAAA I finally made it !
did that :
//-------------------------------------------------------------------------
// module constructors/destructors
//-------------------------------------------------------------------------
// constructor
AudioVolumeExample::AudioVolumeExample()
: coeffGain (1)
{
// audio smooth
m_tevtSmoothCurrentCoeff = NULL;
}
// destructor
AudioVolumeExample::~AudioVolumeExample()
{
if (m_tevtSmoothCurrentCoeff != NULL)
sdkDestroyEvt(m_tevtSmoothCurrentCoeff);
}
...
// Called after the query popup
void AudioVolumeExample::onAfterQuery (MasterInfo* pMasterInfo, ModuleInfo* pModuleInfo, int queryIndex)
{
sdkCreateEvt(m_tevtSmoothCurrentCoeff, pMasterInfo->BlocSize);
}
{
sdkSmoothEvent(m_smoothOldCoeff, m_tevtSmoothCurrentCoeff, coeffGain , SMOOTH_SLOW);
for (int i = 0; i < numOfAudiotInsOuts; i++)
{
sdkCopyEvt (audioInputs, audioOutputs);
if ((coeffGain > 0) || (m_smoothOldCoeff > 0.0f)) //
{
sdkMultEvt2Audio(m_tevtSmoothCurrentCoeff, audioOutputs);
}
//y = x / (1 + | x | ) softclipping formula
for (int j = 0; j < sdkGetEvtSize(audioOutputs); j++)
{
tempValue = sdkGetEvtArrayData(audioOutputs, j) / (1.1f + abs(sdkGetEvtArrayData(audioOutputs, j)));
sdkSetEvtArrayData(audioOutputs, j, tempValue);
}
}
}
did that :
//-------------------------------------------------------------------------
// module constructors/destructors
//-------------------------------------------------------------------------
// constructor
AudioVolumeExample::AudioVolumeExample()
: coeffGain (1)
{
// audio smooth
m_tevtSmoothCurrentCoeff = NULL;
}
// destructor
AudioVolumeExample::~AudioVolumeExample()
{
if (m_tevtSmoothCurrentCoeff != NULL)
sdkDestroyEvt(m_tevtSmoothCurrentCoeff);
}
...
// Called after the query popup
void AudioVolumeExample::onAfterQuery (MasterInfo* pMasterInfo, ModuleInfo* pModuleInfo, int queryIndex)
{
sdkCreateEvt(m_tevtSmoothCurrentCoeff, pMasterInfo->BlocSize);
}
{
sdkSmoothEvent(m_smoothOldCoeff, m_tevtSmoothCurrentCoeff, coeffGain , SMOOTH_SLOW);
for (int i = 0; i < numOfAudiotInsOuts; i++)
{
sdkCopyEvt (audioInputs, audioOutputs);
if ((coeffGain > 0) || (m_smoothOldCoeff > 0.0f)) //
{
sdkMultEvt2Audio(m_tevtSmoothCurrentCoeff, audioOutputs);
}
//y = x / (1 + | x | ) softclipping formula
for (int j = 0; j < sdkGetEvtSize(audioOutputs); j++)
{
tempValue = sdkGetEvtArrayData(audioOutputs, j) / (1.1f + abs(sdkGetEvtArrayData(audioOutputs, j)));
sdkSetEvtArrayData(audioOutputs, j, tempValue);
}
}
}
http://oli-lab.org
Win11 Ryzen9/32GB RAM - RME MADIFACE - SSL alpha link 4-16 - OSC capable interfaces
follow OLI_LAB adventures on Mastodon
@olivar_premier@mastodon.social
Win11 Ryzen9/32GB RAM - RME MADIFACE - SSL alpha link 4-16 - OSC capable interfaces
follow OLI_LAB adventures on Mastodon
@olivar_premier@mastodon.social
Who is online
Users browsing this forum: No registered users and 112 guests
