我已经使用基于时间的值实现了基本的低通滤波器。可以,但是尝试找到正确的时间片是一种猜测,并且会根据不同的输入音频文件给出不同的结果。这是我现在所拥有的:
- (void)processDataWithInBuffer:(const int16_t *)buffer outBuffer:(int16_t *)outBuffer sampleCount:(int)len {
BOOL positive;
for(int i = 0; i < len; i++) {
positive = (buffer[i] >= 0);
currentFilteredValueOfSampleAmplitude = LOWPASSFILTERTIMESLICE * (float)abs(buffer[i]) + (1.0 - LOWPASSFILTERTIMESLICE) * previousFilteredValueOfSampleAmplitude;
previousFilteredValueOfSampleAmplitude = currentFilteredValueOfSampleAmplitude;
outBuffer[i] = currentFilteredValueOfSampleAmplitude * (positive ? 1 : -1);
}
}
我该怎么做才能将此代码转换为可以将某个Hz上的频率降低某个db级的代码?
最佳答案
我强烈建议numerical recipes in c。除此之外,我不确定是否能为您提供帮助。
设计滤波器时,您需要根据频率计算该滤波器的系数,因此几乎需要一个类来处理它,而不仅仅是一个函数。
这在C++中,但它应该可以帮助您入门。抱歉,我无法提供具体答案。
关于iphone - 使用核心音频实现后处理低通滤波器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4162504/