timbre.js の使い方メモ: timbre関数
あたらしい timbre.js のドキュメントのドラフトみたいな感じで書く。第四弾。
その前に前回の記事でイベントエミッター用のインターフェイスに once(type, listener)
を書き忘れていた。一回だけ実行するイベント(実行後削除される)を登録できます。
timbre.js は T
と timbre
の2つのグローバル変数を使う。この二つは jQuery でいう $
と jQuery
みたいな関係で、要は同じもので、オブジェクトを作るときは T
それ以外は timbre
と使い分けたら良いと思う。で、それが何をするのかという話。たいした話ではない。
T関数
オブジェクトを作るときは T関数 を使います。これは最初の引数でオブジェクトの種類を決めて、以降の引数でプロパティ値や入力オブジェクトを指定する。最初の引数以外はあとで変更できるので最初は無くてもよい。それでできたオブジェクトは Tオブジェクト と呼ぶことにする。最初の引数は typeof で以下のようになる。
T(Number)
格納している数値を出力するオブジェクトになる。
T(Boolean)
true
のとき 1 、false
のとき 0 を出力するオブジェクトになる。
T(Function)
bang()
で実行するオブジェクトになる。 timbre.js の使い方メモ:bang メソッド
T(Array) / T(Object)
どうしようか迷っている
T(String)
あらかじめ登録してあるキー文字列のオブジェクトを生成する。
T(T-Object)
T関数にTオブジェクトを入力した場合、なにもせずそのまま返却します。
たとえば T("osc").freq
のようにドキュメントにプロパティ欄で型が T-Object
と記載されているものは、値をセットするときに T関数 をくぐるようになっているので、以下の二つは同じ意味になります。だからT関数にTオブジェクトを入力した場合、なにもせずそのまま返却します。なるほど~
T("osc").freq = 880; T("osc").freq = T(880);
timbreのプロパティ
以下のプロパティがある、 amp 以外は読み取り専用。
timbre.version; // バージョン timbre.envtype; // 'browser' or 'node' timbre.env; // 'webkit' or 'moz' or 'node' timbre.samplerate; // サンプルレート timbre.channels; // 2 timbre.cellsize; // 1回の処理で扱うサンプル数 timbre.currentTime; // 経過時間 timbre.isPlaying; // 再生中のとき true timbre.isRecording; // 録音中のとき true timbre.amp; // 最終出力音量の調節 (0.8がデフォルト)
timbreの関数
timbre本体のイベントリスナー
- timbre.on(type, listener)
- timbre.once(type, listener)
- timbre.removeListener(type, listener)
- timbre.removeAllListener(type)
イベントの種類は play
, pause
, reset
がある。
録音モード
録音モードは音を出さずに処理をするモードで、10秒分の音を出すと10秒かかるけど、音を出さなかったら一瞬で終わる。ドキュメント / デモ
- timbre.rec()
時間関数
文字列定義の時間をミリ秒に変換する。使うとコードが凄く読みやすくなる。 ドキュメント
- timbre.timevalue(String)
システム的な関数
たぶん使わないと思うけど、リセットしたり再生/停止したり。Flash経由で再生できるようにしたりする。
- timbre.reset()
- timbre.play()
- timbre.pause()
- timbre.bind()
いろいろ書いてみたけど、たいした情報じゃなかった気がする。
あと
timbre.setup
で設定できると思っていたけど作っていなかったので、次回のアップデート(来月あたまくらい)で対応します。イコライザーとか追加する予定です。若干イベントの名称が変わると思います。すみません..
T("fft").on("fft") -> T("fft").on("data") T("spectrum").on("scope") -> T("spectrum").on("data") T("scope").on("scope") -> T("scope").on("data")