Top > 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] |