Russian Qt Forum
Май 15, 2024, 15:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: эхо фильтр  (Прочитано 3383 раз)
Firefox
Гость
« : Ноябрь 10, 2010, 15:41 »

Здравствуйте. мне нужно сделать эхо фильтр. то есть прочитать файл исходный . wav, дойти до данных и далее считав их наложить их ещё раз на себя с задержкой по времени. считала в QByteArray data1 данные, а вот как сделать сдвиг и наложить не могу понять.
Записан
kosya
Гость
« Ответ #1 : Ноябрь 29, 2011, 20:47 »

а по какому алгоритму накладывать то?
Записан
Rem Norton
Гость
« Ответ #2 : Ноябрь 30, 2011, 01:35 »

Дело было давно, но кое что еще помню. Так, для обработки wav-файла надо:

1. Вычислить нулевую точку. Тут все зависит от количества бит на семпл. Для 8 бит нулевая точка = 127, для 16 бит = 32766 и т.д.
2. Преобразовать массив беззнаковых данных в знаковые: new = old - zero.    old - то, что было в файле, zero - нулевая точка
3. Наложение 2-х и более сигналов производится путем арифметического сложения семплов: out = in1 + in2.
4. Регулировка громкости выполняется путем умножения семплов на какой-то коэффициент (<1 - еменьшить, > 1 - увеличить)

Смещение вычисляется из частоты дискретизации (есть в заголовке). Например, если частота 44100 Гц, то для смещения на 0.5 сек. надо пропустить первые 44100*0.5 = 22050 семплов и начать обработку с 22051-го.

Ну и перед выводом или записью в файл данные преобразовать обратно в беззнаковые: out += zero;

Ну как то так.

P.S. Ах да, еще момент: не упусти из виду, что семплы идут вперемешку (если стерео): правый, левый.
« Последнее редактирование: Ноябрь 30, 2011, 01:37 от Rem Norton » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 20.