如何用 jfugue 对音符进行连线

how to slur notes with jfugue

我正在尝试使用 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 示例。