Adobe® Flash® Platform 用 ActionScript® 3.0 リファレンスガイド
ホーム  |  パッケージおよびクラスリストの非表示 |  パッケージ  |  クラス  |  新機能  |  索引  |  付録  |  英語で表示される理由
フィルター: サーバーからデータを取得しています...
サーバーからデータを取得しています...
flash.media 

SoundMixer  - AS3

パッケージflash.media
クラスpublic final class SoundMixer
継承SoundMixer Inheritance Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

SoundMixer クラスには、静的プロパティやアプリケーションのグローバルサウンドコントロールのメソッドが含まれます。SoundMixer クラスは、アプリケーションの埋め込みおよびストリーミングサウンド、また、動的に作成されたサウンド(つまり、Sound オブジェクトが sampleData イベントを送出して生成されるサウンド)を制御します。



パブリックプロパティ
 プロパティ定義元
      audioPlaybackMode : String
[静的] すべての Sound オブジェクトのオーディオ再生モードを指定します。
SoundMixer
  bufferTime : int
[静的] サウンドのストリーミングを開始するまでに、埋め込まれたストリーミングサウンドをバッファーにプリロードする秒数です。
SoundMixer
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。
Object
  soundTransform : flash.media:SoundTransform
[静的] グローバルサウンドプロパティを制御する SoundTransform オブジェクトです。
SoundMixer
      useSpeakerphoneForVoice : Boolean
[静的] デバイスが音声モードのときに、スピーカーフォンを切り替えます。
SoundMixer
パブリックメソッド
 メソッド定義元
  
[静的] セキュリティ上の制限のためにサウンドが使用できないかどうかを調べます。
SoundMixer
  
computeSpectrum(outputArray:ByteArray, FFTMode:Boolean = false, stretchFactor:int = 0):void
[静的] 現在のサウンド波形からスナップショットを取得し、指定した ByteArray オブジェクトに配置します。
SoundMixer
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
  
[静的] 再生中のサウンドをすべて停止します。
SoundMixer
 Inherited
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
プロパティの詳細
    

audioPlaybackMode

プロパティ
audioPlaybackMode:String

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 3

すべての Sound オブジェクトのオーディオ再生モードを指定します。モバイルデバイスでは、サウンドの優先度が設定され、プラットフォームの特徴に応じてデフォルト値が指定されます。デスクトップおよび TV 環境では、オーディオ再生モード間に機能的な違いはありません。

このプロパティの有効な値は AudioPlaybackMode クラスで定義されています。

注意 iOS では、あるアプリケーションで audioPlaybackMode=AudioPlaybackMode.VOICE を設定していると、他のアプリケーションは AudioPlaybackMode.MEDIA に変更できません。

AudioPlaybackMode.VOICE モードの使用は最小限に抑え、音声呼び出しが終了し他のアプリケーションがメディアモードで再生できるようになった後は、できるだけ早く AudioPlaybackMode.MEDIA モードに切り替えるようにしてください。

iOS でオーディオ再生モードを変更する場合、音楽を再生するネイティブアプリケーションで一時停止します。

デフォルト値: AudioPlaybackMode.MEDIA。



実装
    public static function get audioPlaybackMode():String
    public static function set audioPlaybackMode(value:String):void

例外
ArgumentError — kInvalidParameterError

関連する API エレメント

bufferTime

プロパティ 
bufferTime:int

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

サウンドのストリーミングを開始するまでに、埋め込まれたストリーミングサウンドをバッファーにプリロードする秒数です。ロードされたサウンドのデータ(バッファー時間も含む)には、クロスドメインポリシーファイルを実装していない限り、別のドメインに存在する SWF ファイルからアクセスできません。セキュリティとサウンドの詳細については、Sound クラスの説明を参照してください。ロードされたサウンドのデータ(バッファー時間も含む)には、クロスドメインポリシーファイルを実装していない限り、別のドメインに存在するファイルのコードからはアクセスできません。ただし、AIR アプリケーションのアプリケーションサンドボックスでは、コードは任意のソースからのサウンドファイルにあるデータにアクセスできます。セキュリティとサウンドの詳細については、Sound クラスの説明を参照してください。

