несколько громкости воспроизведения в течение одного времени выполнения Java - PullRequest
1 голос
/ 14 июля 2011

Я ищу решение следующей проблемы:

  • В моей среде выполнения java есть несколько пакетов, которые могут выдавать звук.
  • Пользователь должен иметь возможностьуправлять громкостью всех комплектов только одним ползунком (до этого момента я мог использовать AudioSystem.getMixer() для получения основного уровня громкости Windows)
  • Существует один комплект, который создает важные аудиовыходы, на которые не должно влиятьползунком выше.

Как уже упоминалось, целевой средой является Windows (XP или более поздняя версия).

К сожалению, все пакеты аудиовыхода имеют один и тот же идентификатор процесса, поскольку они являются частью одного и того же запуска Java.время.По этой причине окна будут создавать только один специальный микшер приложения.У вас есть идеи?

1 Ответ

0 голосов
/ 23 августа 2011

Вы играете через клипы?SourceDataLines?Очень вероятно, что каждый выставляет элемент управления, который можно использовать для изменения громкости.С помощью базового шаблона проектирования производителя / потребителя вы можете выбрать, на какие звуки влияет JSlider или нет.

Другими словами, вы можете делать что-то на уровне Clip / SDL, а не на уровне микшера.

И если элемент управления для тома не работает, нетрудно создать переменную типа «объем» с плавающей точкой, которую можно «подписать» или открыть для JSlider, которая содержит значения от 0 до 1,0f.и умножьте это на каждое значение кадра во внутреннем цикле буфера до воспроизведения SourceDataLine.Может потребоваться сложить байты (для 16-битного звука), выполнить умножение, а затем снова разделить их.Здесь есть и другие потоки, которые показывают кодирование для обработки звуковых данных с прямым порядком байтов или с прямым порядком байтов.

Я взглянул на предоставленную ссылку OSGi и убежал.Я в основном просто делаю javax.sound.sampled напрямую.

Я был бы весьма удивлен, если бы «связка», предоставленная третьей стороной для звука, не выставляла регулятор громкости.Кажется, что это такая простая вещь!

...