本文整理汇总了C++中WaveFile::GetOOR方法的典型用法代码示例。如果您正苦于以下问题:C++ WaveFile::GetOOR方法的具体用法?C++ WaveFile::GetOOR怎么用?C++ WaveFile::GetOOR使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WaveFile
的用法示例。
在下文中一共展示了WaveFile::GetOOR方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
//.........这里部分代码省略.........
}
break;
case 2:
if (--susTimeCR <= 0)
envState = 3;
break;
case 3:
if ((volume -= decIncrCR) <= 0)
{
volume = 0;
envState = 4;
}
break;
}
wf.Output1(volume * volume * sinv(phase)); // convex curve
//wf.Output1(volume * sinv(phase)); // linear
if ((phase += phaseIncr) >= twoPI)
phase -= twoPI;
}
for (n = 0; n < silence; n++)
wf.Output1(0);
/////////////////////////////////////////////////
// Method 5 - constant rate ADSR, transformed
/////////////////////////////////////////////////
float envTblLen = 960; // 96 dB range
float envTblNdx = 0;
float atkTblCR[960];
float decTblCR[960];
atkTblCR[0] = 0.0;
decTblCR[0] = 0.0;
for (n = 1; n < envTblLen; n++)
{
volume = pow(10, (double)(959 - n) / -200.0);
atkTblCR[n] = volume;
decTblCR[n] = volume;
}
sustainAmpCR = 0.5;
atkIncrCR = 960.0 / (atkTimeCR * synthParams.sampleRate);
decIncrCR = 960.0 / (decTimeCR * synthParams.sampleRate);
relIncrCR = 960.0 / (relTimeCR * synthParams.sampleRate);
susTimeCR = totalSamples - ((relTimeCR * synthParams.sampleRate) * sustainAmpCR);
phase = 0;
volume = 0;
envState = 0;
for (n = 0; n < totalSamples; n++)
{
switch (envState)
{
case 0:
if ((envTblNdx += atkIncrCR) >= envTblLen)
{
envTblNdx = envTblLen-1;
envState = 1;
}
volume = atkTblCR[(int)envTblNdx];
break;
case 1:
if ((envTblNdx -= decIncrCR) < 0)
envTblNdx = 0;
volume = decTblCR[(int)envTblNdx];
if (volume <= sustainAmpCR)
{
volume = sustainAmpCR;
envState = 2;
susTimeCR = totalSamples - n - ((relTimeCR * synthParams.sampleRate) * sustainAmpCR);
}
break;
case 2:
if (--susTimeCR <= 0)
envState = 3;
break;
case 3:
if ((envTblNdx -= decIncrCR) <= 0)
{
envTblNdx = 0;
envState = 4;
}
volume = decTblCR[(int)envTblNdx];
break;
}
wf.Output1(volume * sinv(phase));
if ((phase += phaseIncr) >= twoPI)
phase -= twoPI;
}
for (n = 0; n < silence; n++)
wf.Output1(0);
wf.CloseWaveFile();
int oor = wf.GetOOR();
if (oor)
printf("%d Samples out of range...\n", oor);
return 0;
}