Tone.jsで始める自動作曲入門(2)
とりあえずSamplerの使い方から。公式ドキュメントを参考に最低限のコードを書いてみる。
ドのピアノ音を一秒おきに鳴らし続ける。
let piano = new Tone.Sampler({
"C3": "C3.mp3", "D#3": "Ds3.mp3", "F#3": "Fs3.mp3", "A3": "A3.mp3",
"C4": "C4.mp3", "D#4": "Ds4.mp3", "F#4": "Fs4.mp3", "A4": "A4.mp3",
"C5": "C5.mp3", "D#5": "Ds5.mp3", "F#5": "Fs5.mp3", "A5": "A5.mp3",
"C6": "C6.mp3", "D#6": "Ds6.mp3", "F#6": "Fs6.mp3", "A6": "A6.mp3",
}, undefined, "https://tonejs.github.io/examples/audio/salamander/");
piano.toMaster();
setInterval(function(){ piano.triggerAttack("C4"); }, 1000);
Tone.Samplerの第一引数で音階と音声ファイル名の対応を指定、第二引数でそれがロードされたときのコールバック関数を指定(今回は省略)、第三引数で音声ファイルの格納場所を指定するという格好。
ちなみに「CDEFGAB」っていうのがそれぞれ「ドレミファソラシ」を意味するらしい。で、後ろについてる数字がオクターブ。すき間空けて音声ファイルを指定すると、その間の音階はいい感じに補完してくれるっぽい。
今回は音声ファイルはgithubにホストされてるのを使ったけど、あんまいい音じゃないから、ゆくゆくはDTMソフトとか買って自分でサンプリングしないとね。
でnewしたインスタンス(この場合はpiano)が一個の楽器みたいなもん。で、これがいかにもプログラムって感じの発想なんだけど、これだけだと音が鳴らなくて、これを出力(スピーカ的なもの)につなげて初めて音が出る準備が整うらしい。それがここで言うpiano.toMaster();の部分。
で、その後piano.triggerAttack("C4");でピアノを弾くと引数で指定した音がなる。
とりあえず今日はこれでおしまい。