Микширование звука в Java? - PullRequest
       13

Микширование звука в Java?

3 голосов
/ 09 апреля 2009

Как мне воспроизводить один и тот же звук более одного раза в любой момент времени, когда одновременно происходит множество других звуков? Прямо сейчас у меня играет клип, но он не пересекается с самим собой. (Я слышу один выстрел пули, звук заканчивается, потом снова играет). Я пишу игру с быстрой системой стрельбы пулями, но не могу заставить звук работать хорошо. Просто не звучит «правильно», когда вы слышите только одну пулю каждые полсекунды, когда вы появляете 20+ на экране каждую секунду

Любая помощь? Указатели? : D

Ответы [ 3 ]

1 голос
/ 20 августа 2011

Одновременное воспроизведение 20 клипов с буллит может быть немного интенсивным. Это может быть хорошо. Однажды я сделал колокольчик, который играл 7 перезвонов, накладывающихся друг на друга (каждый длился около 3 или 4 секунд), и сумел настроить его на воспроизведение около 100 перезвонов на 5-секундный блок. Но программа больше ничего не делала.

С помощью клипов для этого вам нужно будет сделать несколько копий, и все эти аудиоданные будут храниться там, занимая ОЗУ. Если они действительно короткие, это не такая жертва. Но для быстрой стрельбы решение, используемое большинством игр, состоит в том, чтобы просто отключить звук и перезапустить. Вам не нужно проигрывать звук до конца.

myClip.stop();
myClip.setFramePosition(0);
myClip.start();

с каждым стартом. Это то, что чаще всего делается. Он использует намного меньше ресурсов процессора и меньше оперативной памяти, чем перекрывающееся решение Clip.

1 голос
/ 09 апреля 2009

Это похоже на ваш вопрос:

http://my.safaribooksonline.com/9781598634761/ch09lev1sec3

Цитата:

"Другими словами, один объект Clip не может смешиваться с самим собой, только с другими звуками. Этот процесс работает довольно хорошо, если вы используете короткие звуковые эффекты, но может звучать странно, если ваши звуковые клипы имеют длину в одну секунду или более. [...] Если вы хотите многократно смешивать один клип, есть два важных варианта (и еще один маловероятный вариант): 1) Загрузите звуковой файл в несколько объектов Clip (например, в массив), а затем воспроизведите каждый из них по порядку. Всякий раз, когда вам нужно воспроизвести этот конкретный звук, просто переберите массив и найдите клип, который закончил воспроизведение, а затем начните его воспроизведение снова. "

Таким образом, в принципе, Java выполняет микширование, но не внутри одного клипа.

0 голосов
/ 09 апреля 2009

AudioClip может быть то, что вы ищете - я использую его в играх с короткими звуковыми эффектами .wav, он не идеален, но в большинстве случаев работает нормально.

...