JFugue是一个用于音乐作曲的Java API。和其它的音乐API不同,它能够让您用数据字符串来指定音符、乐器、和弦,以及其它音乐数据,而不需要进行底层的MIDI操控。它和其它快速应用程序开发环境类似,只不过是专门用于音乐编程的。在JFugue环境里,音乐编程现在相对简单,您不一定需要了解音乐理论知识;您可以在Java应用程序正在运行的时候用JFugue来演奏音乐,或者把音乐保存为MIDI文件。
列表A向您显示了一个演奏音阶中乐符的简单JFugue应用程序(example1.java):
列表A
importorg.JFugue.*;
public class Example1
{
public static void main(String[] args)
{
Player player = new Player();
Pattern pattern = new Pattern("C D E F G A B");
player.play(pattern);
System.exit(0);
}
}
音乐字符串
JFugue使用了“音乐字符串(Music String)”的概念——它用来指定音符、乐器变化,以及演奏音乐所需要的其它数据。这个音乐字符串是一个由字符组成的文字串,其中的每一组字符都代表着一条音乐命令。音乐命令可以是下面几种类型中的一种:
现在就让我们来看看这些命令吧。
Notes:您可以用#和b字符分别表示一个音符是升半音还是降半音。除了用音符字母来指定音符之外,还有两种其它的方式来指定音符。一个是使用“音符值(note value)”,它是一个表示音符的数值。MIDI有128个音符,编号是从0到127。第60号音符是Middle-C。要指定音符值,就要在一个方括号里加上数值,比如[60]。第二种方式是使用“打击乐器名(percussion name)”。在MIDI里,第10个声部(Voice 9,声部的编号从0开始)被保留给打击乐器。在这个声部,您可以演奏多种不同的打击乐器声音,而且您可以通过在方括号里指定打击乐器名来表示它们,例如[Hi_Bongo]。
Octave:MIDI能够演奏超过10个八度音阶的音符。要表示八度音阶,就要使用数字0到9。例如,有一个位于第6个八度音阶的A音符,它就要被表示为A6。如果您没有指定八度音阶,那么默认的音阶是Octave 5。
Duration:Duration用来表示音符演奏的音值。如果您不输入音值,那么默认的就是1/4个音符。下面这些值都是允许的:全音值(“w”)、半音值(“h”)、1/4音值(“q”)、1/8(“i”)、1/16(“s”)、1/32(“t”)、1/64(“x”)和1/128音值(“n”)。您可以通过在音值字符后面加上一个点(“.”)来表示一个点音值。