Управление громкостью аудиоклипа в Java 1.4

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

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

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

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

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


person Clayton    schedule 26.10.2009    source источник
comment
Java 1.4 может просто этого не делать, возможно, вам придется смириться с этим. В версии 1.6 взаимодействие с окружением рабочего стола стало намного лучше.   -  person Yishai    schedule 26.10.2009


Ответы (2)


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

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

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

Удачи.

person cjstehno    schedule 26.10.2009
comment
JMF идеален. Многие люди жалуются, что он устарел и не поддерживает современные кодеки, но он идеально подходит для моей устаревшей ситуации с JVM + простым файлом WAV. И регулировать громкость очень легко. - person Clayton; 10.11.2009

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

person Jonathan Feinberg    schedule 26.10.2009