Russian Qt Forum
Ноябрь 23, 2024, 01:00
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Алгоритмы
>
эхо фильтр
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: эхо фильтр (Прочитано 3476 раз)
Firefox
Гость
эхо фильтр
«
:
Ноябрь 10, 2010, 15:41 »
Здравствуйте. мне нужно сделать эхо фильтр. то есть прочитать файл исходный . wav, дойти до данных и далее считав их наложить их ещё раз на себя с задержкой по времени. считала в QByteArray data1 данные, а вот как сделать сдвиг и наложить не могу понять.
Записан
kosya
Гость
Re: эхо фильтр
«
Ответ #1 :
Ноябрь 29, 2011, 20:47 »
а по какому алгоритму накладывать то?
Записан
Rem Norton
Гость
Re: эхо фильтр
«
Ответ #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
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...