Управление громкостью аудиоклипа в Java 1.4 - PullRequest
2 голосов
/ 26 октября 2009

Я бы подумал, что это будет легко сделать, но никакие поиски в интернете не нашли никаких решений.

Я написал приложение для клиента, которое работает в полноэкранном режиме и позволяет пользователю просматривать учебные книги, чтобы научить детей читать. Все идет нормально. Некоторые фразы из отображаемых материалов зачитываются пользователю и, опять же, пока все хорошо. Обычно эти звуки читаются на уровне громкости системы. (т.е. при любой громкости будет воспроизводиться любой другой системный звук.)

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

Итак, мой вопрос на самом деле таков: как вы предлагаете управлять громкостью звука в программе? Все мои исследования не дали ничего значащего, что для меня означает, что это сложно или даже невозможно, но это просто кажется неправильным.

О, подробности: я читаю в WAV как AudioInputStreams и играю их как java.sound.sampled.Clip. Я контролирую усиление с помощью FloatControl.Type.MASTER_GAIN. (FloatControl.Type.VOLUME не поддерживается.) Я застрял с использованием Java 1.4.

Ответы [ 2 ]

1 голос
/ 27 октября 2009

Вы также можете посмотреть, есть ли более старая версия Java Media Framework (JMF), которая будет поддерживать Java 1.4 ... она может предоставить вам более богатую среду для работы со звуком.

Кроме этого, вы говорите, что застряли в 1.4 ... вы можете увидеть, есть ли какой-нибудь способ, которым вы можете перейти на Java 5 или 6, хотя вы можете сначала протестировать любой из них на своей локальной машине, чтобы посмотрим, действительно ли они помогают.

Полагаю, последнее предложение - найти сайты по разработке игр для Java и опубликовать там свой вопрос; Я думаю, они бы нашли способ обойти это ... хотя вы также можете получить много ответов "обновить свой jvm". : -)

Удачи.

0 голосов
/ 26 октября 2009

Это зависит от ОС, и вам придется использовать либо JNI, либо J / Invoke , либо JNIWrapper или jna , либо. ..

...