APP下载

基于动态FM合成手段的算法作曲实现及应用

2015-03-23李云鹏

黄钟 2014年3期
关键词:作曲

李云鹏

摘要:FM技术作用于音乐领域,已有近半个世纪的历史,这是一次传统艺术与现代科技跨界结合的典范。在这种先进技术的支持下,诞生过许许多多具有传奇色彩的合成器、经典的音色和代表性的电子音乐作品。时至今日,历久弥新,我们仍然能从FM8等软件音源上感受到它所发挥出来的魅力。目前,受限于实时控制手段的便捷性,FM技术更多地应用于编辑音色,以供创作时使用,却很少用于实时控制音响的变形过程。该文将试图通过对这种技术的理论阐释与音响分析,结合Max/MSP算法作曲平台进行特性模拟、程序构建,找到一条实时控制音响并最终完成创作的实践之路。

关键词:动态FM合成;作曲;算法作曲;Max/MSP

中图分类号:J604文献标识码:ADOI:10.3969/j.issn1003-7721.2014.03.005

引言

FM合成(FM Synthesis)是无线电调频技术与声音合成领域相结合产生的惊人创举,这种声音合成技术由美国斯坦福大学的John Chowning在上世纪60年代首创。通过这种技术,可以利用运算器(operators)、载波振荡器(carrier oscillators)和调制波振荡器(modulator oscillators),配合一定的算法,获得声音。

FM合成技术在电子音乐发展历程中有着辉煌的历史。在上世纪七、八十年代,它曾广泛地用于合成器音色的制作和编辑。这种技术成就了一批著名的电子合成器,如YAMAHA DX1、DX7等。同时,人们也已经广泛运用这些合成器的音色创作出了大量优秀的作品,如著名的New Age作曲家姬神的专辑《雪谱》(1987)中大量用到了YAMAHA DX7中的FM合成音色。然而,从另一个方面来看,FM合成技术在这些作品中常常以“音色结果”的方式而存在,却很少直接以“音响变形手段”的方式参与电子音乐作品的创作。其主要原因在于:缺乏方便、可靠的实时控制方式对FM合成器的诸参数进行动态调节,从而无法实时控制音响结果发展的逻辑线索。但是,藉由Max/MSP的平台,却可以使这一传统的技术焕发出新的光彩。

在Max/MSPMax/MSP是Cycling′74公司所开发的一种可视化编程语言环境,广泛应用于算法作曲,交互、装置艺术等领域。 平台中,与动态 FM合成相关的构件参数可以根据算法的设计实现动态变化,也就使其产生的音响有了“有控制随机”的可能性,最终使音乐发展的逻辑可被控制。从具体的实现方法上来看,软件本身已具有实现FM合成的最基本构件,所需要的只是设计符合音乐发展逻辑的恰当算法,并借助逻辑运算类、条件判断类构件的配合,最终实现对音响结果的整体控制。

一、FM合成的原理及实现

FM合成技术中的“FM”,是Frequency Modulation(频率调制)的缩写,这个名词恰到好处地描述出FM合成技术的工作原理,即用调制波频率对载波(即被调制波)频率加以调制,获得更复杂声音的过程。其直观的流程图如下:

`图1简单FM合成模型

如图1,ac和am分别代表载波器和调制器的振幅大小。载波器发出频率为fc的载波,同时,调制器发出频率为fm的调制波,将其直接与载波频率相加,产生频率调制的结果。

最简单的FM合成器模型只需包含一个载波振荡器、一个调制振荡器和一系列运算器组件。FM合成所采用的声音材料一般为简单波,如本文实例中所采用的正弦波等等。在Max/MSP平台中,根据图1所示结构图,可构建如下程序:

`图2简单FM合成程序

如图2所示,程序中关键的三个参数分别是:载波频率、频率比(m:c,)与调制指数。其中,频率比代表调制波频率(m)与载波频率(c)的比值,它实际上是设置调制波频率(fm)的另一种方式。这样的设置方式可以使调制波频率始终与载波频率保持一定比例,防止因载波频率变化(或音高变化)而引起的音色频谱比例的改变。

