Настройка громкости с помощью Java - PullRequest
10 голосов
/ 25 ноября 2010

Добрый день!

Я занимаюсь разработкой приложения, которое воспроизводит MIDI.Играет нормально, но я часто получаю отчеты о квази-ошибках: «звук не воспроизводится».Ответ всегда заключается в том, чтобы войти в регулятор громкости и включить звук синтезатора (сделать так, чтобы он не был отключен).

Вопрос - как это изменить автоматически - с помощью программного обеспечения?До сих пор я могу изменять только общий уровень громкости, и я нигде не могу найти, как заменить только «волновой» SW-синтезатор и т. Д.

Я обычно ищу решения, не зависящие от платформы (чистоJava), однако решение только для Windows (все виды окон) также приветствуются;) Спасибо вперед!

Редактировать: Ну, глядя на ответы, я вижу, я должен уточнить свой вопрос лучше.Я добавляю изображение.Элемент управления, выделенный зеленым цветом, - это то, что я уже могу сделать (т. Е. Как связанный Клифф), однако мне нужно что-то для элементов управления красного цвета (наиболее важным в моем случае является третий слева - громкость синтезатора).Образ взят из win XP, но другие операционные системы (включая linux) имеют аналогичные элементы управления.У Java должна быть такая возможность.alt text

Ответы [ 3 ]

1 голос
/ 08 декабря 2010

Я смотрел в Ubuntu, Fedora и Windows, и единственное сходство между этими ОС - это основной том и том с предупреждением (или "звуковой сигнал" в Windows). Это наводит меня на мысль, что не существует независимого от платформы способа сделать это, то есть стандартного способа Java.

При этом, скорее всего, есть API (вероятно, разные) для всех этих ОС, которые позволяют вам контролировать эти более точные настройки. Если это так, то для взаимодействия с этими API на каждой платформе почти наверняка потребуются отдельные библиотеки Java.

Извините, я не могу указать вам правильное направление, но я надеюсь, по крайней мере, помочь вам исключить возможность использования стандартизированного способа выполнения этой функции. Удачи!

0 голосов
/ 02 января 2013

Вы работаете с каким-то интерфейсом или используете системное значение по умолчанию Mixer? А о каком уровне контроля ты говоришь? К сожалению, я тоже изучаю этот API, но моя первая мысль: каждый из них будет отдельной строкой, верно? Вы пытались получить все системные строки и использовать MASTER_GAIN на каждой из линий? Как сказал человек выше меня, я уверен, что для этого есть API, но если бы я собирался сделать это в своем собственном коде для образовательных целей или для чего-то, что я бы начал Говоря об API, есть Control API, который манипулирует самими аудиоданными, но, насколько я знаю, не влияет на аппаратную регулировку громкости.

0 голосов
/ 29 ноября 2010

Попробуйте взглянуть на то, что происходит в фоновом режиме, когда вы настраиваете уровни волны / синтезатора, используя инструмент на скриншоте, используя sysinternal's Process Monitor , и затем ваш Java-код выполняет тот же собственный вызов system / dll.

...