SamplesCallbackEventで音が途切れないように鳴らすメモ

こないだAstroのSamplesCallbackEventで音を鳴らしてみたところ、どうも音切れが発生しているようなので途切れないためのメモ

for ( var c:int=0; c<512; c++ ) {  
        
    amp = (event.position + c) * freq
    
    var sample:Number = Math.sin( amp )  * 0.5
       
    sound.samplesCallbackData.writeFloat(sample);      
    sound.samplesCallbackData.writeFloat(sample);    
    
}


for ( var c:int=1; c <= 512; c++ ) {  
    
    //前回のサンプル末尾に加算
    amp = (c * freq) + ampEnd
    
    var sample:Number = Math.sin(amp) * 0.5
       
    this.samplesCallbackData.writeFloat(sample);      
    this.samplesCallbackData.writeFloat(sample);    
    
}
//サンプルの末尾を保持
ampEnd = amp

修正箇所はampの計算方法の違い。旧版は、byteArrayのポジションから計算してたけど、それだと周波数が変わったときにジャンプしちゃうので新版では前回の数値を保持し、そこに加算する事にした。

Trackback

http://memo.kappa-lab.com/mt-tb.cgi/225

Leave your comment :

(いままで、ここでコメントしたことがないときは、コメントを表示する前に承認が必要になることがあります。そのときはしばらくお待ちください。)




RSS + Contuct

  • rss
  • email

Credit

Copyright (C) 2007 kappa-lab.com.
All Rights Reserved.