Controle do volume e do panorama do somFlash Player 9 e posterior, Adobe AIR 1.0 e posterior Um objeto SoundChannel individual controla os canais estéreos esquerdo e direito para um som. Se um som mp3 for um som monofônico, os canais estéreos esquerdo e direito do objeto SoundChannel conterão formas de onda idênticas. É possível descobrir a amplitude de cada canal estéreo do som que está sendo reproduzido usando as propriedades leftPeak e rightPeak do objeto SoundChannel. Essas propriedades mostram a amplitude de pico da própria forma de onda do som. Elas não representam o volume de reprodução real. O volume de reprodução real é uma função da amplitude da onda do som e dos valores de volume definidos no objeto SoundChannel e na classe SoundMixer. A propriedade pan de um objeto SoundChannel pode ser usada para especificar um nível diferente de volume para cada um dos canais esquerdo e direito durante a reprodução. A propriedade pan pode ter um valor variando de -1 a 1, em que -1 significa que o canal esquerdo reproduz no volume máximo enquanto o canal direito está silencioso e 1 significa que o canal direito reproduz no volume máximo enquanto o canal esquerdo está silencioso. Valores numéricos entre -1 e 1 definem valores proporcionais para os valores dos canais esquerdo e direito e um valor igual a 0 significa que os dois canais são reproduzidos em um nível equilibrado de nível de volume médio. O código de exemplo a seguir cria um objeto SoundTransform com um valor de volume de 0,6 e um valor de pan de -1 (volume máximo no canal esquerdo e nenhum volume no canal direito). Ele passa o objeto SoundTransform como um parâmetro para o método play() que aplica esse objeto SoundTransform ao novo objeto SoundChannel que é criado para controlar a reprodução. 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); É possível alterar o volume e a panorâmica enquanto um som está sendo reproduzido definindo as propriedades pan ou volume de um objeto SoundTransform e aplicando esse objeto como a propriedade soundTransform de um objeto SoundChannel. Também é possível definir os valores globais de volume e de pan para todos os sons de uma vez usando a propriedade soundTransform da classe SoundMixer, conforme mostrado no exemplo a seguir: SoundMixer.soundTransform = new SoundTransform(1, -1); Também é possível usar um objeto SoundTransform para definir os valores de volume e panorâmica para um objeto Microphone (consulte Captura de entrada do som) e para objetos Sprite e SimpleButton. O exemplo a seguir alterna a panorâmica do som do canal esquerdo para o canal direito e vice-versa enquanto o som é reproduzido. 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); } Esse código é iniciado carregando um arquivo de som e criando um novo objeto SoundTransform com o volume definido como 1 (volume total) e panorâmica definida como 0 (equilibrada igualmente entre a esquerda e a direita). Em seguida, ele chama o método snd.play(), passando o objeto SoundTransform como um parâmetro. Enquanto o som é reproduzido, o método onEnterFrame() é executado repetidamente. O método onEnterFrame() usa a função Math.sin() para gerar um valor entre -1 e 1, uma faixa que corresponde aos valores aceitáveis da propriedade SoundTransform.pan. A propriedade pan do objeto SoundTransform é definida como o novo valor e, em seguida, a propriedade soundTransform do canal é definida para usar o objeto SoundTransform alterado. Para executar esse exemplo, substitua o nome do arquivo bigSound.mp3 pelo nome de um arquivo mp3 local. Em seguida, execute o exemplo. Você deve ouvir o volume do canal esquerdo se tornando mais alto enquanto o volume do canal direito se torna mais suave e vice-versa. Nesse exemplo, o mesmo efeito pode ser obtido definindo a propriedade soundTransform da classe SoundMixer. No entanto isso afetará a panorâmica de todos os sons que estão sendo reproduzidos no momento, não apenas o único som que está sendo reproduzido pelo objeto SoundChannel. |
![]() |