我尝试使用jFugue在netBeans中创建算法音乐,并且有一个整数数组,其中包含来自c大调的一个八度音阶的音符:
String scaleNotesC[] = {"[60]", "[62]", "[64]", "[65]", "[67]", "[69]", "[71]", "[72]"};
当我运行下面的代码试图让它发挥时,C没有任何反应。
Player playerOne = new Player();
playerOne.play("scaleNotesC[0]");
我尝试过使用整数数组,但这也没有用。
有没有办法让jFugue从数组中的一个集合中播放随机音符?
编辑:
我将上面的播放器代码更改为此尝试从阵列中播放多个音符,但它无法正常工作
playerOne.play(scaleNotesC[2] scaleNotesC[3] scaleNotesC[2]);
答案 0 :(得分:1)
在你的第一个例子中,
playerOne.play("scaleNotesC[0]");
您正在尝试将Java表达式作为字符串传递。但是,字符串本身不会被评估为Java表达式。相反,JFugue试图将“scaleNotesC [0]”本身解析为音乐字符串,但它不是,所以你听不到音乐。如果删除引号,Java会将scaleNotesC [0]评估为“[60]”,JFugue将成功解析“[60]”作为Middle-C并播放它。
您当前使用的JFugue版本没有play()方法,该方法将字符串列表作为参数(即将发布的版本将具有此功能)。我可以建议:
Pattern pattern = new Pattern();
pattern.add(scaleNotesC[2], scaleNotesC[3], scaleNotesC[2]);
Player playerOne = new Player();
playerOne.play(pattern);