SoundMixer.bufferTime プロパティは SWF に埋め込まれたストリーミングサウンドのバッファー時間のみに影響し、動的に作成される Sound オブジェクト(ActionScript で作成される Sound オブジェクト)には影響しません。SoundMixer.bufferTime の値は、Sound.load() メソッドに渡される SoundLoaderContext オブジェクトで指定されたバッファー時間のデフォルト値に対して、オーバーライドや設定はできません。



実装
    public static function get bufferTime():int
    public static function set bufferTime(value:int):void

関連する API エレメント

soundTransform

プロパティ 
soundTransform:flash.media:SoundTransform

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

グローバルサウンドプロパティを制御する SoundTransform オブジェクトです。SoundTransform オブジェクトには、ボリューム、パン、左スピーカーの割り当て、および右スピーカーの割り当てを設定するプロパティが含まれます。このプロパティで使用される SoundTransform オブジェクトは、個々のサウンド設定が適用された後にすべてのサウンドに適用される最終的なサウンド設定を提供します。



実装
    public static function get soundTransform():flash.media:SoundTransform
    public static function set soundTransform(value:flash.media:SoundTransform):void

関連する API エレメント

    

useSpeakerphoneForVoice

プロパティ 
useSpeakerphoneForVoice:Boolean

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 3

デバイスが音声モードのときに、スピーカーフォンを切り替えます。デフォルトでは、SoundMixer.audioPlaybackModeAudioPlaybackMode.VOICE に設定されている場合、スマートフォンのオーディオ出力には通話用のイヤホンが使用されます。useSpeakerphoneForVoice プロパティでは、電話アプリケーションにスピーカーフォンボタンを実装できるように、デフォルトの出力を無視することができます。このプロパティは、AudioPlaybackMode.VOICE 以外のモードでは効果はありません。デスクトップおよび TV 環境では、このプロパティには効果はありません。

注意 iOS では、アプリケーションで audioPlaybackMode=VOICE を設定していると、別のアプリケーションも音声モードで再生され、useSpeakerphoneForVoice=true に設定できません。

注意:Android では、AIR アプリケーション記述の中で android.permission.MODIFY_AUDIO_SETTINGS を設定する必要があります。そうしないと、この値を変更しても効果がありません。また、この設定はグローバルデバイス設定です。同じデバイス上で動作する他のアプリケーションによってデバイス設定が変更される可能性が常にあります。

デフォルト値: false。



実装
    public static function get useSpeakerphoneForVoice():Boolean
    public static function set useSpeakerphoneForVoice(value:Boolean):void

関連する API エレメント

メソッドの詳細

areSoundsInaccessible

()メソッド
public static function areSoundsInaccessible():Boolean

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9

セキュリティ上の制限のためにサウンドが使用できないかどうかを調べます。例えば、このメソッドの呼び出し元コンテンツのドメイン以外のドメインからロードされたサウンドは、そのサウンドのサーバー上に、該当するドメインから自ドメインへのアクセスを許可する URL ポリシーファイルが存在していなければ、アクセスできません。サウンドをロードしたり、再生することはできますが、アクセス不可のサウンドに対して、サウンドの ID3 メタデータの取得などの低レベルの操作は実行できません。

アプリケーションセキュリティサンドボックス内の AIR アプリケーションコンテンツでは、このメソッドを呼び出すと常に false が返されます。 すべてのサウンド(他のドメインからロードされたサウンドを含む)は、アプリケーションセキュリティサンドボックス内のコンテンツにアクセスできます。

戻り値
Boolean — ブール値のストリング表現です。

関連する API エレメント

computeSpectrum

()メソッド 
public static function computeSpectrum(outputArray:ByteArray, FFTMode:Boolean = false, stretchFactor:int = 0):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9

現在のサウンド波形からスナップショットを取得し、指定した ByteArray オブジェクトに配置します。値の形式は正規化された浮動小数値で、範囲は -1.0 ~ 1.0 です。outputArray パラメーターに渡す ByteArray オブジェクトは、新しい値で上書きされます。作成される ByteArray オブジェクトのサイズは 512 に固定され(値は浮動小数値)、最初の 256 個は左チャンネルを表し、次の 256 個は右チャンネルを表します。

注意:このメソッドは、ローカルファイルのセキュリティ制限とドメイン間のデータロードに関する制限に従います。 ローカルファイルを操作する場合、または呼び出し元コンテンツとは異なるドメインに存在するサーバーからロードしたサウンドを操作する場合は、クロスドメインポリシーファイルを使用してサンドボックスの制限に対処しなければならないことがあります。 詳細については、Sound クラスの説明を参照してください。また、このメソッドは、RTMP サーバーと同じドメインに存在するコンテンツから呼び出された場合でも、RTMP ストリームからデータを抽出するために使用することはできません。

このメソッドは、Flash Player 9.0.115.0 以降と Adobe AIR の RTMP 上でサポートされています。サーバーサイドスクリプトで、Flash Media Server 上のストリームへのアクセスを制御することができます。詳細については、Client.audioSampleAccess プロパティおよび Client.videoSampleAccess プロパティのトピック(『Server-Side ActionScript Language Reference for Adobe Flash Media Server』)を参照してください。

パラメーター

outputArray:ByteArray — サウンドに関連する値を保持する ByteArray オブジェクトです。セキュリティ上の制限のためにサウンドが使用できない場合(areSoundsInaccessible == true)、outputArray オブジェクトは変更されません。すべてのサウンドが停止している場合、outputArray オブジェクトには 0 が詰められます。
 
FFTMode:Boolean (default = false) — サウンドデータに対して最初にフーリエ変換を実行するかどうかを示すブール値です。このパラメーターを true に設定すると、このメソッドは未処理のサウンド波形ではなく周波数スペクトルを返します。周波数スペクトルでは、低い周波数は左側に、高い周波数は右側に表されます。
 
stretchFactor:int (default = 0) — サウンドサンプリングの解像度です。例えば、stretchFactor 値に 0 を設定した場合、データは 44.1 KHz でサンプリングされ、1 の場合は 22.05 KHz、2 の場合は 11.025 KHz となります。

関連する API エレメント


例  ( この例の使用方法 )

次の例では、computeSpectrum() メソッドを使用して、サウンド波形データのグラフィック表現を生成します。

コンストラクターで、サウンドファイルがロードされ、再生に設定されます。この例では、エラー処理はありません。また、サウンドファイルが SWF ファイルと同じディレクトリにあると想定しています。この例では、サウンドの再生中に Event.ENTER_FRAME イベントを待機し、onEnterFrame() メソッドを繰り返しトリガーして、サウンドデータ値のグラフを描画します。サウンドの再生が終了すると、Event.ENTER_FRAME イベントのリスナーを削除することにより、onPlaybackComplete() メソッドによって描画処理が停止されます。

onEnterFrame() メソッドで、computeSpectrum() メソッドによって bytes バイト配列オブジェクトに生のサウンドが保存されます。データは 44.1 KHz でサンプリングされます。512 バイトのデータを含む各バイト配列には、-1 ~ 1 の浮動小数値が含まれます。前半の 256 バイトの値は左チャンネルを表し、後半の 256 バイトの値は右チャンネルを表します。1 つ目の for ループは、前半の 256 バイトのデータ値(左ステレオチャンネル)を読み取り、Graphics.lineTo() メソッドを使用して、各ポイントから次のポイントまでの間に線を描画します。サウンド波形のベクターグラフィック表示は、クラスの Sprite オブジェクトに直接記述されます。バイトストリームから 32 bit 浮動小数点数としてサウンドのバイトが読み取られ、グラフの垂直方向の範囲に適合するようにプロットの高さで乗算されます。幅はチャンネルの長さの 2 倍に設定されます。2 つ目の for ループは、後半の 256 バイトの値(右ステレオチャンネル)を読み取り、逆の順序で線を描画します。g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT); メソッドおよび g.lineTo(0, PLOT_HEIGHT); メソッドにより波形のベースラインが描画されます。生成される波形プロットから、鏡像効果が生まれます。

