Skip to content

メロディ評価システム

このドキュメントでは、メロディ生成における候補選択と評価の仕組みを説明します。

概要

MIDI Sketch は複数のメロディ候補を生成し、評価システムを通じて1つを選択します。

候補生成

セクション別の候補数

セクションごとに異なる候補数を使用します:

セクション候補数備考
サビ (Chorus)100フックセクション
Bメロ (Pre-chorus)50トランジションセクション
ブリッジ / チャント30コントラストセクション
Aメロ / イントロ / アウトロ20安定セクション

生成プロセス

各候補について:

  1. リズムパターン - 音符の位置と長さを生成
  2. ピッチ選択 - メロディテンプレート (PlateauTalk, RunUpTarget 等) を適用
  3. 制約適用 - 歌いやすさと音域制限を適用
  4. 装飾 - 経過音、刺繍音を追加

2段階評価

評価は2段階で行われます:カリング(候補のフィルタリング)とスコアリング(候補のランク付け)。

ステージ1: カリング

ペナルティベースの評価で候補をフィルタリングします:

ペナルティ

ペナルティ範囲検出対象
高音域0.0-1.0連続した高い音(D5以上)
高音後の跳躍0.0-1.0大きなジャンプの後に高音
急激な方向転換0.0-1.0ジグザグパターン
単調さ0.0-1.0変化のない同じ音の繰り返し
息継ぎなし0.0-0.3休符なしで短い音が連続
ギャップ率0.0-1.0無音を挟んだ散らばった音

ギャップ率

ギャップ率ペナルティは、散らばった不連続な音符パターンを対象とします。高いギャップ率は音符間の無音が多いことを示します。

ボーナス

ボーナス範囲検出対象
明確なピーク0.0-0.2フレーズ内の単一の最高点
モチーフ反復0.0-0.2AAAB反復パターン
フレーズ結束0.0-1.0まとまったグループを形成する音
フレーズ結束の基準
  • 順次進行のラン(連続した接続音)
  • 一貫したリズムパターン
  • 3音セルの反復(音程 + 長さのモチーフ)

ステージ2: スコアリング

カリングを通過した候補は6つの次元でスコアリングされます:

歌いやすさスコア

音程分布を測定:

音程タイプ目標範囲
ステップ(1-2半音)40-50%
同音20-30%
小跳躍(3-4半音)15-25%
大跳躍(5+半音)5-10%

コードトーン率

強拍でのコードトーン頻度を測定:

  • 強拍: 4/4拍子の1拍目と3拍目(2拍ごと、tick % 960 == 0)
  • 高い率は和声的により安定したメロディを示す

輪郭形状

メロディの形状を検出:

  • アーチ: 上昇して下降
  • ウェーブ: 振動パターン
  • 下行: 徐々に下降

サプライズ要素

フレーズあたりの大跳躍(5+半音)を測定。目標: 1-2回。

AAABパターン

変化を伴う反復を検出 - 同じフレーズが3回繰り返された後に変化。

リズム-音程相関

音符の長さと音程幅の適合度を測定:

組み合わせスコア理由
長い音符 + 大きな跳躍高い歌手は大きな跳躍に時間が必要
短い音符 + ステップ高い速いパッセージは順次進行が最適
短い音符 + 大きな跳躍低い歌うのが困難

ポップボーカル理論に基づく:歌手は大きなピッチ変化に準備時間が必要です。このスコアリングは自然に歌いやすいメロディを評価します。

スタイル別の重み

ボーカルスタイルごとに異なる評価重みを使用:

スタイル歌いやすさサプライズプラトーバイアス高音域
Standard0.250.151.01.0
Idol0.300.121.21.0
Rock0.200.200.81.2
Ballad0.400.101.10.9
Anime0.250.250.91.3
Vocaloid0.100.250.61.1
パラメータ定義
  • 歌いやすさ: 音程ベースのスコアリング重み
  • サプライズ: 大跳躍検出の重み
  • プラトーバイアス: 同音継続の傾向
  • 高音域: 高い音への傾向

スタイル別コヒージョン閾値

スタイルによって必要なメロディのまとまり度合いが異なります:

スタイルコヒージョン閾値備考
バラード高い滑らかで繋がったラインが必要
シティポップ高いレガートフレーズを好む
ボカロ低い角張ったメロディを許容
ロック低い分断されたパターンを受容

コヒージョン閾値を下回るメロディはカリング時にペナルティを受けます。

スタイル別ギャップ閾値

スタイルギャップ閾値備考
バラード高いより多くの無音を許容
アイドル/ロック低い高い音符密度を期待

生成後の分析

不協和音アナライザーは生成後のハーモニー問題をチェックします。

問題タイプ

タイプ説明
同時衝突2つの音が不協和音程ベース E + メロディ F = 短2度
非コードトーン現在のコードにない音Cメジャーコード上のD
コード変化後の持続コード変化後に非コードトーンにFコード上で持続するC
非ダイアトニック音キーのスケールにない音Cメジャーの F#

深刻度レベル

深刻度音程備考
High短2度 (1)、長7度 (11)強い不協和
Mediumトライトーン (6)、強拍非コードトーン文脈依存
Low弱拍非コードトーン(経過音)多くの場合許容

CLI 使用方法

bash
# 生成して分析
./midisketch_cli --seed 42 --analyze

# 既存のMIDIを分析
./midisketch_cli --input song.mid --analyze

出力例:

=== Dissonance Analysis ===
Total issues: 3
  Simultaneous clashes: 1 (high: 1, medium: 0)
  Non-chord tones: 2 (medium: 1, low: 1)

パイプラインまとめ

まとめ

  • セクションごとに複数の候補を生成(20-100)
  • 2段階評価:カリング後にスコアリング
  • スタイル別の重みで評価基準を調整
  • 生成後の不協和音分析が利用可能

Released under the MIT License.