![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
ОС - WinMe.
Компилятор - MSVC++ 6.0 + SP5. Как можно, используя DirectSound, получить выходной уровень звука, т.е. не регулировать уровень, а именно получить реальный уровень в какой-то момент времени. Сразу уточню, почему мне это надо через DirestSound - у меня всторенная звуковая карта, и я пытался сделать это через работу с mixer.... - объектом, однако ничего не получилось. Видно эта дешевая железка (точнее наверно ее драйвер) не поддерживает получение уровня звука. Хотя может я не прав ? |
|||
|
||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: нет Всего: 83 |
Перемещено из Звук, графика и видео -> Работа со звуком.
|
|||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
Тишина...
И что, никто не знает как добраться до уровня звука ? |
|||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
Ну что же вы молчите, господа !?
|
|||
|
||||
| BBC |
|
|||
|
Unregistered |
Мне не совсем понятно:
Если уровень микшера, то mixerGetControlDetails() для соответствующей линии Если уровень звука в звуковом буфере, то то ищешь в нем максимальную амплитуду |
|||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
В том то и дело, что через mixer (т.е. mixerOpen и далее mixerGetControlDetails() ) не получается, то бишь, все что касаемо уровня регулирования звука работает а все остальное (регулирование тембра, получение реального уровня звука) нет.
|
|||
|
||||
| BBC |
|
|||
|
Unregistered |
Посмотри в свойствах микшера есть ли там регулировка по тембрам
у твоей звуковой платы. Все, что умеет микшер будет доступно и тебе, необходимо только правильно настроить соответвующие структуры перед вызовом функций. У меня SB Live - регулируется все, даже поддается раздельная регулировка уровня записи по каналам. А под реальным уровнем звука ты понимаешь уровень пикового индикатора? Это все равно средний уровень звука за определенный период. Но если микшер его получает, значит драйвер эти значения передает и скорее всего их то же можно получить. Жаль у меня нет звуковухи с индикатором, я бы попробовал. Но если твое приложение работает с звуковой платой - измеряй уровень в звуковом буфере, например считай среднеарифметическое значение за какой нибудь период. Удачи! |
|||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
Нет у меня регулировок тембра.
Я подумал, что может быть для DirestSound есть что-то подобное классу mixer - ну ведь должен же быть какой-то интерфейс для доступа к микшеру звуковой карты ? |
|||
|
||||
| BBC |
|
|||
|
Unregistered |
Принцип здесь такой: Все что делает звуковуха, она отдает драйверу. Все, что принимает драйвер, он в свою очередь отдает в том числе и микшеру. А по сему что умеет делать микшер для данной звуковухи в win32 системе, то доступно и тебе. И не больше, может за каким-нибудь
исключением, но я другого не встречал. И DirestSound сдесь ни причем. |
|||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
Хорошо, тады сформулируем вопрос так:
Почему в WinAmp эквалайзер работает при любой звуковой карте ? |
|||
|
||||
| BBC |
|
|||
|
Unregistered |
А потому что он не через DirestSound работает, а через цифровые
полосовые фильтры. |
|||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
А что за беда эти фильтры и на основе чего они работают ?
|
|||
|
||||
| BBC |
|
|||
|
Unregistered |
Беда это такая:
Берешь массив с звуковыми данными, делаешь с ним прямое преобразование Фурье (FFТ) - получаешь спектр частот, увеличиваешь или уменьшаешь необходимую полосу, далее обратное преобразование - получаешь массив звуковых данных с измененными частотами и отправляешь его в звуковуху. |
|||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
А где об этом можно посмотреть подробнее ?
|
|||
|
||||
| BBC |
|
|||
|
Unregistered |
Сначала в теории цифровой обработки сигналов, а
потом в алгоритмах. |
|||
|
||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |