Skip to content

特徴

9つの楽曲形式

MIDI Sketch Bachは、2つのシステムに分類される9つのバロック器楽形式で楽曲を生成します。

オルガンシステム(形式 0--6)

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

独奏楽器システム(形式 7--8)

ID形式声部数説明
7チェロ前奏曲3独奏チェロのための流麗な前奏曲
8シャコンヌ3独奏ヴァイオリンのための壮大な変奏形式

TIP

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

対位法とポリフォニー

  • 2声から5声の独立した声部による適切な声部進行
  • バロック作曲原理に基づいた規則ベースの対位法
  • 各声部が独自の旋律的アイデンティティを持つ真の声部独立性
  • 協和音、不協和音、解決の適切な音程処理
  • フーガ形式における主題-応答関係
  • 禁則並行5度・8度の回避

INFO

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

複数の楽器

6つの楽器プリセットがMIDI出力を形作ります。

楽器典型的な形式
オルガンフーガ、前奏曲とフーガ、トリオ・ソナタ、コラール前奏曲、トッカータとフーガ、パッサカリア、幻想曲とフーガ
チェンバロオルガン形式全般(代替的な音色)
ピアノすべての形式
ヴァイオリンシャコンヌ
チェロチェロ前奏曲
ギターチェロ前奏曲、シャコンヌ(代替的な音色)

各楽器は適切なGeneral MIDIプログラム番号と音域にマッピングされます。

主題キャラクター

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

キャラクタースタイル
0デフォルトのバランス型
1叙情的、順次進行中心
2活動的、広い音程
3劇的、リズムに変化あり

決定論的生成

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

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

seed: 0(または省略)でランダム生成になります。

WARNING

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

複数の出力形式

MIDIファイル

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

js
const midi = generator.getMidi()

構造化イベントデータ

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

js
const events = generator.getEvents()
// events.form        - "Fugue"
// events.key         - "D minor"
// events.bpm         - 85
// events.total_bars  - 32
// events.tracks      - TrackDataの配列(個別のノート情報を含む)

長さの制御

4つのスケールモードで生成される楽曲の長さを制御できます。

スケール説明
Shortコンパクトな楽曲、少ない変奏
Medium標準的な長さ(デフォルト)
Long拡張された楽曲、より多くの展開
Full完全な形式構造を持つ最大長

targetBars で具体的な小節数を指定することもできます。

TIP

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

その他の機能

  • 全12調対応(CからBまで)、長調・短調両方
  • テンポ制御: 40から200 BPM
  • クロスプラットフォーム: WebAssemblyによりNode.jsとすべてのモダンブラウザで動作
  • 標準MIDI出力: すべてのDAWとMIDIツールに対応
  • Apache-2.0ライセンス: 商用・個人利用ともに自由に使用可能

Released under the Apache-2.0 License.