我已经使用基于时间的值实现了一个基本的低通滤波器。这没关系,但试图找到正确的时间片是猜测工作,并根据不同的输入音频文件给出不同的结果。这是我现在拥有的:
- (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 级别的代码?