java播放加密后的wav文件,使用Java实时同时播放WAV文件
我很難用JSyn來同步實時WAV。
我正嘗試使用自定義鈴聲來構建自定義鍵盤,并且我已經記錄了WAV格式的所有音調。
我提到了JSyn的PlaySample.java文件,并試圖對鍵盤使用相同的方法,但問題是每個Sample都應該在按下來自GUI的按鍵后立即播放,但VariableRateDataReader提供了dataQueue來播放Sample。因此,如果某個Sample已經被播放,并且同時按下其他某個鍵,則另一個Sample文件將在第一個文件之后播放,因此這將導致延遲,并且即使在按下其他一些鍵之后,第一個Sample也應繼續播放。
Demo.java
public class Demo {
private Synthesizer synth;
private VariableRateDataReader samplePlayer;
private LineOut lineOut;
private void test() {
synth = JSyn.createSynthesizer();
FloatSample cSharpSample;
FloatSample dSharpSample;
FloatSample eSample;
FloatSample dSample;
FloatSample bSample;
FloatSample fSharpSample;
FloatSample gSharpSample;
try {
lineOut = new LineOut();
synth.add(lineOut);
SampleLoader.setJavaSoundPreferred(false);
cSharpSample = SampleLoader.loadFloatSample(getClass().getResourceAsStream("/resources/wav/octapad/c#.wav"));
dSharpSample = SampleLoader.loadFloatSample(getClass().getResourceAsStream("/resources/wav/octapad/d#.wav"));
eSample = SampleLoader.loadFloatSample(getClass().getResourceAsStream("/resources/wav/octapad/e.wav"));
bSample = SampleLoader.loadFloatSample(getClass().getResourceAsStream("/resources/wav/octapad/b.wav"));
fSharpSample = SampleLoader.loadFloatSample(getClass().getResourceAsStream("/resources/wav/octapad/f#.wav"));
gSharpSample = SampleLoader.loadFloatSample(getClass().getResourceAsStream("/resources/wav/octapad/g#.wav"));
synth.add(samplePlayer = new VariableRateStereoReader());
samplePlayer.output.connect(0, lineOut.input, 0);
samplePlayer.output.connect(1, lineOut.input, 1);
synth.start();
samplePlayer.rate.set(cSharpSample.getFrameRate());
lineOut.start();
double gap = 100;
// shouldplay e c# b g#, only g# is being played
samplePlayer.dataQueue.queueOn(eSample);
samplePlayer.dataQueue.queueOn(cSharpSample);
samplePlayer.dataQueue.queueOn(bSample);
samplePlayer.dataQueue.queueOn(gSharpSample);
do {
synth.sleepFor(20.0);
} while (samplePlayer.dataQueue.hasMore());
synth.sleepFor(0.5);
} catch (IOException e1) {
e1.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
synth.stop();
}
public static void main(String[] args) {
new Demo().test();
}
}所以問題是,有沒有可以通過JSyn獲得的API,通過它我可以同時播放WAV文件而不停止正在播放的Sample?我不想使用SOX或任何其他方法來播放WAV文件,只能使用Java來完成。
總結
以上是生活随笔為你收集整理的java播放加密后的wav文件,使用Java实时同时播放WAV文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab安装MinGW-64代码C/
- 下一篇: asp js单步调试_如何使用Chrom