![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
planer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 28.3.2005 Репутация: нет Всего: нет |
Товарищи, какой параметр используется для визуализации звука, т.е. для построения графика (например, как в винампе)?
И как мне этот параметр получить, если воспроизводить звук с помощью DirectSound/DirectShow или еще чего-нить в этом роде. Заранее благодарю. |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: нет Всего: 54 |
Очевидно, для визуализации требуется не параметр, а либо последовательный (поточечный) вывод на экран каждого значения дискреты, либо Фурье анализ.
СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: нет Всего: 164 |
Модератор: перенесено из С++: Общие вопросы
Да, т.е. ты просто приводишь значения звуковой волны к экранным координатам и выводишь по ним , точки, столбики и т.д.. --------------------
|
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: нет Всего: 54 |
только именно значения каждой дискреты
![]() СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
BBC |
|
|||
Unregistered |
Точки, соответствующие амплитудам вы то выведете, вопрос как их соединить прямыми линиями(аппроксимировать), что бы не потерять форму огибающей. Уж точно не прямыми.
|
|||
|
||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: нет Всего: 164 |
Кривые Безье? Это сообщение отредактировал(а) chipset - 29.3.2005, 19:11 --------------------
|
||||
|
|||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: нет Всего: 54 |
до аппроксимаций не дойдет, даю 100%. Вы аппруксимируя делаете лишнюю работу, т.к. выше частоты дискретизации не прыгнешь.
А соединить точечки палочками - в раздел "архиважных и архисложных задач" ![]() СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
BBC |
|
|||
Unregistered |
По-моему PILOT пишет о визуализации спектра. Тогда все нормально. А если необходимо отобразить форму сигнала, как в осциллографе,то... Выведите амплитуды например гармонического сигнала и посмотрите на то, что получится. А если еще сделать шаг между отсчетами больше единицы - для того, чтобы развернуть сигнал и получится набор точек, которые сразу же захочется соединить для нормального отображения .
|
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: нет Всего: 54 |
ВВС, я описал как вывод спектра, так и сигнал во времени.
А лишнюю работу по аппроксимации никто не делает (см. CoolEdit, SoundForge). СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
BBC |
|
|||
Unregistered |
Если кто то не видел CoolEdit рассказываю. Открываем любой файл формата Microsoft PCM, и видим точки, соответствующие значениям амплитуды, записанные в файле и соединенные чем? Разверните по шире и посмотрите. Каким образом это делается?
|
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: нет Всего: 54 |
BBC, значение(я?) амплитуды и значение дискреты разные вещи все-таки.
Зачем делать лишнюю работу по аппроксимации? Кто может гарантировать, что полученный аппроксимацией образ соответсвует действительности? А если на входе был сигнал (звук) выше частоты дискретизации (взятой к примеру 6кГц, как в телефоне)? Тогда ваш метод будет вообще некорректен. СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
planer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 28.3.2005 Репутация: нет Всего: нет |
Ну прежде всего спасибо за активное участие.
То как соединить точки - с этим я разберусь. Главная "трабла" - это как получить сами точки, т.е. как с помощью С++.net (через DirectX или еще как... я-то не знаю) получить значения амплитуды (или дискреты) проигрываемого мной файла? Причем требуется знать эти значения немного наперед (на 0,1сек; на 1сек; - это не особо важно - как получится). |
|||
|
||||
BBC |
|
|||
Unregistered |
А кто же подает на звуковую плату сигнал выше половины частоты дискретизации? Я почему активно муссирую эту тему. У меня задача наиболее точно передать форму записываемого сигнала. Например синусоиды. Отчеты амлитуды из файла я на экран вывожу, но мне неоходимо видеть огибающую полностью, причем с возможностью менять ширину развертки, как в CoolEdite. Для этого необходимо соединить каким то образом выведенные точки. Я пробовал аппроксимировать - получаю хоть и небольшие, но заметные искажения. Тут мне подсказали применить цифровой НЧ фильтр. Может кто выскажется на эту тему или подскажет алгоритм цифровой фильтрации?
planer - если приложение не открывает файл в монопольном режиме читай из файла и выводи, причем наперед хоть на минуту. А если это твое приложение то у тебе, как говорится и все флаги открытия файла в руки. |
|||
|
||||
SLAMER |
|
|||
Unregistered |
Товарищи, я понимаю все умные, а мы тупые.
Дайте пожалуйста кусок кода который читает из файла эти значения |
|||
|
||||
Guest |
|
|||
Unregistered |
SLAMER - даю куски функций, кода под рукой нет. Остальное найдешь в инете или MSDN.
CreateFile() ReadFile() CloseFile() |
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
2 Пользователей читают эту тему (2 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |