マイクについて(Flash 6 以降)
マイクを使用したい
サンプルをダウンロード
■マイクを使用するには?
Flash Player の設定画面からマイクの使用を許可します。
Flash Player の設定画面からマイクで使用する録音デバイスを選択することができます。
■ローカル環境でマイクを使用する
ローカル環境でマイクを使用してみます。
1.ローカル環境でマイクを使用する
まず適当なムービークリップを用意します。
空のムービークリップを作成する
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
2.Microphone オブジェクトを取得する
Microphone.get()メソッドを使用して、Microphone オブジェクトを取得します。
マイクデバイスが複数存在する場合、引数に番号を指定すると、使用するマイクデバイスを選択する事ができます。
引数を省略するとFlash Player の設定画面で設定したデバイスが適用されます。
利用可能なマイクデバイスが存在しない場合、null が得られます。
Microphone オブジェクトを取得する
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
現在使用しているマイクのデバイス名を取得するには、name プロパティを使用します。
現在使用しているマイクデバイス名を取得する
// マイクデバイス名を取得
var mic_obj = Microphone.get();
trace("NAME:" + mic_obj.name);
複数あるマイクのデバイス名をすべて取得するには、Microphone.names プロパティを使用します。
配列に格納されたデバイス名称が得られます。
「配列の順番」と 「Microphone.get() メソッドの引数に渡す番号」は同じです。
マイクデバイス名をすべて取得する
// マイクデバイス名を取得
var name = Microphone .names;
var i;
for(i=0;i < name.length;i++){
trace("id:" + i + " NAME:" + name[i]);
}
3.オーディオソースを関連付ける
ムービークリップのattachAudio()メソッドを使用して、Microphone オブジェクトと関連付けます。
引数に、Microphone オブジェクトを指定します。
オーディオソースを関連付ける
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
// オーディオソースを関連付ける
mc.attachAudio(mic_obj);
■Flash Player のマイクの設定
ActionScript からマイクへのアクセスを試みると、以下の確認画面が表示されます。
ユーザーにより、拒否ボタンを押された場合マイクを利用することはできません。
ユーザーによるアクセス許可の結果を取得するには、onStatus イベントを使用します。
引数から得られるオブジェクトの、code プロパティから結果を取得できます。
マイクのアクセス許可設定の結果を取得する
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
// オーディオソースを関連付ける
mc.attachAudio(mic_obj);
// アクセス許可を調べる
mic_obj.onStatus = function(info) {
switch(info.code){
case "Microphone.Unmuted":
trace("マイク利用可能");
break;
case "Microphone.Muted":
trace("マイク利用不可能");
break;
};
}
また、muted プロパティを使用して調べることもできます。
false であれば利用可能です。true であれば利用できません。
マイクのアクセス許可を取得する
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
// オーディオソースを関連付ける
mc.attachAudio(mic_obj);
// アクセス許可を取得する
trace(mic_obj.muted);
マイクの増幅率を設定したい
■マイクのゲイン(増幅率)を設定する
マイクの入力ボリュームを増幅させるには、setGain() メソッドを使用します。
有効な値は 0 ~ 100 で、デフォルト値は 50 です。
0 で無音になります。
シグナルの増幅率を指定
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
// オーディオソースを関連付ける
mc.attachAudio(mic_obj);
// ゲインを設定
mic_obj.setGain(50);
Flash Player 設定のマイクの録音ボリュームに相当します。ActionScript からボリュームを変更してもメータは連動して変化しないようです。
■マイクのゲイン(増幅率)を取得する
マイクの入力ボリュームの増幅率を取得するには、gain プロパティを使用します。
シグナルの増幅率を取得
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
// オーディオソースを関連付ける
mc.attachAudio(mic_obj);
// ゲインを設定
mic_obj.setGain(50);
// ゲインを取得
trace(mic_obj.gain);
Flash Player 設定のマイクの録音ボリュームに相当します。メータを操作すると連動して ActionScript 内の増幅率も変化します。
マイクのキャプチャーレートを設定したい
■キャプチャするレート (kHz) を指定する
マイクのキャプチャレートを設定するには、setRate() メソッドを使用します。
引数に、5、8、11、22、44 の好きな数値を指定します。単位は kHz です。
デフォルトは 11 です。録音デバイスが対応していない場合、最も近い設定に丸められます。
| 表示される値 | 実際のサンプリングレート |
| 44 | 44100 Hz |
| 22 | 22050 Hz |
| 11 | 11025 Hz |
| 8 | 8000 Hz |
| 5 | 5512 Hz |
キャプチャレートを変更する
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
// オーディオソースを関連付ける
mc.attachAudio(mic_obj);
// レートを設定
mic_obj.setRate(44);
■サウンドキャプチャレート (kHz) を取得する
マイクのキャプチャレートを取得するには、rate プロパティを使用します。
単位は kHz です。
キャプチャレートを取得する
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
// オーディオソースを関連付ける
mc.attachAudio(mic_obj);
// レートを設定
mic_obj.setRate(44);
// レートを取得
trace(mic_obj.rate);
マイクのエコー抑制を設定したい
■エコー抑制を設定する
スピーカ環境の近くでマイクを使用すると、マイクがスピーカーの音を拾ってしまい、キーンという音が発生してしまいます。
このハウリング現象を抑制する為の機能です。
エコーの抑制を設定するには、setUseEchoSuppression() メソッドを使用します。
true でエコー抑制が有効になります。false でエコー抑制が無効になります。デフォルトは false です。
エコー抑制を設定する
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
// オーディオソースを関連付ける
mc.attachAudio(mic_obj);
// エコー抑制を設定する
mic_obj.setUseEchoSuppression(false);
Flash Player 設定のマイクの「エコーを減らす」に相当します。ActionScript からエコーの抑制を変更してもチェックボックスは連動して変化しないようです。
■エコー抑制設定を取得する
エコーの抑制設定を取得するには、useEchoSuppression プロパティを使用します。
true でエコー抑制が有効、false でエコー抑制が無効である事がわかります。
エコー抑制設定を取得する
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
// オーディオソースを関連付ける
mc.attachAudio(mic_obj);
// エコー抑制を設定する
mic_obj.setUseEchoSuppression(false);
// エコー抑制設定を取得する
trace(mic_obj.useEchoSuppression);
Flash Player 設定のマイクの「エコーを減らす」に相当します。チェックボックスを操作すると、連動して ActionScript 内のエコーの抑制も変化します。
マイクのアクティビティを検出したい
■アクティビティとは?
アクティビティとは、活動を意味します。人がしゃべったりしたときに入力された音量の大きさから判断して有音、無音状態であるかを検出します。
これは、ボイスチャット利用時に効果的です。無音状態ではオーディオデータを送信する必要が無いので帯域を節約する事ができます。
■無音状態とみなすボリュームのしきい値を設定する
無音状態とみなすボリュームのしきい値を設定するには、setSilenceLevel() メソッドを使用します。
第01引数に、0 ~ 100 までのボリューム値を設定します。デフォルトは 10 です。100 に設定すると常に無音状態となります。
第02引数には、無音状態とみなすまでの時間をミリ秒で設定します。デフォルトは 2000 です。省略可能です。
無音状態とみなすボリュームのしきい値を設定する
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
// オーディオソースを関連付ける
mc.attachAudio(mic_obj);
// 無音状態とみなすボリュームのしきい値を設定
mic_obj.setSilenceLevel(0,1000);
■アクティビティを検出する
サウンドの有音と無音状態を検出するには、onActivity() イベントを使用します。
登録した関数の第01引数から、アクティビティの状態が得られます。
true であれば有音状態
false であれば無音状態である事がわかります。
アクティビティを検出する
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
// オーディオソースを関連付ける
mc.attachAudio(mic_obj);
// 無音状態とみなすボリュームのしきい値を設定
mic_obj.setSilenceLevel(50,1000);
// アクティビティを検出する
mic_obj.onActivity = function(result){
if(result){
trace("有音状態");
}else{
trace("無音状態");
}
}
■マイクが検出した音量を取得する
マイクが検出した音量(アクティビティレベル)を取得するには、activityLevel プロパティを使用します。
0 から 100 までの範囲となります。
マイクデバイスの準備ができていない場合、-1 が得られます。
アクティビティレベルを取得する
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
// オーディオソースを関連付ける
mc.attachAudio(mic_obj);
// 無音状態とみなすボリュームのしきい値を設定
mic_obj.setSilenceLevel(50,1000);
// 毎フレーム実行されるイベント
onEnterFrame = function(){
trace("アクティビティレベル:" + mic_obj.activityLevel);
};
■アクティビティ検出用のボリュームのしきい値を取得する
アクティビティ検出用のボリュームのしきい値を取得するには、silenceLevel プロパティを使用します。
アクティビティ検出用のボリュームのしきい値を取得する
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
// オーディオソースを関連付ける
mc.attachAudio(mic_obj);
// 無音状態とみなすボリュームのしきい値を設定
mic_obj.setSilenceLevel(50,1000);
// アクティビティ検出用のボリュームのしきい値を取得する
trace(mic_obj.silenceLevel);
また、無音状態とみなすまでの時間(単位:ミリ秒)を取得するには、silenceTimeOut プロパティを使用します。
無音状態を検出するまでの時間を取得
// 空のムービークリップを作成
var mc = _root.createEmptyMovieClip("sound_mc", 0);
// Microphone オブジェクトを取得
var mic_obj = Microphone.get();
// オーディオソースを関連付ける
mc.attachAudio(mic_obj);
// 無音状態とみなすボリュームのしきい値を設定
mic_obj.setSilenceLevel(50,1000);
// 無音状態を検出するまでの時間を取得
trace(mic_obj.silenceTimeOut);

