8BitSynth:方程求解合成与复古芯片音色
什么是方程求解合成?
8BitSynth 的发声原理和其他所有合成器都不同——它不是振荡器查表、不是波形采样、不是泛音表。它是在每一个采样点上实时求解一个数学方程来决定输出值。
具体来说,你给 8BitSynth 一个方程(类似 y = sin(x) 或 y = tan(x * freq)),它以 44100 次/秒的速度计算这个方程的结果,就是声音波形。
为什么叫 8Bit?
方程求解可以精确模拟经典 8 位游戏机的硬件声音芯片:
| 游戏芯片 | 时代 | 声音特点 |
|---|---|---|
| NES APU | 1983 | 方波 + 三角波 + 噪声 + DPCM 采样 |
| Commodore 64 SID | 1982 | 3 振荡器 + 滤波 + ADSR,声音最"脏" |
| Game Boy DMG | 1989 | 2 方波 + 1 波形采样 + 噪声 |
| Atari 2600 TIA | 1977 | 2 声音 + 白噪声,最简单的芯片声 |
8BitSynth 预存了这些经典芯片的方程模板,一键切换就能复刻。
核心参数
方程选择
8BitSynth 预存的方程类型包括:
- 经典方波 / 锯齿波 / 三角波 / 正弦波
- NES 风格方程
- SID 风格方程
- Game Boy 风格方程
- Atari 风格方程
- 用户自定义方程
可调参数
| 控件 | 功能 |
|---|---|
| Bit Depth | 采样位深:4/6/8/16/32 bit——越低越有"数字压缩感" |
| Wave Resolution | 波形分辨率 |
| Oscillator Mix | 多个振荡器混合比例(NES 有 4 通道,SID 有 3 通道) |
| Noise Level | 噪声通道的音量——Game Boy 和 Atari 都依赖噪声做打击乐 |
| Filter | 低通 / 高通 / 带通 |
| ADSR | 包络控制 |
典型音色参数
Game Boy 风格 Lead
方程: Game Boy (2 方波)
Bit Depth: 4
Osc Mix: 50%
Filter: 低通 Cutoff 60%
ADSR: Attack 10ms Decay 50ms Sustain 80% Release 200ms
加上一点点 Saturation 效果,就是原版 Game Boy 的游戏 BGM 音色。
SID Bassline
方程: SID (3 振荡器)
Bit Depth: 8
Osc Mix: Osc1 锯齿 Osc2 方波高 12 半音 Osc3 噪声
Filter: 低通 Cutoff 30% Resonance 70%
与其他合成器的对比
| 对比 | 8BitSynth | Subsynth | PCMSynth |
|---|---|---|---|
| 发声原理 | 实时方程求解 | 振荡器 + 滤波 | 波形采样回放 |
| 音色 | 纯数字化、芯片味 | 模拟感、温暖 | 真实采样、灵活 |
| 可调范围 | 方程本身就是参数 | 振荡器/滤波/LFO/包络 | 采样 + 经典合成器模块 |
| 资源占用 | 中(每采样点要算) | 低 | 中 |
做一首 Chiptune 的思路
- 添加 2~3 台 8BitSynth,分别设为 NES 方波、三角波、噪声
- 第一台做主旋律(方波),第二台做贝斯(三角波低八度),第三台做打击乐(噪声 + 短包络)
- 每台都用 4 bit 或 6 bit 深度
- 导出 WAV 时选 44100Hz 采样率保持一致性
自定义方程
8BitSynth 支持输入自定义数学方程。语法基于简化版 C 语法:
y = sin(2*PI*x) // 正弦波
y = sign(sin(2*PI*x)) // 方波
y = (2/PI)*asin(sin(2*PI*x)) // 三角波
其中 x 是相位变量(0 到 2π 循环),y 是输出值。方程写得越复杂,声音越独特——可以试着加入乘法、除法、绝对值等运算。
下一步
8BitSynth 是纯数学合成,接下来看 KSSynth——基于物理建模的 Karplus-Strong 弦合成。