さんまがおいしい季節だねー(´・ω・`)

エイ子がミクのコスプレでネギ振るキモい Flash アプリがちゃんとマイクに対応したみたい?!

Flash,ウェブアプリ — タグ: , , , — さくら @ 2009/05/25 23:43

さくらです♡ごぶさたぶりんこ!!

今日はちょっと前に作ったマイクに合わせてエイ子がミクのコスプレでネギ振るキモい Flash アプリ(バグ有り)のバグフィックスをしてみますた。
っつっても、感度が超悪いVAIOの内蔵マイクでテストしたんで普通の環境で動かすとどうなるのかいまいち見えてなかったりします。さくらの想定と違ってたらネギ振りすぎになってるはず。文句はHDDの音を一番多く拾うVAIOのマイクに言ってよねww

遊び方

マイクの使用を許可すると、マイクの音量に合わせてエイ子がネギを振ります。そんだけ〜ww

似たようなアプリ作りたい人へ

マイク使ったアプリって応用ありそうだから、これから似たようなアプリ作りたい人の参考になりそうなこと書いとくわね。
まず大雑把なところではMicrophone – ActionScript 3.0 言語およびコンポーネントリファレンス見たらだいたいのことは分かると思うわよ。

マイクの初期化

マイクの初期化はコンストラクタとかで Microphone.getMicrophone を呼び出してやるんだけど、そんとき null のチェックと setLoopBack の呼び出しをすること。

mic:Microphone = Microphone.getMicrophone();
if (mic != null) {
    mic.setLoopBack(true);
}

マイクが無かったり、他のアプリでマイクを使ってたら getMicrophone() メソッドは null を返すわ。なんで null ならダイアログあげてエラー表示とかしないといけないんだけどさくらは面倒だからしてないわww
setLoopBack(true) を省略すると、マイク使用許可ダイアログが出ないみたいよ。ってl00oo.oo00l.comに書いてあったわ。

マイクの音量に応じた処理は ENTER_FRAME で

ENTER_FRAME イベントハンドラじゃなくて Timer 使ってもいいんだけど、要は ActivityEvent.ACTIVITY はマイクが有効になったときと無効になったときしか呼ばれないから、マイクの音量を取得して何かしたいときには使えないってこと。Adobe の Microphone のマニュアルにあったサンプルは ActivityEvent.ACTIVITY で何かしようとしてるけど、たぶんみんながしたい処理はそれじゃないわ。
だからマイクの音量は、ENTER_FRAME イベントハンドラとかで Microphone オブジェクトの activityLevel を見たらいいと思うわ。

サンプルがあった方が分かりやすいと思うから、超簡単なマイク使ったアプリのソース貼っとくわね。
コンパイルしたらマイクの音量を表示するだけのアプリが出来上がるわ。適当にコピペして使ってちょうだい。

package {
    import flash.display.*;
    import flash.events.*;
    import flash.media.*;
    import flash.text.*;
    [SWF(width="215", height="138")]
    public class MicExam extends Sprite {
        private var mic:Microphone;
        private var vol:TextField;
        public function MicExam() {
            vol = new TextField();
            vol.text = '0';
            addChild(vol);
            mic = Microphone.getMicrophone();
            if (mic != null) {
                mic.gain = 50;
                mic.setUseEchoSuppression(true);
                mic.setLoopBack(true);
                addEventListener(Event.ENTER_FRAME, onEnterFrame);
            }
        }
        private function onEnterFrame(e:Event):void {
            vol.text = String(mic.activityLevel);
        }
    }
}

参考資料

前の記事にも書いたけど、アイデアはFlex3で、マイクの音量に応じてネギを振る初音ミクを作りました – 小宮日記のパクリだから。本人がパクリだっつってんだから、パクリ疑惑とか言わないでよねww

さくら

0 Comments »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URI

コメントする

Copyright © 2017 さくらたんどっとびーず | powered by WordPress with Barecity