0%

本科毕业设计开题报告

一、选题的背景与意义

得益于计算机技术的飞速发展,数字音频工作站(DAW)和软件乐器的出现使得从无到有制作一首音乐的门槛大大降低。与(主要是非键盘类)原声乐器(Acoustic Instruments)和电声乐器(Electro-acoustic instruments)往往涉及复杂的演奏技法所以需要实录不同,不论是早期模组化合成器(Modular Synthesizer)还是如今作为插件工作在数字音频工作站(DAW)中的合成器,合成器音色的随时间动态变化的部分都可由事先设计好的”程序“自动调节,以形成无穷无尽的可能的复杂音色,所以在所有乐器门类中,合成器是最适合被”编程“而非”演奏“的乐器,尽管现代(非键盘类)原声/电声乐器的软件采样音源也可以使用丰富的技法,但与其仍不如实录的“水土不服”相比,合成器在DAW时代是与计算机血缘关系最近、最适合改造为软件的乐器。软件乐器和数字音频工作站(DAW)的出现催生了数量庞大的音乐制作人群体,他们被称为“卧室制作人”,即音乐制作的硬件门槛已经低到不需要在专业的录音棚中使用专业的硬件设备,只需在卧室中使用一台尚可的PC和耳机即可。

但是,音乐制作所使用的软件,依然是所有计算机软件中最昂贵的类别之一,主流正版DAW和软件合成器单价往往高达数千人民币,而使用盗版软件便意味着法律风险。且据观察,音频工程与音乐制作领域也并不像软件工程领域一样有浓厚的开源氛围,几乎所有作为行业标准而言的的软件乐器、效果器、DAW、甚至用于软件乐器/效果器与DAW连接的插件格式标准(VST)都是闭源的,为商业公司所专有。而兼具可用和开源/免费特性的合成器软件数量相对较少。

本次项目完全使用开源图形化音频编程语言Pure Data实现,开源意味着Pure Data可以完全免费用于商业音乐制作,而图形化意味着不了解代码编程的音乐人也可以参与到Pure Data的使用中来,但介于合成器核心部分的开发还是较为复杂,本次项目采用将采用将相应功能封装成固定模块,对外开放统一接口以隐藏复杂特性的方式,既可以方便更多不了解编程和合成器原理的音乐人使用Pure Data,让更多人享用到这一开源项目,也是抛砖引玉,为开源社区贡献一份力量,让功能更丰富的基于Pure Data的合成器和效果器得以出现,并鼓励更多的音乐人参与到合成器和效果器原理的学习中来。

二、研究的基本内容与拟解决的主要问题

本次设计的总体目标是设计一个可以演奏、可以设计音色、并在一定程度上可用于现代电子舞曲(EDM)制作的软件合成器。除了产生声音的基本功能外,本项目还将集成一些常见效果器,如几类失真(Distortion)效果器和延迟/回声(Delay/Echo)等。

本项目的涉及的主要基础概念如下:

减法合成(Subtractive Synthesis):可以认为是最初阶的合成技术,所谓“减法”即“削减”原始波形的某些“部分”达到为声音“塑形”的目的。减法合成器的最基本的结构为头尾连接的3个部件——振荡器(Oscillator)、滤波器(Filter)、放大器(Amplifier)。Oscillator用于产生声音波形,Filter用于修改声音的频率特性,Amplifier用于改变声音的音量大小。这里体现了“减法”的含义——通过两个部件分别消减声音的频率和幅度特性,达到为声音“塑形”的效果。所以减法合成器的振荡器往往需要产生一个具有丰富谐波的波形[1],滤波器和放大器也需要提供可以输入控制信号的接口。

preview

ADSR包络(ADSR Envelope):时间包络(Time Envelope)是产生不同音色的重要因素之一,而ADSR包络(ADSR Envelope)是将自然界中的声音音量变化存在的规律总结后,得到的时间包络模型。ADSR包络将时间包络设定为四个参数,即启动时间(Attack Time)、衰减时间(Decay Time)、保持电平(Sustain Level)、释放时间(Release Time),它们分别表示开始到峰值所需时间、(若控制信号保持不消失)回落到保持位置所需时间、保持在哪一位置、控制信号消失后回落到0所需时间。

ADSR

本次设计使用设计平台如下:本次设计完全基于开源编程语言Pure Data[2]。尽管是图形化编程,Pure Data也具有与其他代码语言类似的特性。沿袭了模块化合成器的称呼,在Pure Data中编写的程序被称为“Patch”,构成一个“Patch”的基本元素可参考下图Pure Data菜单栏的“Put”菜单。其中,执行数据处理命令的元素被称为对象(Object),其命名语法规定为,带波浪号“~”后缀的对象处理音频信号,而不带波浪号的对象处理控制信号。除对象外,构成Patch的元素还可以是Message box、Number box、Symbol box和Comment。前三者起到输入、存储、输出相应类型数据的作用,而Comment类似于代码语言中的注释语句。

image-20220303011409608

以下为官方提供的帮助文档中部分内置对象的截图。

image-20220303010322997

其中osc~对象的帮助文档如下图。这是一个在本次设计中将会被用到的内置对象,其会根据左侧端点输入的数值信号或音频信号的幅值生成一个指定频率的满幅值正弦波。

image-20220303010344380

Pure Data也提供类似于其他编程语言的函数封装和抽象的功能,下图为笔者利用Pure Data内置的until、moses、select对象还原的等效于C语言中的for语句功能的模块。

image-20220303010427432

本项目的主要功能模块和实现的功能如下:

  1. midi信号处理模块:本模块主要接收midi控制设备输入的midi信号,区分触发信号和释放信号,并将触发型号所对应的midi音高编号传入集成有音高转频率功能的立体声振荡器(Stereo Oscillator)模块中。

  2. 立体声振荡器(Stereo Oscillator):

    本模块是是一个封装模块,可输入以下参数:

    • 开关(Switch):打开/关闭该振荡器

    • 波形类型(Waveform):可选择生成正弦波(Sine Wave)、三角波(Triangle Wave)、锯齿波(Sawtooth Wave)、脉冲波(Pules Wave)四种基本波形。

    • 脉冲宽度(Pules Width):选择不同的脉冲宽度将为脉冲波产生成分不同的高频泛音,音色质感也随之不同。

    • 声像(Pan):调节声音的左右方位。

    • 音量(Volume):调节声音的大小。

    • 幅度调制/环形调制信号(AM/RM Signal):提供幅度调制/环形调制信号的输入端口。

    • 频率调制信号(FM Signal):提供频率调制信号输入端口。

    • ADSR包络(ADSR Envelope)参数。

    • Unison和Detune:分别表示去谐(Detuning)功能的Unison和Detune值,去谐(Detuning)是一种合成器音色制作常用技法,原理是将若干个相差微小频率的声音叠加在一起,产生一种“饱满”的音色,且当把频率不同的声音各安排在不同的声道上时,声音会听起来非常“宽阔”,是在音色设计和混音中让声音“变宽”的好办法。这也是在众多现代电子舞曲风格中常见的电子音色SuperSaw Lead的合成方式。Unison表示这些频率有略微相差的音的总数,Detune表示所有声音中最高频率与最低频率的间距。

  3. 复音(Polyphony)功能。利用Pure Data的clone对象,复用Stereo Oscillator模块并动态分配[3] ,使得当midi键盘上多个键按下后,可以驱动多个Stereo Oscillator模块同时发出声音。

  4. ADSR 包络信号发生器,由输入的启动时间(Attack Time)、衰减时间(Decay Time)、保持电平(Sustain Level)、释放时间(Release Time)四个参数产生包络信号以用于调制。

  5. 滤波器(Filter):主要考虑实现低通(Low Pass)滤波器,后期可能会考虑加入高通(High Pass)、带通(Band Pass)等其他类型。提供滤波器谐振(Filter Resonance)功能并允许谐振值参数的输入。提供ADSR、LFO调制信号的输入端口。

  6. 调制信号振荡器:用于产生调制信号的振荡器,以用于幅度调制/环形调制/频率调制,当所设置的振荡型号频率足够低时,可作为低频振荡器(LFO)使用。

  7. 噪音振荡器(Noise Oscillator):用于产生白噪音。

  8. 超低音振荡器(Sub Oscillator):用于为所生成音色添加一层Sub Bass。

  9. 失真(Distortion)效果器:

    • 削顶(Clipping)/过载(Overdrive):削平超过特定幅值的波形。
    • 降采样(Downsample/Bitcrash):降低音频的采样频率和位深度。
    • 波形折叠(Wavefolding):将超过特定幅值的波形向下折叠。
    • 波形塑形(Waveshaping):通过绘制指定的曲线产生非线性失真。
  10. 延迟/回声(Delay/Echo)效果器

  11. 以下功能模块视项目后期进度而决定是否实现:

    • 琶音器(Arpeggiator)
    • 声码器(Vocoder)
    • 镶边效果器(Flanger)
    • 混响(Reverb)和压缩器(Compressor)

