JSyn功能播放声音

时间:2015-06-01 21:50:19

标签: java jsyn

我最近正在开发一个关于Java的项目,我使用SE 8.我已经制作了一个钢琴,它通过播放几个wav文件来播放音乐,例如。我有5个器官,我钢琴的每个按钮都是所选乐器的一个音符。仪器从顶部的按钮中选择。

但是,我知道我也可以使用JSyn生成音乐,而不仅仅是“调用”wavs来播放。任何人都可以帮助如何开始,因为我没有找到任何教程来做到这一点。我只需要找到一种方法来为我的键使用一个函数,只需输入不同的值(我假设)来改变每个键的声音。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果你想使用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());

如果你向上或向下缩放太远,那么听起来会很奇怪。因此,您可能希望使用多个样本并选择最接近所需音高的样本。