📄 interspectrum.c
字号:
for (loop0 = 0; loop0 < SPECTRUM_LINE_M - 10; loop0++)//前面10根谱线能量取2根为一组原值,每组跨度344.5=2×172.33hz,频率范围为0hz-3445hz
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++];
Spectrum_gLinePow[loop0] = (unsigned short)((powsum / 2.0) * (1.0 * SPECTRUM_DBLEVEL_N / SPECTRUM_DBLEVEL_46));
}
for (;loop0 < SPECTRUM_LINE_M;loop0++)//3445Hz后的10谱线是以4个为一组取平均值算1根,间隔为689.1hz=172.3*4,范围3445hz-10338hz
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] +
SpectrumLineDBBuf[loop1++];
Spectrum_gLinePow[loop0] = (unsigned short)((powsum / 4.0) * (1.0 * SPECTRUM_DBLEVEL_N / SPECTRUM_DBLEVEL_46));
}
#endif
loop1 = 0 ;
for (loop0 = 0; loop0 < SPECTRUM_LINE_M - 10; loop0++)//前面10根谱线能量取2根为一组原值,每组跨度344.5=2×172.33hz,频率范围为0hz-3445hz
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++];
powsum = (unsigned short)(powsum / 2.0);
spectrumdbnumber = 0;
while ((powsum >= spectrumdbtable[spectrumdbnumber]) && (spectrumdbnumber < 21))//通过查表求解db序号
{
spectrumdbnumber++;
}
Spectrum_gLinePow[loop0] = (unsigned short)spectrumdbnumber;
}
for (;loop0 < SPECTRUM_LINE_M;loop0++)//3445Hz后的10谱线是以4个为一组取平均值算1根,间隔为689.1hz=172.3*4,范围3445hz-10338hz
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] +
SpectrumLineDBBuf[loop1++];
powsum = (unsigned short)(powsum / 4.0);
spectrumdbnumber = 0;
while ((powsum >= spectrumdbtable[spectrumdbnumber]) && (spectrumdbnumber < 21))//通过查表求解db序号
{
spectrumdbnumber++;
}
Spectrum_gLinePow[loop0] = (unsigned short)spectrumdbnumber;
}
break;
case 16000:
#if 0
loop1 = 0 ;
for (loop0 = 0; loop0 < SPECTRUM_LINE_M - 10; loop0++)//前面10根谱线能量取2根为一组原值,每组跨度250=2×125hz,频率范围为0hz-2500hz
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++];
Spectrum_gLinePow[loop0] = (unsigned short)((powsum / 2.0) * (1.0 * SPECTRUM_DBLEVEL_N / SPECTRUM_DBLEVEL_46));
}
for (;loop0 < SPECTRUM_LINE_M;loop0++)//2500Hz后的10谱线是以4个为一组取平均值算1根,间隔为500hz=125*4,范围2500hz-7500hz
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] +
SpectrumLineDBBuf[loop1++];
Spectrum_gLinePow[loop0] = (unsigned short)((powsum / 4.0) * (1.0 * SPECTRUM_DBLEVEL_N / SPECTRUM_DBLEVEL_46));
}
#endif
loop1 = 0 ;
for (loop0 = 0; loop0 < SPECTRUM_LINE_M - 10; loop0++)//前面10根谱线能量取2根为一组原值,每组跨度250=2×125hz,频率范围为0hz-2500hz
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++];
powsum = (unsigned short)(powsum / 2.0);
spectrumdbnumber = 0;
while ((powsum >= spectrumdbtable[spectrumdbnumber]) && (spectrumdbnumber < 21))//通过查表求解db序号
{
spectrumdbnumber++;
}
Spectrum_gLinePow[loop0] = (unsigned short)spectrumdbnumber;
}
for (;loop0 < SPECTRUM_LINE_M;loop0++)//2500Hz后的10谱线是以4个为一组取平均值算1根,间隔为500hz=125*4,范围2500hz-7500hz
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] +
SpectrumLineDBBuf[loop1++];
powsum = (unsigned short)(powsum / 4.0);
spectrumdbnumber = 0;
while ((powsum >= spectrumdbtable[spectrumdbnumber]) && (spectrumdbnumber < 21))//通过查表求解db序号
{
spectrumdbnumber++;
}
Spectrum_gLinePow[loop0] = (unsigned short)spectrumdbnumber;
}
break;
case 12000:
#if 0
loop1 = 0 ;
for (loop0 = 0; loop0 < SPECTRUM_LINE_M - 10; loop0++)//前面10根谱线能量取4根为一组原值,每组跨度375=4×93.75hz,频率范围为0hz-3750hz
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] +
SpectrumLineDBBuf[loop1++];
Spectrum_gLinePow[loop0] = (unsigned short)((powsum / 4.0) * (1.0 * SPECTRUM_DBLEVEL_N / SPECTRUM_DBLEVEL_46));
}
for (;loop0 < SPECTRUM_LINE_M;loop0++)//3750Hz后的10谱线是以2个为一组取平均值算1根,间隔为187.5hz=93.75*2
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++];
Spectrum_gLinePow[loop0] = (unsigned short)((powsum / 2.0) * (1.0 * SPECTRUM_DBLEVEL_N / SPECTRUM_DBLEVEL_46));
}
#endif
loop1 = 0 ;
for (loop0 = 0; loop0 < SPECTRUM_LINE_M - 10; loop0++)//前面10根谱线能量取4根为一组原值,每组跨度375=4×93.75hz,频率范围为0hz-3750hz
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] +
SpectrumLineDBBuf[loop1++];
powsum = (unsigned short)(powsum / 4.0);
spectrumdbnumber = 0;
while ((powsum >= spectrumdbtable[spectrumdbnumber]) && (spectrumdbnumber < 21))//通过查表求解db序号
{
spectrumdbnumber++;
}
Spectrum_gLinePow[loop0] = (unsigned short)spectrumdbnumber;
}
for (;loop0 < SPECTRUM_LINE_M;loop0++)//3750Hz后的10谱线是以2个为一组取平均值算1根,间隔为187.5hz=93.75*2
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++];
powsum = (unsigned short)(powsum / 2.0);
spectrumdbnumber = 0;
while ((powsum >= spectrumdbtable[spectrumdbnumber]) && (spectrumdbnumber < 21))//通过查表求解db序号
{
spectrumdbnumber++;
}
Spectrum_gLinePow[loop0] = (unsigned short)spectrumdbnumber;
}
break;
case 11025:
#if 0
loop1 = 0 ;
for (loop0 = 0; loop0 < SPECTRUM_LINE_M - 10; loop0++)//前面10根谱线能量取4根为一组原值,每组跨度344.5=4×86.2hz,频率范围为0hz-3445hz
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] +
SpectrumLineDBBuf[loop1++];
Spectrum_gLinePow[loop0] = (unsigned short)((powsum / 4.0) * (1.0 * SPECTRUM_DBLEVEL_N / SPECTRUM_DBLEVEL_46));
}
for (;loop0 < SPECTRUM_LINE_M;loop0++)//3445Hz后的10谱线是以2个为一组取平均值算1根,间隔为172.4hz=86.2*2
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++];
Spectrum_gLinePow[loop0] = (unsigned short)((powsum / 2.0) * (1.0 * SPECTRUM_DBLEVEL_N / SPECTRUM_DBLEVEL_46));
}
#endif
loop1 = 0 ;
for (loop0 = 0; loop0 < SPECTRUM_LINE_M - 10; loop0++)//前面10根谱线能量取4根为一组原值,每组跨度344.5=4×86.2hz,频率范围为0hz-3445hz
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] +
SpectrumLineDBBuf[loop1++];
powsum = (unsigned short)(powsum / 4.0);
spectrumdbnumber = 0;
while ((powsum >= spectrumdbtable[spectrumdbnumber]) && (spectrumdbnumber < 21))//通过查表求解db序号
{
spectrumdbnumber++;
}
Spectrum_gLinePow[loop0] = (unsigned short)spectrumdbnumber;
}
for (;loop0 < SPECTRUM_LINE_M;loop0++)//3445Hz后的10谱线是以2个为一组取平均值算1根,间隔为172.4hz=86.2*2
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++];
powsum = (unsigned short)(powsum / 2.0);
spectrumdbnumber = 0;
while ((powsum >= spectrumdbtable[spectrumdbnumber]) && (spectrumdbnumber < 21))//通过查表求解db序号
{
spectrumdbnumber++;
}
Spectrum_gLinePow[loop0] = (unsigned short)spectrumdbnumber;
}
break;
case 8000:
#if 0
loop1 = 0 ;
for (loop0 = 0; loop0 < SPECTRUM_LINE_M - 10; loop0++)//前面10根谱线能量取4根为一组原值,每组跨度2500=4×625hz,频率范围为0hz-2500hz
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] +
SpectrumLineDBBuf[loop1++];
Spectrum_gLinePow[loop0] = (unsigned short)((powsum / 4.0) * (1.0 * SPECTRUM_DBLEVEL_N / SPECTRUM_DBLEVEL_46));
}
for (;loop0 < SPECTRUM_LINE_M;loop0++)//2500Hz后的10谱线是以2个为一组取平均值算1根,间隔为125hz=62.5*2
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++];
Spectrum_gLinePow[loop0] = (unsigned short)((powsum / 2.0) * (1.0 * SPECTRUM_DBLEVEL_N / SPECTRUM_DBLEVEL_46));
}
#endif
loop1 = 0 ;
for (loop0 = 0; loop0 < SPECTRUM_LINE_M - 10; loop0++)//前面10根谱线能量取4根为一组原值,每组跨度2500=4×625hz,频率范围为0hz-2500hz
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++] +
SpectrumLineDBBuf[loop1++];
powsum = (unsigned short)(powsum / 4.0);
spectrumdbnumber = 0;
while ((powsum >= spectrumdbtable[spectrumdbnumber]) && (spectrumdbnumber < 21))//通过查表求解db序号
{
spectrumdbnumber++;
}
Spectrum_gLinePow[loop0] = (unsigned short)spectrumdbnumber;
}
for (;loop0 < SPECTRUM_LINE_M;loop0++)//2500Hz后的10谱线是以2个为一组取平均值算1根,间隔为125hz=62.5*2
{
powsum = SpectrumLineDBBuf[loop1++] + SpectrumLineDBBuf[loop1++];
powsum = (unsigned short)(powsum / 2.0);
spectrumdbnumber = 0;
while ((powsum >= spectrumdbtable[spectrumdbnumber]) && (spectrumdbnumber < 21))//通过查表求解db序号
{
spectrumdbnumber++;
}
Spectrum_gLinePow[loop0] = (unsigned short)spectrumdbnumber;
}
break;
default://samprate>48000&samplerate<8000
break;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -