Ses düzeyini denetleme ve yatay kaydırma

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

Tek bir SoundChannel nesnesi bir sesin hem sol hem de sağ stereo kanallarını denetler. mp3 sesi tek taraftan gelen bir ses ise, SoundChannel nesnesinin sol ve sağ stereo kanalları aynı dalga formlarını içerir.

SoundChannel nesnesinin leftPeak ve rightPeak özelliklerini kullanarak, çalınan sesin her stereo kanalının genliğini öğrenebilirsiniz. Bu özellikler, ses dalga formunun zirve genliğini gösterir. Geçerli oynatma ses düzeyini temsil etmezler. Gerçek oynatma ses düzeyi, ses dalgası genliğinin ve SoundChannel nesnesinde ve SoundMixer sınıfında ayarlanan ses düzeyi değerlerinin bir işlevidir.

SoundChannel nesnesinin yatay kaydırma özelliği, çalma sırasında sol ve sağ kanalların her biri için farklı bir ses düzeyi belirtmek üzere kullanılabilir. Yatay kaydırma özelliği, -1 ile 1 arasında bir değere sahip olabilir, burada -1, sol kanalın en yüksek ses düzeyinde çalma işlemi yaparken sağ kanalın sesinin kapalı olduğunu, 1 de sağ kanalın en yüksek ses düzeyinde çalma işlemi yaparken sol kanalın sesinin kapalı olduğunu belirtir. -1 ile 1 arasındaki sayısal değerler, sol ve sağ kanal değerleri için orantısal değerler ayarlar ve 0 değeri de her iki kanalın dengeli, orta ses düzeyinde çalma işlemi yaptığını belirtir.

Aşağıdaki kod örneği, 0,6 ses düzeyi değerine ve -1 yatay kaydırma değerine sahip bir SoundTransform nesnesi oluşturur (sol kanalda en yüksek ses düzeyi ve sağ kanal sessiz). Bu, SoundTransform nesnesini parametre olarak play() yöntemine iletir ve böylece çalmayı denetlemek için oluşturulan yeni SoundChannel nesnesine bu SoundTransform nesnesi uygulanır.

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);

Bir SoundTransform nesnesinin pan veya volume özelliklerini ayarlayıp daha sonra bu nesneyi SoundChannel nesnesinin soundTransform özelliği olarak uygulayarak, çalma işlemi sırasında sesin ses düzeyini ve yatay kaydırmasını değiştirebilirsiniz.

Ayrıca aşağıdaki örnekte gösterildiği gibi, SoundMixer sınıfının soundTransform özelliğini kullanarak tek seferde tüm seslerin genel ses düzeyini ve yatay kaydırma değerlerini de ayarlayabilirsiniz:

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

Ayrıca Microphone nesnesi (bkz. Ses girdisini yakalama ), Sprite nesneleri ve SimpleButton nesneleri için ses düzeyi ve yatay kaydırma değerlerini ayarlamak üzere bir SoundTransform nesnesini de kullanabilirsiniz.

Aşağıdaki örnek, ses çalarken sesin yatay kaydırmasını sol kanaldan sağ kanala geçirir ve sonra eski haline getirir.

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); 
}

Bir ses dosyası yüklenip daha sonra ses düzeyi 1 (tam ses) ve yatay kaydırma 0 (sol ve sağ arasında eşit denge) değerine ayarlanmış şekilde yeni bir SoundTransform nesnesinin oluşturulmasıyla bu kod başlatılır. Daha sonra snd.play() yöntemini çağırarak SoundTransform nesnesini parametre olarak iletir.

Ses çalınırken, onEnterFrame() yöntemi art arda çalıştırılır. onEnterFrame() yöntemi, SoundTransform.pan özelliğinin kabul edilebilir değerlerine karşılık gelen bir aralık olan -1 ile 1 arasında bir değer oluşturmak için Math.sin() işlevini kullanır. SoundTransform nesnesinin pan özelliği yeni değere ayarlanır ve sonra değiştirilen SoundTransform nesnesi kullanılmak üzere kanalın soundTransform özelliği ayarlanır.

Bu örneği çalıştırmak için, bigSound.mp3 dosya adını yerel bir mp3 dosyasının adıyla değiştirin. Daha sonra örneği çalıştırın. Sağ kanalın ses düzeyi daha yumuşak duruma gelirken sol kanalın ses düzeyinin daha çok yükseldiğini, veya tam tersini fark etmeniz gerekir.

Bu örnekte, SoundMixer sınıfının soundTransform özelliği ayarlanarak aynı etki elde edilebilir. Ancak bu yalnızca bu SoundChannel nesnesi tarafından oynatılan tek bir sesi değil, geçerli olarak çalınan tüm seslerin yatay kaydırmasını etkiler.