You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:45:03