Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 跨平台库以规范化音频?_C++_Audio - Fatal编程技术网

C++ 跨平台库以规范化音频?

C++ 跨平台库以规范化音频?,c++,audio,C++,Audio,你知道我可以使用哪个跨平台音频库来规范化采样音频吗?谷歌是你的朋友: 如果你不能在你的项目中使用GPL代码,那么只需阅读第二个网站上的算法描述并实现你自己的。这非常简单。规范化是一个简单的过程。这是floats的一个简单实现: float peakAmplitude(0.0f); /* find the peak */ for (size_t idx(0); idx < bufferLength; ++idx) { peakAmplitude = std::max(peakA

你知道我可以使用哪个跨平台音频库来规范化采样音频吗?

谷歌是你的朋友:


如果你不能在你的项目中使用GPL代码,那么只需阅读第二个网站上的算法描述并实现你自己的。这非常简单。

规范化是一个简单的过程。这是
float
s的一个简单实现:

float peakAmplitude(0.0f);

/* find the peak */
for (size_t idx(0); idx < bufferLength; ++idx) {
    peakAmplitude = std::max(peakAmplitude, std::fabs(buffer[idx]));
}

if (0.0f >= peakAmplitude) {
    std::cout << "signal is silent\n";
    return;
}

/* apply normalization */
const float mul(1.0f / peakAmplitude);
for (size_t idx(0); idx < bufferLength; ++idx) {
    buffer[idx] *= mul;
}
float-peakAmplitude(0.0f);
/*找到顶峰*/
用于(大小\u t idx(0);idx=峰值功率){

std::可能很简单,除非你想标准化感知响度。@derobert上述书写风格的rms标准化实现需要多行代码。没错,但那不是感知响度。人类听觉系统听不到所有频率,所以感知响度要困难得多。参见,例如,如果y如果你认为OP需要澄清,请随时向OP询问。在我的阵营中,峰值正常化是默认设置,所以我就是这样回答的。