Skip to content

オプション関係

MIDI Sketch Bachの設定オプションは特定の方法で相互に作用します。これらの関係を理解することで、望む結果を生む設定を作成する助けになります。

依存関係の概要

楽曲形式がデフォルトを決定

form パラメータは最も影響力のある設定オプションです。instrumentnumVoicesbpm のデフォルト値を決定します。

デフォルトの連鎖

形式を指定すると、未指定フィールドにデフォルトが適用されます。

js
// 指定内容:
generator.generate({ form: 'fugue', key: 2, isMinor: true })

// エンジンが解決する値:
// {
//   form: 0,
//   key: 2,
//   isMinor: true,
//   instrument: 0,    ← 形式デフォルト(オルガン)
//   numVoices: 4,     ← 形式デフォルト
//   bpm: 85,          ← 形式デフォルト
//   seed: 0,          ← ランダム
//   character: 0,     ← バランス型
//   scale: 1,         ← medium
// }

明示的に設定したフィールドは形式デフォルトを上書きします。

js
// 楽器とBPMを上書き
generator.generate({
  form: 'fugue',
  instrument: 'harpsichord',  // オルガンを上書き
  bpm: 72                     // 85を上書き
})

完全なデフォルトテーブルについてはプリセットリファレンスをご覧ください。

声部数の制約

numVoices パラメータの有効範囲は形式に依存します。

形式デフォルト最小最大備考
0: フーガ425
1: 前奏曲とフーガ425
2: トリオ・ソナタ3333で固定
3: コラール前奏曲435定旋律 + 2伴奏に最低3が必要
4: トッカータとフーガ435
5: パッサカリア435
6: 幻想曲とフーガ435
7: チェロ前奏曲323独奏楽器の暗示された声部
8: シャコンヌ324独奏楽器の暗示された声部

WARNING

形式の有効範囲外の numVoices を設定すると、エンジンは最も近い有効な値にクランプする場合があります。例えば、トリオ・ソナタに5声部を要求しても3声部が生成されます。

scale vs. targetBars

scaletargetBars パラメータはどちらも出力の長さを制御しますが、相互作用があります。

設定動作
scale のみ出力長はスケールレベルと形式で決定
targetBars のみエンジンは指定された小節数を目標とする
両方指定targetBarsscale を上書き
どちらも未指定デフォルト: scale: 1(medium)

TIP

一般的なサイズカテゴリが必要な場合は scale を使用してください(short、medium、long、full)。特定の長さが必要な場合は targetBars を使用してください。音楽フレーズは自然な境界で終わる必要があるため、実際の出力は targetBars と若干異なる場合があります。

js
// 一般的な長さの制御
generator.generate({ form: 'fugue', scale: 'long' })

// 特定の長さの制御
generator.generate({ form: 'fugue', targetBars: 48 })

// 両方指定時はtargetBarsが優先
generator.generate({
  form: 'fugue',
  scale: 'short',      // 無視される
  targetBars: 48        // これが使用される
})

シードの動作

seed パラメータは決定論的出力を制御します。

シード値動作
0(デフォルト)ランダムシード — 毎回異なる出力
正の整数決定論的 — 同じ設定 + 同じシード = 同じ出力

再現性

決定論的再現には同じバージョンのMIDI Sketch Bachが必要です。内部アルゴリズムはバージョン間で変更される可能性があるため、アップグレード後に同じシードが異なる出力を生成する場合があります。特定の出力を保存する必要がある場合は、バージョン間のシード再現性に頼るのではなく、生成されたMIDIファイルを保存してください。

js
// 毎回ランダム
generator.generate({ form: 'fugue', seed: 0 })

// 常に同じ結果
generator.generate({ form: 'fugue', key: 2, isMinor: true, seed: 42 })

// 調が異なれば同じシードでも出力は異なる
generator.generate({ form: 'fugue', key: 0, isMinor: true, seed: 42 })

調と旋法

keyisMinor パラメータは連携して調中心を定義します。

js
// ニ長調
generator.generate({ key: 2, isMinor: false })

// ニ短調
generator.generate({ key: 2, isMinor: true })
パラメータ範囲デフォルト
key0--11(ピッチクラス)0(C)
isMinortrue / falsefalse(長調)

調は以下に影響します:

  • 楽曲のピッチセンターと音階
  • エンジンが利用できる和声語彙
  • 転調の目標(関連調)

キャラクターと形式

character パラメータの影響は形式タイプによって異なります。

形式タイプキャラクターの影響
フーガ系形式(0, 1, 4, 6)強い — フーガ主題を直接形作り、楽曲全体を定義
変奏形式(5, 8)中程度 — バス主題と変奏の性格に影響
コラール前奏曲(3)中程度 — 伴奏声部に影響、定旋律は固定
トリオ・ソナタ(2)中程度 — 両方の上声部の動機素材を形作る
チェロ前奏曲(7)中程度 — 音型パターンに影響

TIP

キャラクター0(バランス型)はほとんどの状況で良いデフォルトです。トッカータとフーガにはキャラクター3(劇的)を、コラール前奏曲にはキャラクター1(叙情的)を試してみてください。

検証ルール

すべての設定フィールドの完全な検証制約:

フィールド範囲デフォルト検証
formnumber または string0--80有効範囲にクランプ
keynumber0--110有効範囲にクランプ
isMinorbooleantrue/falsefalse--
numVoicesnumber形式依存(2--5)形式デフォルト形式の有効範囲にクランプ
bpmnumber40--200形式デフォルト0は形式デフォルトを使用;それ以外はクランプ
seednumber0+00 = ランダム
characternumber または string0--30有効範囲にクランプ
instrumentnumber または string0--5形式デフォルト有効範囲にクランプ
scalenumber または string0--31有効範囲にクランプ
targetBarsnumber1+--指定時にscaleを上書き

Released under the Apache-2.0 License.