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

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

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



パブリックプロパティ
 プロパティ定義元
  bufferTime : int
[静的] サウンドのストリーミングを開始するまでに、バッファに埋め込まれたストリーミングサウンドをプリロードする秒数です。
SoundMixer
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
 Inheritedprototype : Object
[静的] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  soundTransform : SoundTransform
[静的] グローバルサウンドプロパティを制御する SoundTransform オブジェクトです。
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
プロパティの詳細
bufferTimeプロパティ
bufferTime:int

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

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

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



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

関連項目

soundTransformプロパティ 
soundTransform:SoundTransform

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

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



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

関連項目

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

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

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

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

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

関連項目

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 となります。

関連項目




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

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

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

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

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

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

詳細については、次のトピックを参照してください。




次の例では、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);
        }
    }
}




 

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flex/3_jp/langref/flash/media/SoundMixer.html