Skip to content

特徴

音楽用語に慣れていない場合

声部小節和音5度終止フーガ主題などが曖昧な場合は、先にエンジニアのための音楽用語入門を読むと、このページ以降が追いやすくなります。このページ内でも、初出で必要になる箇所には短い説明を入れています。

10種類の楽曲形式

MIDI Sketch Bach は、3つの系統に分類される10種類のバロック器楽形式で楽曲を生成します。各形式は声部数・拍子・基準長を固有に固定します — 声部数オプションは存在しません。

形式、声部、拍子、基準長

形式はフーガやパッサカリアのような作曲プランです。声部は独立した一つの旋律線です。拍子4/43/4 のような拍のまとまりです。基準長scaletargetBars を適用する前の参照小節数で、その後に形式固有の小節刻みへスナップされます。たとえばフーガの基準長は42小節ですが、既定の解決済み出力は44小節です。

迷ったときの選び方

厳格な線同士の書法を聞きたいなら fugue、流麗な前奏曲に続くフーガなら prelude_and_fugue、遅めの讃美歌ベースなら chorale_prelude、反復する低音上の変奏なら passacagliachaconne、単線で流れる独奏なら cello_prelude を選びます。form を省略した場合の既定は fugue です。

オルガン系(形式 0--6)

ID形式声部数説明
0フーガ3主題、応答、エピソードによる純粋な対位法的フーガ
1前奏曲とフーガ3流麗な前奏曲と精緻なフーガの組み合わせ
2トリオ・ソナタ33つの独立声部:2つの上声部とバス
3コラール前奏曲3讃美歌旋律、装飾音型、独立したバス
4トッカータとフーガ3劇的なヴィルトゥオーゾ的トッカータに続く厳格なフーガ
5パッサカリア3繰り返されるグラウンドバス上の変奏と対旋律(3/4)
6幻想曲とフーガ3自由な幻想曲と構造的なフーガの組み合わせ

独奏楽器系(形式 7--8)

ID形式声部数説明
7チェロ前奏曲1独奏チェロのための流麗な単線の前奏曲
8シャコンヌ2独奏ヴァイオリンのための壮大なグラウンドバス変奏形式(3/4)

変奏系(形式 9)

ID形式声部数説明
9ゴルトベルク変奏曲3不変のバス上のアリアと変奏、カノンを含む

TIP

各形式の詳細な説明とバロック音楽の歴史的背景については楽曲形式をご覧ください。

対位法とポリフォニー

  • 形式が決定する声部数(1--3声)による適切な声部進行
  • 拍ごとの和声音基準音に対して検証される規則ベースの対位法
  • 各声部が独自の旋律的個性を持つ真の声部独立性
  • 協和音、不協和音、解決の適切な音程処理
  • フーガ形式における主題-応答関係
  • 禁則並行5度・8度の回避

対位法とポリフォニー

ポリフォニーは、複数の独立した線が同時に鳴ることです。対位法は、その線同士を成立させる規則体系です。各線が旋律として自然であり、同時に鳴ったときの縦の音程も制御されているかを見ます。

INFO

声部間の相互作用を規定するルールの全容については対位法コースをご覧ください。

複数の楽器

6つの楽器プリセットがMIDI 出力を形作ります。各楽器は、その楽器のために書かれた形式が受け付けます。

楽器受け付ける形式
オルガンフーガ、前奏曲とフーガ、トリオ・ソナタ、コラール前奏曲、トッカータとフーガ、パッサカリア、幻想曲とフーガ
チェンバロゴルトベルク変奏曲
ピアノゴルトベルク変奏曲
ヴァイオリンシャコンヌ
チェロチェロ前奏曲
ギター--

各楽器は General MIDI プログラム番号と演奏可能音域に割り当てられ、装飾処理が旋律を装飾する密度にも影響します。音域は完成した出力をオクターブ単位で移動して収めるために使われます。楽器の互換性は形式ごとに定義され、選択肢があるのはゴルトベルク変奏曲だけです。

