我正在使用Java声音API使用Midi。基本上,我试图实现滑音效果,以便可以在不同音符之间滑动。我最近得到的是在MidiChannel中使用setPitchBend()方法。但是,从我开始的音符来看,这仅允许2个半音的范围。是否有其他方法可以实现这种滑音效果,或者更改弯音范围?
如果在JFugue中有实现此目的的方法,那也是可以接受的。
最佳答案
JFugue支持微调。 (它是通过JavaSound API结合大量数学运算来完成的)
它能否完全满足您的需求是另一个问题。我相信您会遇到的问题是,演奏的每个新音符听起来像是一个新音符,而不是 bundle 在一起的一堆音符。当音符的起音和衰减值不为0时,或者乐器在音符的开头和结尾处固有地具有不同的声音时,这将尤其明显。
在JFugue中,您可以通过在音符之后添加“a”和“d”,然后加上0-128之间的值来设置音符的起音和衰减:C5wa0d0
-C音符,第5个 Octave 音阶,整个持续时间,起音= 0,衰减= 0。
如当前所写,微调助手可以使您为字符串定义单个频率。例如,您可以将400映射到“A400”。然后要使用此功能,您需要说player.play("[A400]w")
(注意方括号)。
获得所需内容的一种方法是为任意数量的微调定义频率和字符串,然后使用for循环创建Pattern。Pattern p = new Pattern("[A400]wa0d0 [A410]wa0d0 [A420]wa0d0"...);
每个音符可能使用大于1赫兹的步长,因为我们的耳朵无法分辨出这种微小的频率差异。
如果有更优雅的解决方案!但是看看是否有帮助。