music-composition.js

シードから作曲して WAV を書き出す。すべてブラウザの中で。

music-composition.js

Now composed

…

0:00 / 0:00
WAV を保存
作曲中…
コード進行

自分のページで使う

music-composition.js を読み込むと、グローバルの MusicComposition から呼び出せます。MusicComposition.generate() は WAV ファイルそのもの(ArrayBuffer)を返すので、再生・保存・アップロードに直接使えます。

npm install music-composition.js@beta でも、CDN からの読み込みでも使えます。ブラウザ・Web Worker・Node.js で動き、外部ライブラリもサーバーも不要です。同じオプションとシードを渡せば、いつでも同じ曲が返ります。

いまの設定のコード

      
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)PromiseWorker でレンダリングし、画面を止めない
compose(opts)song楽譜だけ作る(音符・コード・構成・曲名)
render(song, {sampleRate})ArrayBuffer楽譜を WAV に書き出す
renderAsync(song, opts)Promiserender の非同期版
toURL(wav) / toBlob(wav)string / Blob<audio> やダウンロード用
オプション値既定
seed文字列 / 数値ランダム
stylepop dance lofi chiptune ambient autoauto
keyC〜B(F#, Bb など)シードで決定
modemajor minor dorian mixolydian lydianスタイルに合わせて決定
bpm40〜240スタイルに合わせて決定
bars8〜256(4 の倍数に丸め)32
duration秒数(bars がないとき)—
looptrue / falsefalse
sampleRate8000〜9600044100