二、动态FM合成的实现

所谓“动态”,是指在发声过程中,声音的各要素随着时间的推移而产生变化的现象。相对于“静态”声音,这更是声音在自然界存在的普遍现象。如风声、水流声、各种动物的叫声等,无不在发声过程中充满了各种变化。动态FM合成,正是要通过相应算法,配合相应的控制手段,有逻辑地实时控制音响各要素的动态变化。

(一)EG与LFO

在电子音乐中,音响各要素的动态变化来自于对各种控制器参数的动态调控,而这种调控离不开EG、LFO等信号发生器的支持。我们若能在Max/MSP中完成这些信号发生器的程序实现和动态控制,便能对各种控制器的参数进行动态调控。

1.EG和LFO的原理及功能

EG(Envelope Generator)即包络发生器,是一种控制信号发生器,可在一定的时间范围以内以“包络线”的形式发出控制信号。

LFO(Low Frequency Oscillator)即低频振荡器,是一种特殊的周期性波形信号发生器,它可发出相对低频率的波形控制信号。

二者同属信号发生器,其相同点在于,它们发出的信号可以控制其它具体的控制器,如音量、声像、振荡器各参数等。两者的不同点在于EG产生的是非周期性控制信号,而LFO产生的是周期性控制信号。

2.EG和LFO在Max/MSP中的实现

(1)EG的实现

典型的EG产生的包络线如图3所示。这也是应用最广泛的包络线模型,它可以直观地体现出参数值大小与时域之间的关系。其作用过程共经历起音(Attack)、 衰减(Decay)、持续(Sustain)及释放(Release)四个阶段。更高级的EG除了能产生更多的阶段节点之外,还能够产生曲线等更丰富的包络线型。(见图3)

在Max/MSP中,我们可以使用如图4所示的function构件来模拟EG的功能。这个构件本是一个平面函数编辑构件,我们可以将其横纵轴功能对应EG的横纵轴定义,所以完全可以一一对应地模拟包络线型。不仅如此,由于在构件中点的数量可以是无限的,理论上便可生成任意包络线型。(见图4)

`图3包络线发生器示意

`图4包络线发生器程序模拟

(2)LFO的实现

LFO本身就是一个振荡器,所以最直接的方法是使用MSP中的振荡器构件去构成。振荡器的输出需要设置频率、波形两个参数。鉴于LFO的特殊性,频率值一般要设置在20Hz以下。波形则有多种类型(如方波、锯齿波、随机波等)可选。下图定义的是在10Hz频率下工作的正弦波LFO。

`图510Hz正弦波LFO构件

此外,鉴于LFO信号的“控制”本质,我们也可以使用Max中的metro和counter构件,通过不同速度、不同规则下生成的数据流,来模拟信号运行的轨迹。与振荡器本身的实现方式不同,这种模拟方式的好处在于其生成的“模拟振幅值”可以被精确地控制。例如,下图所示的例子可实现锯齿波的轨迹模拟,其“模拟周期”为600ms,即频率约为1.67Hz,振幅值则为5(相对单位)。

`图6锯齿波轨迹模拟构件

综上所述,实现各种形态的EG和LFO,其本质目的就是应用产生各种用于控制声音具体参数的数据流,它们在算法作曲阶段中的控制行为基本可以做到“无所不能”。无论是频率、振幅,还是声像,哪里需要数据流,哪里就可以使用EG和LFO。

(二)动态的频率比

频率比的动态变化,直接关系到调制波的频率变化。在设定了一定调制指数的情况下,单独改变频率比时,可以明显地听到载波基频两侧的边频边频指的是用调制过程中,在载波频率两边产生的频率,它们通常有多个,而形成一系列“频率带”。 频率点发生变化。

在动态化的实现过程中,我们可以将EG或LFO模块连接至图1-2所示程序中的“频率比”接口,如图7所示。

