登录模块加载中...
|
作者:counds | 出处:counds | 06-09-21 20:47:08 | 阅读:
自从1992年或1993年起,我就开始使用Cycling 74公司的Max软件了(那时还叫Opcode),后来MSP概念出来时,我又跳到了MSP平台上。在最后的8年多的时间里,我一直在重写一些分步音序器与信号布置器——而这些是专门为我自己的作品而设计的。不过,通过最近对计算机的升级,一款新型的G4手提笔记本电脑,我又开始热衷于设计合成器了。
| 原作: Darwin Grosse 编译:csounds 通讯邮件:csounds@126.com 自从1992年或1993年起,我就开始使用Cycling 74公司的Max软件了(那时还叫Opcode),后来MSP概念出来时,我又跳到了MSP平台上。在最后的8年多的时间里,我一直在重写一些分步音序器与信号布置器——而这些是专门为我自己的作品而设计的。不过,通过最近对计算机的升级,一款新型的G4手提笔记本电脑,我又开始热衷于设计合成器了。 浏览Cycling 74讨论区时,我注意到有很多比较迷惑的初学者。Max与MSP的手册非常出色,而且还配有一套不错的教程。但是对于合成器设计这块,因为选项实在是太多了,因此一些朋友也就开始气馁了。 因此我打算写一套合成器建设的系列文章。当然这并非是说要取代Max/MSP的手册——实际上,我的书写的前提是你确实看过一遍手册了,而且使用他们来给你的MIDI系统设置了软件。另外,阅读一遍教程对于你的学习过程来说也是非常必要的,当然你也可以有选择性地跳跃阅读手册。本教程的重点在于——创建基于软件的合成器。 ·Creating cs.synth_01 本教程的一些先决前提: - 你已经看过一些教程,知道如何选择对象并连接它们 - 你已经设置了Max的MIDI系统(通过OMS) - 你已经正确地设置了Max版本4与MSP版本2 - 具备一台连接的MIDI键盘 编者注:现在Max/Msp已经有了Windows版本,最新版本为4.5.1 另外,你还需要一个Max对象“ddg.mono”,你可以在以下链接中找到 http://www.cycling74.com/share/ddg 这是属于Cycling 74网站的共享内容,我也会在这里贴一些自定义对象,以及外构(External)。你下载了之后,应该将对象与帮助文件放到你的Max搜索路径中。 我们一开始来创建一个简单的合成器——可以接收我们的MIDI输入,并创建一个正弦波输出。正如合成器的简单,第一步我们要先让MIDI能够进入到我们的音图中(Patch)。 编者注:音图——Patch(可以解释为音色编程,但非音色) 音色)——Sound
打开一个新的音图器(Patcher),(Command-N,或者是 菜单File|New|New Patcher),增加一个notein(音符输入)对象。notein 对象是一种方便的从输入MIDI流来接收音符信息(note-on与note-of)的对象。为了让合成器构建更为简单些,我已经将我的主MIDI控制器键盘指定到MIDI device "a" (在Max的MIDI设置对话框中)。这样的话,当我开始一个新合成器时,便可以仅仅让“notein a” 来使用我的MIDI键盘了——对应起来——而不管其它的设置。 [page] 我们还需要限制输入到MIDI通道1,所以notein的第二个参数(argument)是所选的MIDI通道。因为我偏重于将重心放在合成器构建上(而不是MIDI处理),因此我几乎总是以“notein a 1”对象作为构建合成器的开始。 接下来的是我编写的自定义外构(external) - ddg.mono (在上面那个链接中可以获得)。这个对象简化了单声道合成器的创建过程,通过对最后音符优先以及note-on/note-off成对的处理。它使得简单的合成器创建过程非常轻松,当然我还是把重心放在合成器上。
接下来,我们需要增加一些振荡器——声音产生工具。对于这个简单的合成器来说,我们会使用cycle~ 对象(用于正弦波产生)。给它的音高定义为440Hz,以此在我们发送第一个MIDI信息前就具备有效的信号。而这并非是非常关键的地方,更重要的是,对于早期调试工作也非常关键(特别是如果你在具备VCA/amp-mod系统之前测试振荡器的话)。 为了将MIDI音符输出变成可以控制cycle~对象的频率,我们会使用mtof对象。这正如其名称所描述的——它可以将“m's”变成“f's”(即MIDI音符数字变成频率)。到这里,我们具备了合成器的最关键的几种因素——MIDI控制器附上振荡器——万变不离其宗(一般来说)。现在我们要添加音频输出,以及一些控制key-down与key-up事件的方式。
为了能够用键盘事件来控制合成器,我们需要根据键盘输出控制来确定合成器的输出。因为MIDI note-off事件其实是note-on事件的特殊现象(力度为0),我们可以使用signal multiplication (*~) 对象(信号相乘器)来调节输出电平。在音频领域内,相乘服务可以粗略地认为是混合——用一个数字来乘以音频信号,然后便可以改变其振幅。 那么,我们应该拿什么数来乘以振荡器输出呢?力度输出的数值范围为0 (note-off) 到 127 (完全力度)。如果我们以128除数字,我们可以得到的范围为从0 (仍然是note off)到o .9921875 – 在1.0以下,两个提示: *为了从除对象“/”(divide)获得浮点数,参数(argument)需要设置为浮点数。这就是我们为什么用128.0而不是128的原因。 [page] *永远不要让输出信号到1.0位置。在我的经验中,不同的音频卡对全码(fullcode)的输出反应有所不同。而在这点上减少电平可能会“太早”,但是还是非常简便与有效。这也是我为什么选择用128.0除而不是127.0的原因。
最后,我们需要将音频信号发送到音频输出。将*~对象输出发送到信号电平推子(gain~对象),然后是ezdac~ 输出控制,这样我们便拥有了一个简单的输出音量与DSP on/off控制。若要听一下合成器的声音,你可以打开ezdac~ 对象(按一下按钮就可以了),升高音量并演奏一些音符。 如果一切连接无误的话,现在你便构建了一套简单的正弦波合成器,当然这绝对是非常简单的合成器,但这是我们开始发挥构建更为复杂与丰富的合成器的基础。 我们强烈推荐您从头开始琢磨构建,做学比读学更为容易理解事物的本质。 下一周,我们一块来探讨一下使用包络的输出控制。 |
|
用合成器创作管弦乐
优秀的音乐合成器软件ORION
解读合成器的和弦调谐(Hermode Tuning)技
解读离子合成器『上』——坚果壳中的声音…
解读离子合成器『下』——微粒的截取与组合
解读FM合成器『1』--前言…
解读FM合成器『2』--FM7初步…
解读FM合成器『3』--FM7进阶…
解读FM合成器『4』--FM奠基人…
解读FM合成器『5』--FM理论基础…