機能
- loadSMF
- play()
- stop()
- suspend()
- resume()
- rewind
- seek(diff)
- fadein(period)
- fadeout(period)
他
オブジェクト
- WAPlayer.js
- WAGenerator.js (PCM と SoundFont 用、後で FM 音源も)
- WAModulator.js (主に pitchbend 用)
プロセス
- 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 は要らない。
|