`图7FM合成程序(LFO控制动态循环频率比)

图中将一个LFO模块(框选位置)连接在频率比输入接口上,并设置LFO频率为2.4Hz,这样使得频率比的改变接受LFO振幅的控制,具有每0.417s完成一次循环的周期特性。由于LFO模块的振幅值域为[-1,1]的浮点数,频率比最终的值域也就相应为[-3,3]的浮点数。另外,由于存在负数调制频率值,同时完成周期化改变的还有相位参数。如果无需相位改变,只需在乘法构件下添加“绝对值”构件(abs),将负数调制频率值全部转为其相反数即可。

以上完成的是固定周期的动态化频率比改变,听到的效果类似于“闪烁”的音流,富有“科幻”色彩。为了实现更自由的动态变化,我们还可以在LFO模块上添加相应值域的随机数生成器,使最终的频率比变化轨迹不在一定的规律下进行,从而得到更丰富的声音效果。比如,我们可以增加一个如下图所示的数值改变模块,连接在LFO模块的末端。这样,每次得到的频率比数值又会在减去[-0.9,1.0]区间内的某个值,得到的频率比数值也就不会完全按照LFO模块的规律特性来运行,如图8所示。

(三)动态调制指数

调制指数的变化,给人最明显的感受是音响

`图8实现动态非循环数值的关键程序

“亮度”的不断改变。其原因在于,调制指数主要影响边频的声能量。调制指数越大,高次频率的振幅也就越大。我们同样能将调制指数的变化用EG或LFO去控制,让它们在相应频率比的配合之下,动态地控制分音振幅值,以达到音响“腔式变化”的结果。

`图9随时间变化的各种调制指数运行轨迹

上图所示的四种包络线型,是在function构件中模拟EG的行为所完成的,可以连接至图2所示程序中的“调制指数”接口。在生成这些包络线型的过程中,避免了人工操作,转而使用数组工具来生成。使用几组随机数发生器,可以无限生成各种包络线型。如果需要限制变化范围,则需要对随机数发生器的值域加以限定。

比如,我们要将调制指数的变化以“逐步增大后小幅度减小”的方式开始。便可以将函数图像中的第一节点固定在一个较低值上,并使用如下的程序规则来设定其后两个节点的范围,如下图所示:

`图10实现动态调制指数的程序

本程序所对应的相关参数动态值域如表1(预设横轴最大值为100,纵轴最大值为1):

表1相关参数动态值域

位置第二节点第三节点

时值区间及数据类型[35,49],整数[55,74],整数

振幅区间及数据类型[0.5,1.0),浮点数[0.2,0.5),浮点数

最终,动态生成的包络线形便可以在有控制的随机模式下生成,以下三幅图形是在该程序运行时随机截取的几组包络线形。(见图11)

`图11程序运行时随机截取的包络线型

此外,LFO与EG两种动态手段可以复合使用。EG也可以用来控制LFO的振幅,随机的EG运行状态也可控制生成随机的LFO振幅值。同样,不具备周期性的EG信号也可通过LFO信号的控制而实现某种“周期化”特性。

经过频率比和调制指数的动态化处理,我们便可全面实现频谱的动态化处理,进而结合创作构思,完成音乐作品。

三、动态FM合成手段在算法作曲中的应用

利用计算机进行算法作曲,有多种实现方式。从起点上来看,既可以从声音或音符的产生开始,又可以从现有音响材料的触发开始。各种起点的选择主要取决于平台的类型、音响的特性等因素。在实现的途径方面,使用动态FM合成手段,可以直接生成与改变声音,而“动态”的实现过程,则又是由相应的算法来构建的。所以,二者作用的共同结果是“控制声音的产生与变化的过程,直接产生音响结果”刘健:《计算机算法作曲原理与技术》,未出版。 。它们相辅相成,共同参与整个作曲过程。结合前文的创作手段实现过程,作品的构思可以依照频谱变形、织体构成等线索来进行。

(一) 以频谱变形为线索

音色合成的原始材料和音响结果都是基于频谱的,所以我们应当理所当然地将频谱的变化作为最重要的一条线索去引导创作。基于频谱的创作理念早已有之,频谱学派就是应用的典型代表。在这种方式下,声音的频谱特性将作为声音材料发展的依据,通过算法的支撑完成变化的全过程,具体可经由纵、横两个阶段来完成。

1.纵向——频谱材料构成

频谱材料的构成方式,不仅能够决定音响材料的物理特性,更能通过其分频值、经调制后的边频值等频率成分,来暗示发展的可能性。我们可以直接应用前文所述的简单FM合成模型和各种调制手段来生成初始的音响材料,并通过这个音响材料的频率特征来发掘更深层次的发展可能性。

2.横向——频谱发展线索

在探讨发展线索时,我们可以先确立一个发展目标。当然,这里的发展目标并不是作品结束的信号,而是频谱由一种状态发展到另一种状态的一个节点。例如,声音主题出现之后,在发展过程中,可以通过控制这个声音的各个分频音响在不同时刻有序地进入。这里的每个分频音响即是发展节点,节点与节点作品的起点是初始节点。 之间需要一定的发展线索加以连接,连接的手段则需要相应的算法来构建。

算法的便利性在于,可以规定两节点之间的发展方式,让计算机去完成过程,而不需要将过程中的所有“音响快照”全部实现。我们可以通过图像进行插值法变形的过程去理解这种状态。下图是一幅由字母A变形到字母B的动画例子,在变形软件中,只设置了两个字母的图形为节点,线性插值的淡入淡出为变形线索。全部过程共有20帧,每5帧截取一次瞬时图形,如图所示:

`图12动画运行截图

