Я работаю над программой, которая воспроизводит серию Clip
(clip.start()
), в среднем один раз в секунду.
Значение запуска клипа, а через секунду он останавливается, запускается другой клип и т.д. Для примерно 10 клипов.
Результат не "жидкость", некоторые клипы даже не начинаются или не слышны.
Мой вопрос: подходит ли класс Clip для такого рода вещей? Или клипы, которые не должны быть остановлены и начались очень часто?
Если Clip не подходит, есть ли альтернативный класс или библиотека, которые вы можете предложить для этой цели? Или, может быть, некоторые рекомендации о том, как работать с клипами, так, что я описал, будет работать плавно? (Может быть, касается резьбы или чего-то еще).
У меня нет слишком много опыта работы с аудио на Java, но опыт, который у меня был с клипами, низок. Я обнаружил, что по какой-то причине для перезапуска клипа требуется не более половины секунды (найдены некоторые старые ошибки, которые, по-видимому, были исправлены в связи с этой проблемой, но, возможно, это была новая ошибка в то время, когда я смотрел внутрь). SourceDataLine с буфером для хранения всего вашего звука работал лучше для меня.
Тем не менее, я бы предложил TinySound, это простая абстракция, которая работает.
Вот пример со своей страницы:
//initialize TinySound
TinySound.init();
//load a sound and music
//note: you can also load with Files, URLs and InputStreams
Music song = TinySound.loadMusic("song.wav");
Sound coin = TinySound.loadSound("coin.wav");
//start playing the music on loop
song.play(true);
//play the sound a few times in a loop
for (int i = 0; i < 20; i++) {
coin.play();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
}
//be sure to shutdown TinySound when done
TinySound.shutdown();