Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
这是音效系列编程之三:FadeOut和FadeIn音效

二者都分别控制音乐的淡出和淡入

解释下淡出效果的含义:就在是音乐播放即将结束之前通过一定的手法控制音乐响度-直至结束。

很显然,使用线性关系基本可以达到目的
假定数据关系为y = kx + b;
另外需要控制淡出的坡度,或者直接说需要知道从结束之前多少个数据开始需要使用FadeOut音效。所以我们需要一个参数len。
假定我们使用下列的一句话算法来说明问题:
for(int i = 0; i != len ;i++)
    bufer[i]
*= (a-i)*b;
其中a,b为待定参数
因为有一个前提:当i = len-1的时候buffer[len-1] = 0;
所以有a=len-1
另外当fadeout发挥作用之前buffer数据并未变化,故有
b=(len-1)
故基本的Fadeout核心算法就是一句:
y=y*(1-t/k)
简单吧。
理所当然
基本的FadeIn核心算法就是
y*=(t/k-1)

虽然在具体场合,算法有所变形,但是基本的原理就是这个样子

PS:基本的函数关系虽然简单,但是比较实用

以后有空还会讲Echo,Reverb,Treble Booster,Compressor,High Filter等音效原理
。只是研究音效的同志们不多。没的讨论
 

posted on 2011-05-10 23:14 ccsdu2009 阅读(2812) 评论(1)  编辑 收藏 引用 所属分类: Game引擎音频视频
Comments
  • # re: 音效编程(3)-FadeOut和FadeIn音效
    ccsdu2009
    Posted @ 2011-05-10 23:16
    最近博客都是随心所写 感觉很乱  回复  更多评论   

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理