時間ベースの値を使用して、基本的なローパスフィルターを実装しました。これは問題ありませんが、正しいタイムスライスを見つけようとするのは推測作業であり、さまざまな入力オーディオファイルに基づいてさまざまな結果が得られます。これが私が今持っているものです:
- (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);
}
}
このコードを特定のdBレベルで特定のHz以上の周波数をカットできるコードに変換するにはどうすればよいですか?