package {
    import flash.display.Sprite;
    import flash.display.Graphics;
    import flash.events.Event;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.media.SoundMixer;
    import flash.net.URLRequest;
    import flash.utils.ByteArray;
    import flash.text.TextField;

    public class SoundMixer_computeSpectrumExample extends Sprite {

        public function SoundMixer_computeSpectrumExample() {
            var snd:Sound = new Sound();
            var req:URLRequest = new URLRequest("Song1.mp3");
            snd.load(req);
            
            var channel:SoundChannel;
            channel = snd.play();
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
            channel.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete);
        }

        private function onEnterFrame(event:Event):void {
            var bytes:ByteArray = new ByteArray();
            const PLOT_HEIGHT:int = 200;
            const CHANNEL_LENGTH:int = 256;

            SoundMixer.computeSpectrum(bytes, false, 0);
            
            var g:Graphics = this.graphics;
            
            g.clear();
       
            g.lineStyle(0, 0x6600CC);
            g.beginFill(0x6600CC);
            g.moveTo(0, PLOT_HEIGHT);
            
            var n:Number = 0;
            
            for (var i:int = 0; i < CHANNEL_LENGTH; i++) {
                n = (bytes.readFloat() * PLOT_HEIGHT);
                g.lineTo(i * 2, PLOT_HEIGHT - n);
            }

            g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
            g.endFill();
 
            g.lineStyle(0, 0xCC0066);
            g.beginFill(0xCC0066, 0.5);
            g.moveTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
            
            for (i = CHANNEL_LENGTH; i > 0; i--) {
                n = (bytes.readFloat() * PLOT_HEIGHT);
                g.lineTo(i * 2, PLOT_HEIGHT - n);
            }
  
            g.lineTo(0, PLOT_HEIGHT);
            g.endFill();
        }
        
        private function onPlaybackComplete(event:Event):void {
            removeEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
    }
}

stopAll

()メソッド 
public static function stopAll():void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0, Flash Player 9, Flash Lite 4

再生中のサウンドをすべて停止します。

Flash Professional では、このメソッドで再生ヘッドが停止することはありません。ストリーミングするために設定されたサウンドは、そのサウンドが置かれているフレームに再生ヘッドが移動すると再生を再開します。

このプロパティを使用するときは、次のセキュリティモデルを考慮してください。

  • デフォルトでは、SoundMixer.stopAll() メソッドを呼び出すと、呼び出し元のオブジェクトと同じセキュリティサンドボックス内にあるサウンドのみを停止します。呼び出し元のオブジェクトと同じサンドボックスから再生を開始しなかったサウンドは、停止されません。
  • サウンドをロードするとき、Sound クラスの load() メソッドを使用すると、SoundLoaderContext オブジェクトである context パラメーターを指定できます。SoundLoaderContext オブジェクトの checkPolicyFile プロパティを true に設定した場合、Flash Player または Adobe AIR は、サウンドのロード元のサーバー上にクロスドメインポリシーファイルがあるかどうかをチェックします。 サーバーにクロスドメインポリシーファイルが存在しており、そのファイルで呼び出し元コンテンツのドメインが許可されている場合、SoundMixer.stopAll() メソッドを使用してロードされたサウンドを停止することができます。許可されていない場合は、停止できません。

ただし、Adobe AIR では、アプリケーションセキュリティサンドボックス内のコンテンツ(AIR アプリケーションと共にインストールされたコンテンツ)は、これらのセキュリティ制限による制限を受けません。

セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。


例  ( この例の使用方法 )

次の例では、stopAll() メソッドを使用して、同時に再生される 2 つのサウンドをミュートします。

