Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с микшерными устройствами

1.9K
30 декабря 2003 года
AviDen
91 / / 26.12.2003
Народ, я тут пытался как-то создать свой аналог Регулятора громкости (ну, чтобы показывал установленные звуковые устройства, по ним - аудиоканалы и позволял последние изменять, "мутировать", устанавливать громкость и пр).

Для этого юзал стандартные функции из набора mixer-API. И гдей-то у меня закралась гадкая ошибка (вот только не надо щас приколов про глюк в ДНК).

Подход был следующий (схематично):
1)получить количество устройств (mixerGetNumDevs)
2) открываем по очереди каждое из устройств (mixerOpen)
3) получаем параметры микшерного устройства (mixerGetDevCaps)
4) По каждой из аудио-линий получаем ее параметры (mixerGetLineInfo) и параметры ее управляющих элементов (mixerGetLineControls )
5) По каждому управляющему элементу можем получить или установить его значение (mixerGetControlDetails/mixerSetControlDetails).

Короче, все практически работает, только количество найденных прогой звуковых каналов явно не соответствует действительности. Ну, например, в стандартном Регуляторе я могу поменять с десяток различных видов каналов (общая громкость, Wave-audio, CD-audio и куча прочего). А мне винда говорит только про то, что у меня всего пара каналов. Я пробовал на разных виндах (то есть, и та и другоая XP, но разных редакций), и разные звуковухи и на других компах тестил. Видать, баг в самом моем понимании всей этой микшерной катавасии.

Я не спрашиваю, где у меня глюк, просто, может, подскажете, как еще можно это все сделать - может, переделаю все заново по другой схеме - глядишь, и прояснится чего. Или может кто делал уже такое - киньте исходники желательно на Delphi или можно на C/Cpp.
5.1K
30 декабря 2003 года
Хрю
14 / / 27.12.2003
Цитата:
Originally posted by AviDen
Народ, я тут пытался как-то создать свой аналог Регулятора громкости (ну, чтобы показывал установленные звуковые устройства, по ним - аудиоканалы и позволял последние изменять, "мутировать", устанавливать громкость и пр).

Для этого юзал стандартные функции из набора mixer-API. И гдей-то у меня закралась гадкая ошибка (вот только не надо щас приколов про глюк в ДНК).

Подход был следующий (схематично):
1)получить количество устройств (mixerGetNumDevs)
2) открываем по очереди каждое из устройств (mixerOpen)
3) получаем параметры микшерного устройства (mixerGetDevCaps)
4) По каждой из аудио-линий получаем ее параметры (mixerGetLineInfo) и параметры ее управляющих элементов (mixerGetLineControls )
5) По каждому управляющему элементу можем получить или установить его значение (mixerGetControlDetails/mixerSetControlDetails).

Короче, все практически работает, только количество найденных прогой звуковых каналов явно не соответствует действительности. Ну, например, в стандартном Регуляторе я могу поменять с десяток различных видов каналов (общая громкость, Wave-audio, CD-audio и куча прочего). А мне винда говорит только про то, что у меня всего пара каналов. Я пробовал на разных виндах (то есть, и та и другоая XP, но разных редакций), и разные звуковухи и на других компах тестил. Видать, баг в самом моем понимании всей этой микшерной катавасии.

Я не спрашиваю, где у меня глюк, просто, может, подскажете, как еще можно это все сделать - может, переделаю все заново по другой схеме - глядишь, и прояснится чего. Или может кто делал уже такое - киньте исходники желательно на Delphi или можно на C/Cpp.



Не знаю как у вас там в XР-ях, па у меня в 2000 стандартный регулятор громкости не позволяет изменять параметры микшеров. :)
Мне кажется ты просто немного перепутал понятия. Короче, используй auxGetNumDevs, auxGetDevCaps и далее функции, начинающиеся с wave и midi (типа waveOutOpen).

1.9K
09 января 2004 года
AviDen
91 / / 26.12.2003
Цитата:
Originally posted by Хрю


Не знаю как у вас там в XР-ях, па у меня в 2000 стандартный регулятор громкости не позволяет изменять параметры микшеров. :)
Мне кажется ты просто немного перепутал понятия. Короче, используй auxGetNumDevs, auxGetDevCaps и далее функции, начинающиеся с wave и midi (типа waveOutOpen).



Хорошо, а как же тогда быть, например, с функцией Mute? Или если моя карточка поддерживает более 2х каналов, напр., 6? Эти функции могут только менять громкость с точностью до двух каналов, но они

1) не предоставляют информации о том, какие микшерные устройства есть в системе и какие аудио-линии на них доступны, их названия, возможности и пр.

2) повторюсь, не позволяют "мутировать" звук

3) не позволяют менять дополнительные параметры (напр., баланс, или усиление для микрофона, или доп. усиление нижних/верхних частот, как на нек. карточках)

4) короче, кроме установки громкости на Wave-линии не позволяют делать ничего из того, что можно сделать в Регуляторе Громкости

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог