使用Nyquist编程
- 关于Nyquist及List编程的介绍
- 使用Nyquist编程
- 创建Nyquist插件
Nyquist和Lisp比的区别是专门用于处理声音,内置大量原语primitives和函数用于合成,分析,处理声音。放在Audacity中可方便的用Nyquist自带函数实现很多复杂特效
在Nyquist中,一个变量就可代表一个声音。内置的大量函数课很有效的拉伸,扭曲,合并声音。甚至可以将一个声音“分解”为多个片段,但是这超出了本教程讨论范围。
要在Audacity中测试Nyquist表达式,可以使用特效菜单里的"Nyquist 提示符" 。选择的任意音频都会放在变量 s 里,选中的部分会被 Nyquist 表达式的结果覆盖。在第3部分,我们将学习如何用 Nyquist 创建特效插件。
合成
下列所有特效用于创建新声音。可用它们创建"生成"特效插件,或可以将它们与选择的音频结合产生很好玩的效果。
| (noise) | 生成白噪声 |
| (const value [duration]) | 生成一个常数(静音)信号 |
| (sine pitch [duration]) | 在指定的音高和时间段内产生一个正弦波 音高是一个MIDI音符号码,中央C是60号(详细请自行搜索MIDI介绍) |
| (hzosc hz) | 在指定Hz频率处产生一个正弦波。 |
| (osc-saw hz) | 在指定Hz频率处生成一个锯齿波。 |
| (osc-tri hz) | 在指定Hz频率处生成一个三角波。 |
| (osc-pulse hz bias) | |
| (pluck pitch) |
包络线
Nyquist支持包络线。将包络线用于声音,可调整整体声音的振幅。创建包络线最简单的办法是用env 函数, 此函数要用7个参数,通常用于塑造合成音符: 上升时间,衰减时间,释放时间,上升水平,衰减水平,维持水平,总体持续时间。参见下图:
要给一个声音应用包络,用 mult 函数即可。假如s 是一个声音,则可用下列命令给这个声音应用包络线:
(mult s (env 0.1 0.1 0.2 1.0 0.5 0.3 1.0))
最通用的包络线是一个分段线性函数,可用pwl函数构造。 pwl 函数使用配对(时间,值)的参数列表。有一个隐藏的初始(时间,值)对 (0, 0)和一个隐藏的结束值 0。参数的个数必须为奇数,因为最后的结束时间不是隐藏的(就是说,pwl的参数都是一对一对出现的,一个时间再加一个值,结尾处的值是固定的0,自动隐藏了,但是结束时间必须由用户确定并加上,这样的结果就是参数个数为奇数)。 例如:
; symmetric rise to 0.7 (at time 1) and fall back to 0 (at time 2): (pwl 1.0 0.7 2.0)
合并声音
除了用 mult 函数将两声音合并, 还可用 add 函数添加两个声音 (或包络线) 。
过滤器
Nyquist内建了一些通用过滤器。下面是部分更加常用的过滤器:
| (lp sound cutoff) | |
| (hp sound cutoff) | 高通滤波器(一阶巴特沃斯(Butterworth)滤波器)。截止的可能是一个浮点或一个信号 (对于时变型滤波),以赫兹为单位。 |
| (comb sound hz decay) | 对声音使用梳状过滤器,会强调 1 Hz整数倍处(在频率是1 Hz整数倍处共振)。 |
| (alpass sound decay hz) | 全通滤波器,产生时延效果,不会有梳状滤波器的共振。 |
| (notch2 sound hz) |
转换盒合并声音
讲述所有Nyquist处理声音的方式不在本教程的范围内。下面的函数不能直接用来修改声音,而用来修改 Nyquist 环境。要使这些函数生效,必须使用 cue 函数。
| (stretch factor (cue sound)) | 以给定因子(factor)改变声音的长度。 |
| (scale factor (cue sound)) | 以给定因子(factor)改变声音的振幅。 |
| (loud dB (cue sound)) | 以给定因子(factor)增加或减少声音的音量 。 |
| (at t (cue sound)) | 在指定的时刻开始声音(单位为秒)。不能用来在声音开头或结尾添加静音,但可用来合成两个或多个声音。 |
| (seq (cue s1) (cue s2)) | 创建一个声音序列,s1后面跟着s2. |
| (sim (cue s1) (cue s2)) | 合并两个声音,让它们可同时播放。 |

