第2章:FM合成原理(Yamaha DX7的革命)
引言
1983年,Yamaha DX7的发布彻底改变了电子音乐的面貌。这台售价仅为当时模拟合成器三分之一的数字合成器,不仅提供了16个复音,还带来了前所未有的音色——明亮的电钢琴、金属质感的钟声、富有表现力的贝斯。这一切都源于John Chowning在斯坦福大学发现的频率调制(FM)合成技术。本章将深入探讨FM合成的数学原理,理解为何简单的正弦波调制能产生如此丰富的频谱,以及如何系统地设计FM音色。
2.1 FM调制的数学理论
2.1.1 基本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增大,频谱逐渐变得复杂。
2.1.2 调制指数的物理意义
调制指数I决定了频率偏移的幅度:
I = Δf / fm
其中Δf是最大频率偏移。在数字实现中,我们通常将其表示为:
I = Am / fm
这里Am是调制器的振幅。这个关系告诉我们一个重要事实:相同的调制器振幅,在不同的调制频率下会产生不同的调制指数,进而产生不同的音色。
2.1.3 瞬时频率与相位
FM调制的本质是改变载波的瞬时频率:
f_inst(t) = fc + Δf · sin(2πfmt)
通过积分得到瞬时相位:
φ(t) = 2πfct + (Δf/fm) · sin(2πfmt)
= 2πfct + I · sin(2πfmt)
这解释了为什么FM公式中调制信号出现在相位项中。
2.1.4 频谱展开
利用雅可比-安格尔恒等式,我们可以将FM信号展开为:
y(t) = A · Σ(n=-∞ to ∞) Jn(I) · sin(2π(fc + n·fm)t)
其中Jn(I)是第一类n阶贝塞尔函数。这个展开式揭示了FM合成的频谱结构:
- 载波fc处有一个分量,振幅为J0(I)
- 在fc ± fm, fc ± 2fm, fc ± 3fm...处有边带,振幅分别为J±1(I), J±2(I), J±3(I)...
2.2 贝塞尔函数与边带分析
2.2.1 贝塞尔函数的性质
第一类贝塞尔函数Jn(x)具有以下关键性质:
- 对称性:J-n(x) = (-1)^n · Jn(x)
- 归一化:Σ(n=-∞ to ∞) Jn²(x) = 1
- 递推关系:Jn-1(x) + Jn+1(x) = (2n/x) · Jn(x)
这些性质确保了FM合成的能量守恒和频谱对称性。
2.2.2 调制指数对频谱的影响
随着调制指数I的变化,各阶贝塞尔函数的值也在变化:
I = 0: J0(0) = 1, 其他Jn(0) = 0 → 纯正弦波
I = 0.5: 开始出现第一对边带
I = 2.4: J0(2.4) ≈ 0 → 载波消失!
I = 5: 产生约8对显著边带
这种动态变化是FM合成表现力的源泉。通过包络控制调制指数,我们可以创造从简单到复杂的动态音色。
2.2.3 边带振幅的计算
对于给定的调制指数I,第n阶边带的振幅为:
An = A · |Jn(I)|
边带的位置为:
fn = fc + n · fm
当n为负数时,如果fn < 0,该边带会"折返":
f'n = |fc + n · fm|
这种折返现象会产生非谐波分量,创造金属质感的音色。
2.2.4 有效带宽估算
Carson带宽规则给出了FM信号的有效带宽:
BW ≈ 2(Δf + fm) = 2fm(I + 1)
这个估算对于:
- 确定必要的采样率
- 预测混叠失真
- 优化计算资源
都具有重要意义。
2.3 载波与调制器的比例关系
2.3.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...(次谐波)
整数比例产生的音色具有明确的音高感,适合创造:
- 弦乐音色(1:1, 2:1)
- 管乐音色(3:1, 4:1)
- 类方波音色(1:2, 1:3)
2.3.2 非整数比例(非谐波频谱)
非整数比例产生非谐波频谱,创造金属、玻璃、钟声等音色:
fc:fm = 1:1.414 → 轻微失谐,增加音色厚度
fc:fm = 1:3.14 → 明显的非谐波,金属质感
fc:fm = 1:√2 → 钟声的典型比例
fc:fm = 1:黄金比 → 特殊的非谐波分布
2.3.3 比例关系的音色特征
不同的C:M比例具有独特的音色特征:
低比例(< 1:1):
特征:丰富的低频成分
应用:贝斯、低音打击乐
中比例(1:1 - 4:1):
特征:平衡的频谱分布
应用:主音色、和声音色
高比例(> 5:1):
特征:明亮、穿透力强
应用:铃声、高频装饰音
2.3.4 微调技巧
细微的比例调整可以产生丰富的音色变化:
1:1.000 → 静态谐波频谱
1:1.001 → 缓慢的拍频
1:1.010 → 快速的相位变化
1:1.100 → 轻微的非谐波感
这种微调技术在创造"活"的音色时特别有用。
2.4 DX7的算法架构
2.4.1 六运算器系统
DX7采用6个完全相同的运算器(Operator),每个运算器包含:
- 正弦波振荡器
- 4段包络发生器(ADSR的扩展)
- 键盘跟踪
- 速度敏感度
运算器结构:
[频率]
↓
[正弦振荡器]
↓
[包络发生器] ← [速度]
↓
[输出]
2.4.2 32种算法配置
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个独立正弦波,加法合成
2.4.3 典型算法分析
算法5(电钢琴):
[6]→[5] [4]→[3]
↓ ↓
[2] + [1] → 输出
- Op5-6产生金属敲击声(高I,快衰减)
- Op3-4产生主体音色(中I,慢衰减)
- Op1-2独立控制基频和泛音
算法8(贝斯):
[6]⟲
↓
[5]→[4] [3]→[2]
↓ ↓
[1] + [1] → 输出
- Op6反馈产生锯齿波特性
- 两条并联路径增加音色层次
2.4.4 运算器角色分配
在FM算法中,运算器扮演不同角色:
载波(Carrier):
- 直接输出到音频
- 决定音色的基础音高
- 通常使用较长的包络
调制器(Modulator):
- 调制其他运算器
- 控制音色的谐波含量
- 包络形状决定音色动态
混合角色:
- 既是载波又是调制器
- 创造复杂的调制链
- 实现音色的精细控制
2.5 实用FM音色设计技巧
2.5.1 基础音色类型
钟声/金属音色:
设计要点:
- 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
键跟踪: 负向跟踪衰减时间
2.5.2 包络控制策略
动态频谱控制:
原理:包络控制调制指数,实现频谱的时间演化
铜管音色示例:
初始阶段(0-50ms): I=5 → 丰富泛音(吹奏噪声)
过渡阶段(50-200ms): I=3 → 泛音减少
持续阶段(>200ms): I=1 → 稳定泛音
实现方法:
- 调制器包络:快起音,快衰减到持续电平
- 载波包络:慢起音,保持稳定
多包络协调:
层次化设计:
1. 调制器1:控制高频泛音(快变化)
2. 调制器2:控制中频泛音(中速变化)
3. 载波:控制整体音量(慢变化)
时间关系:
T_mod1 < T_mod2 < T_carrier
2.5.3 调制深度的动态控制
速度敏感度设置:
线性映射:
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
应用场景:
- 钢琴:高音区增加调制指数
- 贝斯:低音区减少调制指数
2.5.4 高级音色设计技巧
堆叠与分层:
技巧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比例)
- 带宽(调制指数)
- 振幅(输出电平)
2.5.5 常见音色配方
经典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)决定
-
C:M比例的影响: - 整数比产生谐波频谱 - 非整数比产生非谐波频谱
-
调制指数I的作用: - 控制频谱的复杂度 - 决定边带的数量和强度
-
DX7的创新: - 6运算器系统 - 32种算法提供灵活的调制路径 - 每个运算器都有独立的包络控制
-
音色设计原则: - 用包络动态控制调制指数 - 利用速度和键位跟踪增加表现力 - 通过算法选择实现音色分层
FM合成的魅力在于其参数空间的非线性:微小的参数变化可能带来巨大的音色差异。这既是挑战也是机遇,需要理论理解与实践经验的结合。
练习题
基础题
练习2.1 计算题:给定载波频率fc=440Hz,调制频率fm=110Hz,调制指数I=2,计算前5个边带的频率和相对振幅。
提示:使用贝塞尔函数表或近似公式计算Jn(2)
答案
边带频率和振幅:
- 载波(440Hz): J0(2) ≈ 0.224
- 第1对边带(330Hz, 550Hz): J1(2) ≈ 0.577
- 第2对边带(220Hz, 660Hz): J2(2) ≈ 0.353
- 第3对边带(110Hz, 770Hz): J3(2) ≈ 0.129
- 第4对边带(0Hz, 880Hz): J4(2) ≈ 0.034
注意0Hz分量会折返成直流偏移。
练习2.2 分析题:为什么C:M=1:1时,FM合成能产生类似锯齿波的频谱?从边带分布的角度解释。
提示:考虑边带位置与锯齿波谐波的对应关系
答案
当C:M=1:1时,设基频为f0:
- 载波在f0
- 边带在f0±f0, f0±2f0, f0±3f0...
- 即边带位于0, 2f0, 3f0, 4f0...
这正好对应锯齿波的谐波序列(基频及所有整数倍谐波)。通过调整调制指数I,可以控制各谐波的振幅分布,当I适中时(约2.4),能够得到接近锯齿波的谐波衰减特性。
练习2.3 实践题:设计一个简单的铜管音色,给出关键参数设置。
提示:铜管音色需要丰富的奇次谐波和特征性的起音
答案
铜管音色设计:
- 算法:使用2运算器串联(算法1)
- C:M比例:1:2(强调奇次谐波)
- 调制指数:
- 起音阶段:I=4-5(产生嘶嘶声)
- 持续阶段:I=1.5-2(稳定的谐波)
- 包络设置:
- 调制器:Attack=10ms, Decay=100ms, Sustain=40%
- 载波:Attack=20ms, Decay=200ms, Sustain=70%
- 速度响应:高速度增加调制指数(更亮的音色)
挑战题
练习2.4 理论推导:证明FM合成中能量守恒,即所有边带振幅的平方和等于载波振幅的平方。
提示:利用贝塞尔函数的正交性质
答案
根据贝塞尔函数的性质: Σ(n=-∞ to ∞) Jn²(I) = 1
对于振幅为A的FM信号: y(t) = A·Σ Jn(I)·sin(2π(fc+n·fm)t)
各边带的振幅为A·|Jn(I)|,因此: 总能量 ∝ Σ(A·|Jn(I)|)² = A²·Σ Jn²(I) = A²
这证明了无论调制指数如何变化,总能量保持不变,只是在不同频率成分间重新分配。
练习2.5 设计题:如何用FM合成模拟人声的共振峰?设计一个包含三个共振峰的配置。
提示:每个共振峰可以用一对运算器产生
答案
人声共振峰FM模拟方案:
使用算法32(6个并联运算器):
- Op1-2:第一共振峰(700Hz)
- Op1: fc=700Hz(载波)
-
Op2: fm=700Hz, I=1-2(窄带)
-
Op3-4:第二共振峰(1220Hz)
- Op3: fc=1220Hz
-
Op4: fm=1220Hz, I=1-1.5
-
Op5-6:第三共振峰(2600Hz)
- Op5: fc=2600Hz
- Op6: fm=2600Hz, I=0.5-1
通过动态调整各组的输出电平和中心频率,可以模拟不同的元音。使用包络控制共振峰的移动可以产生类似"哇"音的效果。
练习2.6 分析题:DX7的算法5为什么特别适合电钢琴音色?从音色成分的角度分析其优势。
提示:考虑电钢琴的击弦声和琴体共鸣的不同特性
答案
算法5的结构完美匹配电钢琴的声学特性:
-
双路径设计: - Op3→Op4路径:产生击弦的金属撞击声(高C:M比,快衰减) - Op5→Op6路径:产生另一组谐波成分 - Op1-2:独立载波,产生基音
-
音色分离: - 击弦声(瞬态):使用高比例(1:10-14),产生非谐波的金属声 - 琴体共鸣(稳态):使用低比例(1:1),产生温暖的谐波
-
动态控制: - 不同速度下,击弦声和共鸣的平衡不同 - 高速度:更多击弦声(明亮) - 低速度:更多共鸣(温暖)
这种分离控制是模拟合成难以实现的,展现了FM合成的独特优势。
练习2.7 开放思考题:如果要设计一个8运算器的FM合成器,你会如何改进DX7的架构?考虑哪些新的可能性?
提示:考虑更复杂的调制网络、多载波输出、立体声可能性
答案
8运算器FM合成器的改进方向:
-
增强的调制网络: - 支持运算器间的双向调制 - 可编程的调制矩阵(不限于预设算法) - 每个运算器可有多个调制输入,支持调制量的混合
-
立体声架构: - 4+4配置:左右声道各4个运算器 - 支持立体声调制效果 - 相位调制产生空间感
-
混合模式: - 部分运算器可切换为噪声源 - 支持采样回放作为调制源 - 可变波形(不限于正弦波)
-
高级反馈网络: - 多运算器环形反馈 - 可控的反馈延迟 - 反馈滤波处理
-
宏控制层: - 将8个运算器分组 - 组级别的包络和LFO - 智能音色变形系统
这些改进将大大扩展FM合成的表现力,特别是在创造复杂的演化音色和空间效果方面。
常见陷阱与错误
1. 调制指数的误解
错误:认为调制指数越大,音色越"好" 正确理解:过大的调制指数会产生过多的高频边带,导致:
- 金属刺耳的音色
- 可能产生混叠失真
- 失去音高感
调试技巧:从I=0开始逐渐增加,找到音色变化的"甜点"
2. 比例关系的精度问题
错误:使用不精确的比例值(如1:3.3333...) 问题:在长音持续时可能产生相位漂移
解决方案:
- 使用精确的小数(如1:3.5而非1:3.33)
- 或使用分数形式(7:2)
- 定期重置相位(在音符开始时)
3. 包络设置的常见错误
错误:所有运算器使用相同的包络 后果:音色缺乏动态变化,听起来呆板
正确做法:
- 调制器包络应该比载波包络变化更快
- 高频成分(高阶调制器)衰减更快
- 利用包络差异创造音色演化
4. 速度响应的线性映射
错误:将MIDI速度线性映射到调制指数 问题:听感上不自然,低速度时变化不明显
改进:使用指数或对数曲线映射,更符合人耳感知
5. 忽视键位跟踪
错误:所有音高使用相同的FM参数 表现:高音区过暗,低音区过亮
解决:实施键位跟踪,根据音高调整:
- 调制指数
- 包络时间
- 输出电平
6. 反馈使用不当
错误:过度使用反馈 后果:产生不可控的噪声或啸叫
安全范围:
- 一般反馈量控制在0-7(DX7刻度)
- 用于产生锯齿波:5-7
- 轻微的谐波丰富:1-3
7. 数字实现的采样率问题
错误:忽视FM产生的高频成分 问题:产生混叠失真
预防:
- 使用过采样(2x或4x)
- 实施带限(在调制指数很大时)
- 监控最高边带频率
通过理解这些常见问题,可以更有效地设计和调试FM音色,充分发挥这种强大合成方法的潜力。