在下面给出的代码中,freqs 240和254.1764相距很远,但两者都是240.同样适用于288和301.395,同样的问题是最后两个432和552.09。我需要帮助来解决问题是在java还是JFugue部分。
class JFugueMicrotoneTest{
public static void main(String[]arg)throws InvalidMidiDataException, IOException{
MicrotoneNotation microtone = new MicrotoneNotation();
microtone.put("C", 240.0);
microtone.put("Df", 254.1764705882353);
microtone.put("D", 270.0);
microtone.put("Ef", 288.0);
microtone.put("E", 301.3953488372093);
microtone.put("F", 320.0);
microtone.put("F#", 338.8235294117647);
microtone.put("G", 360.0);
microtone.put("Af", 381.1764705882353);
microtone.put("A", 405.0);
microtone.put("Bf", 432.0);
microtone.put("B", 452.09302325581393);
Player player = new Player();
String music="T[60] <C> <Df> <D> <Ef> <E> <F> <F#> <G> <Af> <A> <Bf> <B>";
Pattern pattern=microtone.getPattern(music);
player.play(pattern);
}
}
答案 0 :(得分:1)
JFugue 5.0.9已更新,修复了用于创建微音的数学转换。尝试一下,听听差异!
另外:您在原始问题中发布的代码是JFugue 4.x代码。在JFugue 5.x中,没有MicrotoneNotation类。相反,您可以将频率直接写入音乐字符串,如下所示:
"T60 m240.0 m254.17 m270.0"
(注意版本5.x中的数字Tempo值周围没有方括号)
如果您想在字符串中使用&lt; C&gt;,&lt; Cf&gt;等,也可以创建“替换地图”。请参阅http://www.jfugue.org/examples.html
上显示的最后三个示例