Я реализовал элементарный фильтр нижних частот, используя значение времени. Это нормально, но попытка найти правильный срез времени - это угадывать работу и дает разные результаты на основе разных входных аудиофайлов. Вот то, что я сейчас:Реализация пост-обработанного фильтра нижних частот с использованием основного звука
- (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, а не использовать срез, основанный на времени, как только var – coneybeare
ах, нормально. Оформить код, который я связал с 'C++', на самом деле очень хорошо. Он будет возвращать фильтр, основанный на частоте. –
именно то, что я искал. Удивительная находка – coneybeare