1983年,Yamaha DX7的发布彻底改变了电子音乐的面貌。这台售价仅为当时模拟合成器三分之一的数字合成器,不仅提供了16个复音,还带来了前所未有的音色——明亮的电钢琴、金属质感的钟声、富有表现力的贝斯。这一切都源于John Chowning在斯坦福大学发现的频率调制(FM)合成技术。本章将深入探讨FM合成的数学原理,理解为何简单的正弦波调制能产生如此丰富的频谱,以及如何系统地设计FM音色。
FM合成的核心是用一个振荡器(调制器)去调制另一个振荡器(载波)的频率。其数学表达式为:
y(t) = A · sin(2πfct + I · sin(2πfmt))
其中:
A 是输出振幅fc 是载波频率(Carrier frequency)fm 是调制频率(Modulator frequency)I 是调制指数(Modulation Index)这个看似简单的公式蕴含着丰富的频谱变化。当调制指数I = 0时,输出就是纯正弦波;随着I增大,频谱逐渐变得复杂。
调制指数I决定了频率偏移的幅度:
I = Δf / fm
其中Δf是最大频率偏移。在数字实现中,我们通常将其表示为:
I = Am / fm
这里Am是调制器的振幅。这个关系告诉我们一个重要事实:相同的调制器振幅,在不同的调制频率下会产生不同的调制指数,进而产生不同的音色。
FM调制的本质是改变载波的瞬时频率:
f_inst(t) = fc + Δf · sin(2πfmt)
通过积分得到瞬时相位:
φ(t) = 2πfct + (Δf/fm) · sin(2πfmt)
= 2πfct + I · sin(2πfmt)
这解释了为什么FM公式中调制信号出现在相位项中。
利用雅可比-安格尔恒等式,我们可以将FM信号展开为:
y(t) = A · Σ(n=-∞ to ∞) Jn(I) · sin(2π(fc + n·fm)t)
其中Jn(I)是第一类n阶贝塞尔函数。这个展开式揭示了FM合成的频谱结构:
第一类贝塞尔函数Jn(x)具有以下关键性质:
这些性质确保了FM合成的能量守恒和频谱对称性。
随着调制指数I的变化,各阶贝塞尔函数的值也在变化:
I = 0: J0(0) = 1, 其他Jn(0) = 0 → 纯正弦波
I = 0.5: 开始出现第一对边带
I = 2.4: J0(2.4) ≈ 0 → 载波消失!
I = 5: 产生约8对显著边带
这种动态变化是FM合成表现力的源泉。通过包络控制调制指数,我们可以创造从简单到复杂的动态音色。
对于给定的调制指数I,第n阶边带的振幅为:
An = A · |Jn(I)|
边带的位置为:
fn = fc + n · fm
当n为负数时,如果fn < 0,该边带会”折返”:
f'n = |fc + n · fm|
这种折返现象会产生非谐波分量,创造金属质感的音色。
Carson带宽规则给出了FM信号的有效带宽:
BW ≈ 2(Δf + fm) = 2fm(I + 1)
这个估算对于:
都具有重要意义。
当fc/fm为整数比时,所有边带都落在基频的谐波位置上,产生谐波频谱:
fc:fm = 1:1 → 边带位于f0, 2f0, 3f0...(锯齿波特性)
fc:fm = 2:1 → 边带位于2f0, 3f0, 4f0...(缺少基频)
fc:fm = 1:2 → 边带位于f0/2, 3f0/2, 5f0/2...(次谐波)
整数比例产生的音色具有明确的音高感,适合创造:
非整数比例产生非谐波频谱,创造金属、玻璃、钟声等音色:
fc:fm = 1:1.414 → 轻微失谐,增加音色厚度
fc:fm = 1:3.14 → 明显的非谐波,金属质感
fc:fm = 1:√2 → 钟声的典型比例
fc:fm = 1:黄金比 → 特殊的非谐波分布
不同的C:M比例具有独特的音色特征:
低比例(< 1:1):
特征:丰富的低频成分
应用:贝斯、低音打击乐
中比例(1:1 - 4:1):
特征:平衡的频谱分布
应用:主音色、和声音色
高比例(> 5:1):
特征:明亮、穿透力强
应用:铃声、高频装饰音
细微的比例调整可以产生丰富的音色变化:
1:1.000 → 静态谐波频谱
1:1.001 → 缓慢的拍频
1:1.010 → 快速的相位变化
1:1.100 → 轻微的非谐波感
这种微调技术在创造”活”的音色时特别有用。
DX7采用6个完全相同的运算器(Operator),每个运算器包含:
运算器结构:
[频率]
↓
[正弦振荡器]
↓
[包络发生器] ← [速度]
↓
[输出]
DX7提供32种预设的运算器连接方式(算法),涵盖了:
简单FM(算法1-5):
算法1: [6]→[5]→[4]→[3]→[2]→[1]→输出
6级串联,最复杂的频谱
并联载波(算法6-10):
算法7: [4]→[3] [6]→[5]
↘ ↙
[1]+[2]→输出
两组独立FM,可创造分层音色
反馈环路(算法11-20):
算法16: [6]⟲
↓
[5]→[4]→[3]
↓
[1]+[2]→输出
Op6自反馈产生噪声或锯齿波
复杂网络(算法21-32):
算法32: [1] [2] [3] [4] [5] [6]
↓ ↓ ↓ ↓ ↓ ↓
[加法混合]→输出
6个独立正弦波,加法合成
算法5(电钢琴):
[6]→[5] [4]→[3]
↓ ↓
[2] + [1] → 输出
算法8(贝斯):
[6]⟲
↓
[5]→[4] [3]→[2]
↓ ↓
[1] + [1] → 输出
在FM算法中,运算器扮演不同角色:
载波(Carrier):
调制器(Modulator):
混合角色:
钟声/金属音色:
设计要点:
- C:M比例:1:3.5, 1:1.4, 1:2.1等非整数比
- 调制指数:中到高(I = 3-8)
- 包络:快起音,自然衰减,无延音
- 技巧:多个调制器使用略微不同的比例
示例参数:
Op1(载波): 比例1.00, 包络[99,0,0,80]
Op2(调制): 比例3.52, 包络[99,0,0,75], I=5
Op3(调制): 比例1.41, 包络[99,0,0,70], I=3
电钢琴(DX EP):
设计要点:
- 核心是两组FM对,一组产生基音,一组产生击弦声
- C:M比例:1:1(基音),1:14(击弦)
- 动态响应:速度控制调制指数
- 包络差异化:击弦声快衰减,基音慢衰减
典型设置:
击弦组: C:M = 1:14, I=3-5, 快衰减(10ms)
基音组: C:M = 1:1, I=1-3, 慢衰减(2s)
混合比: 击弦20%, 基音80%
贝斯音色:
设计要点:
- 使用反馈产生锯齿波特性
- C:M比例:1:1, 2:1(谐波丰富)
- 低调制指数(I = 0.5-2)
- 包络跟踪:高音快衰减,低音慢衰减
参数建议:
反馈量: 60-80(产生次谐波)
包络: Attack=0, Decay=500ms, Sustain=30%, Release=200ms
键跟踪: 负向跟踪衰减时间
动态频谱控制:
原理:包络控制调制指数,实现频谱的时间演化
铜管音色示例:
初始阶段(0-50ms): I=5 → 丰富泛音(吹奏噪声)
过渡阶段(50-200ms): I=3 → 泛音减少
持续阶段(>200ms): I=1 → 稳定泛音
实现方法:
- 调制器包络:快起音,快衰减到持续电平
- 载波包络:慢起音,保持稳定
多包络协调:
层次化设计:
1. 调制器1:控制高频泛音(快变化)
2. 调制器2:控制中频泛音(中速变化)
3. 载波:控制整体音量(慢变化)
时间关系:
T_mod1 < T_mod2 < T_carrier
速度敏感度设置:
线性映射:
I = I_base + (Velocity/127) * I_range
指数映射(更自然):
I = I_base * (1 + I_range * (Velocity/127)^2)
分段映射(精确控制):
Vel 0-40: I = 0.5-1.0
Vel 41-90: I = 1.0-3.0
Vel 91-127: I = 3.0-8.0
键位跟踪(Key Scaling):
原理:高音区需要更多泛音以保持明亮度
实现:
I_final = I * (1 + KS * (Note-60)/60)
其中:
- KS是键位跟踪深度(-1到+1)
- Note是MIDI音符号
- 60是中央C
应用场景:
- 钢琴:高音区增加调制指数
- 贝斯:低音区减少调制指数
堆叠与分层:
技巧1:微调叠加
- 使用相同算法,微调C:M比例
- 比例差异:0.001-0.01
- 产生合唱效果和音色厚度
技巧2:互补分层
- 层1:低调制指数,提供基础
- 层2:高调制指数,提供亮度
- 交叉淡化:用调制轮控制平衡
调制矩阵应用:
创意路由:
LFO → 调制指数 :颤音效果
包络 → C:M比例 :频谱扫描
触后 → 反馈量 :表现力控制
调制轮 → 算法选择:实时音色变形
伪共振峰技术:
原理:用多个窄带FM峰模拟共振峰
实现:
Op1-2: 第一共振峰 (700Hz区域)
Op3-4: 第二共振峰 (1200Hz区域)
Op5-6: 第三共振峰 (2500Hz区域)
每组独立控制:
- 中心频率(C:M比例)
- 带宽(调制指数)
- 振幅(输出电平)
经典DX7音色复刻:
"Tubular Bells"(管钟):
算法: #5
Op1: Ratio=1.00, Level=99
Op2: Ratio=3.51, Level=85, 快衰减
Op3: Ratio=1.00, Level=95
Op4: Ratio=7.01, Level=72, 极快衰减
反馈: Op4=35
"Solid Bass"(实贝斯):
算法: #8
Op1: Ratio=0.50, Level=99
Op2: Ratio=0.99, Level=89
Op3: Ratio=1.00, Level=99
Op6: Ratio=0.50, Feedback=71
包络: 零起音,中等衰减
"E.Piano 1"(电钢琴1):
算法: #5
击弦部分(Op3-4): Ratio 1:10.99
基音部分(Op1-2): Ratio 1:1.01
速度曲线: 指数型
衰减: 随键位升高而加快
FM合成通过简单的正弦波频率调制,能够产生极其丰富的频谱变化。其核心数学原理基于贝塞尔函数的展开,通过控制三个关键参数——载波频率、调制频率和调制指数——可以精确预测和控制产生的频谱。
关键概念回顾:
基本FM公式:y(t) = A·sin(2πfct + I·sin(2πfmt))
频谱结构:边带位于fc ± n·fm,振幅由Jn(I)决定
FM合成的魅力在于其参数空间的非线性:微小的参数变化可能带来巨大的音色差异。这既是挑战也是机遇,需要理论理解与实践经验的结合。
练习2.1 计算题:给定载波频率fc=440Hz,调制频率fm=110Hz,调制指数I=2,计算前5个边带的频率和相对振幅。
提示:使用贝塞尔函数表或近似公式计算Jn(2)
练习2.2 分析题:为什么C:M=1:1时,FM合成能产生类似锯齿波的频谱?从边带分布的角度解释。
提示:考虑边带位置与锯齿波谐波的对应关系
练习2.3 实践题:设计一个简单的铜管音色,给出关键参数设置。
提示:铜管音色需要丰富的奇次谐波和特征性的起音
练习2.4 理论推导:证明FM合成中能量守恒,即所有边带振幅的平方和等于载波振幅的平方。
提示:利用贝塞尔函数的正交性质
练习2.5 设计题:如何用FM合成模拟人声的共振峰?设计一个包含三个共振峰的配置。
提示:每个共振峰可以用一对运算器产生
练习2.6 分析题:DX7的算法5为什么特别适合电钢琴音色?从音色成分的角度分析其优势。
提示:考虑电钢琴的击弦声和琴体共鸣的不同特性
练习2.7 开放思考题:如果要设计一个8运算器的FM合成器,你会如何改进DX7的架构?考虑哪些新的可能性?
提示:考虑更复杂的调制网络、多载波输出、立体声可能性
错误:认为调制指数越大,音色越”好” 正确理解:过大的调制指数会产生过多的高频边带,导致:
调试技巧:从I=0开始逐渐增加,找到音色变化的”甜点”
错误:使用不精确的比例值(如1:3.3333…) 问题:在长音持续时可能产生相位漂移
解决方案:
错误:所有运算器使用相同的包络 后果:音色缺乏动态变化,听起来呆板
正确做法:
错误:将MIDI速度线性映射到调制指数 问题:听感上不自然,低速度时变化不明显
改进:使用指数或对数曲线映射,更符合人耳感知
错误:所有音高使用相同的FM参数 表现:高音区过暗,低音区过亮
解决:实施键位跟踪,根据音高调整:
错误:过度使用反馈 后果:产生不可控的噪声或啸叫
安全范围:
错误:忽视FM产生的高频成分 问题:产生混叠失真
预防:
通过理解这些常见问题,可以更有效地设计和调试FM音色,充分发挥这种强大合成方法的潜力。