使用jfugue,如何从数组生成随机音乐字符串(使用player.play)?

时间:2019-05-08 15:52:58

标签: java jfugue

我在Eclipse中使用Jfugue,并且代码中有音乐字符串列表。当我运行代码时,它会播放所有代码,但是我想一次随机播放一次。

到目前为止,我正在使用:

Pattern pattern = new Pattern ("A");
Player.play(A);
Pattern pattern = new Pattern ("B");
Player.play(B);

我尝试使用“ Random random = new Random();”但这一直没有奏效,我也不知道如何实现。

我还尝试过重新使用随机单词生成器:

  for(int i = 0; i < numberOfTest; i++) {
    int index = (int)(Math.random() * 10);
    System.out.println(strings[index]);

但是我不知道如何用音乐字符串替换单词字符串:

通常,我的大多数问题是由于对正确的语法(尤其是Jfugue)缺乏了解。

1 个答案:

答案 0 :(得分:2)

将它们放入列表,然后将其洗牌:

List<Pattern> allPatterns = Arrays.asList(new Pattern ("A"), new Pattern ("B"), ... more patterns);
Collections.shuffle(allPatterns);

请注意:上面是简单的Java,它独立于任何特定的框架(例如jfugue)工作。

对于播放,您只需要告诉玩家使用随机排列的列表来播放模式即可:

// by using the for-each loop
for (Pattern onePattern : allPatterns) {
   player.play(onePattern);
}

// alternatively, turn the list back into an array and play that
player.play(allPatterns.toArray(new Pattern[0]);