当前位置: 首页 > 工具软件 > JFugue > 使用案例 >

java音乐_用JavaJFugue进行音乐编程

程城
2023-12-01

JFugue是一个用于音乐作曲的Java

API。和其它的音乐API不同,它能够让您用数据字符串来指定音符、乐器、和弦,以及其它音乐数据,而不需要进行底层的MIDI操控。它和其它快速应用程序开发环境类似,只不过是专门用于音乐编程的。在JFugue环境里,音乐编程现在相对简单,不一定需要了解音乐理论知识;可以在Java应用程序正在运行的时候用JFugue来演奏音乐,或者把音乐保存为MIDI文件。

一个演奏音阶中乐符的简单JFugue应用程序如下: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和chords——用来指定将要演奏的音符或者和弦,以及音值;

Tempo——用来指定乐曲的速度;

Voice——用来表示音符演奏的声部;

Instrument change——用来更换演奏音符的乐器或者音色;

Controller messages——用来设置MIDI控制器事件,例如平衡等;

Variables——用来定义其它命令所使用的值。

现在就让我们来看看这些命令吧。

可以用#和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”)。您可以通过在音值字符后面加上一个点(“.”)来表示一个点音值。

点音符的音值就是原音值加上一个半音值。您可以通过增加音值来获得更长的音值。例如qh.是一个1/4音符加上一个点半音符;wwww是4个全音符。除了用字母指定音值,您还可以用小数来指定音值。1/4音符是0.25,1/8音符是0.125,以此类推。如果要把数字表示为小数就要使用/加上小数。例如,音符A,第4音阶,半音值,就应该表示为A4/0.5。

Chords:一旦指定了和弦的根音(以及可选的音阶),您就可以指定它的结构了。一个和弦里的所有音符都用同一种乐器以同一个声部演奏。JFugue可以识别很多常见的和弦结构,下面就是其中的一些:大调(“maj”)、小调(“min”)、第7大调(“maj7”)、第7小调(“min7”)、减半音(“dim”)、增半音(“aug”)。和弦标记直接跟在根音和音阶之后音值之前。例如一个C大调、第5音阶,1/4音符被表示为C5majq.。

您可以用两种特殊的字符来组合音符。加号(+)可以被用来(在协奏曲里)在同一时间演奏多个音符。当主旋律与协奏曲一起演奏时,下划线(_)可以被用来(在主旋律里)按顺序演奏音符。例如“C5q+E5q+G5q”演奏的内容与“C5majq”和弦的相同。

Velocity:您可以指定敲击音符的强度,以及音符释放的速度。要表示敲击音符的速度,您就要用“a”和一个从0到127的数值来设置“敲击速度(attack

velocity)”。要表示释放音符的速度,您就要用“d”和一个从0到127的数值来设置“衰减速度(decay

velocity”)。每个音符默认的敲击速度和衰减速度是64。顺便提一下,这是对于不支持速度的MIDI设备的一个标准默认值。例如,“C5qa120d30”表示Middle

C,1/4音值,敲击强度非常大(120),轻轻释放(30)。

Tempo:您应该指定每首乐曲的“节拍(tempo)”——即乐曲应该以多快的速度演奏。节拍值代表“四分音符的拍子数(Pulses

Per

Quarter)”,或者简称为PPQ,它表示每个四分音符有几拍,或者时钟周期。值越小表示表示乐曲越快,值越大表示乐曲越慢。一个比较合适的初始值是120;如果您不指定节拍的话,这个值也是默认的值。它命令是T,后面紧接一个从0到无限大的数字。例如T120。

Voice:“声部(Voice)”是告诉JFugue要用给定的MIDI声部(也叫做声道,channel)来演奏下面的音符。您可以将声部想象为一个音轨。(多)声部让您能够同时演奏多个主旋律。如果您在编写钢琴曲,您可以为高音谱号用一个声部,为低音谱号使用另外一个声部。如果您在创作一个交响曲,您就要给每种乐器自己专用的一个声轨。它的命令是“V”,后面紧跟一个从0到15的值。声部可以有16个,编号从0到15。第10个声部(或者声道)是专用的——它是用来演奏节拍乐器的声道。在这个声部演奏的音符是像鼓、钹、木鱼,以及其它打击乐器。由于我们是从0开始计数声部的,所以第10个声部的标记就是Voice

9。在演奏Voice

9声部里的音符时,您可以用诸如[Bass_Drum]或者[Open_Hi_Hat]这样的打击乐器名来表示打击乐器。

Instrument change:“更改乐器(Instrument

Change)”命令是用来告诉JFugue要用给定的MIDI乐器号或者名称来演奏下面的音符。它的命令是“I”,后面紧跟一个从0到127的数字,或者释放在方括号里面的乐器名,比如“I9”或者“I[Guitar]”。

Patterns

模式(pattern)是一个含有音乐说明的音符集合。一个模式可以代表整首乐曲、乐曲中单独的部分,也可以是乐曲反复或者经常用到的片段。模式可以通过其它的模式来创建,一个模式里的乐曲可以被以有趣的方式或者创造性的方式被转换。

 类似资料: