![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
Guest |
|
|||
Unregistered |
Хотя CloseFile() погорячился, правильно CloseHandle()
|
|||
|
||||
planer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 28.3.2005 Репутация: нет Всего: нет |
BBC
Файл нормально открывается. Проблема заключается в том как именно извлечь из него информацию об амплитуде сигнала в конкретный момент времени. Объясните пожалуйста кто-нибудь популярно, как извлечь из файла (например из D:\1.mp3) амплитуду сигнала в конкретный момент времени. Приведите конкретный пример, а там уж я думаю, я разберусь. |
|||
|
||||
BBC |
|
|||
Unregistered |
Из mp3 по-моему никак. Из wav без проблем указанным выше способом. На сколько я знаю плеер mp3 переводит звук сначала в wav (Microsoft PCM) а потом кидает на звуковуху. Вот там он амплитуды для визуализации и достает.
|
|||
|
||||
PILOT |
|
||||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: нет Всего: 54 |
Ты и подаешь... любой подает, когда записывает, но то что выше половины частоты дискретизации "уходит в гудок". СУВ. Добавлено @ 19:21
Собственно, метод скользящей медианы (заданной степени вложенности)... и иже с ними... СУВ. -------------------- тут могла быть Ваша реклама... |
||||
|
|||||
Guest |
|
|||
Unregistered |
А это еще что за зверь? Можно по подробнее? И этот метод точно воспроизведет огибающую или с каким то приближением? |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: нет Всего: 54 |
Это фильтр высоких частот...
![]() СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
Guest |
|
|||
Unregistered |
По моему ты хотел сказать нижних. Частота среза половина частоты дискретизациии.
Вот это я завтра и попробую. А метод скользящей медианы, я уже прочитал - "Сглаживание скользящей медианой позволяет удалить отдельные пиковые выбросы" , а мне их надо максимально точно отобразить. |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: нет Всего: 54 |
Тогда дифференцируй, получишь фильтр НЧ, а скользящая медиана это фильтр ВЧ (потому что почти интеграл).
СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
planer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 28.3.2005 Репутация: нет Всего: нет |
BBC и остальные
а как хотя бы из wav файлов получать амплитуду? Хотябы функции скажите, а еще лучше приведите кусок кода. |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: нет Всего: 54 |
planer,
поиском не пробовал? http://graphics.cs.msu.ru/courses/cg02b/as...elp/wavfmt2.htm http://www.win98.ru/manual/programming/Vis.../waveformat.htm http://www.codenet.ru/progr/audio/sbprot.php#part_3 СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
BBC |
|
|||
Unregistered |
Ну с интегралом конечно не поспоришь, но при чем здесь фильтр ВЧ? Мне что низшие гармоники отфильтровывать надо? Сглаживает как раз фильтр НЧ, за счет удаления высших гармоник. Ты сам то "Сглаживание скользящей медианой" делал?
|
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: нет Всего: 54 |
Хм...что-то ты совсем запутался...
Для того чтобы убрать ВЧ составляющую используй метод скользящей медианы (сумма нескольких последних значений деленная на кол-во просуммированых элементов), для того, чтобы убрать НЧ составляющую используй дифференцирование (в самом простом случае разница между соседними точками).
![]() СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
BBC |
|
|||
Unregistered |
planer,
В этих ссылках все, что нужно имеется. А дальше просто читай из файла, там записаны именно значения амплитуд, приводи их к размеру твоего экранчика и рисуй. Для проверки открой в CoolEdite тот же wav файл, проще для начала 8 битный моно, разверни его, найди самую первую точку, при щелчке мышью она покажет амплитуду. Далее открой файл в каком нибудь редакторе в бинарном виде, поставь указатель на 44 байта (сразу после заголовка) и посмотри следующий байт. Переведи его из 16-ричной в десятичную - значения должны совпасть. А дальше сделай это программно. Читать из файла надеюсь умеешь, иначе все это я объяснял зря. Если хочешь спектр ищи алгоритм БПФ. Спектр даже покрасивей выглядит, но придется разбираться с преобразованием Фурье. |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: нет Всего: 54 |
Программно переводить из hex в dec? Ого! А нафига? Нафига переводить то? СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
BBC |
|
|||
Unregistered |
PILOT
Теперь я понял, что ты предлагаешь - это не лишено смысла и в winampe на маленьком экранчике будет нормально выглядеть. У меня же экранчик довольно большой и выводятся туда гармонические сигналы, где малейшие искажения сразу видны. А по состоянию сигнала оператор принимает решение о работоспособности аппаратуры. По этому я повторюсь мне необходима точная передача сигнала. А для того, чтобы отфильтровать ВЧ необходимо разложить в спектр, выкинуть все гармоники выше необходимой частоты среза и собрать обратно. |
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |