簡體   English   中英

Java Gervill軟件合成器不起作用

[英]Java Gervill Software Synth not working

在JDK8中,我似乎無法從SoftSynthesizer創建的AudioInputStream中獲得任何有用的數據。

    AudioSynthesizer s = new SoftSynthesizer();

    AudioFormat format = new AudioFormat(44100, 16, 2, true, false);
    AudioInputStream stream = s.openStream(format, null);

    s.getChannels()[0].noteOn(60, 100);

    while (stream.available() >= 0) {
        byte[] b = new byte[2];
        stream.read(b);
        System.out.println(b[0] << 8 | b[1]);
    }

    s.getChannels()[0].noteOff(60);

但是,println()僅顯示0,沒有來自AudioInputStream的音頻數據。 難道我做錯了什么? 還是從JDK 8開始棄用Gervill?

似乎我找到了答案。 您必須從AudioInputStream讀取數據幀的整數倍,否則它將始終返回零。 在我的情況下,讀取4個字節解決了該問題,因為AudioFormat為16位(2個字節),2個通道,因此為4個字節/幀。

更改

byte[] b = new byte[2]

byte[] b = new byte[4]

實際上,任何4的整數倍都可以工作。 4、8、12、16、20等

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM