Skip to content

オプション関係性

このドキュメントでは、MIDI SketchのSongConfigオプション間の関係性を説明します。

関係性の種類

オプションには以下の関係性があります:

  • 依存: 親オプションが有効でないと子オプションは無視される
  • 優先: 特殊な値(0など)が他の設定をオーバーライド
  • 干渉: 特定の組み合わせでバリデーションエラー
  • 暗黙: あるオプションを設定すると内部パラメータが自動設定される

なぜこれが重要か

これらの関係性を理解することで、予期しない動作を回避できます。例えば、arpeggioEnabled=falseの場合、arpeggioPattern=2を設定しても効果がありません。


1. 依存関係

1.1 Call System

親オプション子オプション説明
callEnabled=trueintroChantイントロチャントの種類
callEnabled=truemixPatternMIXセクションの種類
callEnabled=truecallDensityコーラスでのコール密度
callEnabled=truecallNotesEnabledコールをMIDIノートとして出力

1.2 Arpeggio

親オプション子オプション説明
arpeggioEnabled=truearpeggioPatternUp/Down/UpDown/Random/Pinwheel/PedalRoot/Alberti/BrokenChord (0-7)
arpeggioEnabled=truearpeggioSpeed8分/16分/3連符
arpeggioEnabled=truearpeggioOctaveRange1-3オクターブ
arpeggioEnabled=truearpeggioGateゲート長(0-100)
arpeggioEnabled=truearpeggioSyncChordコード変更と同期

1.3 Humanization

親オプション子オプション説明
humanize=truehumanizeTimingタイミング揺れ(0-100)
humanize=truehumanizeVelocityベロシティ揺れ(0-100)

1.4 Chord Extensions

親オプション子オプション説明
chordExtSus=truechordExtSusProbSus確率(0-100)
chordExt7th=truechordExt7thProb7th確率(0-100)
chordExt9th=truechordExt9thProb9th確率(0-100)
chordExtTritoneSub=truechordExtTritoneSubProbトライトーン代理確率(0-100、AccompanimentConfigのみ)

1.5 Modulation

親オプション子オプション説明
modulationTiming != NonemodulationSemitones転調量(1-4半音)
modulationSemitones > 0(内部) effective_vocal_high転調後も音域内に収まるよう自動調整

注意:

  • modulationTiming=Noneの場合、modulationSemitonesはバリデーションされない
  • ボーカル音域の自動調整: 転調が有効な場合、effective_vocal_high = vocal_high - modulation_semitonesで計算され、転調後もボーカルが音域内に収まる
  • 全CompositionStyleで有効: BGMモード(BackgroundMotif, SynthDriven)でも転調が機能する

1.6 Vocal (skipVocalによる排他)

条件有効なオプション用途
skipVocal=falseすべてのvocal関連オプション通常の楽曲生成
skipVocal=truevocal関連オプションは全て無視BGMのみ生成(Vocalなし)

ボーカルの復元不可

BGM専用生成後にボーカルを追加するAPIは存在しません。ボーカルが必要な場合は、compositionStyle=MelodyLeadまたはVocal-Firstワークフローを使用してください(JavaScript API参照)。

1.7 シンコペーション

親オプション子オプション説明
enableSyncopation=truevocalGrooveのシンコペーション効果falseの場合、Syncopatedグルーブでもシンコペーション重み0.0
enableSyncopation=falsesyncopation_prob=0.0シンコペーション確率がゼロに強制
enableSyncopation=falseallow_bar_crossing=false小節線跨ぎが強制無効

注意: タイミングオフセット(OffBeatの+30 ticks等)はenableSyncopationに関係なく適用されます。シンコペーション固有の重み付けのみが影響を受けます。

1.8 明示フラグ

親オプション子オプション説明
moodExplicit=truemood (0-23)moodフィールドが直接使用される。falseの場合はstylePresetIdから自動導出
formExplicit=trueformIdformIdが指定通りに使用される。falseの場合はBlueprint/ランダム化により上書きされる可能性あり
chordExtProbExplicit=trueコード拡張確率Moodに基づくコード拡張確率の自動調整が抑制される
drumsEnabledExplicit=truedrumsEnabled明示的なドラム制御。drums_required Blueprintでドラムを無効化するために必要

1.9 Blueprint ID 9 (BehavioralLoop)

親オプション子オプション説明
blueprintId=9addictive_mode=true内部の中毒性モードが有効化
addictive_mode=trueHookIntensity=Maximumフック強度が最大(内部レベル4)に強制
addictive_mode=trueRiffPolicy=LockedPitchリフポリシーがLockedPitchに強制

2. CompositionStyleによる分岐

compositionStyleの値によって、生成されるトラックと有効なオプションが変わります:

2.1 MelodyLead (0) - デフォルト

生成トラック: Vocal → Aux → Motif (Blueprint依存) → Bass → Chord → Guitar → Arpeggio (有効時) → Drums → SE

2.2 BackgroundMotif (1) - BGM専用モード

生成トラック構成:

arpeggioEnabled生成されるトラック
falseAux + Motif + Bass + Chord + Guitar + Drums
trueAux + Motif + Bass + Chord + Guitar + Drums + Arpeggio

2.3 SynthDriven (2) - BGM専用モード

生成トラック: Motif (Blueprint依存) + Bass + Chord + Guitar + Arpeggio (有効時) + Drums

CompositionStyleの選び方

  • MelodyLead: ボーカル付きの楽曲(ポップ、ロック、バラード)
  • BackgroundMotif: 繰り返しメロディパターンのインストBGM(ゲーム音楽、アンビエント)
  • SynthDriven: エレクトロニック/シンセ主体のインストトラック

3. 優先順位(特殊値によるオーバーライド)

オプション特殊値動作
bpm0スタイルプリセットのデフォルトBPMを使用
seed0ランダムシードを自動生成
targetDurationSeconds0formIdで指定した構造パターンを使用
vocalStyle0 (Auto)スタイルに応じたランダム選択
melodyTemplate0 (Auto)スタイルに応じたデフォルト選択
driveFeel50ニュートラル(0=レイドバック、100=アグレッシブ)
moraRhythmMode2 (Auto)VocalStylePresetから自動選択

driveFeelの詳細

効果
0レイドバック:タイミング遅延、ベロシティ低下
50ニュートラル:標準的なタイミング(デフォルト)
100アグレッシブ:タイミング先行、ベロシティ上昇、シンコペーション強化(enableSyncopation=true時のみ)

energyCurveの値

名前効果
0GradualBuild徐々に盛り上がる(デフォルト)
1FrontLoaded冒頭からエネルギー高、後半は落ち着く
2WavePattern波状のエネルギー推移
3SteadyState一定のエネルギーを維持

ゼロ値の活用

ゼロは「自動」または「デフォルトを使用」を意味することが多いです。正確な値を指定せずにスタイルに適したデフォルトを使いたい場合に便利です。

フローチャート


4. メロディオーバーライド

メロディオーバーライドは、VocalStylePresetとMelodicComplexityの処理に適用されます。センチネル値(パラメータに応じて0、0xFF、-128)は「プリセットデフォルトを使用」を意味します。

4.1 メロディオーバーライドパラメータ

パラメータ範囲デフォルト説明
melodyMaxLeap0=preset, 1-120最大音程跳躍(半音数)
melodySyncopationProb0-100, 0xFF=preset0xFFシンコペーション確率(%)
melodyPhraseLength0=preset, 1-80フレーズ長(小節数)
melodyLongNoteRatio0-100, 0xFF=preset0xFFロングノート比率(%)
melodyChorusRegisterShift-12〜+12, -128=preset-128コーラスのレジスタシフト(半音)
melodyHookRepetition0=preset, 1=off, 2=on0フックの反復パターン
melodyUseLeadingTone0=preset, 1=off, 2=on0セクション境界での導音挿入

4.2 三値パラメータ

melodyHookRepetitionmelodyUseLeadingToneは三値設計です:

意味
0プリセット/VocalStylePresetの値を使用(デフォルト)
1明示的にOFF
2明示的にON

4.3 プリセット制御のみのパラメータ(オーバーライドなし)

以下はVocalStylePresetのみで制御され、SongConfigオーバーライドは提供されません:

  • chorus_long_tones: サビでの音符延長(Idol/Rock/Anime等で有効)
  • allow_bar_crossing: 小節線を跨ぐ音符の許可(Vocaloid/Rock/Anime等で有効)
  • allow_unison_repeat: 連続同音の許可(デフォルトtrue)

5. モチーフオーバーライド

モチーフオーバーライドは、BackgroundMotifモードおよびBlueprintベースのモチーフセクションでのメロディモチーフ生成パラメータを制御します。

5.1 モチーフオーバーライドパラメータ

パラメータ範囲デフォルト説明
motifLength0=auto, 1/2/40モチーフ長(拍数)
motifNoteCount0=auto, 3-80モチーフ内の音数
motifMotion0xFF=preset, 0-40xFF音の動き
motifRegisterHigh0=auto, 1=low, 2=high0音域(0=中音域)
motifRhythmDensity0xFF=preset, 0-20xFFリズム密度

5.2 MotifMotionの値

名前説明
0Stepwiseスケールステップのみ(2度)
1GentleLeap3度まで
2WideLeap5度まで
3NarrowStep狭いスケール度(ジャジー)
4Disjunct不規則な跳躍(実験的)
5Ostinato同一ピッチクラス反復(内部Blueprint用のみ、APIでは使用不可)

Ostinatoモーション

motifMotion=5(Ostinato)は内部Blueprint定義専用です。APIでは値0-4のみ公開されています。4を超える値はmin(val, 4)でクランプされます。

5.3 MotifRhythmDensityの値

名前説明
0Sparse低密度パターン
1Medium標準密度
2Driving高密度パターン

6. バリデーション干渉

6.1 パラメータ有効範囲一覧

パラメータ有効範囲エラーコード
stylePresetId0-16INVALID_STYLE
key0-11INVALID_KEY
bpm0, 40-240INVALID_BPM
chordProgressionId0-21INVALID_CHORD
formId0-17INVALID_FORM
vocalAttitudeスタイル依存(allowedAttitudesビットマスク)INVALID_ATTITUDE
vocalLow, vocalHigh36-96, low ≤ highINVALID_VOCAL_RANGE
compositionStyle0-2INVALID_COMPOSITION_STYLE
vocalStyle0-13INVALID_VOCAL_STYLE
melodyTemplate0-7INVALID_MELODY_TEMPLATE
melodicComplexity0-2INVALID_MELODIC_COMPLEXITY
hookIntensity0-3INVALID_HOOK_INTENSITY
vocalGroove0-5INVALID_VOCAL_GROOVE
modulationTiming0-4INVALID_MODULATION_TIMING
modulationSemitones1-4 (timing≠0時)INVALID_MODULATION
arpeggioPattern0-7INVALID_ARPEGGIO_PATTERN
arpeggioSpeed0-2INVALID_ARPEGGIO_SPEED
callDensity0-3INVALID_CALL_DENSITY
introChant0-2INVALID_INTRO_CHANT
mixPattern0-2INVALID_MIX_PATTERN
motifRepeatScope0-1INVALID_MOTIF_REPEAT_SCOPE
arrangementGrowth0-1INVALID_ARRANGEMENT_GROWTH
blueprintId0-9, 255(255=自動ランダム)

6.2 validateSongConfigでバリデーションされないパラメータ

以下のパラメータはvalidateSongConfig()でチェックされません。不正な値はconfig converter内部でクランプまたは無視されます:

パラメータ有効範囲備考
enableSyncopationbooleanバリデーション不要
energyCurve0-3enum範囲内で使用
driveFeel0-1000=レイドバック、50=ニュートラル、100=アグレッシブ
moraRhythmMode0-20=Standard, 1=MoraTimed, 2=Auto
melodyMaxLeap0=preset, 1-12そのまま使用
melodySyncopationProb0-100, 0xFF=preset0-1.0fに変換
melodyPhraseLength0=preset, 1-8そのまま使用
melodyLongNoteRatio0-100, 0xFF=preset0-1.0fに変換
melodyChorusRegisterShift-128=preset, -12〜+12そのまま使用
melodyHookRepetition0-2三値
melodyUseLeadingTone0-2三値
motifLength0=auto, 1/2/4switch文で処理、不正値は無視
motifNoteCount0=auto, 3-8clampで3-8に制限
motifMotion0xFF=preset, 0-4min(val, 4)でクランプ。Ostinato(5)は内部のみ
motifRegisterHigh0=auto, 1=low, 2=highそのまま使用
motifRhythmDensity0xFF=preset, 0-2min(val, 2)でクランプ

6.3 スタイル x vocalAttitude の組み合わせ

各スタイルプリセットにはallowedAttitudesビットフラグがあり、許可されていないAttitudeを指定するとエラー:

typescript
// 例: スタイルがCleanとExpressiveのみ許可
allowedAttitudes = ATTITUDE_CLEAN | ATTITUDE_EXPRESSIVE  // 0b011 = 3

vocalAttitude = 2 (Raw) → INVALID_ATTITUDE エラー

許可Attitudeは midisketch_style_preset_allowed_attitudes(styleId) で取得可能。

6.4 modulationTiming x modulationSemitones の依存関係

modulationTimingmodulationSemitones結果
0 (None)任意(無視される)OK
1-40INVALID_MODULATION
1-41-4OK
1-45以上INVALID_MODULATION

6.5 callEnabled x targetDurationSeconds x bpm の干渉

IF callEnabled == true AND targetDurationSeconds > 0
THEN targetDurationSeconds >= getMinimumSecondsForCall(introChant, mixPattern, bpm)

最小時間の計算式:

min_bars = 24 + introChant_bars + mixPattern_bars
min_seconds = min_bars * 240 / bpm
bpm基本最小秒数(call有効時)introChant/mixPattern追加時
40144秒さらに増加
6096秒さらに増加
12048秒さらに増加
24024秒さらに増加

対処法: targetDurationSeconds=0(自動)を使用してシステムに適切な長さを決定させる。

6.6 危険な組み合わせ

これらの組み合わせは避けてください

以下の組み合わせはバリデーションエラーまたは予期しない動作を引き起こします。生成前にパラメータを確認してください。

パターン原因対処法
modulationTiming≠0 + modulationSemitones=0転調有効だが量が無効modulationSemitones=2に設定
callEnabled=true + targetDurationSeconds=30 + bpm=40時間不足targetDurationSeconds=0に設定
vocalLow=80 + vocalHigh=60範囲反転low ≤ highにする
vocalLow=30 または vocalHigh=100範囲外36-96の範囲内にする
bpm=300BPM範囲外40-240の範囲内にする
blueprintId=1,5,6,7 + drumsEnabled=falsedrumsEnabledExplicit=trueなし)drums_required Blueprintがドラムを強制有効化drumsEnabledExplicit: trueを設定して明示的に無効化
enableSyncopation=false + 高いvocalGrooveシンコペーション効果がサイレントに無効化enableSyncopation: trueを設定
Blueprint mood_maskの不一致MoodがBlueprintと非互換isMoodCompatible(blueprintId, mood)で互換性を確認

7. ギタートラック

guitarEnabledはギタートラックの生成を制御します。

プロパティ
JSデフォルトfalse
C++デフォルトtrue

ギターのデフォルト値の違い

JS APIではguitarEnabledのデフォルトがfalseですが、C++エンジンではデフォルトがtrueです。JS生成の出力にギタートラックが必要な場合は、明示的にguitarEnabled: trueを設定してください。


8. トライトーン代理

chordExtTritoneSubchordExtTritoneSubProbは、V7からbII7へのトライトーン代理を有効化します。

プロパティ説明
chordExtTritoneSubトライトーン代理の有効/無効
chordExtTritoneSubProbトライトーン代理の確率(0-100)

利用可能範囲

トライトーン代理はAccompanimentConfigのみで利用可能です。JS SongConfig型(types.ts)には公開されていません。使用するには、generateAccompaniment()のconfig経由か、C++ JSON APIで直接指定してください。


9. Mood依存のコード拡張確率

chordExtProbExplicit=false(デフォルト)の場合、Moodに応じてコード拡張確率が自動調整されます:

Mood7th確率9th確率sus確率
CityPop0.400.25-
RnBNeoSoul0.500.35-
Ballad/Sentimental0.30-0.25
Nostalgic/Chill0.25--
Lofi0.400.30-

chordExtProbExplicit=trueを設定すると、この自動調整が抑制され、明示的に指定した確率値が使用されます。


10. drumsEnabledExplicitの動作

drumsEnabledExplicitフラグは、drums_required Blueprintに対してdrumsEnabled設定を尊重するかどうかを制御します。

drumsEnabledExplicitdrumsEnabledBlueprint drums_required結果
false(デフォルト)falsetrue(ID 1,5,6,7)ドラム強制有効
false(デフォルト)true任意ドラム有効
truefalsetrue(ID 1,5,6,7)ドラム無効(明示的オーバーライドが尊重)
truefalsefalseドラム無効

ドラム必須Blueprint

drumsEnabledExplicit=trueなしでは、drums_required=trueのBlueprint(ID 1, 5, 6, 7)はdrumsEnabled設定に関係なくドラムを強制有効化します。


11. 推奨組み合わせパターン

11.1 シンプルなポップ(デフォルト)

javascript
{
  stylePresetId: 0,
  compositionStyle: 0,  // MelodyLead
  drumsEnabled: true,
  arpeggioEnabled: false,
  callEnabled: false
}

11.2 ボーカロイド風

javascript
{
  stylePresetId: 14,  // Anime Opening
  compositionStyle: 0,
  vocalStyle: 2,      // Vocaloid - 高密度・広跳躍
  arpeggioEnabled: true,
  arpeggioSpeed: 1    // 16分
}

11.3 アイドル曲(コールあり)

javascript
{
  stylePresetId: 3,   // Idol Standard
  vocalStyle: 4,      // Idol
  callEnabled: true,
  introChant: 1,      // ガチ恋
  mixPattern: 2,      // 虎火
  callDensity: 2,     // Standard
  callNotesEnabled: true,
  targetDurationSeconds: 180  // 3分以上必要
}

11.4 BGMモード(Motif + Arpeggio)

javascript
{
  compositionStyle: 1,  // BackgroundMotif (BGM専用)
  // skipVocalの指定は不要(BackgroundMotifでは自動的にVocal無効)

  // Motif設定
  motifFixedProgression: true,
  motifMaxChordCount: 4,

  // Arpeggio設定(BackgroundMotifでも使用可能)
  arpeggioEnabled: true,      // → Motif + Arpeggio 両方生成
  arpeggioPattern: 2,         // UpDown
  arpeggioSpeed: 1,           // 16分
  arpeggioOctaveRange: 2,
  arpeggioGate: 80,

  // 転調設定(BGMモードでも有効)
  modulationTiming: 1,        // LastChorus
  modulationSemitones: 2      // +2半音
}
// 出力: Motif + Bass + Chord + Drums + Arpeggio(最後のサビで+2半音転調)

11.5 BGMモード(Arpeggio中心)

javascript
{
  compositionStyle: 2,  // SynthDriven (BGM専用)
  arpeggioEnabled: true,      // 手動で有効化が必要(自動有効ではない)
  arpeggioPattern: 0,         // Up
  arpeggioSpeed: 2,           // 3連符
  arpeggioOctaveRange: 3,

  // 転調設定(BGMモードでも有効)
  modulationTiming: 2,        // AfterBridge
  modulationSemitones: 3      // +3半音
}
// 出力: Bass + Chord + Drums + Arpeggio (Motifなし、ブリッジ後に+3半音転調)

11.6 シンコペーテッドフィール

javascript
{
  enableSyncopation: true,
  vocalGroove: 3  // Syncopated
}
// vocalGroove=3のシンコペーション効果がenableSyncopation=trueで有効になる

11.7 ドライビング16th

javascript
{
  enableSyncopation: true,
  vocalGroove: 4,   // Driving16th
  driveFeel: 80     // アグレッシブなドライブ
}
// 16分音符強調 + 高driveFeelでアグレッシブなシンコペーション

11.8 メロディ制御

javascript
{
  melodyMaxLeap: 5,
  melodyPhraseLength: 4,
  melodyLongNoteRatio: 60,
  melodyHookRepetition: 2  // 明示的にON
}
// 跳躍小さめ、4小節フレーズ、ロングノート60%、フック反復ON

11.9 R&Bスタイル

javascript
{
  moodExplicit: true,
  mood: 20,           // RnBNeoSoul
  chordExt7th: true,
  chordExt9th: true
}
// 強スウィング、拡張コード、85-100 BPM

11.10 ギター + ローファイ

javascript
{
  guitarEnabled: true,
  moodExplicit: true,
  mood: 23,            // Lofi
  compositionStyle: 1  // BackgroundMotif
}
// 80 BPM、強スウィング、ベロシティ上限90、ギタートラック有効

12. 暗黙的な内部設定

特定のパラメータを設定すると、内部で他のパラメータが自動的に設定されます。

12.1 VocalStylePreset → メロディパラメータ

vocalStyleを設定すると、内部のメロディ生成パラメータが自動設定されます:

パラメータ説明
max_leap_interval最大跳躍幅(半音数)
syncopation_probシンコペーション確率
verse/chorus_density_modifierセクション別密度係数
hook_repetitionフック反復の有無
chorus_long_tonesコーラスでの長音符
tension_usageテンション使用率

VocalStylePreset一覧 (0-13):

ID名前特徴
0Autoスタイルに応じてランダム選択
1Standard標準的なポップス
2Vocaloid高密度・広跳躍・シンコペーション(歌唱可能)
3UltraVocaloid超高速・極端な跳躍(機械向け)
4Idolキャッチー・フック重視
5Balladゆったり・長音符重視
6Rockパワフル・コーラス強調
7CityPopおしゃれ・テンション使用
8Animeドラマチック・フック強め
9BrightKira明るい・キラキラ
10CoolSynthクール・16分音符多め
11CuteAffectedかわいい・控えめシンコペ
12PowerfulShout力強い・長音符+密度上昇
13KPopK-POP スタイル、シンコペーション重視、フック駆動

12.2 MelodicComplexity → 複数パラメータ

melodicComplexity自動設定
Simple (0)note_density *= 0.7, max_leap_interval ≤ 5, hook_repetition=true, tension_usage *= 0.5, sixteenth_note_ratio *= 0.5, syncopation_prob *= 0.5
Standard (1)変更なし(デフォルト)
Complex (2)note_density *= 1.3, max_leap_interval *= 1.5 (max 12), tension_usage *= 1.5, sixteenth_note_ratio *= 1.5 (max 0.5), syncopation_prob *= 1.5 (max 0.5)

12.3 VocalAttitude → ピッチ選択

vocalAttitudeピッチ候補音楽的特徴
Clean (0)コードトーン(1, 3, 5)のみ安全・協和的・安定
Expressive (1)コードトーン + テンション(7th, 9th)カラフル・遅延解決
Raw (2)全スケールトーンエッジー・ノンコードトーン着地

12.4 CompositionStyle → 暗黙的動作

compositionStyle暗黙的に発生する動作
BackgroundMotif (1)Vocal無効化(生成されない)、Aux有効(モチーフをサポート)、Motifトラック生成、modulation有効
SynthDriven (2)Vocal/Aux完全無効化、Motif Blueprint依存、arpeggioは手動でarpeggioEnabled=trueが必要modulation有効

12.5 自動Call有効化

callEnabled=Auto(false)の場合、特定のボーカルスタイルで自動的にコールが有効化されます:

vocalStyle名前自動Call
4Idolあり
9BrightKiraあり
11CuteAffectedあり

他のボーカルスタイルでは自動Call有効化は行われません。

javascript
// 例: SynthDrivenではアルペジオの手動有効化が必要
{
  compositionStyle: 2,  // SynthDriven (BGM専用)
  arpeggioEnabled: true,   // 手動で有効化が必要
  modulationTiming: 1,     // BGMモードでも有効
  modulationSemitones: 2
  // 注: Vocal/Auxトラックはこのモードでは生成されない
}

12.6 VocalGrooveFeel → タイミング調整

vocalGroove効果
Straight (0)変更なし
OffBeat (1)オンビートを遅らせる(+30 ticks)
Swing (2)8分音符の2拍目を遅らせる
Syncopated (3)ビート2,4を先取り(-30 ticks)
Driving16th (4)16分音符を強調
Bouncy8th (5)8分音符にバウンス感

シンコペーション依存: enableSyncopation=falseの場合、全グルーブフィールでシンコペーション重みは0.0、さらにsyncopation_prob=0.0 / allow_bar_crossing=falseが強制されます。タイミングオフセット(+30 ticks等)はenableSyncopationに関係なく適用されます。

12.7 hookIntensity → フレーズ生成変更

hookIntensityduration乗数velocity加算対象セクション
Off (0)--なし
Light (1)×1.3+5Chorus, B
Normal (2)×1.5+10Chorus, B
Strong (3)×2.0+15全セクション

Maximum (4) は内部専用

hookIntensity=4(Maximum)はBehavioralLoopモード専用で、blueprintId=9またはaddictiveMode=trueの場合に内部的に設定されます。WASM/JS APIでhookIntensity=4を渡すとINVALID_HOOK_INTENSITYバリデーションエラーが発生します。


13. パラメータ適用順序

パラメータは以下の順序で適用されます。後のステージが前のステージをオーバーライドします:

1. StylePreset          → 基本パラメータ(melody_params、mood、bpmデフォルト)
2. VocalStylePreset     → max_leap、syncopation、densityのプリセット調整
3. MelodicComplexity    → 密度倍率、跳躍倍率、hook_repetition
4. SongConfig Overrides → melody/motifオーバーライドパラメータ(ユーザー指定値が最優先)
5. Master Switch        → enableSyncopation=falseでsyncopation_prob=0.0を強制

構造構築の優先順位

構造は最初にマッチするルールで決定されます:

1. targetDurationSeconds > 0  → 時間ベースの自動構築
2. formExplicit = true        → formId厳密使用(Blueprint section_flow無視)
3. Blueprint section_flow存在 → Blueprint定義のセクション構成
4. デフォルト                  → StructurePatternから構築

14. オプション依存関係ツリー

SongConfig
├── Basic Settings
│   ├── stylePresetId     ─────┐
│   ├── key                    │ スタイルが他オプションの
│   ├── bpm (0=default)        │ デフォルト値を決定
│   └── seed (0=random)        │
│                              ▼
├── Structure ◄────────────────┤
│   ├── formId                 │
│   ├── formExplicit ──────────┴─▶ true=formIdを厳密に使用
│   └── targetDurationSeconds ───▶ formIdと排他(0以外なら自動生成)

├── Mood
│   ├── moodExplicit ─────────────▶ true=moodフィールドを使用
│   └── mood (0-23) ─────────────▶ moodExplicit=falseなら無視

├── Vocal (skipVocal=falseの場合のみ)
│   ├── vocalAttitude  ◄────────── styleで制限あり
│   ├── vocalStyle     ◄────────── 0=Auto, 1-13=明示的プリセット
│   ├── vocalLow/High
│   ├── melodicComplexity
│   ├── hookIntensity
│   ├── vocalGroove    ◄────────── シンコペーション効果にはenableSyncopation=trueが必要
│   └── メロディオーバーライド
│       ├── melodyMaxLeap
│       ├── melodySyncopationProb
│       ├── melodyPhraseLength
│       ├── melodyLongNoteRatio
│       ├── melodyChorusRegisterShift
│       ├── melodyHookRepetition
│       └── melodyUseLeadingTone

├── Arpeggio (arpeggioEnabled=trueの場合のみ)
│   ├── arpeggioPattern
│   ├── arpeggioSpeed
│   ├── arpeggioOctaveRange
│   ├── arpeggioGate
│   └── arpeggioSyncChord

├── Call System (callEnabled=trueの場合のみ)
│   ├── introChant
│   ├── mixPattern  ─────────────▶ targetDurationSecondsと干渉
│   ├── callDensity
│   └── callNotesEnabled

├── Chord Extensions (各enabledがtrueの場合のみprob有効)
│   ├── chordExtSus  → chordExtSusProb
│   ├── chordExt7th  → chordExt7thProb
│   ├── chordExt9th  → chordExt9thProb
│   └── chordExtProbExplicit ────▶ true=Mood基づく自動調整を抑制

├── Modulation (modulationTiming!=Noneの場合のみ)
│   └── modulationSemitones

├── Humanize (humanize=trueの場合のみ)
│   ├── humanizeTiming
│   └── humanizeVelocity

├── トラック切り替え
│   ├── drumsEnabled
│   ├── drumsEnabledExplicit ────▶ true=drums_required BlueprintでもdrumsEnabled設定を尊重
│   └── guitarEnabled ───────────▶ JSデフォルト=false、C++デフォルト=true

├── マスタースイッチ
│   ├── enableSyncopation ───────▶ false=シンコペーション重み0.0
│   ├── energyCurve ─────────────▶ 0-3 エネルギー推移
│   └── driveFeel ───────────────▶ 0-100 タイミング/ベロシティフィール

├── モチーフオーバーライド (BackgroundMotif / Blueprintモチーフセクション)
│   ├── motifLength
│   ├── motifNoteCount
│   ├── motifMotion
│   ├── motifRegisterHigh
│   └── motifRhythmDensity

└── CompositionStyle依存
    ├── compositionStyle=0 (MelodyLead): Vocal/Aux有効・標準
    ├── compositionStyle=1 (BackgroundMotif): BGM専用(Vocal無効、Aux有効)
    │   ├── motifRepeatScope
    │   ├── motifFixedProgression
    │   └── motifMaxChordCount
    └── compositionStyle=2 (SynthDriven): BGM専用(Vocal/Aux無効、arpeggioは手動有効化が必要)

15. ワークフロー別のオプション使用

15.1 generateVocal(config) で使用されるパラメータ

カテゴリパラメータ使用説明
基本stylePresetIdはいスタイル決定
keyはいキー(内部はCメジャー、出力時に移調)
bpmはいテンポ(0=スタイルデフォルト)
seedはいランダムシード
chordProgressionIdはいコード進行(メロディ生成の参照)
formIdはい構造パターン
ボーカルvocalLowはい音域下限
vocalHighはい音域上限
vocalAttitudeはい表現スタイル
vocalStyleはいボーカルスタイルプリセット
melodicComplexityはいメロディの複雑さ
hookIntensityはいフック強度
vocalGrooveはいグルーブ感
無視drumsEnabledいいえVocalのみ生成
arpeggioEnabledいいえVocalのみ生成
humanizeいいえ伴奏追加時に適用

15.2 generateAccompaniment(config?) で使用されるパラメータ

カテゴリパラメータ使用説明
トラックdrumsEnabledはいドラム生成
arpeggioEnabledはいアルペジオ生成
guitarEnabledはいギター生成
arpeggio.*はいアルペジオ設定
chordExt*はいコード拡張設定
chordExtTritoneSubはいトライトーン代理(AccompanimentConfigのみ)
後処理humanizeはいヒューマナイズ適用
humanizeTimingはいタイミング変動
humanizeVelocityはいベロシティ変動
SE/CallseEnabledはいSEトラック生成
callEnabledはいコール機能
callDensityはいコール密度

15.3 regenerateVocal(configOrSeed) で使用されるパラメータ

シード指定の場合 (regenerateVocal(12345)):

  • seedのみ変更、他のパラメータは前回のgenerateVocal設定を継続

VocalConfig指定の場合 (regenerateVocal({...})):

パラメータ使用説明
seedはい新しいランダムシード
vocalLowはい音域下限を変更
vocalHighはい音域上限を変更
vocalAttitudeはい表現スタイルを変更
vocalStyleはいボーカルスタイルプリセットを変更
melodicComplexityはい複雑さを変更
hookIntensityはいフック強度を変更
vocalGrooveはいグルーブを変更

注意: コード進行と構造は変更されません(generateVocal時の設定を継続)。


16. パラメータ適用フロー

SongConfig

    ├── stylePresetId ──→ mood, compositionStyle, bpm(default), melody_params
    │                           │
    │                           ▼ (明示設定で上書き可)
    ├── compositionStyle ──────────────→ 最終compositionStyle
    ├── bpm ───────────────────────────→ 最終BPM

    ├── vocalStyle ─────────→ melody_params上書き ─────→ │
    │       │                                            │
    │       └── (Auto) ────→ ランダム選択               │
    │                                                    ▼
    ├── melodicComplexity ─→ melody_params乗算調整 ────→ │
    │                                                    ▼
    ├── メロディオーバーライド → 個別パラメータ上書き ──→ 最終melody_params

    ├── hookIntensity ─────→ Chorus/Bセクションのノート調整

    ├── vocalGroove ───────→ 全ノートのタイミング調整

    ├── enableSyncopation ─→ マスターシンコペーションスイッチ(false=重み0.0)

    └── callEnabled ──────→ (false=Auto時) vocalStyleで判定 → call_enabled

