1

我正在尝试使用 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]);
4

1 回答 1

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);
于 2015-01-03T14:33:44.193 回答