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");でピアノを弾くと引数で指定した音がなる。

とりあえず今日はこれでおしまい。

この記事が気に入ったらサポートをしてみませんか?