第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

無(wú)限期地播放正弦波 - java

無(wú)限期地播放正弦波 - java

小怪獸愛(ài)吃肉 2023-05-17 14:50:36
我正在嘗試制作一段可以連續(xù)播放正弦波的代碼。我希望能夠播放 MIDI 音符的頻率。Java 中的 MIDI 庫(kù)感覺(jué)有點(diǎn)草率(當(dāng)我告訴它播放時(shí),按鍵和音符播放之間有一個(gè)小延遲)。我見(jiàn)過(guò)這樣的例子,你生成一個(gè)確定長(zhǎng)度的正弦波,然后你通過(guò)給一個(gè)SourceDataLine字節(jié)數(shù)組來(lái)播放它。這行得通,但字節(jié)數(shù)組只能這么長(zhǎng),最終會(huì)停止播放。我的下一個(gè)想法是不斷地向該行寫(xiě)入一個(gè)字節(jié),計(jì)算下一行并繼續(xù)。這是我的代碼:int i = 0;int sampleRate = 8000;int freq = 440;while (true) {    double samplingInterval = (double) (sampleRate / freq);    double angle = (2.0 * Math.PI * i) / samplingInterval;    byte toPlay = (byte) (Math.sin(angle) * 127);    line.write(new byte[] {toPlay}, 0, 1);    i++;}我希望這會(huì)給我一個(gè)頻率為 440hz 的恒定輸出,但它給了我這個(gè)錯(cuò)誤:java.lang.IllegalArgumentException: illegal request to write non-integral number of frames (1 bytes, frameSize = 2 bytes)如果沒(méi)有,有沒(méi)有辦法在 Java 中加速 MIDI 庫(kù),或者我只是犯了一個(gè)愚蠢的錯(cuò)誤?提前致謝。
查看完整描述

2 回答

?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊

一幀音頻是一個(gè)或多個(gè)同時(shí)定時(shí)的音頻樣本。在您的情況下,立體聲 ( frames ==2)。在流中,它們通常是交錯(cuò)的(例如 L、R、L、R....)。

您可以通過(guò)將每個(gè)示例編寫(xiě)兩次來(lái)解決此問(wèn)題。

雖然 Java(或任何其他具有停止世界垃圾收集功能的 JITd 語(yǔ)言運(yùn)行時(shí))從來(lái)都不是低延遲音頻軟件的實(shí)現(xiàn)選擇,但我懷疑您檢測(cè)到的“草率”實(shí)際上是一個(gè)較長(zhǎng)的音頻緩沖期:默認(rèn)設(shè)置緩沖期可能只有幾分之一秒。


查看完整回答
反對(duì) 回復(fù) 2023-05-17
?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊

對(duì)于這個(gè)特定的想法,您可以使用


while (true) {

    double samplingInterval = (double) (sampleRate / freq);

    double angle = (2.0 * Math.PI * i) / samplingInterval;

    byte toPlay = (byte) (Math.sin(angle) * 127);

    byte[] data=new byte[1024];

    for(int j=0; j<data.length; j++) data[j]=toPlay;

    line.write(data, 0, data.length);

    i++;

}

或者長(zhǎng)度為 4 就足夠了。


查看完整回答
反對(duì) 回復(fù) 2023-05-17
  • 2 回答
  • 0 關(guān)注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)