ArrayArrayArrayArrayArray BrainModular BrainModular Users Forum 2015-06-01T20:32:21+02:00 https://www.brainmodular.com/forums/app.php/feed/topic/4958 2015-06-01T20:32:21+02:00 2015-06-01T20:32:21+02:00 https://www.brainmodular.com/forums/viewtopic.php?t=4958&p=32997#p32997 <![CDATA[smooth volume change]]>
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);
}
}
}

Statistics: Posted by oli_lab — 01 Jun 2015, 20:32


]]>
2015-05-31T17:25:32+02:00 2015-05-31T17:25:32+02:00 https://www.brainmodular.com/forums/viewtopic.php?t=4958&p=32988#p32988 <![CDATA[smooth volume change]]> 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]);
}
}
}

Statistics: Posted by oli_lab — 31 May 2015, 17:25


]]>
2015-05-31T15:47:42+02:00 2015-05-31T15:47:42+02:00 https://www.brainmodular.com/forums/viewtopic.php?t=4958&p=32987#p32987 <![CDATA[smooth volume change]]>
you can found an implementation example in the onProcess of the matrix audio sources

MatrixAudio.cpp, line 765

Statistics: Posted by martignasse — 31 May 2015, 15:47


]]>
2015-05-30T22:59:12+02:00 2015-05-30T22:59:12+02:00 https://www.brainmodular.com/forums/viewtopic.php?t=4958&p=32983#p32983 <![CDATA[smooth volume change]]> Statistics: Posted by oli_lab — 30 May 2015, 22:59


]]>
2015-05-30T19:46:41+02:00 2015-05-30T19:46:41+02:00 https://www.brainmodular.com/forums/viewtopic.php?t=4958&p=32982#p32982 <![CDATA[smooth volume change]]>
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]);
}
}

Statistics: Posted by oli_lab — 30 May 2015, 19:46


]]>
BrainModular BrainModular Users Forum 2015-06-01T20:32:21+02:00 https://www.brainmodular.com/forums/app.php/feed/topic/4958 2015-06-01T20:32:21+02:00 2015-06-01T20:32:21+02:00 https://www.brainmodular.com/forums/viewtopic.php?t=4958&p=32997#p32997 <![CDATA[smooth volume change]]>
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);
}
}
}

Statistics: Posted by oli_lab — 01 Jun 2015, 20:32


]]>
2015-05-31T17:25:32+02:00 2015-05-31T17:25:32+02:00 https://www.brainmodular.com/forums/viewtopic.php?t=4958&p=32988#p32988 <![CDATA[smooth volume change]]> 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]);
}
}
}

Statistics: Posted by oli_lab — 31 May 2015, 17:25


]]>
2015-05-31T15:47:42+02:00 2015-05-31T15:47:42+02:00 https://www.brainmodular.com/forums/viewtopic.php?t=4958&p=32987#p32987 <![CDATA[smooth volume change]]>
you can found an implementation example in the onProcess of the matrix audio sources

MatrixAudio.cpp, line 765

Statistics: Posted by martignasse — 31 May 2015, 15:47


]]>
2015-05-30T22:59:12+02:00 2015-05-30T22:59:12+02:00 https://www.brainmodular.com/forums/viewtopic.php?t=4958&p=32983#p32983 <![CDATA[smooth volume change]]> Statistics: Posted by oli_lab — 30 May 2015, 22:59


]]>
2015-05-30T19:46:41+02:00 2015-05-30T19:46:41+02:00 https://www.brainmodular.com/forums/viewtopic.php?t=4958&p=32982#p32982 <![CDATA[smooth volume change]]>
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]);
}
}

Statistics: Posted by oli_lab — 30 May 2015, 19:46


]]>