* 機能 [#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 は要らない。 |