使用Nyquist编程

NyquistLisp的不同在于它被设计用于处理音频,可以用来合成、分析和操作声音。使用Nyquist内置的函数可以非常简单地实现很复杂的音频效果。

Nyquist中处理声音就像Java里处理字符串一样,非常简单。内部提供了很多函数帮助你非常高效地对声音进行拉伸、变形、组合。

可以通过EffectNyquist Prompt菜单在Audacity中输入Nyquist表达式。任何时候,你选择的音频可以通过变量s访问,最后Audacity中选择的音频信号会被你输入的Nyquist表达式计算出的结果替换掉。在后面将会介绍如何用Nyquist创造一个Audacity效果插件。

下面的函数都是用来创建新的声音的。可以在AudacityGenerate菜单下创建一些效果,你也可以组合这些合成声音到选择的声音当中,进而产生更加有趣的效果。

(noise)

生成白噪声

(const value [duration])

生成一个常量信号

(sine pitch [duration])

根据音高和时长生成一个正弦信号,音高是MIDI音符编号。

(hzosc hz)

根据频率(Hz)生成一个正弦信号。

(osc-saw hz)

根据频率(Hz)生成锯齿信号。

(osc-tri hz)

根据频率(Hz)生成三角信号。

(osc-pulse hz bias)

根据频率(Hz)生成脉冲信号。

(pluck pitch)

???

Nyquist支持包络(envelop)。将一个包络作用到一个声音上,可以控制声音的整体振幅。构造一个包络最简单的方法是使用env函数,它带有7个参数。7个参数分别用来合成音符:上升时间(Attack Time)、衰减时间(Decay Time)、开释时间(Release Time)、attack leveldecay levelsustain level、总时间。通过下图可以理解7个参数的含义。

使用Nyquist编程

将包络应用到音频信号上,使用函数mult即可。下面是一个使用实例:

(mult s (env 0.1 0.1 0.2 1.0 0.5 0.3 1.0))

最通用的包络应该是分段线性函数(piece-wise linear function),它可以用函数pwl来构造。Pwl用二元的参数对<时间,值>来构造一个分段线性函数。需要注意的是pwl有一个隐含的参数对(0,0),以及一个隐含的0作为最后一个参数。因此,pwl的参数个数一定是一个奇数。

; 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)

(comb sound hz decay)

梳状滤波器

(alpass sound decay hz)

全通滤波器,创建一个延迟效应不共振的梳状滤波器。

(notch2 sound hz)

Nyquist可以对音频信号进行变换。变换函数并不直接修改声音,而是修改Nyquist环境。为了使变换能够生效,必须使用cue函数。下面是一些常用变换函数:

(stretch factor (cue sound))

Changes the length of the sound being cued by the given factor.

(scale factor (cue sound))

Scales the amplitude of the sound being cued by the given factor.

(loud dB (cue sound))

Increases or decreases the volume of the sound being cued by the given number of decibels.

(at t (cue sound))

Starts the given sound at a particular time in seconds. This can't be used to add silence at the beginning or end, but it can be used when combining two or more sounds.

(seq (cue s1) (cue s2))

Creates a sequence of sound s1 followed by sound s2.

(sim (cue s1) (cue s2))

Combines two sounds so that they are played simultaneously.

你可能感兴趣的:(使用Nyquist编程)