機能

  • loadSMF
  • play()
  • stop()
  • suspend()
  • resume()
  • rewind
  • seek(diff)
  • fadein(period)
  • fadeout(period)

  • destroy() # デストラクタ

オブジェクト

  • WAPlayer.js
  • WAGenerator.js (PCM と SoundFont 用、後で FM 音源も)
  • WAModulator.js (主に pitchbend 用)
  • SMF.js, MFi.js, MML.js

プロセス

  • WSPlayer.loadSMF(smf);
    • > 時系列のシーケンスデータを作成
    • > 利用する楽器の数を記録
  • WSPlayer.setup(nMultiprex)
    • > 同じチャネル内で同時に鳴らせる数を指定
    • > それを前提に WebAudio のノードを繋げる。
    • > 但し、全 gain を 0 にして音が鳴らない状態で

ノート図

  • 例) 2チャンネルで、3多重(1つのチャネルでの最大同時発声数)
                osc3+
    osc2 --- osc - gain ---- gain2
         |          |      |
         |          |      |
         |-- osc - gain --|
         |          |      |
         |          |      |
         +-- osc - gain --|
                           |
                osc3+      |
    osc2 --- osc - gain---|
         |          |      |
         |          |      |
         |-- osc - gain --|
         |          |      |
         |          |      |
         +-- osc - gain --+
    
    - osc => 音程そのもの
    - osc2 => ビブラート (音程を揺らす)
    - osc3 => トレモロ (音量を揺らす)
    - gain => ADSR 的なの
    - gain2 => 全体の音量指定 (fadein, faceout もココで)

発火

  • > ボタンを押された所で全 note を on にする。(そして off は WSPlayer のデストラクタが呼ばれるまでしない)

play

  • > シーケンスデータから定期的に、かつ少し早いタイミングで AudioParam を設定していく。
  • > 初めに全ノードを設定して使いまわすので、GC は要らない。

Reload   Diff   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes