Audacity: 自由而免费的声音编辑器和录音软件

广告政策

使用Nyquist编程

  1. Nyquist及Lisp编程简介
  2. 使用Nyquist编程
  3. 创建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个参数,通常用于塑造合成音符: 上升时间,衰减时间,释放时间,上升水平,衰减水平,维持水平,总体持续时间。参见下图:

Nyquist包络图。

要给一个声音应用包络,用 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))合并两个声音,让它们可同时播放。

下一步:创建Nyquist插件