private NoteSymbol bassNoteSymbol;
/**
- * æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\83«ã\83¼ã\83\88é\9f³ã\81¨æ§\8bæ\88\90é\9f³ã\82\92æ\8c\81ã\81¤ã\83¡ã\82¸ã\83£ã\83¼ã\82³ã\83¼ã\83\89ã\82\92æ§\8bç¯\89ã\81\97ã\81¾ã\81\99ã\80\82
+ * 指定されたルート音と構成音を持つコードを構築します。
* @param root ルート音(ベース音としても使う)
* @param itvs その他の構成音の音程
*/
public Chord(NoteSymbol root, Interval... itvs) { this(root, root, itvs); }
/**
- * 指定されたルート音、ベース音、構成音を持つメジャーコードを構築します。
+ * 指定されたルート音、ベース音、構成音(可変個数)を持つコードを構築します。
* @param root ルート音
* @param bass ベース音
* @param itvs その他の構成音の音程
this(root, bass, Arrays.asList(itvs));
}
/**
- * 指定されたルート音、ベース音、構成音を持つメジャーコードを構築します。
+ * 指定されたルート音、ベース音、構成音(コレクション)を持つコードを構築します。
* @param root ルート音
* @param bass ベース音
* @param itvs その他の構成音の音程
*/
public Chord(NoteSymbol root, NoteSymbol bass, Collection<Interval> itvs) {
- bassNoteSymbol = root;
- rootNoteSymbol = bass;
+ rootNoteSymbol = root;
+ bassNoteSymbol = bass;
+ for(Interval itv : itvs) if(itv != null) set(itv);
+ }
+ /**
+ * 元のコードの構成音の一部を変更した新しいコードを構築します。
+ * @param chord 元のコード
+ * @param itvs ルート音、ベース音を除いた、変更したい構成音の音程
+ */
+ public Chord(Chord original, Interval... itvs) {
+ this(original.rootNoteSymbol, original.bassNoteSymbol);
+ offsets = new HashMap<>(original.offsets);
for(Interval itv : itvs) if(itv != null) set(itv);
}
/**