当然,更换算法,并不会影响第1帧和第20帧的结果。无论多么复杂的算法,最终只会影响它们之间的各帧内容。回到频谱发展线索,就其过程来看,也可分为线性和非线性两种方式。

(1)线性发展线索

线性发展是一种简单的发展方式,它能实现节点与节点之间的直接联系。比如,我们将起始节点设置为不加调制的纯音,频率为440Hz,下一个节点为880Hz,便可采用频率线性递增的手段开始发展。比如连续使用加法器构件,以1为步长,经过440步到达节点;或以2为步长,经过220步到达节点等。这种发展线索还可以单独针对频率比、频率指数来设置。但“线性”本身就是一种理想状态,虽方法易于实现,但过程所体现的效果比较简陋和单一。

(2)非线性发展线索

“非线性”特征更是事物形成与发展的常态。作为发展线索而言,其规律无法使用简单的一次函数来描述,但是这种发展线索更能体现算法作曲所追求的“有控制的随机性”特点。

实现非线性发展线索,可以借助一切复杂函数来实现。比如,可以借鉴“模糊数学”中的“醉步理论”。在模糊概率中,醉步理论来自于对“醉汉回家”过程中步伐点的研究。当醉汉在回家时,他的起止点是已经确定了的,但其所走的路线具有不确定性。他可能摇摇晃晃,前两步后三步,但最后还是要回家的。所以,醉步理论指的就是这种在可确定范围之内所表现出的随机性特征。我们可以将这里的“起点”和“终点”定义为发展节点,中间的过程便由FM合成的诸参数的变化来实现。这样,每次实现的过程都会略有变化,但不会超出所预期的发展框架。

在第二章所述的“动态调制指数”一节中,便可以利用“醉步”算法来实现调制指数的变化。在图2-7a中,调制指数初始值为7,下一节点指数为0,图中所使用的线性发展线索是最为简单的实现方式,但我们可以用更加复杂且具有部分随机性的方式去实现更丰富的效果。在Max/MSP中,我们可以使用drunk构件去控制调制指数由7到0之间的发展过程,进而影响到音响频谱中边频的变化规律,最终在非线性发展线索下的完成音响结果。同样,其它关系到频谱的参数均可依照这种方式设置发展线索进行。

(二)以织体构成为线索

这里所说的织体特指空间织体。在传统音乐普遍认知的概念中,空间织体可分为单声部织体和多声部织体。以动态FM合成为作曲手段时,织体外部形态的分类虽可借鉴这些理论,但内部的构成方式却大有所不同。

1.单声部织体的构建

单声部是织体存在的特殊形态,也是构成多声部织体的基础。以动态FM合成手段为基础进行创作,首要解决的就是单声部构成的相关问题。

(1)声部各要素的形成

在传统音乐理论中,一个完整声部无外乎由音高、时值与节奏、音色三大要素的形成和变化构成,各要素的形成和变化主要是靠“触发”手段。以一个弦乐声部为例:触发弦的不同位置会产生音高要素的变化;触发的持续和间隔时间会形成时值与节奏的变化;以不同的方式进行触发会构成音色要素的变化。

在以“合成”为核心的创作中,这三要素的外延更广。“音高”可以推广到任意频率,“时值与节奏”可以推广到绝对时间,“音色”则可推广到频谱特性。此时,三要素的形成和变化也应当依靠“调制”手段:一个由振荡器产生的无限延伸的“长音”作为调制的先决条件和原始素材,所有的要素均在其上使用不同的参数和数值来形成和变化。

“音高”方面,可以通过载波器的频率设置来生成,改变频率值我们就能听到类似“音高变化”的效果。

“时值与节奏”方面,可以通过载波器的频率值在零与非零值之间交替而产生。具体说来,为零值代表不合成状态,即“休止”状态;非零值代表合成状态,即“发音”状态。两种状态在绝对时域里穿插,会实现类似“不同时值音符、休止符交替”的效果。

“音色”方面,则可通过频率比与调制指数的改变,实现音响频谱特性的改变,体现“不同的音色特征”。

(2)声部形态的构成

在声部各要素得以实现的基础之上,我们可以构成各种不同形态的单声部。

①线状形态

线状形态可由音频信号的持续所构成。从持续的方式来看,它又可细分为单一线形和“腔式”线形两大类。

a.单一线形

单一线形,即发声过程开始后,各参数均保持静态状态,音响也持续保持某种形态直到发音结束。在构成时,只需将FM合成的各参数设置为定值即可。但如果这种声音持续时间过长,便会让人觉得机械和呆板。

b.“腔式”线形

“腔式”概念是从沈恰先生的《音腔论》中借用而来,它代表发声过程的动态特征。这种发声状态更为常见一些。比如,起音时可略有“渐强”效果,就是振幅的“腔式”特点。除此之外,可具备“腔式”特点的参数,还有频率、声像等很多种。这些“腔式”特点的构成可以借助第二章所涉及到的EG、LFO等工具,结合“动态频率比”、“动态调制指数”以及“动态后期修饰”等手段来进行。

②点状形态

点状形态与线状形态的差异仅在于发声状态所占用的相对时间不同。线状形态里的“单一”和“腔式”发音状态在点状形态上也有体现。只是其中“腔式”效果的实现周期较短。

另外,由于振荡器所产生的信号是持续状态的,要构成点与点持续运行的声部形态,还需要一定的控制手段,比如可以使用如图6所示LFO模拟程序。将模拟LFO的最大“振幅”值和最小“振幅”值作为条件,分别对应为零值的载波频率值与非零值的载波频率值,让载波在“振荡与不振荡”的两种状态之间作周期性切换,就能形成“均匀”的点状律动形态。如果再用一个EG控制LFO的频率变化轨迹,就实现了动态化的LFO频率周期。随着LFO周期的不断改变,“振荡—不振荡”的周期化交替状态也被打破,即实现了由疏密相间的“点”构成的声部形态,如图13所示。

2.声部分割的依据

声部分割的依据,即区分不同类型声部差异的依据。有差异的各个声部才能互相结合形成多声部。在以“合成”为技术基础的算法作曲中,声部分割的依据与传统音乐中音高、节奏和音色的三要素分割依据并不同。

(1)频率成分

频率成分是分割声部最直观、有效的依据。在简单FM合成模型中,频率成分主要由载波频率、调制波频率和调制指数三者决定。不同的数值组合使得基频和各分音的振幅比例及绝对频率位置不同,创作时便可通过这些参数生成不同频率成分的音响,为多声部织体的构建作准备。此外,在“后期修饰”步骤中,还可以加入不同的滤波器,来辅助构成不同频率成分的音响。

(2)声部形态

不同“声部形态”的表现更接近于传统音乐中的不同节奏、时值的音响形态。在这种依据下,我们可以依靠本节第一条“声部形态的构成”所述各种方法,去生成各种线形、点形声部。