三、研究的方法与技术路线

本次研究采取的主要研究方法如下:

  1. 调查法:调查和了解软件合成器市场现状,了解现存软件合成器主要功能、用户群体、用户需求。
  2. 实证研究法:观察和学习主要市售软件合成器,如Xfer Serum,并尝试有目地操作,通过所展现声音的不同点,归纳和推断出其内在设计逻辑。
  3. 文献法:通过阅读有关合成器原理和声音设计的文献书目,了解音频合成和声音设计,以了解合成器设计逻辑。同时查阅Pure Data的官方文档[4],一边开发一边熟悉Pure Data。

本次研究的技术路线:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
graph TB
op1[观察和学习主要市售软件合成器的界面和操作] --> op2[了解合成器主要结构和操作逻辑] --> op8[确定项目大致结构和功能]
op3[阅读有关声音合成原理的的文献书籍] --> op4[了解声音合成的技术细节] --> op8
op6[查阅Pure Data官方文档] --> op7[熟悉Pure Data] --> op8
op8 --> 完成midi信号处理模块 --> op9[实现midi信号触发相应频率的正弦波生成] --> op11[实现带ADSR_Amplitude的最基本的单音单声道振荡器]
op8 --> op10[实现ADSR_Envelope发生模块] --> op11
op11 --> op12[增加开关及音量调节功能] --> op17[实现基本单音立体声振荡器]
op11 --> op13[拓展为双声道] -->op14[增加声像调节功能] --> op17
op11 --> op15[完善波形选择功能] --> op17
op11 --> op16[添加幅度/环形调制信号输入口] --> op17
op17 --> 使用clone实现复音功能 --> op18(着手设计频率调制)
op18 --> op19[改造振荡器内部结构和输入端口] --> op21[实现频率调制功能]
op18 --> op20[设计调制信号振荡器] --> op21
op21 --> op22[使用clone实现去谐功能]
op22 --> 实现基本低通滤波器 --> 完成滤波器截止频率ADSR_Envelope控制和手动控制的分离 --> op23[完成减法合成器的滤波器环节]
op22 --> 设计滤波器共振功能 --> op23
op23 --> 添加噪音振荡器 --> op24(着手实现简单效果器)
op23 --> 添加超低音振荡器 --> op24
op24 --> 四类失真效果器 -->op25(结束)
op24 --> 延迟效果器 -->op25
op24 --> 其他效果器视情况而定 -->op25

四、研究的总体安排与进度

时间 毕业设计(论文)工作内容
2020年12月5日 - 2021年1月15日 调查研究合成器市场
2021年1月16日 - 2022年2月27日 查阅文献资料
2022年2月28日 - 2022年3月3日 完成任务书、文献综述及开题报告答辩
2022年3月4日 - 2022年3月13日 了解Pure Data,查阅官方文档
2022年3月14日 - 2022年4月13日 设计项目主体
2022年4月14日 - 2022年5月10日 完成项目收尾
2022年5月11日 - 2022年5月20日 撰写毕业论文,准备答辩

五、主要参考文献


  1. VAIL M. The Synthesizer: A Comprehensive Guide to Understanding, Programming, Playing, and Recording the Ultimate Electronic Music Instrument[M]. New York City: Oxford University Press, 2014. ↩︎

  2. Pure-Data. Pure-Data[CP/OL]. pure-data, 2022[2022–03–02]. https://github.com/pure-data/pure-data. ↩︎

  3. PUCKETTE M. The Theory and Technique of Electronic Music[M/OL]. Hackensack, NJ: World Scientific Publishing Co, 2007. http://msp.ucsd.edu/techniques.htm. ↩︎

  4. MILLER S. PUCKETTE. Pd ManualEB/OL[2022–03–02]. http://msp.ucsd.edu/Pd_documentation/index.htm. ↩︎