Для начала, массив сэмплов не достаточно информации для воспроизведения звука.
Также необходимо указать частоту дискретизации.(Например, 50 выборок, повторяющих -1, + 1 и т. д., могут быть синусоидальными сигналами 50 Гц, если они записаны с частотой 25 выборок в секунду, или 12,5 Гц, если они записаны со скоростью 50 выборок / с (моя математика может быть отключена)).
Еще одна вещь, которая необходима, это то, как хранится звук.MAX_INT - ваш самый высокий звук или 255 - ваш максимальный уровень громкости?
Вам также необходимо указать кодировку.Возможно, вы захотите либо PCM_SIGNED, либо PCM_UNSIGNED (в зависимости от того, есть ли у вас отрицательные выборки), или может быть даже другая кодировка, которую вы хотите использовать.
Пакет javax.sound.sampled представляет эту информациюв классе AudioFormat .
Вам нужно будет создать аудиоформат, который отражает метод, в котором ваш аудио был сэмпл.Например, если ваши сэмплы занимали полный диапазон целых чисел, и вы представляли каждый сэмпл целым числом, и вы производили сэмплирование со скоростью 22 000 сэмплов в секунду, и это был монофонический звук, вы должны построить следующий AudioFormat ...
AudioFormat desiredFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,22000,32,1,32,22000,true);
Когда у вас есть AudioFormat, вы можете открыть строку и вывести на нее звук. Эта страница демонстрирует, как это сделать (они обманывают и воспроизводят аудиофайл, чтобы получить AudioFormat из файла).
Конечно, вы не сможете открыть строкудля всех форматов, поэтому вам, возможно, придется сделать некоторые преобразования.Все это говорит о том, что могут быть библиотеки звуков Java, которые могут сделать это намного проще.