特徴
9つの楽曲形式
MIDI Sketch Bachは、2つのシステムに分類される9つのバロック器楽形式で楽曲を生成します。
オルガンシステム(形式 0--6)
| ID | 形式 | 声部数 | 説明 |
|---|---|---|---|
| 0 | フーガ | 4 | 主題、応答、エピソードによる純粋な対位法的フーガ |
| 1 | 前奏曲とフーガ | 4 | 流麗な前奏曲と精緻なフーガの組み合わせ |
| 2 | トリオ・ソナタ | 3 | 3つの独立声部: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
targetBars と scale 設定やその他の設定オプションとの関係についてはオプション関係をご覧ください。
その他の機能
- 全12調対応(CからBまで)、長調・短調両方
- テンポ制御: 40から200 BPM
- クロスプラットフォーム: WebAssemblyによりNode.jsとすべてのモダンブラウザで動作
- 標準MIDI出力: すべてのDAWとMIDIツールに対応
- Apache-2.0ライセンス: 商用・個人利用ともに自由に使用可能