Top > WAPlayer

使い方

var smf = new SMF();
smf.input(smfbuffer);
var gen = new WAGenerator();
var player = new WAPlayler(gen);
gen.setup(nChannel, nMultiprex);
gen.ready(); // ボタン/タッチイベントから
player.play();

機能

  • input(smf);
  • play()
  • stop()
  • suspend()
  • resume()
  • rewind()
  • seek(delta)
  • fadein(period)
  • fadeout(period)
  • setMultiplexMax(mmax);
  • setVolume(vol);

  • destroy() # デストラクタ

オブジェクト

  • WAPlayer.js
  • WAGenerator.js (PCM と SoundFont 用、後で FM 音源も)
  • WAModulator.js (主に pitchbend 用)
  • SMF.js, MFi.js, MML.js

プロセス

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

ノート図

  • 例) 2チャンネルで、3多重(1つのチャネルでの最大同時発声数)
                osc3+
    osc2 -- osc -- gain --- gain2
                         |
                osc3+    |
    osc2 -- osc -- gain -|
                         |
           ...           |
                osc3+    |
    osc2 -- osc - gain --+
    
    - osc => 音程そのもの
    - osc2 => ビブラート (音程を揺らす)
    - osc3 => トレモロ (音量を揺らす)
    - gain => ADSR 的なの
    - gain2 => 全体の音量指定 (fadein, faceout もココで)

発火

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

play

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

ブログ

関連


Reload   Diff   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes
Last-modified: Sat, 03 Aug 2013 16:48:13 JST (3910d)