* 機能 [#function]

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

** 他 [#c07419e0]

- destroy() # デストラクタ

* オブジェクト [#object]

- WAPlayer.js
- WAGenerator.js (PCM と SoundFont 用、後で FM 音源も)
- WAModulator.js (主に pitchbend 用)

- SMF.js, MFi.js, MML.js

* プロセス [#process]

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

** ノート図 [#u55b255e]

- 例) 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 もココで)

* 発火 [#fire]

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

* play [#cb9ce049]

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

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