реклама на сайте
подробности

 
 
> Цифровой аудио эквалайзер
Ivan55
сообщение Jan 26 2017, 11:48
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 212
Регистрация: 17-01-12
Пользователь №: 69 640



Добрый день!
Ищу инфу по реализации аудио эквалайзера, если у кого то есть что то интересное скиньте пожалуйста
Видел как их делают через БИХ фильтр, но там коэфициенты фильтра нужно пересчитывать в зависимости
от частоты дискретизации(если файл 48кГц или 44,1кГц и т.д.), а также необходимого усиления или ослабления

Может у кого есть инфа как это делать через Фурье

Буду благодарен за любую инфу
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DASM
сообщение Jan 27 2017, 07:46
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Ничего не понял. Я делаю IFFT от АЧХ нужной, и получаю тут же коэффициенты КИХ такого. Или вопрос как сменить Fds ? Так это отдельный совершенно вопрос и не очень простой
Go to the top of the page
 
+Quote Post
stealth-coder
сообщение Jan 29 2017, 11:26
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 112
Регистрация: 27-12-08
Пользователь №: 42 786



Цитата(DASM @ Jan 27 2017, 10:46) *
Ничего не понял. Я делаю IFFT от АЧХ нужной, и получаю тут же коэффициенты КИХ такого. Или вопрос как сменить Fds ? Так это отдельный совершенно вопрос и не очень простой


