はじめに
MIDI Sketch Bach は、バロック音楽理論と対位法の規則に基づいてバッハ風器楽曲の MIDIを生成するアルゴリズム作曲エンジンです。フーガ、トッカータ、パッサカリアなど、編集可能な MIDI データを出力します。
バロック音楽や楽譜用語に慣れていない場合
ライブラリを使うだけなら五線譜を読める必要はありません。声部、小節、調、フーガ、対位法などが曖昧な場合は、先にエンジニアのための音楽用語入門を読むと以降のページが追いやすくなります。
インストール
アルファ版 — npm では未公開
このパッケージはアルファ版であり、まだ npm レジストリに公開されていません。以下のコマンドは最初の公開リリースまで動作しません。それまでは本サイトのライブデモでお試しください。
bash
npm install @libraz/midi-sketch-bachbash
yarn add @libraz/midi-sketch-bachbash
pnpm add @libraz/midi-sketch-bachbash
bun add @libraz/midi-sketch-bachクイックスタート
js
import { init, BachGenerator } from '@libraz/midi-sketch-bach'
import { writeFileSync } from 'fs'
// WASM モジュールを初期化
await init()
// ジェネレータを作成し、ニ短調のフーガを生成
const generator = new BachGenerator()
generator.generate({
form: 'fugue',
key: 2,
isMinor: true,
character: 'severe',
bpm: 80
})
// MIDI ファイルデータを取得して保存
const midi = generator.getMidi()
writeFileSync('bach-fugue.mid', midi)
// 構造化されたイベントデータを取得
const events = generator.getEvents()
console.log(events.description)
console.log(`${events.total_bars} 小節、${events.tracks.length} トラック`)
// リソースを解放
generator.destroy()
// 注: サンプルは ESM import を使用 — package.json に "type": "module" を設定(または .mjs を使用)CLI クイックスタート
コマンドラインから直接 MIDI ファイルを生成できます。
bash
npx @libraz/midi-sketch-bach --form fugue --key d_minor -o output.midニ短調のトッカータとフーガを生成する例:
bash
npx @libraz/midi-sketch-bach --form toccata_and_fugue --key d_minor -o toccata.midJavaScript API と CLI で既定が異なります
bpm 省略時、JavaScript API の既定は 100、CLI の既定は 72 です。また CLI ではフーガで --scale を省略した場合のみ medium になります(JavaScript API の既定は常に short)。CLI の既定一覧は CLI 参照 を参照してください。
生成できる楽曲
MIDI Sketch Bach は3つの系統にまたがる10種類の楽曲形式に対応しています。
オルガン系 -- フーガ、前奏曲とフーガ、トリオ・ソナタ、コラール前奏曲、トッカータとフーガ、パッサカリア、幻想曲とフーガ
独奏楽器系 -- チェロ前奏曲、シャコンヌ
変奏系 -- ゴルトベルク変奏曲
各形式はバロック時代の声部進行、対位法、和声構造に関する正統的な作曲規則に従います。
次のステップ
- エンジニアのための音楽用語入門 -- この資料で使う最小限の音楽用語
- 特徴 -- すべての機能の概要
- 楽曲形式 -- 使いたい作曲テンプレートを選ぶ
- 対位法コース -- 検証器が音を採用/拒否する理由
- インストール -- 詳細なインストール方法
- JavaScript API または CLI 参照 -- コードまたはターミナルから使う
- アーキテクチャ -- 技術的な仕組み