我正在尝试使用jfugue连续播放约200个音高。这些音符都在播放,但它很不稳定。是否可以让音符以平滑的方式播放,就像一个sl两个音符的乐器一样?
答案 0 :(得分:0)
如果您的音高跨越多个八度音阶,您必须为这些音符触发新的MIDI Note On事件。 (如果您的200个音高在彼此的半音范围内,则可以使用音高轮)。由于您需要触发新音符,您将听到音符开启和关闭,除非您可以设置音符/音符关闭速度,使其不明显。你也可以选择一种能够顺利演奏的乐器(例如,长笛,但不是钢琴)。
如果您不想自己列出这200个音高中的每一个,您可以编写一个新的JFugue函数,比如“:SLUR”,它可能会带有起始音符值,结束音符值,总持续时间和在此期间听到的步骤数。您的函数可能会创建两个音符之间的所有微调。然后你可以调用microtone预处理器将微调转换成音高轮并记录事件。
将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示例。