スポンサーリンク
音楽制作において、複雑なコード(テンションコードやスラッシュコード)の解析は時間がかかる作業です。今回は、これらのコードを自動で解析するプログラムの作り方を、実装例とともに詳しく解説します。
スポンサーリンク
複雑なコードとは?基本知識の整理
複雑なコードには主に以下の2種類があります:
- テンションコード:基本の和音に9th、11th、13thなどの音を加えたコード(例:Cmaj7(9)、Dm11)
- スラッシュコード:ベース音を指定したコード(例:C/E、Am7/D)
これらのコードは、通常のコード進行に豊かな響きや動きを加えますが、初見での解析は難しく、特にコード譜から音楽理論的な機能を読み取るのは時間がかかります。
自動解析プログラムの設計
プログラムの基本構造
自動解析プログラムは以下の3つの主要コンポーネントで構成されます:
- パーサー:コード記号を解析し、構成音を特定
- アナライザー:音楽理論に基づいて機能を分析
- フォーマッター:結果を分かりやすく表示
1. コードパーサーの実装
まず、コード記号を解析して構成音を特定するパーサーを実装します:
ChordParserクラス
- 音名とその半音数をマッピング(C: 0, C#: 1, D: 2…)
- コードタイプと構成音の間隔を定義
- Major: [0, 4, 7], Minor: [0, 3, 7]
- 7th: [0, 4, 7, 10], maj7: [0, 4, 7, 11]
- テンション: 9th [0, 4, 7, 10, 14], 11th [0, 4, 7, 10, 14, 17]
主要メソッド
- parse(chordSymbol): スラッシュコード処理、ルート音抽出、構成音生成
- pitchToNote(pitch): 数値を音名に変換
2. 音楽理論アナライザーの実装
次に、解析したコードの音楽理論的な機能を分析します:
MusicTheoryAnalyzerクラス
- analyzeProgression: コード進行全体を分析
- getChordFunction: キーに対する度数とローマ数字表記
- getFunctionName: トニック、ドミナント、サブドミナント判定
- identifyTensions: 9th、11th、13thの識別
3. 実践的な使用例
実装のポイント
以下のコード進行を自動解析してみましょう:
ジャズスタンダードのコード進行例
- Cmaj7 → A7 → Dm7 → G7
- Em7 → Am7 → Dm7/G → Cmaj9
解析結果の表示項目
- 構成音: C, E, G, B(Cmaj7の場合)
- 機能: Tonic (I)、Dominant (V)など
- テンション: 9th、11th、13thの有無
- 転回形: ベース音の指定
応用例:リアルタイムコード解析ツール
このプログラムを応用して、リアルタイムでコード進行を解析するWebツールを作ることができます:
機能拡張のアイデア:
- MIDIファイルからコードを自動検出
- オーディオファイルからのコード認識(機械学習を活用)
- コード進行の類似度判定
- 代理コードの提案機能
まとめ:次のステップへ
複雑なコードの自動解析プログラムは、音楽理論の理解を深めるだけでなく、作曲・編曲作業の効率化にも役立ちます。今回紹介した基本的な実装をベースに、さらに高度な機能を追加していくことで、より実用的なツールに発展させることができます。
関連記事
さらに学習を深めたい方は、以下の記事もご覧ください:

【2025年保存版】アニソンでよく使われるコード進行25選!作曲・DTMに活かせる定番パターン完全解説 この記事で分かること アニソンでよく使われる定番コード進行25選
各コード進行の具体的な使用例と効果
初心...
このプログラムのソースコードは、GitHubで公開予定です。ぜひ自分なりのカスタマイズを加えて、オリジナルの音楽解析ツールを作ってみてください。
スポンサーリンク
スポンサーリンク