• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 711
  • Last Modified:

Left, Right sound Channels in Flash

I need an ActionScript that would  trigger sounds from different channels, for example, I want sound1 to be triggered from the Left Channel and sound2 to be triggered from the Right channel.
0
mjmusa
Asked:
mjmusa
  • 3
1 Solution
 
RobOwner (Aidellio)Commented:
using the SoundTransform class you can control the channels of the sound.  you will need to setup a SoundTransform instance for every sound you want to play and mix
0
 
RobOwner (Aidellio)Commented:
Here is an example from the Adobe CS3 Reference:
package {
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.*;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.media.SoundTransform;
    import flash.net.URLRequest;
    import flash.utils.Timer;
 
    public class SoundTransformExample extends Sprite {
        private var url:String = "MySound.mp3";
        private var soundFactory:Sound;
        private var channel:SoundChannel;
        private var positionTimer:Timer;
 
        public function SoundTransformExample() {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
 
            var request:URLRequest = new URLRequest(url);
            soundFactory = new Sound();
            soundFactory.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            soundFactory.load(request);
            channel = soundFactory.play();
            stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
        }
 
        private function ioErrorHandler(event:Event):void {
            trace("ioErrorHandler: " + event);
        }
 
        private function setPan(pan:Number):void {
            trace("setPan: " + pan.toFixed(2));
            var transform:SoundTransform = channel.soundTransform;
            transform.pan = pan;
            channel.soundTransform = transform;
        }
 
        private function setVolume(volume:Number):void {
            trace("setVolume: " + volume.toFixed(2));
            var transform:SoundTransform = channel.soundTransform;
            transform.volume = volume;
            channel.soundTransform = transform;
        }
 
        private function mouseMoveHandler(event:MouseEvent):void {
            var halfStage:uint = Math.floor(stage.stageWidth / 2);
            var xPos:uint = event.stageX;
            var yPos:uint = event.stageY;
            var value:Number;
            var pan:Number;
 
            if (xPos > halfStage) {
                value = xPos / halfStage;
                pan = value - 1;
            } else if (xPos < halfStage) {
                value = (xPos - halfStage) / halfStage;
                pan = value;
            } else {
                pan = 0;
            }
            if(pan > 1) pan = 0;
 
            var volume:Number = 1 - (yPos / stage.stageHeight);
 
            setVolume(volume);
            setPan(pan);
            
        }
    }
}

Open in new window

0
 
SamuelRostolCommented:
I've taken the liberty to create a quick-and-dirty example just to show you JUST what's needed to pan a sound. Hopefully you'll get the idea. I've used mostly the same variable-names as tagit to cause as little comfusion as possible.

[code]

I've attached both the code, and an example. Just remove the .txt-extension from both files to be able to run them as usual :)

Good luck!

Kindly,
Samuel
// Have the file "sound.mp3" in same folder as swf
 
// Load the sound
var url:String = "sound.mp3";
var soundFactory:Sound = new Sound();
var request:URLRequest = new URLRequest(url);
soundFactory.load(request);
 
// Play the sound
var channel:SoundChannel = soundFactory.play();
 
// Pan the sound
var sTransform:SoundTransform = channel.soundTransform;
sTransform.pan = -1; // 1 = left speaker, -1 = right speaker, 0 = both
channel.soundTransform = sTransform;

Open in new window

SoundChannel.zip
0
 
RobOwner (Aidellio)Commented:
Great example Samuel :)
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now