我正在尝试使用jfugue连续播放约200个音高的系列。音符全部演奏,但是断断续续。音符是否可以像乐器调成两个音符一样流畅地弹奏?

最佳答案

如果您的音高跨越多个八度,则您将需要触发那些音符的新MIDI Note On事件。 (如果您的200个音高在彼此的半音之内,则可以使用音高轮)。由于您需要触发新的音符,因此您会听到音符的开和关,除非您可以以不明显的方式将音符打开/音符关闭速度设置为打开。您也许还可以选择一种有助于顺畅演奏的乐器(例如,长笛,而不是钢琴)。

如果您不想自己列出这200个音高中的每个音高,则可以编写一个新的JFugue函数,说“:SLUR”,该函数可能采用起始音符值,结束音符值,总持续时间以及音符的数量。在持续时间内听到的步骤。您的功能可能会在两个音符之间创建所有微音。然后,您可以调用微调预处理器,将微调变成音高转轮并记录事件。

一旦将SlurFunction添加到预处理器上下文中(请参阅StaccatoParser.java),您就可以说:

// Start with Note 20, end at Note 80,
// play for 2.5 * whole durations, and hear 20 steps in between.
// (Be sure there are no spaces in your function call)
new Player().play(":SLUR(20,80,2.5,20)");


用JFugue编写新函数功能强大,但绝对是高级功能。如果您有兴趣,请参见源代码中的TrillFunction示例。

09-15 23:35