Простейший вариант реализации эквалайзера (вычисление коэффициентов КИХ фильтра для заданной АЧХ):
Предположим, у Вас частота дискретизации 48 кГц, длина линии задержки фильтра 128 отсчетов. Для расчета фильтра нужно:
1. требуемую АЧХ зеркалировать (т.е. относительно нулевой частоты АЧХ должна быть зеркально идентична, преобразование Фурье работает с комплексными числами, зеркальная идентичность даст нулевые значения мнимой составляющей после обратного преобразования Фурье, поэтому фильтр будет иметь только вещественные коэффициенты и позволит обработать звуковые отсчеты, которые тоже чисто вещественные).
2. максимальное значение АЧХ по частоте - половина частоты дискретизации, т.е. в нашем примере от -24 кГц до +24 кГц.
3. полученную АЧХ дискретизируете по частоте на 128 точек, все точки должны быть равноудалены от соседей справа и слева
4. в полученных по частоте точках берете амплитуду, при необходимости квантуете, т.е. выставляете по разрядной сетке.
Теперь имеете набор из 128 комплексных значений, где вещественная часть - частота (в нашем примере от -64 до +63, но не кГц, это индексы позиций бинов ПФ!), мнимая - амплитуда (кстати, обычно амплитуду в аудиоэквалайзерах рисуют на логарифмической шкале, потребуется пересчитать децибелы в разы).
Полученный массив подвергаете обратному преобразованию Фурье и получаете коэффициенты фильтра (если АЧХ построили симметрично, то мнимые составляющие будут равны нулю и их можно отбросить). При необходимости можно отнормировать коэффициенты фильтра так, чтобы в сумме они давали 1 (или иное требуемое значение согласно разрядной сетке, например, если разрядность аудиоотсчетов 16 бит (15 значащих, 1 знаковый), то коэффициенты фильтра в сумме должны давать 32767 (2 в 15 степени минус 1). Простейший эквалайзер готов!

Если меняется частота дискретизации, то меняются максимальные значения по частоте (для 44.1 кГц будет от -22.05 до 22.05), соответственно, расстояние между точками дискретизированной по частоте АЧХ будет меньше.

Длина фильтра в общем случае может быть не степенью двойки, это потребует только лишь отказаться от быстрого преобразования Фурье или использовать специальные версии БПФ для требуемого числа точек, дискретное преобразование Фурье, посчитанное "в лоб", позволит строить фильтры на любое количество точек.
Go to the top of the page
 
+Quote Post
DASM
сообщение Feb 5 2017, 00:04
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата(stealth-coder @ Jan 29 2017, 14:26) *
Простейший вариант реализации эквалайзера (вычисление коэффициентов КИХ фильтра для заданной АЧХ):
Предположим, у Вас частота дискретизации 48 кГц, длина линии задержки фильтра 128 отсчетов. Для расчета фильтра нужно:
1. требуемую АЧХ зеркалировать (т.е. относительно нулевой частоты АЧХ должна быть зеркально идентична, преобразование Фурье работает с комплексными числами, зеркальная идентичность даст нулевые значения мнимой составляющей после обратного преобразования Фурье, поэтому фильтр будет иметь только вещественные коэффициенты и позволит обработать звуковые отсчеты, которые тоже чисто вещественные).
2. максимальное значение АЧХ по частоте - половина частоты дискретизации, т.е. в нашем примере от -24 кГц до +24 кГц.
3. полученную АЧХ дискретизируете по частоте на 128 точек, все точки должны быть равноудалены от соседей справа и слева
4. в полученных по частоте точках берете амплитуду, при необходимости квантуете, т.е. выставляете по разрядной сетке.
Теперь имеете набор из 128 комплексных значений, где вещественная часть - частота (в нашем примере от -64 до +63, но не кГц, это индексы позиций бинов ПФ!), мнимая - амплитуда (кстати, обычно амплитуду в аудиоэквалайзерах рисуют на логарифмической шкале, потребуется пересчитать децибелы в разы).
Полученный массив подвергаете обратному преобразованию Фурье и получаете коэффициенты фильтра (если АЧХ построили симметрично, то мнимые составляющие будут равны нулю и их можно отбросить). При необходимости можно отнормировать коэффициенты фильтра так, чтобы в сумме они давали 1 (или иное требуемое значение согласно разрядной сетке, например, если разрядность аудиоотсчетов 16 бит (15 значащих, 1 знаковый), то коэффициенты фильтра в сумме должны давать 32767 (2 в 15 степени минус 1). Простейший эквалайзер готов!

Если меняется частота дискретизации, то меняются максимальные значения по частоте (для 44.1 кГц будет от -22.05 до 22.05), соответственно, расстояние между точками дискретизированной по частоте АЧХ будет меньше.

Длина фильтра в общем случае может быть не степенью двойки, это потребует только лишь отказаться от быстрого преобразования Фурье или использовать специальные версии БПФ для требуемого числа точек, дискретное преобразование Фурье, посчитанное "в лоб", позволит строить фильтры на любое количество точек.

Ну как бы это не мне ответ наверное.. У меня немного сложнее оно, с фазовым эквалайзером, но суть точно такая же.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Ivan55   Цифровой аудио эквалайзер   Jan 26 2017, 11:48
- - petrov   https://electronix.ru/forum/index.php?s=&am...st...   Jan 26 2017, 16:49
|- - MSP430F   Сам задавался этим вопросом, правда, чисто из любо...   Jan 27 2017, 08:02
|- - DASM   Цитата(MSP430F @ Jan 27 2017, 11:02) Сам ...   Jan 27 2017, 13:47
|- - AlexandrY   Цитата(DASM @ Jan 27 2017, 15:47) Да сдал...   Feb 5 2017, 08:53
|- - petrov   Цитата(AlexandrY @ Feb 5 2017, 11:53) КИХ...   Feb 5 2017, 13:11
|- - DASM   Цитата(AlexandrY @ Feb 5 2017, 11:53) КИХ...   Feb 6 2017, 08:09
|- - AlexandrY   Цитата(DASM @ Feb 6 2017, 10:09) А какой ...   Feb 6 2017, 09:09
||- - DASM   Цитата(AlexandrY @ Feb 6 2017, 12:09) Вот...   Feb 6 2017, 10:45
||- - petrov   Цитата(DASM @ Feb 6 2017, 13:45) Ну и кто...   Feb 6 2017, 10:52
|||- - DASM   Цитата(petrov @ Feb 6 2017, 13:52) Амплит...   Feb 6 2017, 11:40
||- - AlexandrY   Цитата(DASM @ Feb 6 2017, 12:45) У меня п...   Feb 6 2017, 11:44
||- - DASM   Цитата(AlexandrY @ Feb 6 2017, 14:44) Хор...   Feb 6 2017, 11:48
|- - petrov   Цитата(DASM @ Feb 6 2017, 11:09) Я не пон...   Feb 6 2017, 09:36
|- - BratherLU   http://www.dsplib.ru/content/allpasseq/allpasseq.h...   Jan 30 2017, 05:45
- - thermit   http://www.rane.com/library.html   Jan 27 2017, 15:01
- - Mister_DSP   Может не в тему, но может интересно готовое решени...   Feb 5 2017, 11:17


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 16:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01455 секунд с 7
ELECTRONIX ©2004-2016