声をかけるというインターフェイスをFlashで実現。パソコンのマイクに大声をかけてキャラクターを起こしてください。 Adobe Flash 8 Professionalを使用してサンプルを作成しています。 |
Flashでマイクを使用するには?
2. レイヤー「action」の1フレーム目に以下のActionscriptを記述してください。
stop(); _root.createEmptyMovieClip("micSound", 100); System.showSettings(2); micInput = Microphone.get(); micSound.attachAudio(micInput); _root.micInput.setGain(50); _root.micInput.setUseEchoSuppression(false); this.onEnterFrame = function(){ if(_root.micInput.activityLevel >= 50){ _root.gotoAndStop("wakeup"); } }少しずつ見ていきましょう。
stop(); _root.createEmptyMovieClip("micSound", 100); System.showSettings(2);1行目でタイムラインの再生を停止しています。
2行目は空のムービークリップを生成する「createEmptyMovieClip("生成するMC名",深度)」です。これを実行して空のムービークリップを作り、そこにマイクの音源を付けていくという流れになります。
3行目は、Flashの設定パネルを表示する「showSettings()」です。よくビデオチャット等にアクセスした際に表示される設定パネルがあります。ここに「2」を入力するとマイクの設定がFlashの再生開始前に表示されます。
micInput = Microphone.get(); micSound.attachAudio(micInput); _root.micInput.setGain(50); _root.micInput.setUseEchoSuppression(false);次の4行でマイクの入力設定を行い、生成したムービークリップに付加します。
1行目、「識別名=Microphone.get()」は、マイクの入力をします。
2行目、「識別名.attachAudio(識別名)」は、以前ご紹介した「attachSound」のような物と理解すると分かりやすいです。これでリアルタイムにマイクの音源が再生されます。
3行目、「識別名.setGain(50)」は、マイク入力のボリュームです。「0~100」までの整数で入力してください。
最後の行「setUseEchoSuppression()」は、マイク入力を再生する際にエコーを反映するかどうかです。今回は大声を入力する目的ですので、ハウリングの原因になりやすいので「false」を入力し、エコーを停止しています。
this.onEnterFrame = function(){ if(_root.micInput.activityLevel >= 50){ _root.gotoAndStop("wakeup"); } }最後の5行はマイクの入力レベルに対して、上限分岐を行っています。
条件の「micInput.activityLevel」で、マイクの入力レベルの情報を参照しています。この場合、入力レベルが50を超えた場合、タイムラインを移動します。
これで完成です!マイク機能が付いたパソコンに呼びかけてキャラクターが目覚めるか試してください。
完成したFlashファイルをダウンロード
今回はFlashでマイク入力を試しました。マイク入力はFlash単体では録音も出来ませんし、有用性は必ずしも高くはないかもしれませんが、インターフェイスとして音声を利用するのは面白いのではないでしょうか?
ところで、音声入力は「Flash Media Server」と連携して、録音やボイスチャットの機能を提供することが基本ですが、個人でサーバを構築するのは技術的にも経済的にも難しいものです。技術的な問題はさておき「RED5」という同等の機能を提供するオープンソースサーバがあります。価格的な問題でFMSの導入を断念しようとしている方は一度注目してみてはいかがでしょうか?
【関連記事】
attachSound()を使ったリズムゲーム