簡體   English   中英

JSyn函數播放聲音

[英]JSyn function to play sounds

我最近在Java上的一個項目上工作,我使用SE8。我制造了一架鋼琴,它通過播放幾個wav文件來播放音樂,例如,我有5個管風琴,並且鋼琴的每個按鈕都是所選音樂的一個音符。儀器。 從頂部的按鈕中選擇樂器。

但是,我知道我也可以通過使用JSyn生成音樂,而不僅僅是“調用”要播放的波形。 任何人都可以幫助您入門,因為我還沒有找到任何教程可以做到這一點。 我只需要找到一種對鍵使用功能的方法,並輸入不同的值(我假設)即可更改每個鍵的聲音。 有任何想法嗎?

如果要使用JSyn播放合成聲音,則可以在此處找到使用MIDI鍵盤的示例:

https://github.com/philburk/jsyn/blob/master/tests/com/jsyn/examples/UseMidiKeyboard.java

它顯示了如何使用VoiceAllocator來管理多個聲音。 關鍵代碼是:

double frequency = convertPitchToFrequency(noteNumber);
double amplitude = velocity / (4 * 128.0);
TimeStamp timeStamp = synth.createTimeStamp();
allocator.noteOn(noteNumber, frequency, amplitude, timeStamp);

如果要播放WAV文件中的樣本,則可以在此處找到示例:

https://github.com/philburk/jsyn/blob/master/tests/com/jsyn/examples/PlaySample.java

在第83行,它說:

samplePlayer.rate.set(sample.getFrameRate());

這將以錄制時的原始音高播放樣本。

您可以縮放速率,以使其發揮不同的音高。 例如,按2.0縮放以放大八度,或按1.5縮放以放大五度:

samplePlayer.rate.set(1.5 * sample.getFrameRate());

如果縮放比例太大或太小,聽起來會很奇怪。 因此,您可能需要使用多個樣本,然后選擇最接近所需音高的樣本。

暫無
暫無

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

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