シードから作曲して WAV を書き出す。すべてブラウザの中で。
Now composed
music-composition.js を読み込むと、グローバルの MusicComposition から呼び出せます。MusicComposition.generate() は WAV ファイルそのもの(ArrayBuffer)を返すので、再生・保存・アップロードに直接使えます。
npm install music-composition.js@beta でも、CDN からの読み込みでも使えます。ブラウザ・Web Worker・Node.js で動き、外部ライブラリもサーバーも不要です。同じオプションとシードを渡せば、いつでも同じ曲が返ります。
// npm install music-composition.js@beta const MusicComposition = require('music-composition.js'); const wav = MusicComposition.generate({ style: 'chiptune', seed: 'stage-1', loop: true }); require('fs').writeFileSync('stage-1.wav', Buffer.from(wav));
| 関数 | 戻り値 | 説明 |
|---|---|---|
generate(opts) | ArrayBuffer | 作曲して WAV を返す(同期) |
generateAsync(opts) | Promise | Worker でレンダリングし、画面を止めない |
compose(opts) | song | 楽譜だけ作る(音符・コード・構成・曲名) |
render(song, {sampleRate}) | ArrayBuffer | 楽譜を WAV に書き出す |
renderAsync(song, opts) | Promise | render の非同期版 |
toURL(wav) / toBlob(wav) | string / Blob | <audio> やダウンロード用 |
| オプション | 値 | 既定 |
|---|---|---|
seed | 文字列 / 数値 | ランダム |
style | pop dance lofi chiptune ambient auto | auto |
key | C〜B(F#, Bb など) | シードで決定 |
mode | major minor dorian mixolydian lydian | スタイルに合わせて決定 |
bpm | 40〜240 | スタイルに合わせて決定 |
bars | 8〜256(4 の倍数に丸め) | 32 |
duration | 秒数(bars がないとき) | — |
loop | true / false | false |
sampleRate | 8000〜96000 | 44100 |