使用した技術

iOSでも動作する WebAudioAPIを利用してブラウザ上で動く自動作曲システムを実現しました。

WebAudioのBufferSourceのplaybackRateを設定することで 一つの音程の音源から、2オクターブ分の音程を作ることが出来ました(これが出来ないと全音程のmp3を用意するはめになるところでした)

昔触った時はなんかこう音声がぶちぶちになったり、と使いにくい印象があったのですが、いつの間にかすごく使い勝手がよく、かつ今回の用途のようなものであれば十分に動作することが確認できました。

音を重ねる部分で(おそらくiPhoneでは)300個くらい音源が重なると突然ノイズが発生し、意図した音が出ずにバッファが詰まったような音が出てくるような現象が発生するバグに悩まされました。(これが夜中の1時くらいに発覚し、4時位まで対応していた記憶がありますw)

結局、パーカッションの音が鳴ってもいないのに再生状態にあったので、これを早めにnoteOffすることで、同時に鳴っている音を減らす施策により解消しました。