特徴
音楽用語に慣れていない場合
声部、小節、和音、5度、終止、フーガ主題などが曖昧な場合は、先にエンジニアのための音楽用語入門を読むと、このページ以降が追いやすくなります。このページ内でも、初出で必要になる箇所には短い説明を入れています。
10種類の楽曲形式
MIDI Sketch Bach は、3つの系統に分類される10種類のバロック器楽形式で楽曲を生成します。各形式は声部数・拍子・基準長を固有に固定します — 声部数オプションは存在しません。
形式、声部、拍子、基準長
形式はフーガやパッサカリアのような作曲プランです。声部は独立した一つの旋律線です。拍子は 4/4 や 3/4 のような拍のまとまりです。基準長は、scale や targetBars で変更する前の、その形式の標準小節数です。
迷ったときの選び方
厳格な線同士の書法を聞きたいなら fugue、標準的にバランスがよい出力なら prelude_and_fugue、遅めの讃美歌ベースなら chorale_prelude、反復する低音上の変奏なら passacaglia や chaconne、単線で流れる独奏なら cello_prelude を選びます。
オルガン系(形式 0--6)
| ID | 形式 | 声部数 | 説明 |
|---|---|---|---|
| 0 | フーガ | 3 | 主題、応答、エピソードによる純粋な対位法的フーガ |
| 1 | 前奏曲とフーガ | 3 | 流麗な前奏曲と精緻なフーガの組み合わせ |
| 2 | トリオ・ソナタ | 3 | 3つの独立声部:2つの上声部とバス |
| 3 | コラール前奏曲 | 2 | 讃美歌旋律と対位法声部 |
| 4 | トッカータとフーガ | 3 | 劇的なヴィルトゥオーゾ的トッカータに続く厳格なフーガ |
| 5 | パッサカリア | 2 | 繰り返されるグラウンドバス上の変奏(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_prelude は playful/restless を、toccata_and_fugue は noble を拒否します。
決定論的生成
すべての生成はシード値によって制御されます。同じ設定と同じシードは、常にまったく同じ出力を生成します。
// この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 として取得し、ファイルへの書き込みやダウンロードリンクの作成に使用できます。
const midi = generator.getMidi()構造化イベントデータ
トラック情報、ノートイベント、メタデータを含む詳細なイベントデータを取得できます。
const events = generator.getEvents()
// events.form - "fugue"
// events.key - ピッチクラス(イベント JSON はC のまま)
// events.bpm - 100
// events.total_bars - 42
// events.tracks - TrackDataの配列(各ノートは "source" タグを持つ)各ノートの source は由来を記録します。"material"(主題、グラウンド、定旋律)、"compose"(候補探索)、"ornament"(装飾処理)。
長さの制御
4つのスケールモードが、各形式の基準長に対する倍率で長さを設定します。
| スケール | 説明 |
|---|---|
| Short | 基準長の約1倍(既定) |
| Medium | 基準長の約2倍 |
| Long | 基準長の約3倍 |
| Full | 基準長の約4倍 |
targetBars で具体的な小節数を指定することもできます。これは scale を上書きし、[形式の最小値, 128] に丸め込まれます。
TIP
targetBars と scale 設定やその他の設定オプションとの関係についてはオプション関係をご覧ください。
その他の機能
- 全12調対応(CからBまで)、長調・短調両方
- テンポ制御: 40から200 BPM
- クロスプラットフォーム: WebAssembly によりNode.js とすべての現代的なブラウザで動作
- 標準 MIDI 出力: すべてのDAW とMIDI ツールに対応
- デュアルライセンス: AGPL-3.0 — コピーレフト条件のもと、商用を含め自由に利用・改変・再配布が可能。クローズドソース製品やプロプライエタリ SaaS への組み込みには商用ライセンスを提供。生成された MIDI 自体は商用を含め自由に利用可能