曲のセクションとコードの分析
フリー音楽素材「魔王魂」の歌入りの 2 曲について、コード(和音)の進行と、曲の構成(イントロ・Aメロ・Bメロ・サビなどのセクションの並び)を自動で推定し、ギターの TAB 譜にしました。再生すると、曲と、TAB を弾く合成音のギターが一緒に流れます。
コードは 3 段階で推定しています。①曲の音からそのまま読む、②曲をパートに分けてから読み直す、③推定した曲の構成を手がかりに直す、です。切り替えて、どこが変わったかを聴き比べられます。推定はすべて自動で、誤りを含みます。しくみはページの下で説明しています。経緯は Qiita の記事「曲のセクション(Aメロ・サビ)を推定→コード推定の可能性」に書きました。
音楽:魔王魂「シャイニングスター」(歌:詩歩、作詞・作曲:森田交一)(魔王魂)。曲を読み込み中…(読み込む前でも、TAB の合成ギターだけで再生できます)
サビの聴き比べ37–57 小節(0:55–1:27)
同じサビを、①②③それぞれのコードの合成ギターと一緒に流します。再生中に別の段を押すと、同じ位置のまま切り替わります。色の付いた小節は、一つ前の段から和音が変わった所です。
「何度も出てくる部分(サビなど)は、同じ位置で同じ和音のはず」という考えで、②の読みを直した結果です。赤い印は②から変わった小節です。(36 / 181 小節)
②で使った、AI のモデルで分けた 4 つのパートの音量を変えられます(魔王魂の楽曲を改変したもの)。全部 100% で元の曲に戻ります。
曲全体の分析横軸は小節の番号。帯を押すと、その小節に移ります
キー(その付近):前後 8 小節の和音の響きから推定した調です。曲の途中で調が変わる(転調する)所が分かります。歌が入っている所:分けた歌の音量で、濃いほど大きい所です。同じ歌詞の繰り返し:歌を音声認識にかけ、前に出てきた歌詞と同じ行が歌われている所を濃く示しています(歌詞の文字そのものは、このページにも分析にも使っていません)。
部分ごとのコード進行推定した構成の、各部分の最初の 1 回。×の数字は、その部分が曲の中に出てくる回数
| イントロ ×1 | D♭sus2 → Fm7/A♭ → A♭sus4 → Fsus4 → G♭sus2 → E♭m7 → D♭sus2 → Fsus4 → E♭m7 → E♭m7/G♭ |
| Aメロ ×2 | D♭sus2 → G♭sus2 → A♭ → F/A → B♭m7 → G♭sus2 → Fm7 → E♭m7 → A♭7/G♭ → D♭sus2 → G♭sus2 → A♭ → G♭dim/A → B♭m7 → G♭sus2 → D♭/F → E♭sus4 → A♭sus4 |
| Bメロ ×2 | D♭maj7 → G♭maj7 → Fm → B♭m7 → G♭maj7 → A♭ → Amaj7 → B7 |
| サビ ×3 | Bmaj7 → D♭ → G♭sus2 → A♭7 → B♭m7 → D♭sus4 → Fsus4/C → Bmaj7 → A♭maj7 → D♭maj7 → G♭sus2 → A♭maj7 → B♭m7 → D♭sus4 → Fsus4/C → E♭m7 → G♭m/A → Fmaj7 → Cm7/B♭ → D♭maj7 → B♭m7 |
| 間奏 ×3 | D♭sus4 → Fsus4 → G♭sus2 → E♭m7 → D♭sus2 → Fsus4 → E♭m7 → E♭m7/G♭ → Fm7/A♭ |
| 転調部 ×1 | A → E/B → A → Emaj7/E♭ → Emaj7/A♭ → E/B → A → Emaj7/E♭ → Emaj7/A♭ → E/B |
| アウトロ ×1 | D♭maj7 → Fm |
ギター TAB③ 曲の構成で直した結果・赤い印は一つ前の段階から変わった小節
しくみ
① 速い解析
曲の音から拍と小節の区切りを見つけ、小節ごとに、音の中の 12 種類の音(ド、ド♯、レ…)の強さを測ります。その強さの並びを和音のひな形と比べ、ベースの音からルート音(コードの土台になる音)を先に決めてから、一番よく合う和音を選びます。
② パートに分けてからの解析
音源分離のモデル(SCNet Small)で、曲を歌・ドラム・ベース・その他の楽器の 4 つの音に分けます。歌とドラムを除き、ベースとその他の楽器の音だけで①と同じ読み方をやり直します。歌のメロディの音を和音の一部と取り違えにくくなります。①と②は、耳コピ ギター TAB メーカー(ブラウザで動くツール)の「最初の解析」「詳しい解析」と同じものです。
曲の構成の推定
まず規則で、確かな事実と区切りの下書きを作ります。次に AI(Claude Haiku)が、それを見て区切りとセクション名(イントロ・Aメロ・Bメロ・サビ・間奏・Cメロ・転調部・アウトロ)を決めます。最後にもう一度規則で、事実に反する所を直します。
構成の推定で使った規則
- 歌が入っている小節:分けた歌の音量が、その曲で歌っている所の代表的な音量(音量の大きい側半分の中央値)から 15 dB 以内の小節。1〜2 小節の途切れは息継ぎとみなし、歌が入っている側に含めます。
- 歌の入りと終わり:最初に歌が入る小節と、最後に歌う小節。最初の 1 小節だけ音量が小さい場合は、歌い出しの前ぶれとみなして次の小節を入りにします。
- その付近のキー:前後 8 小節のベースとその他の楽器の音を、長調・短調それぞれの典型的な音の分布(クラムハンスルの調性プロファイル)と比べ、一番近い調を選びます。曲の調と同じ、平行調(ハ長調とイ短調のような組)、同主調(ハ長調とハ短調)、属調・下属調(となりの調)は、転調とみなしません。それ以外の調が 6 小節以上続くときだけ、転調とみなします。
- 同じ歌詞の繰り返し:分けた歌に音声認識(Whisper)をかけ、2 小節ごとに区切った文字を、それより前の文字と比べます。2 文字ずつの組の重なりが 3 割以上なら、前の行の繰り返しとします。歌詞の文字は、この判定にだけ手元で使い、ページにも AI にも渡していません。
- 区切りの下書き:J-POP によくある並び(イントロ → A → B → サビ → 間奏 → A → …)と、よくある長さ(8 小節・16 小節)を型にして、歌の有無、歌の高さ(Aメロは低め、Bメロは中くらい、サビは高め)、コードの繰り返し、調の外の和音の割合(転調部の手がかり)に一番よく合う区切りを計算で探します。
- 区切ってよい位置:歌の入り・終わりの小節と、そこから 4 小節ごとの小節。
- AI の役割:1〜6 の数値と下書きを見て、区切りと名前を決めます。サビは前に出た歌詞を繰り返し、高い音域で歌われることが多い、などの一般的な知識を使います。
- 仕上げの規則:最初に歌が入る前はイントロ、最後の歌のあとはアウトロにします。歌の入っている区間の 6 割以上が別の調で、同じ名前の別の区間が同じ調にない場合は、転調部にします(部分ごとに調を変える曲では、その部分の名前を残します)。
③ 曲の構成で直した結果
推定した構成で、同じ名前の部分(たとえば曲に何度も出てくるサビ)を重ね、同じ位置の小節どうしを比べます。読みが食い違う小節などを規則で見つけ、直す候補を規則で出し、どれにするかを AI(Claude Haiku)が選びます。
コードの直しで使った規則
- 重ね方:同じ名前の部分のうち一番長いものを基準にし、ほかの回を最大 4 小節ずらして、ルート音が一番よく一致する位置で重ねます。
- 直す候補にする小節:(a) 同じ位置のほかの回と和音が違う小節、(b) sus2(3 度の音がない和音)と読んだ小節、(c) その付近の調の外の和音で、曲の中で 1 回しか出てこないもの。sus2 は、長調か短調かを決める 3 度の音が聞き取れなかったときによく出る読みです。
- 候補の和音:その小節の②の読み、同じ位置のほかの回の読み、①の読みと、それぞれを素直な三和音にしたもの(sus2 は、その付近の調で自然な長三和音か短三和音に)。新しい和音は作りません。
- 音への合い具合:候補ごとに、その小節の音と、同じ位置の小節の音の平均に、どれだけ合うかを 0〜1 の数で付け、AI に渡します。
- AI の役割:候補の中から 1 つを、調、前後の和音のつながり、部分の役割、音への合い具合を見て選びます。
- 確認の規則:ルート音が変わる直しは、その小節の音への合い具合が元の読みより 0.05 以上下がらないときだけ認めます。ルート音が同じで種類だけが変わる直し(B♭sus2 → B♭m など)は、音の成分では 3 度の有無を判断できないので、そのまま認めます。
どれくらい合っているか
ChordWiki に投稿されたコード譜(どなたかの耳コピで、正解ではありません)と比べました。コード譜の和音の変わり目を順にたどって、推定した和音の並びの中に見つかった数です(ルート音が合う / 長調・短調まで合う(変わり目の数))。
| 範囲 | ① 速い解析 | ② パート分け | ③ 構成で直す |
| 最初の歌の部分(Aメロから 1 回目のサビまで) | 19 / 16(32) | 25 / 18(32) | 26 / 20(32) |
| 曲全体 | 53 / 37(62) | 54 / 38(62) | 55 / 38(62) |
曲の構成は、同じ方法で推定した結果を自分で聴いて、ほぼ合っていると判断しました。
ツールが推定した曲全体の調:D♭、テンポ 158 BPM、181 小節。