개별 SoundChannel 객체는 사운드에 대해 왼쪽 및 오른쪽 스테레오 채널을 모두 제어합니다. mp3 사운드가 모노인 경우, SoundChannel 객체의 왼쪽 및 오른쪽 스테레오 채널에 동일한 파형이 포함됩니다.
SoundChannel 객체의
leftPeak
및
rightPeak
속성을 사용하여 재생 중인 사운드에 대한 각 스테레오 채널의 진폭을 알 수 있습니다. 이러한 속성은 사운드 파형 자체의 피크 진폭을 표시하는 것으로, 실제 재생 볼륨을 나타내지는 않습니다. 실제 재생 볼륨은 SoundChannel 객체 및 SoundMixer 클래스에 설정된 볼륨 값 및 사운드 웨이브 진폭의 함수입니다.
SoundChannel 객체의 팬 속성은 재생 중에 왼쪽 및 오른쪽 채널 각각에 다른 볼륨 수준을 지정하는 데 사용될 수 있습니다. 팬 속성은 -1 ~ 1 범위의 값을 가질 수 있습니다. 여기서 -1은 오른쪽 채널 음을 소거한 상태에서 왼쪽 채널을 최고 볼륨으로 재생한다는 의미이며, 1은 왼쪽 채널 음을 소거한 상태에서 오른쪽 채널을 최고 볼륨으로 재생한다는 의미입니다. -1과 1 사이의 숫자 값은 왼쪽과 오른쪽 채널 값에 대한 비례 값을 설정하며, 0은 양쪽 채널이 균형 있는 중간 볼륨 수준으로 재생된다는 의미입니다.
다음 코드 예제는 볼륨 값이 0.6이고 팬 값이 -1(즉, 왼쪽 채널이 최고 볼륨으로 재생되고 오른쪽 채널은 음소거)인 SoundTransform 객체를 만듭니다. 이 코드는 SoundTransform 객체를
play()
메서드에 매개 변수로 전달하여 재생 제어를 위해 만들어진 새로운 SoundChannel 객체에 해당 SoundTransform 객체를 적용합니다.
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);
사운드 재생 도중 SoundTransform 객체의
pan
속성이나
volume
속성을 설정한 다음, 이 객체를 SoundChannel 객체의
soundTransform
속성으로 적용하여 패닝 및 볼륨을 변경할 수 있습니다.
다음 예제에서처럼 SoundMixer 클래스의
soundTransform
속성을 사용하여 한번에 모든 사운드에 대한 전역 볼륨 값과 팬 값을 설정할 수도 있습니다.
SoundMixer.soundTransform = new SoundTransform(1, -1);
또는 SoundTransform 객체를 사용하여 Microphone 객체(
사운드 입력 캡처
참조), Sprite 객체 및 SimpleButton 객체에 대해 볼륨 및 팬 값을 설정할 수도 있습니다.
다음 예제에서는 사운드 재생 중에 사운드의 패닝을 왼쪽 채널에서 오른쪽 채널로 교대하고 또 그 반대로 전환합니다.
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);
}
이 코드는 사운드 파일을 로드한 다음 볼륨이 1(최대 볼륨)로, 팬이 0(좌우 밸런스 동일)으로 설정된 새 SoundTransform 객체를 만듭니다. 그런 다음
snd.play()
메서드를 호출하여 SoundTransform 객체를 매개 변수로 전달합니다.
사운드가 재생되는 동안
onEnterFrame()
메서드가 반복적으로 실행됩니다.
onEnterFrame()
메서드는
Math.sin()
함수를 사용하여 -1과 1 사이의 값을 생성합니다. 이 범위는
SoundTransform.pan
속성으로 사용할 수 있는 값에 해당합니다. SoundTransform 객체의
pan
속성은 새로운 값으로 설정되고 채널의
soundTransform
속성은 변경된 SoundTransform 객체를 사용하도록 설정됩니다.
이 예제를 실행하려면 bigSound.mp3라는 파일 이름을 로컬 mp3 파일 이름으로 대체합니다. 그리고 예제를 실행합니다. 오른쪽 채널 볼륨이 작아지면서 왼쪽 채널 볼륨이 커지고, 왼쪽 채널 볼륨이 작아지면서 오른쪽 채널 볼륨이 커집니다.
이 예제에서 SoundMixer 클래스의
soundTransform
속성을 설정하여 동일한 효과를 거둘 수 있습니다. 하지만 이 경우 이 SoundChannel 객체에 의해 재생되는 단일 사운드뿐 아니라 현재 재생되는 모든 사운드의 패닝에 영향을 미칩니다.