主題の性格

4つの性格タイプが、フーガ主題や主題素材の旋律的性格に影響を与えます。

主題

主題はフーガの中心になる旋律です。character オプションは、その主題や関連素材の輪郭・リズム傾向を変えます。楽器や出力形式を選ぶ設定ではありません。

性格スタイル
severe厳格で知的に緻密(既定)
playful軽快で機敏、リズミカル
noble荘重で広やか、威厳のある
restless推進力があり半音階的で劇的

INFO

一部の性格と形式の組み合わせは禁止されており例外を投げます。chorale_preludeplayful/restless を、toccata_and_fuguenoble を拒否します。

決定論的生成

すべての生成はシード値によって制御されます。同じ設定と同じシードは、常にまったく同じ出力を生成します。

js
// この2つの呼び出しは同一のMIDIを生成
generator.generate({ form: 'fugue', key: 0, seed: 42 })
generator.generate({ form: 'fugue', key: 0, seed: 42 })

seed: 0(または省略)でランダム生成になります。解決済みシードは getInfo().seedUsed で報告されるため、その実行を再現できます。

WARNING

決定論的再現には同じバージョンのMIDI Sketch Bachが必要です。アルゴリズムの改善により、バージョンが異なると同じシードでも異なる出力が生成される場合があります。

複数の出力形式

MIDI ファイル

標準 MIDI ファイルデータを Uint8Array として取得し、ファイルへの書き込みやダウンロードリンクの作成に使用できます。

js
const midi = generator.getMidi()

構造化イベントデータ

トラック情報、ノートイベント、メタデータを含む詳細なイベントデータを取得できます。

js
const events = generator.getEvents()
// events.form             - "fugue"
// events.key              - "C_major"(選択した出力調)
// events.bpm              - 100(開始テンポ)
// events.total_bars       - 44(42小節の基準長を4小節刻みにスナップ)
// events.tempos           - 終結のリタルダンドを含むテンポマップ
// events.time_signatures  - 拍子マップ
// events.tracks           - 出力調のピッチ(各ノートは "source" タグを持つ)

各ノートの source は由来を記録します。"material"(主題、グラウンド、定旋律)、"compose"(候補探索。現在はオプトインのパッサカリア自由対位法パスで使用)、"ornament"(装飾処理)です。既定の形式生成は、"compose" ノートではなく作曲済みのキャリア素材を再生します。

再生ではなく採点や解析に使う場合は、getGenerated() がフラットな generated.v1 のノート列を、getProvenance() がそれとインデックスが対応する provenance.v1(各ノートがどう選ばれたかの記録)を返します。getEvents() とは異なり、generated.v1 のピッチは作曲時の内部調である C のままです。

長さの制御

4つのスケールモードが、各形式の基準長に対する倍率で長さを設定します。

スケール説明
Short基準長の約1倍(既定)
Medium基準長の約2倍
Long基準長の約3倍
Full基準長の約4倍

targetBars で具体的な小節数を指定することもできます。これは scale を上書きし、[形式の最小値, 128] に丸め込まれます。

TIP

targetBarsscale 設定やその他の設定オプションとの関係についてはオプション関係をご覧ください。

その他の機能

  • 全12調対応(CからBまで)、長調・短調両方
  • テンポ制御: 40から200 BPM
  • クロスプラットフォーム: WebAssembly によりNode.js とすべての現代的なブラウザで動作
  • 標準 MIDI 出力: すべてのDAW とMIDI ツールに対応
  • デュアルライセンス: AGPL-3.0 — コピーレフト条件のもと、商用を含め自由に利用・改変・再配布が可能。クローズドソース製品やプロプライエタリ SaaS への組み込みには商用ライセンスを提供。生成された MIDI 自体は商用を含め自由に利用可能

Dual-licensed: AGPL-3.0 · commercial licensing available. Generated MIDI is yours to use freely.