Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中播放整数/双数组_Java_Arrays_Audio - Fatal编程技术网

在Java中播放整数/双数组

在Java中播放整数/双数组,java,arrays,audio,Java,Arrays,Audio,我试图在Java程序中播放数组。 到目前为止,我能够使用以下代码播放字节数组: AudioFormat audioFormat = new AudioFormat(samplingFreq, bps, 1, true, true); SourceDataLine sdline = AudioSystem.getSourceDataLine(audioFormat); line.open(audioFormat); sdline.start(); sdline.write(play

我试图在Java程序中播放数组。 到目前为止,我能够使用以下代码播放字节数组:

AudioFormat audioFormat = new AudioFormat(samplingFreq, bps, 1, true, true);
SourceDataLine sdline = AudioSystem.getSourceDataLine(audioFormat);
line.open(audioFormat);
sdline.start();        
sdline.write(playArray, 0, playArray.length);
sdline.drain();
sdline.close();
但是,由于write方法只接受字节数组作为参数,因此我只能播放字节数组。我想能够发挥16/32位每个样本阵列以及


有没有办法使用AudioSystem(或任何其他类)播放整数数组甚至双倍音效。

在@greg-449的帮助下,我解决了这个问题。要播放更高的每秒比特数,只需增加bps参数并逐个发送字节

例如,如果我们想发送1867作为样本,我们需要16位,如下所示: 0000 0111 0100 1011


前8位是十进制的7位,后8位是十进制的75位,因此,由于我们使用的是big-endian(AudioFormat参数的最后一个参数),字节数组的第一个元素应该是7,第二个元素应该是75。对于16位,每个样本只需要两个字节

第一:你为什么要这么做?第二:API只要求/支持一个
字节[]
作为
SourceDataLine#write
的参数,因此您能够写出任何其他数组的可能性微乎其微。@Makoto我想对声音进行一些过滤操作,并为助听器项目放大更高的频率。更多的bps意味着更准确的结果。我不认为更改传入的数组类型会有帮助,尽管总长度/大小可能会有帮助。对于16位以上的样本,您仍然使用字节数组-每个样本只使用两个或更多字节。