適用順序: StylePresetVocalStylePresetMelodicComplexitySongConfig Overrides (melody/motif)Master Switch (enableSyncopation)


17. Production Blueprint によるオーバーライド

Production Blueprintは、スタイル/ムード設定とは独立して、音楽の生成方法を制御します。

17.1 Blueprint 一覧

ID名前パラダイムRiffPolicyドラム必須ウェイト
0TraditionalTraditionalFree-42%
1RhythmLockRhythmSyncLocked必須14%
2StoryPopMelodyDrivenEvolving-10%
3BalladMelodyDrivenFree-4%
4IdolStandardMelodyDrivenEvolving-10%
5IdolHyperRhythmSyncLocked必須6%
6IdolKawaiiMelodyDrivenLocked必須5%
7IdolCoolPopRhythmSyncLocked必須5%
8IdolEmoMelodyDrivenLocked-4%
9BehavioralLoopTraditionalLockedPitch-0%*
255(Random)----

* BehavioralLoopはウェイト0%のため、ランダム選択では選ばれません。明示的に選択する必要があります。選択するとaddictive_mode=trueHookIntensity=MaximumRiffPolicy=LockedPitchが強制されます。

17.2 パラダイムの種類

パラダイム説明生成順序
Traditionalクラシックなポップ生成Vocal → Aux → Motif → Bass → Chord → Guitar → Arpeggio → Drums → SE
RhythmSyncリズム同期型生成Motif → Vocal → Aux → Bass → Chord → Guitar → Arpeggio → Drums → SE
MelodyDrivenメロディ中心のアレンジVocal → Aux → Motif → Bass → Chord → Guitar → Arpeggio → Drums → SE

17.3 RiffPolicy の種類

ポリシー説明motifRepeatScope への影響
Freeセクションごとに変化motifRepeatScope 設定を使用
Lockedピッチ輪郭は固定、表現は変化motifRepeatScope無視
Evolving2セクションごとに30%確率で変化motifRepeatScope無視

17.4 Blueprint によるオーバーライドルール

Blueprint が選択されると(Traditional/ID 0 以外)、いくつかの設定が自動的にオーバーライドされます:

Blueprint 設定オーバーライド対象条件
section_flowformIdsection_flowが存在しformExplicit=falseの場合。formExplicit=trueが優先
riff_policymotifRepeatScopeFree=設定使用、Locked/Evolving=無視
drums_sync_vocal内部同期設定Blueprint 定義が優先
drums_requireddrumsEnabledtrueの場合、drumsEnabled=trueを強制(drumsEnabledExplicit=true + drumsEnabled=falseの場合は尊重)
TrackMask::Motifモチーフ生成セクションごとに制御

17.5 モチーフ生成フロー

CompositionStyle == BackgroundMotif? → Yes: モチーフ生成
└─ No → MelodyLead?
        ├─ RhythmSync パラダイム? → Yes: モチーフ生成(リズム軸)
        └─ section_flow 存在 & TrackMask::Motif? → Yes: モチーフ生成
           └─ No: モチーフなし

ドラム必須

requiresDrums=true の Blueprint(ID: 1, 5, 6, 7)は自動的にドラムを有効化します。この動作を明示的にオーバーライドするには、drumsEnabledExplicit: truedrumsEnabled: falseを同時に設定してください。

17.6 例:Blueprint のオーバーライド動作

javascript
// RhythmLock Blueprint を使用
{
  blueprintId: 1,        // RhythmLock
  formId: 5,             // ← 無視!Blueprint の section_flow が使用される
  motifRepeatScope: 1,   // ← 無視!Locked ポリシーで同一パターン強制
  drumsEnabled: false,   // ← 無視!drums_required=true で強制有効
}
javascript
// Traditional Blueprint を使用
{
  blueprintId: 0,        // Traditional
  formId: 5,             // ← 指定通り使用
  motifRepeatScope: 1,   // ← 指定通り使用
  drumsEnabled: false,   // ← 指定通り使用
}
javascript
// drums_required Blueprintでドラムを明示的に無効化
{
  blueprintId: 1,              // RhythmLock(drums_required)
  drumsEnabled: false,         // ドラムをオフにしたい
  drumsEnabledExplicit: true,  // 明示フラグ → オーバーライドが尊重される
}

Released under the MIT License.