2009年5月 Archives

« 2009年4月 2009年6月 »

Master - 続・ASoundのプロパティについて-

なんだかえらく間が開いちゃったけど、ASoundのプロパティの続きを書くことにした。

前回、Envelop、Filter、Effects、そしてMasterについて言及しますと宣言していたけど、Max/MSPのベンキョを進めているうちに、設計変更したくなったのでペンディング。今回はMasterについてのみ言及します。

masterプロパティがASoundの目玉なのは前回でも触れたが、まさしくマスターピース。これに関しては基本的に設計変更はない予定。ではいったいどういった設計かと言うとDisplayObjectにおけるstageプロパティを思い浮かべてもらうと分りやすい。

var ins:Instrument = new Instrument();
ins.master;
ins.master.volume = 1;
var sprite:Sprite = new Sprite();
sprite.stage;
sprite.stage.scaleX = 1;

という感じで、stage.scaleX
を変更すると全体の横幅が変更されるように、master.volume を変更すると全体の音量(つまりマスターボリューム)が変更される。

さらにstageがswf上、完全に単一の存在であるようにmasterも単一の存在。外部からswfをロードした場合も同一のmasterを参照する。所謂シングルトンクラスというわけ。

で、ここからがポイント。

ASoundではMasterクラスのみが、Soundインスタンスを保持し、実際にバイナリデータをSoundインスタンスに書き込む。Instrumentクラスや、SinOSCなどのオシレーター系クラスはサンプリングデータを保持するだけで直接Soundインスタンスを扱いはしない。実質的に、MasterクラスはDAC(デジタルアナログコンバーター)として機能している。

POPFORGEでは、バッファー毎にnew Sound()をおこなうSoundFactory方式が採用されていたが(これはFP9をハックする上でそうせざるを得なかった訳だけど)、ASoundではmasterが生成され、swfが終了するまで、単一のSoundインスタンスにバッファを書き込んでゆく。どちらの方式が優れているかは一概に言えないが、個人的には前者はSEやシーケンサー等に向いていて、後者はDSPとかインスタレーションに向いているんじゃないかと思う。

また、ASoundの単一Sound方式だと、アタックのタイミング(音が成るタイミング)をバッファーベースで設定できるので遅延がほぼ発生しない。これをEnterFrameやTimerEventで行うと、フレーム落ちやらで遅延が生じる。fpsに依存しない時間管理ができるので、個人的にはとてもうれしい。(ひょっとすると音響以外の部分でもなにかしらの役に立つんじゃないかな)

気になるメモリ効率だけど、これはSampleDataEvent毎に解放される。なので、メモリリークの心配はない。また、n個のサイン波を鳴らす場合をSoundFactory方式と単一Sound方式で比較してみたところ20個が分水領となり、20以下だと前者が有利で、20以上は後者が有利となった。(CPUの負荷を観測)

とまあ、そんな感じ。

そしてオマケ。
masterがstageと同じく単一の存在なので、ロードしたサブswfからもmasterは同一になる。という事は元swfとロードswfでタイミングの同期が簡単にとれる。つまり任意のタイミングでswfをロードしても、必ず意図したタイミングで鳴らすことができる。ここら辺をうまくやってライブコーディングが面白くなればな〜と思う。

手動でFireFox上のFlashPlayerバージョンを切り替えるメモ

Windowsだとプラグインスイッチャーという便利ツールがあったけどMacだとよくわかんなかったので手動でやってみたメモ。本来ならAdobeのアンインストーラーを使うのが適当なんだろうけどなぜか失敗。一応手動でもなんとかなったよ。
(MacOSX Leopardでの作業です)


Step1.ブラウザのプラグインを削除
/Library/Internet Plug-Ins/Flash Player Enabler.plugin
/Library/Internet Plug-Ins/Flash Player.plugin
/Library/Internet Plug-Ins/flashplayer.xpt

参考:http://bowz.info/677


Step2.FlashPlayerをDL
http://www.adobe.com/jp/support/kb/ts/228/ts_228683_ja-jp.html


Step3.インストール
任意のプレイヤーを選択し、ダイアログに従えば完了。
と思いきやここで大きな罠が。
FP9r159以降では、以前に入っていたプレイヤーをどっかで取得しているらしく、「既に新しいプレイヤーが入ってるよ」的なことを言って、インストールさせてくれない。とりあえずFP9r45とかならインストールできた。

オマケ。
おそらくstep1のファイルを差し替えるだけでplayerのバージョンを変更できるんじゃないかと思う。そういうアプリがあれば便利かも。

FlashCS4のタブ切り替えショートカット

flashtab.png

FlashCS4のタブ切り替えが遂に判明したので発表します。
おそらくこの事実に気づいているのはFlash屋の中でも極一部のはずだが、オープンソースマインドに従って公開する事にしました。

ってわけでショートカット。

「Cmd + @」
  及び
「Cmd + Shift + @」

前者だと「左→右」後者だと「右→左」と切り替わります。チョー便利。windowsだとCmdをCtrlにすれば良いんじゃないかとおもいます。

ASound Sample files (.fla).

Today, I add a few files which is ASound samples.
ASound is Actionscript sound library, using dynamic sound generation.


Simple Sine Oscillator .
ASound/branches/gamiken/src/example/example.fla
Lesson | .as file

Simple Delay Effects .
ASound/branches/gamiken/src/example/example2.fla
Lesson | .as file

Effects, Envelop, and mult-Oscillator .
ASound/branches/gamiken/src/example/example3.fla
Lesson | .as file

please check out repository.
http://www.libspark.org/svn/as3/ASound
usage

I would like to talk about ASound APIs. but I want to rebuild, and will change some APIs.
so, I can not talk that.

ASound is unripe library. But, be sure to make complete.
Please wait for a while.

Flash と Lightbox.js の連携

モックアップで試したので自分用メモ。
MacOSX Firefox/Safari でしか動作を確認していないので動かな環境があるかも。(コメントで指摘していただけるとウレシイっす)

Flash



一応LighBoxとSWFで相互に関数を呼び合っているので、LightBoxが閉じたときも何かしらのアクションを起こせます。

SWFからはExternalInterfaceでコール。navigateToURLでも呼べたりするけど、そうするとマルチバイト文字とか送れないので正統に書きました。
ExternalInterface.call("lightBoxInit",image,title);
  LIghtBoxからのcallbackはendメソッドの中に"closeLightBox"とか適当な関数を書いて、ExternalInterfaceに渡していますにしています。直接ExternalInterfaceにendメソッドを渡せる方がLightBox.jsを修正しないで済むしエレガントだと思うんだけど、
ExternalInterface.addCallback("Lightbox.prototype.end", closeLightBox);
  だと動かなかったので断念。おしえてエロいひと。
ソースはご自由にどうぞ

参考:http://www.anthonytanaka.com/?p=180

RSS + Contuct

  • rss
  • email

Credit

Copyright (C) 2007 kappa-lab.com.
All Rights Reserved.