ADSR envelope
在lsdj中,乐器的音色往往要靠自己调节envelope得到。envelope在instrument界面中是以两位16进制的数字表示。
在调节envelope之前,需要具体了解一下什么是envelope。在wiki百科上是这样介绍的(en.wikipedia.org/wiki/ADSR_envelope):
可见ADSR envelope主要应用于合成器,取样器和各种电子乐器,用于改变乐器声音的响度。它由四部分组成:attack,decay,sustain,release.
![]()
- Attack:响度达到最大值的时间。
- Decay:响度从顶峰到达Sustain的时间。
- Sustain:响度不变的时间。
- Release:响度从不变到最后结束的时间
维基百科的定义非常缺心眼,车轱辘话说了三遍,上面是我自己理解的。通过改变这四个属性就可以得到不同的声音,在lsdj里第一位数字表示声音大小,第二位数字表示声音长短,那么极有可能是这样的情况:
- 第一位0-F代表Attack。因为响度变化速度是一定的,到达峰值的时间越长,那么峰值也就意味着越高。0音量最低,F音量最高。
- 第二位0和8两个值不会改变音量,那么它们代表Sustain。
- 第二位0-7和9-F将Release分为两个区域,第一区域的音量越来越低,第二区域的音量越来越高。数字越小,变化越快。
这里看似有些问题,attack部分变化速度是一定的,而release却变化无常。首先从图上看,横轴是时间(t),纵轴是响度(a),那么这个分段函数的斜率是响度变化率,单位时间内的响度变化率,v = △a/△t。在attack阶段,lsdj对于不同的数字发生时间却是相同的,那么在lsdj内,第一位数字显然代表的就是v,也就是响度的变化率,然后对于固定时间求定积分,根据牛顿莱布尼兹公式:t∫0bxdx,其中t为lsdj内发生时间,这个时间可能会受到tempo的印象,而b为lsdj里第一位的数字决定。但是到了release阶段,响度释放的过程是又快慢之分的,整个过程不再发生再固定的时间内,这个时候输入的参数作为时间t,而响度a为固定值,从而对t求微分得到v。声音越来越小是在relase,那么越来越大是怎么回事?
![]()
Inverted ADSR envelope。存在另外一种模型,它和正常的adsr相反,它的release过程是个响度爬升的过程,但是,lsdj里前三个过程还是标准的正向响应,难道只有最后一个过程是反向的?对电子乐方面知之甚微,希望以后可以了解这个模型的真相。
至于Decay哪里去了,也许是跟其他三个合在了一起,也许是lsdj里没有体现,这方面的资料很少,以上都是我的想象,希望业内人士予以斧正,在下不胜感激。
No comments yet.