- 2007-12-03 (月)
- action script
CBCNET の第2回コラムで紹介したマイクを使ったサンプル3点のソースを置いておきます。
その他、AS3 で Microphone クラスを使うにあたって僕がつまづいた点をメモしておきます。
サンプルファイルのダウンロードは以下から。
- microphone_cbc2.zip(28KB)…AS3でマイクを使うサンプル。コラムの上2つのサンプルが収録されてます。
- ExcitingMic.zip(140KB)…FlexBuilderで作ったプロジェクトになっています。Fisixで動いているサンプルにあたります。
Flex プロジェクトとはなんぞや?的な質問は答えかねます。他のブログをご参考に頑張ってください。
自分で改めてソースを見直したりしてません。「公開するする詐欺」になる前にとりあえず公開したということでご容赦ください。お時間のある方はぜひ LineRider を超える音ゲーを作ってみてください。
Microphone クラス雑感
ノートPCのマイクを使った場合のハウリング(音を取得しつつ出力すると共鳴して音が暴走する)を抑える方法が分からずひと苦労しました。苦闘の手順を書くと:
- 本体から音を出さなきゃいいんじゃね?と思って、サウンド出力を無効化する「mic.setLoopBack(false);」してみたら、マイクの取得自体をしなくなってしまった(設定パネルが表示されないということです)。どうも getMicriphone() だけでは「今からこのPCではマイクを使うのよ!」と認識してくれないらしい。
- O塚さんに、NetConnection, NetStream を使うことで「マイクを使う宣言」ができるそうなので、setLoopBack(false)できるとのこと。でも今回のサンプルはネットに繋がる必要がないので ns アプローチは諦める。(ns って null 設定して擬似的に繋いでるようなフェイクをかけれるのかどうかは未調査)
- mic.setSilenceLevel(100, 1000); で解決。setSilenceLevelは第1引数の音量以下は無音として認識しますよ〜という設定。最大値100を指定することで「ありとあらゆる音をナシとして扱ってくれる」不感症マイク設定が可能。第2引数はとりあえず今回は関係ない。これで解決。ちなみにジョネレーターで画面をキャプチャするタイミングも Camera クラスの setMotionLevel で「一定の動き以下の時キャプチャ」っていう設定をしています。世のスゴイ人はもっと精度のいいものを自作されてますが。。
無音として認識するので、出力へのフィードバックはしないけど、activityLevelプロパティとしてはきちんと取得できるということです。
ということでハウリングは解決。
もう一個つまったのは、AS3でマイクを使ったサンプルを Mac, FireFox で開き、タブでも閉じるボタンでもいいのでウィンドウを閉じようとすると FireFox 自体が強制終了する現象に遭遇。これは未解決。そんなに複雑なコードでもないし、FlashPlayer か FireFox のバグかなぁと責任転嫁のままコラム公開中。
最近メモ書きばかりですいません。
- Newer: クリスマスメッセージツリーを相手に送れるサービス
- Older: CBCNETコラム2本目を書きました
Comment:0
Trackback:0
- TrackBack URL for this entry
- http://www.trick7.com/blog/mt-tb.cgi/649
- Listed below are links to weblogs that reference
- CBCNET掲載サンプルのソースとMicrophoneクラス雑感 from trick7.com blog