コンストラクターで、2 つの異なるサウンドファイルがロードされ、再生するように設定されます。1 つ目のサウンドは、ローカルにロードされ、サウンドチャンネルに割り当てられます。ファイルが SWF ファイルと同じディレクトリにあると想定しています。2 つ目のファイルは、アドビ システムズ社のサイトからロードされ、ストリームされます。SoundMixer.stopAll() メソッドを使用するには、すべてのサウンドがアクセス可能である必要があります。SoundLoaderContext オブジェクトを使用して、クロスドメインポリシーファイルをチェックできます。それぞれのサウンドには、サウンドファイルのロード中に IO エラーが発生した場合に呼び出されるイベントリスナーもあります。muteButton テキストフィールドも作成されます。クリックイベントを待機し、muteButtonClickHandler() メソッドを呼び出します。

muteButtonClickHandler() メソッドで、テキストフィールドの内容が "MUTE" の場合、areSoundsInaccessible() メソッドにより、サウンドミキサーがファイルにアクセスできるかどうかがチェックされます。ファイルがアクセス可能の場合、stopAll() メソッドによってサウンドが停止されます。テキストフィールドをもう一度選択すると、1 つ目のサウンドの再生が開始され、テキストフィールドの内容が再び "MUTE" に変わります。今度は、stopAll() メソッドによって、実行中の 1 つのサウンドがミュートされます。サウンドチャンネルの stop() メソッドを使用して、チャンネルに割り当てられた特定のサウンドを停止することもできます。チャンネルの機能を使用するには、play() メソッドを呼び出すたびに、サウンドをチャンネルに再割り当てする必要があります。

package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;
    import flash.media.SoundLoaderContext;
    import flash.media.SoundChannel;
    import flash.media.SoundMixer;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.MouseEvent;
    import flash.events.IOErrorEvent;

    public class SoundMixer_stopAllExample extends Sprite  {
        private var firstSound:Sound = new Sound();
        private var secondSound:Sound = new Sound();
        private var muteButton:TextField = new TextField();
        private var channel1:SoundChannel = new SoundChannel();
        
        public function SoundMixer_stopAllExample() {
            firstSound.load(new URLRequest("mySound.mp3"));
            secondSound.load(new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"));

            firstSound.addEventListener(IOErrorEvent.IO_ERROR, firstSoundErrorHandler);
            secondSound.addEventListener(IOErrorEvent.IO_ERROR, secondSoundErrorHandler);
            
            channel1 = firstSound.play();
            secondSound.play();
            
            muteButton.autoSize = TextFieldAutoSize.LEFT;
            muteButton.border = true;
            muteButton.background = true;
            muteButton.text = "MUTE";
        
            muteButton.addEventListener(MouseEvent.CLICK, muteButtonClickHandler);         
        
            this.addChild(muteButton);
        }

        private function muteButtonClickHandler(event:MouseEvent):void {

            if(muteButton.text == "MUTE") {        
  
                if(SoundMixer.areSoundsInaccessible() == false) {
                    SoundMixer.stopAll();
                    muteButton.text = "click to play only one of sound.";
                }
                else {
                    muteButton.text = "The sounds are not accessible.";
                }
            }
           else {
                firstSound.play();        
                muteButton.text = "MUTE";
           }
        } 

        private function firstSoundErrorHandler(errorEvent:IOErrorEvent):void {
            trace(errorEvent.text);
        }

        private function secondSoundErrorHandler(errorEvent:IOErrorEvent):void {
            trace(errorEvent.text);
        }
    }
}




[ X ]英語で表示される理由
ActionScript 3.0 リファレンスガイドのコンテンツが英語で表示されます。

ActionScript 3.0 リファレンスガイドのすべての部分がすべての言語に翻訳されているわけではありません。言語エレメントが翻訳されていない場合、そのエレメントは英語で表示されます。例えば、ga.controls.HelpBox クラスはどの言語にも訳されていません。このため、リファレンスガイドの日本語バージョンでは、ga.controls.HelpBox クラスは英語で表示されます。