Ett individuellt SoundChannel-objekt styr både vänster och höger stereokanal för ett ljud. Om ett MP3-ljud är mono, innehåller de vänstra och högra stereokanalerna för SoundChannel-objektet identiska ljudvågor.
Du kan ta reda på amplituden i varje stereokanal för ljudet som spelas upp med
leftPeak
- och
rightPeak
-egenskaperna i SoundChannel-objektet. De här egenskaperna visar maximal amplitud för själva ljudvågen. De representerar inte den faktiska uppspelningsvolymen. Den faktiska uppspelningsvolymen är en funktion för amplituden för ljudvågen och volymvärdena som angetts i SoundChannel-objektet och klassen SoundMixer.
Du kan använda egenskapen pan för ett SoundChannel-objekt för att specificera olika volymnivåer för var och en av de vänstra och högra kanalerna under uppspelningen. Pan-egenskapen kan ha ett värde från -1 till 1, där -1 betyder att den vänstra kanalen spelar på högsta volym medan den högra kanalen är tyst och 1 betyder att den högra kanalen spelar på högsta volym medan den vänstra kanalen är tyst. Numeriska värden mellan -1 och 1 anger proportionella värden för de vänstra och högra kanalvärdena och värdet 0 betyder att båda kanalerna spelar på en balanserad, medelvolymnivå.
I följande kodexempel skapas ett SoundTransform-objekt med ett volymvärde på 0,6 och ett panoreringsvärde på -1 (högsta volym på vänstra kanalen och ingen volym på den högra kanalen). SoundTransform-objektet överförs som en parameter till
play()
-metoden vilken använder SoundTransform-objektet på det nya SoundChannel-objektet som skapas för att styra uppspelningen.
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);
Du kan ändra volym och panorering medan ett ljud spelas upp genom att ange
pan
- eller
volume
-egenskaperna för ett SoundTransform-objekt och sedan använda objektet som
soundTransform
-egenskap för ett SoundChannel-objekt.
Du kan också ange globala volym- och panoreringsvärden för alla ljud på en gång med
soundTransform
-egenskapen för klassen SoundMixer enligt följande exempel:
SoundMixer.soundTransform = new SoundTransform(1, -1);
Du kan också använda ett SoundTransform-objekt för att ange volym- och panoreringsvärden för ett Microphone-objekt (se
Hämta ljudindata
) och för Sprite-objekt och SimpleButton-objekt.
I följande exempel växlar panoreringen av ljudet från den vänstra kanalen till den högra och tillbaka igen medan ljudet spelas upp.
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);
}
Koden börjar med att läsa in en ljudfil och sedan skapa ett nytt SoundTransform-objekt med volymen inställd på 1 (full volym) och panoreringen på 0 (jämnt balanserat mellan vänster och höger). Sedan anropas metoden
snd.play()
och SoundTransform-objektet skickas som en parameter.
När ljudet spelas upp körs
onEnterFrame()
-metoden upprepade gånger.
onEnterFrame()
-metoden använder
Math.sin()
-funktionen för generering av ett värde mellan -1 och 1, ett intervall som motsvarar de acceptabla värdena för
SoundTransform.pan
-egenskapen. Det nya värdet anges för
pan
-egenskaper i SoundTransform-objektet och kanalens
soundTransform
-egenskap ställs in att använda det ändrade SoundTransform-objektet.
Om du vill köra det här exemplet byter du ut filnamnet bigSound.mp3 mot en lokal MP3-fil. Sedan kör du exemplet. Nu hör du hur den vänstra kanalvolymen höjs medan den högra kanalvolymen sänks och omvänt.
I det här exemplet kan samma effekt uppnås genom att ange
soundTransform
-egenskapen för klassen SoundMixer. Men det skulle påverka panoreringen av alla ljud som spelas upp, inte endast ljudet som spelas upp av det här SoundChannel-objektet.