Звук компьютера

Обсуждение вопросов, связанных с обработкой аудио и видео информации
Ответить
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Звук компьютера

Сообщение Sergey Ivanov »

Подскажите, как поменять громкость через :labview: ? И возможно ли это вообще ?


Нашёл это, но появляется только окно с регулировкой уровня звука.
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3486
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Звук компьютера

Сообщение dadreamer »

А это не подходит? Есть ещё вот такая ссылка.

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Звук компьютера

Сообщение Sergey Ivanov »

по первой ссылке пробовал способ. не работает, точнее я не понимаю от куда узнать device ID.

мне громкость надо менять у системы. допустим, воспроизвожу звук через колонки из плеера или сайта и мне через :labview: надо изменить звук.
111222334445.png
111222334445.png (9.12 КБ) 11783 просмотра
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Звук компьютера

Сообщение Sergey Ivanov »

моя лень не имеет предела. благодаря вашей ссылке ( про использование user32.dll) нашёл то что надо ! спасибо !
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Звук компьютера

Сообщение Sergey Ivanov »

dadreamer писал(а):А это не подходит? Есть ещё вот такая ссылка.



по первой ссылке не подходит, т.к. необходимо открывать звуковой файл в :labview: , а я воспроизвожу его через другое приложение.

вторая ссылка - подходит, но можно ли получить текущую громкость ? сейчас получается, что регулировка громкости осуществляется "вслепую"

или можно задать конкретное значение громкости, а не только вверх или вниз ?
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3486
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Звук компьютера

Сообщение dadreamer »

Sergey Ivanov, почему у вас все темы такие "непростые"?.. :D
Кстати, а чем не устроила регулировка громкости в стандартном окне Windows?
А для того, чтобы управлять громкостью в Windows, нужно лезть в дебри. На системах, начиная с Vista, изменился механизм взаимодействия с аудио-устройствами. Почитайте вот здесь: About the Windows Core Audio APIs. Предполагая, что вы используете ОС не старее Висты, могу предложить только такое решение. Все классы наподобие IMMDeviceEnumerator определены в mmdeviceapi.h, так что нужно качать и ставить Microsoft Windows SDK for Windows 7. Подозреваю, что и ActiveX библиотеки там же лежат, а после установки должны зарегистрироваться в системе нужные классы, и уже после этого можно будет попытаться открыть их в :labview: . Как альтернатива, есть ещё NAudio с аналогами тех же классов. Возможно, что даже в коде не придётся ничего менять.

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Звук компьютера

Сообщение Sergey Ivanov »

Сделал так, но как-то не очень правильно это, как мне кажется
Снимок.JPG

VolumeCTRL.vi
(23.18 КБ) 148 скачиваний


dadreamer писал(а):Sergey Ivanov, почему у вас все темы такие "непростые"?.. :D
Кстати, а чем не устроила регулировка громкости в стандартном окне Windows?


Ну не знаю, тянет меня к прекрасному )))
Вы имеете в виду вызов микшера (SndVol32.exe) ? у меня два монитора, поэтому, это окно надо перемещать (открывается по умолчания на 1 мониторе, а мне надо чтобы было на 2). Для перемещения использую cmdow. На некоторых компах cmdow работает стабильно, а на некоторых иногда не срабатывает.

PS надеялся, что через user32 как-то можно получить текущую громкость. видимо, нет. устанавливать новые компоненты не очень хочется.
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3486
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Звук компьютера

Сообщение dadreamer »

Sergey Ivanov, есть такое дело ) А если у пользователя громкость на пределе стоит? Хватит ли 52 итерации для обнуления громкости? Да и мне, честно говоря, не очень нравится слать сообщения каким-то приложениям. Имхо, как-то это ненадёжно работает время от времени.
Для перемещения использую cmdow. На некоторых компах cmdow работает стабильно, а на некоторых иногда не срабатывает.

Почему бы не использовать SetWindowPos, хэндл (hWnd) я показал, как получить в смежной теме. Или есть более простая MoveWindow. Эти функции должна работать на любой системе.
А что касается аудио, то весь пакет при дальнейшей работе вашей программы будет не нужен. Надо лишь выдернуть оттуда библиотеку для перечисления аудио-устройств. Скорее всего, её можно будет потом распространять вместе с приложением.

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Звук компьютера

Сообщение Sergey Ivanov »

dadreamer писал(а):Sergey Ivanov, есть такое дело ) А если у пользователя громкость на пределе стоит? Хватит ли 52 итерации для обнуления громкости? Да и мне, честно говоря, не очень нравится слать сообщения каким-то приложениям. Имхо, как-то это ненадёжно работает время от времени.
Для перемещения использую cmdow. На некоторых компах cmdow работает стабильно, а на некоторых иногда не срабатывает.

Почему бы не использовать SetWindowPos, хэндл (hWnd) я показал, как получить в смежной теме. Или есть более простая MoveWindow. Эти функции должна работать на любой системе.
А что касается аудио, то весь пакет при дальнейшей работе вашей программы будет не нужен. Надо лишь выдернуть оттуда библиотеку для перечисления аудио-устройств. Скорее всего, её можно будет потом распространять вместе с приложением.


52 - хватит. их всего 50 (весь диапазон). 52 - типа с запасом указал :haha:
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3486
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Звук компьютера

Сообщение dadreamer »

Sergey Ivanov, я тут вам решил немного помочь, попробовал библиотеку NAudio. Очень хорошо себя в работе она показала. Сопровождение неплохое и примеры на уровне, можно спокойно свой плеер/конвертор делать при желании. Используется библиотека NAudio.dll, на БД размещается .NET Constructor Node и в нём выбирается эта DLL. Сперва попробовал вот такой код (вы можете тоже попробовать в качестве домашнего задания :D):

Код: Выделить всё

using NAudio.CoreAudioApi; 
MMDeviceEnumerator devEnum = new MMDeviceEnumerator();
MMDevice defaultDevice = devEnum.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
string currVolume = "MasterPeakVolume : " + defaultDevice.AudioMeterInformation.MasterPeakValue.ToString();

Но получил на выходе громкость = 0 дБ, скорее всего потому что у меня используется на текущем компе дополнительная звуковуха, весь поток идёт через нее. Так что я перебрал все аудио-точки с помощью вот этого кода. Получилось вот что:

2015-03-13_21-57-13.jpg
2015-03-13_21-57-32.jpg
Untitled 2.vi
LV2011
(9.12 КБ) 164 скачивания

Первый элемент массива - как раз текущая громкость динамиков в моей системе. Установить громкость программно попробуйте сами, там до безобразия просто. :crazy:

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Звук компьютера

Сообщение Sergey Ivanov »

Да, действительно просто ! Жаль что через user32.dll громкость не задать (
Вложения
Снимок.JPG
Добро пожаловать на http://rk-stud.ru/

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3486
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Звук компьютера

Сообщение dadreamer »

Sergey Ivanov, учтите, что на XP и ниже вышеописанный способ работать не будет.

Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1193
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Репутация: 0
Версия LabVIEW: 2013
Откуда: Санкт-Петербург, Кронштадт
Контактная информация:

Re: Звук компьютера

Сообщение Sergey Ivanov »

спасибо, буду знать !
Добро пожаловать на http://rk-stud.ru/

Ответить

Вернуться в «Работа с графикой и звуком»