- 追加された行はこの色です。
- 削除された行はこの色です。
- WAPlayer へ行く。
* 使い方 [#je236c98]
var smf = new SMF();
smf.input(smfbuffer);
var gen = new WAGenerator();
var player = new WAPlayler(gen);
gen.setup(nChannel, nMultiprex);
gen.ready(); // ボタン/タッチイベントから
player.play();
* 機能 [#function]
- input(smf);
- play()
- stop()
- suspend()
- resume()
- rewind()
- seek(delta)
- fadein(period)
- fadeout(period)
- setMultiplexMax(mmax);
- setVolume(vol);
** 他 [#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
|
osc3+ |
osc2 -- osc -- gain -|
|
... |
osc3+ |
osc2 -- osc - gain --+
- osc => 音程そのもの
- osc2 => ビブラート (音程を揺らす)
- osc3 => トレモロ (音量を揺らす)
- gain => ADSR 的なの
- gain2 => 全体の音量指定 (fadein, faceout もココで)
** 発火 [#fire]
-- > ボタンを押された所で全 note を on にする。(そして off は WSPlayer のデストラクタが呼ばれるまでしない)
** play [#cb9ce049]
-- > シーケンスデータから定期的に、かつ少し早いタイミングで AudioParam を設定していく。
-- > 初めに全ノードを設定して使いまわすので、GC は要らない。
* ブログ [#blog]
* 関連 [#rel]