Computer Music Learning 1

本篇介绍的是计算机音乐的一些基本概念。

Unit Generator | Harmonics | Wave Table

CMU的这门课程15322/15622Introduction to Computer Music
信号处理基础
音乐基础
Nyquist基础
音乐分析
计算机音乐的制作技巧

结构: nyquist底层架构及常用方法

Abstract

• What’s a Unit Generator?
• What are some unit generators in Nyquist?
• Unit Generator Implementation
• Functional Programming
• Wavetable Synthesis
• Scores in Nyquist
• Score Manipulation

Tree:

Concepts

Unit Generator

音响单元是音响系统的基础,50年代由Max Mathews提出,把组成音响系统的各个基础模块称为“Unit Generator”。
unit generator

音响单元包括Oscillator、Multiplier、Envelope三类。
Oscillator决定频率和振幅(音调和响度)。
Envelope决定振幅变化
Multiplier将Oscillator和Envelope结合起来并输出。
oscillate的字典翻译是:vary in magnitude or position in a regular manner around a central point。声音也是波,当然就会有频率和振幅。
generate sound

左边是Oscillator,右边是Envelope,下面的x是Multiplier。
上图中的ADSR代表着Attack Decay Sustain Release,对应的阶段就是在振幅的维度冲上去、回下来、保持住、结束,如下图所示。
ADSR

这三者的关系用简单的SAL例子来讲就是:
osc(c4) * pwl(0.03, 1, 0.8, 1, 1)
调用osc()这个oscillater方法产生一个音阶为c4的音,并且让它按照pwl()这个envelope方法指定的(时间,振幅)进行变化。
在大部分软件中,Unit Generators是以对象的形式存在的,比如Max。而在Nyquist中用户不能接触到这些对象,只能通过调用方法得到这些UG产生的SOUNDS对象,UG对象则被包含在SOUNDS对象中(可以说是Nyquist的一个缺点)。
Nyquist在执行“exec”、“play”等命令的时候才会进行计算,这样做可以节省空间,所谓的“loose validation”。因为全局变量会被保存在Memory中,在写Nyquist程序的时候尽量少用Set变量的方式来设置产生Sound对象的声音变量(在谱曲中常常会有重复的段落需要使用),而是使用define function的方式。

Harmonics

“The individual frequency components of the spectrum can be referred to as harmonics or partials. Harmonic frequencies are simple integer multiples of the fundamental frequency.” 和音就是频率与基础音频率呈整数倍数关系的音。

Wavetable

一个用来使声音更为和谐的表格,在相应的位置插入harmonics来动态改变音色。
waveform

这张*table*的意思就是插入频率为1的四个音,振幅分别是0.5,0.25,0.125,0.062。这样子原始的音就不会是一个单纯的音符了。
build-harmonic(n periods of sinusoid, table-size)
table-size指取样时的table大小。这个之后会详细讲。

综合以上知识,最基础的基于波表的声音合成便是:建一张wavetable,在使用Oscillator生成声音的时候加入这张表(比如osc(c4, dur, table),与一个Envelope相乘。优点是非常直接,缺点是使用的harmonics是固定的,不能按照音阶和时间进行改变,不好听。

Convolution

时域里相乘等于频域里的convolution。
一个信号被一个正弦波调制,波谱上就会得到一左一右两个边频。