WebAudio のオシレータで MIDI を鳴らしてみた

これの続き

設計はコレだけ

MIDI の SMF ファイルを読み込み、WebAudio のオシレータに対応する音程をスケジュールする事でファミコンっぽく曲を再生します。

デモ

すぐスタートボタンを押さないと前の方の音が聞けなくなります。(何とかしないと。。)直しました。二ヵ所で new AudioContext してて、二度目に取得した方を見てました

  • MacBookChromeSafari で鳴りました。
  • Android Galaxy Nexus で鳴らすと処理落ちします。
  • iPhone は鳴りませんでした。エラーも出ないので今の所謎です。何だろう。。

ソース

昨日駄目だったのは

  • delta を足すタイミングを間違えてた。
  • RIFF の Track 分割を誤ってデータが重複して保存してた。

アホですね。

頑張った事

  • 音がプチプチ言うのは結構対策しましたが、まだ完全じゃないです。

対応予定

  • ピッチベンド対応してません。使ってる曲多いので、早めに対応します。
  • チャンネル内の同時発声数を超えて鳴らそうとすると無視しますが、出来れば古い音を強制的に止めてでも、鳴らしたいです。
  • 指定した楽器によって三角波と正弦波と矩形波を使い分ける予定。
  • ビブラートで揺らすのやります。多分、ものすごく本物っぽくなる。