Steuern der Lautstärke und Richtungseinstellung des Sounds

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Ein einzelnes SoundChannel-Objekt steuert den linken und rechten Stereokanal eines Sounds. Wenn ein MP3-Sound nur mono vorliegt, weisen der linke und rechte Kanal des SoundChannel-Objekts identische Wellenformen auf.

Sie können die Amplitude jedes Stereokanals eines wiedergegebenen Sounds leicht mithilfe der Eigenschaften leftPeak und rightPeak des SoundChannel-Objekts ermitteln. Diese Eigenschaften zeigen die Amplitudenspitze der Soundwellenform selbst an. Sie zeigen nicht die tatsächliche Wiedergabelautstärke an. Die tatsächliche Wiedergabelautstärke ist eine Funktion der Soundwellenamplitude und der Lautstärkewerte, die im SoundChannel-Objekt und der SoundMixer-Klasse eingestellt wurden.

Die pan-Eigenschaft eines SoundChannel-Objekts kann dazu verwendet werden, während der Wiedergabe eine unterschiedliche Lautstärke für den rechten und linken Kanal festzulegen. Die pan-Eigenschaft kann einen Wert zwischen -1 und 1 annehmen. -1 steht dabei für volle Lautstärke auf dem linken Kanal und Stille auf dem rechten, während der Wert 1 volle Lautstärke auf dem rechten Kanal und Stille auf dem linken Kanal bedeutet. Numerische Werte zwischen -1 und 1 stellen proportionale Werte für den linken und rechten Kanal ein. Ein Wert von 0 bedeutet, dass beide Kanäle mit der gleichen Lautstärke wiedergegeben werden.

Mit dem folgenden Code wird ein SoundTransform-Objekt mit dem Lautstärkewert 0,6 und dem Wert -1 für die Richtungseinstellung erstellt (linker Kanal mit voller Lautstärke und Stille auf dem rechten Kanal). Der Code übergibt das SoundTransform-Objekt als Parameter an die play() -Methode, die das SoundTransform-Objekt auf das neue SoundChannel-Objekt anwendet, das zur Wiedergabesteuerung erstellt wurde.

var snd:Sound = new Sound(new URLRequest("bigSound.mp3"));  
var trans:SoundTransform = new SoundTransform(0.6, -1); 
var channel:SoundChannel = snd.play(0, 1, trans);

Sie können Lautstärke und Richtungseinstellung während der Soundwiedergabe ändern, indem Sie die Eigenschaften pan oder volume eines SoundTransform-Objekts festlegen und dann das Objekt als soundTransform -Eigenschaft eines SoundChannel-Objekts anwenden.

Mit der soundTransform -Eigenschaft der SoundMixer-Klasse können Sie die Werte für die globale Lautstärke und die Richtungseinstellung auch für alle Sounds gleichzeitig einstellen. Dies wird im folgenden Codebeispiel gezeigt:

SoundMixer.soundTransform = new SoundTransform(1, -1);

Sie können auch ein SoundTransform-Objekt verwenden, um Lautstärke und Richtungseinstellung für ein Microphone-Objekt (siehe Erfassen von Soundeingaben ) und für Sprite- und SimpleButton-Objekte festzulegen.

Mit dem folgenden Beispielcode wird die Richtungseinstellung des Sounds während der Wiedergabe vom linken zum rechten Kanal und zurück gewechselt.

import flash.events.Event; 
import flash.media.Sound; 
import flash.media.SoundChannel; 
import flash.media.SoundMixer; 
import flash.net.URLRequest; 
 
var snd:Sound = new Sound();  
var req:URLRequest = new URLRequest("bigSound.mp3"); 
snd.load(req); 
 
var panCounter:Number = 0; 
 
var trans:SoundTransform; 
trans = new SoundTransform(1, 0); 
var channel:SoundChannel = snd.play(0, 1, trans); 
channel.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete); 
 
addEventListener(Event.ENTER_FRAME, onEnterFrame); 
 
function onEnterFrame(event:Event):void 
{ 
    trans.pan = Math.sin(panCounter); 
    channel.soundTransform = trans; // or SoundMixer.soundTransform = trans; 
    panCounter += 0.05; 
} 
 
function onPlaybackComplete(event:Event):void 
{ 
    removeEventListener(Event.ENTER_FRAME, onEnterFrame); 
}

Der Code beginnt mit dem Laden einer Sounddatei und erstellt dann ein neues SoundTransform-Objekt mit der Lautstärkeeinstellung 1 (volle Lautstärke) und der Richtungseinstellung 0 (gleichmäßige Aufteilung zwischen dem linken und rechten Kanal). Dann ruft der Code die snd.play() -Methode auf und übergibt das SoundTransform-Objekt als Parameter.

Während der Soundwiedergabe wird die onEnterFrame() -Methode wiederholt ausgeführt. Die onEnterFrame() -Methode verwendet die Math.sin() -Funktion zum Generieren eines Wertes zwischen -1 und 1. Dieser Bereich entspricht den gültigen Werten der SoundTransform.pan -Eigenschaft. Die pan -Eigenschaft des SoundTransform-Objekts wird auf den neuen Wert eingestellt, dann wird die soundTransform -Eigenschaft des Kanals so eingestellt, dass sie das geänderte SoundTransform-Objekt verwendet.

Um dieses Beispiel auszuführen, ersetzen Sie den Dateinamen „bigSound.mp3“ durch den Namen einer lokalen MP3-Datei. Dann führen Sie das Beispiel aus: Sie sollten hören, wie der Lautstärke des linken Kanals ansteigt, während die Lautstärke des rechten Kanals abnimmt, und umgekehrt.

In diesem Beispiel kann der gleiche Effekt durch Einstellen der soundTransform -Eigenschaft der SoundMixer-Klasse erreicht werden. Dies würde sich jedoch auf die Richtungseinstellung aller aktuell wiedergegebenen Sounds auswirken, und nicht nur auf den Sound, der von diesem SoundChannel-Objekt wiedergegeben wird.