`图13实现点状音响形态的程序

3.多声部织体的构建

这里的“多声部织体”概念的外延与传统音乐中相同名词的外延有所不同。根据前文所述单声部织体的特点,并结合音响的合成手段,我们可将其分为同质结合和异质结合两大类。

(1)同质结合

同质结合方式是指“点点结合”或“线线结合”,这种结合方式并不仅仅意味着是一种“大齐奏”的状态。它既可以是带状旋律式的“同步运行”形态,也可以是发音、释音过程具有一定时间差的“非同步运行”形态。我们将方式和形态加以排列组合,一共可以得到四种结合结果,并可用传统作曲范畴内的两首作品的织体片段加以解释。(见谱例1、2)

谱例1选自里盖蒂的钢琴练习曲第一首Désordre的开始部分。图示部分的结合结果为“点点结合”,“同步运行”形态。谱例2选自里盖蒂的合唱作品Nonsense Madrigals中的第三乐章The Alphabet中的开始几小节。由图示可以清楚地看到,这种织体结合结果是“线线结合”,“非同步运行”形态。

谱例1里盖蒂Désordre片段

谱例2里盖蒂The Alphabet片段

图13异质结合程序

在使用动态FM合成手段进行创作时,也可以模仿上述两例的织体构成模式。我们可将声部的概念转化为“FM合成模型”的概念,每个“声部”都对应一个简单FM合成模型来构成织体。

在构成“点点”和“线线”结合的织体时,可以通过设置触发时长来实现不同类织体的时值界定。在形态方面,我们利用“动态时值”的途径,将触发的时长和周期通过“常数式”设置和“值域式”设置,来实现“同步运行”和“异步运行”的不同形态。

除此之外,我们仍能利用第二章所述的各种动态手段来实现发音过程的“腔式”变化。

(2)异质结合

异质结合的典型形态是“点线结合”。在时值与周期的实现过程中,只需要将多组不同值域范围的“动态时值”类构件与多组合成器构件相结合即可。

异质结合时,各“声部”均以动态FM合成手段为基础构成和发展音响,这就为每“声部”的变化提供了无限的可能性。第二章所涉及的多种动态处理手段均可用在每个声部,作曲者设定一定的参数变化逻辑,便可形成“点线跳跃”、“凸凹不平”、“轻重无序”式的混合音响,如图13、14所示。

图14动态FM合成作品谱例

结语

音乐以声音的物理属性为载体而存在,探索声音物理层面上的产生及发展的可能性,是很多电子音乐作曲家们孜孜不怠所追求的目标。使用声音合成技术进行创作,可以从本源上打破音高及律制的桎梏,以人工音高和自由律制作为生“音”之法。

本文从一个简单FM合成程序的设计开始,将这种音色合成技术与算法作曲理念和平台相结合,试图打破FM技术常规的基于MIDI技术的“合成音源”式使用方式,最终实现FM技术直接生成和变形声音,从而寻求一种新的电子音乐创作途径。在整个探索过程中,FM合成的参数逐步由一个个独立的数值,发展为随时间变化的数据流。静止的参数变为了动态的参数,也使原本相对静止的合成音响留下了动态变化的痕迹。最后,针对这一手段的特点以及创作实施的可行性,提出两条线索,以供创作参考。

FM技术本不是一项全新的技术。但在与Max/MSP平台的融合的过程中,经过各种变形算法的设计及演绎,由一种音色合成手段逐步转变为一种创作手段。Max/MSP作为一个优异的新媒体艺术创作平台,算法作曲只是它强大功能的冰山一角,却为我们提供了取之不尽的创作方式。作曲理论在与科技相结合后,能够不断地升华其表现力,本文的构思正是藉此而立。随着科学技术的发展,音乐艺术的表现形式会更加多样化,相信这种融合的趋势也将一直伴随着电子音乐的发展。在技术与艺术不断融合的过程中,必定会给我们带来一个又一个新的课题和理念。

(责任编辑:张璟)

猜你喜欢

作曲
AI:像贝多芬一样去作曲
逐梦
邀你来我家
作曲心语
George Gershwin