JFugue 获取指定音阶(如C大调)音符的方法及Intervals构造参数说明
JFugue使用相关问题解答
1. 检索指定音阶所有音符的方法
JFugue中内置org.jfugue.theory.Scale类专门用于音阶相关操作,获取C大调音阶所有音符的步骤如下:
- 先引入对应依赖类:
import org.jfugue.theory.Key; import org.jfugue.theory.Scale; import org.jfugue.theory.Note; - 调用对应方法获取音阶音符数组:
// 方式1:直接传入音阶字符串初始化 Scale cMajorScale = new Scale("C Major"); Note[] cMajorNotes = cMajorScale.getNotes(); // 方式2:结合Key类灵活指定调性与八度 Key cKey = new Key("C4"); // 指定根音为C4(中央C) Scale majorScale = Scale.MAJOR; // 调用内置大调音阶常量 Note[] c4MajorNotes = majorScale.getNotes(cKey);
上述代码返回的cMajorNotes数组内容为[C, D, E, F, G, A, B],指定八度后返回的音符会携带对应八度标识。
2. org.jfugue.theory.Intervals类构造函数参数说明
Intervals类用于定义音程规则,是Scale类的核心底层实现,常用的构造函数重载有三类:
- 传入音程模式字符串:支持两种格式,一是用音级标识(带升降号后缀),二是用全/半音标识(W代表全音,H代表半音):
// 大调音阶音级写法 Intervals majorIntervals1 = new Intervals("1 2 3 4 5 6 7"); // 大调音阶全半音写法 Intervals majorIntervals2 = new Intervals("W W H W W W H"); // 和声小调音级写法 Intervals harmonicMinorIntervals = new Intervals("1 2 b3 4 5 b6 7"); - 传入半音差整数数组:每个元素代表对应音与根音的半音间隔差值,比如大调音阶的半音差数组为
[0,2,4,5,7,9,11]:Intervals majorIntervals = new Intervals(new int[]{0,2,4,5,7,9,11}); - 传入已有Intervals实例:实现音程规则的复制:
Intervals copyIntervals = new Intervals(majorIntervals);
你可以自定义Intervals实例生成自定义音阶,示例如下:
// 自定义小调五声音阶 Scale customPentatonic = new Scale(new Intervals("1 2 b3 5 6"), "小调五声音阶");
内容的提问来源于stack exchange,提问作者BabaNew
相关产品推荐
相关产品推荐

