パッケージ | flash.media |
クラス | public final class SoundMixer |
継承 | SoundMixer Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
sampleData
イベントを送出して生成されるサウンド)を制御します。
プロパティ | 定義元 | ||
---|---|---|---|
audioPlaybackMode : String [静的]
すべての Sound オブジェクトのオーディオ再生モードを指定します。 | SoundMixer | ||
bufferTime : int [静的]
サウンドのストリーミングを開始するまでに、埋め込まれたストリーミングサウンドをバッファーにプリロードする秒数です。 | SoundMixer | ||
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
soundTransform : flash.media:SoundTransform [静的]
グローバルサウンドプロパティを制御する SoundTransform オブジェクトです。 | SoundMixer | ||
useSpeakerphoneForVoice : Boolean [静的]
デバイスが音声モードのときに、スピーカーフォンを切り替えます。 | SoundMixer |
メソッド | 定義元 | ||
---|---|---|---|
[静的]
セキュリティ上の制限のためにサウンドが使用できないかどうかを調べます。 | SoundMixer | ||
[静的]
現在のサウンド波形からスナップショットを取得し、指定した ByteArray オブジェクトに配置します。 | SoundMixer | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
[静的]
再生中のサウンドをすべて停止します。 | SoundMixer | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | 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.audioPlaybackMode
が AudioPlaybackMode.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 エレメント
flash.utils.ByteArray
flash.media.Sound
flash.media.SoundLoaderContext.checkPolicyFile
例 ( この例の使用方法 )
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); } } }
Tue Jun 12 2018, 10:34 AM Z