1960 年代的中国工程师如何在 20 天空间寿命要求下,让一颗卫星稳定演奏出 6 个音符的《东方红》? 答案不是磁带、不是方波蜂鸣器,而是 6 只精心调谐的 LC 槽路振荡器——并且 \(H_2 \approx -23\ \mathrm{dB}\) 的二次谐波是故意设计的, 为了让纯正弦不至于太单调。
《东方红》乐音是 DFH-1 最具识别度的"声音名片"。问题是:在 1970 年的可靠性约束下 (20 天在轨、无大气、无人维护、温度循环 ±100 °C),如何稳定产生 6 个明确音高的乐音? 方案选择直接决定了我们今天在录音里能听到什么样的频谱。
本章后续所有谐波测量均基于此段录音。
据 502 所 刘承熙 工程师的回忆,方案最初考虑过磁带录音机, 但很快被否决——磁带、磁头、压带轮都是运动部件,在真空+冷热循环下可靠性 难以保证,磁带本身在低气压下还有放气问题。最终方案锁定为纯电子线路:
"用 6 个不同的音源振荡器代替 6 个不同的键。"
"为使单调的电子音频更好听,他们在单音频上增加了二次谐波等。"
— 502 所档案,关于《东方红》乐音电路的设计回忆
两句话信息密度极高:第一句确定了拓扑(6 路并行振荡器,按节奏门控相加), 第二句直接给出了一条可被频谱测量证伪/证实的工程学陈述:信号不是纯正弦, 而是带有刻意叠加的二次谐波。上海国光口琴厂协助进行了音高调谐—— 口琴厂熟悉簧片基频校准,是当时国内为数不多能给出标准音高参考的单位。
在听到录音之前,先把候选波形的理论谐波含量列出来。这样测量出的 \(H_2 / H_3 / H_4\) 就能直接对号入座:
| 波形 | \(H_1\) (基频) | \(H_2\) (\(2f_0\)) | \(H_3\) (\(3f_0\)) | \(H_4\) (\(4f_0\)) | \(H_5\) (\(5f_0\)) | 声音特征 |
|---|---|---|---|---|---|---|
| 纯正弦 | \(0\) | \(-\infty\) | \(-\infty\) | \(-\infty\) | \(-\infty\) | "干净"、空灵、单调 |
| 方波 | \(0\) | \(-\infty\) (无偶次) | \(-9.5\) | \(-\infty\) | \(-14.0\) | "嗡嗡"刺耳,电子蜂鸣 |
| 三角波 | \(0\) | \(-\infty\) (无偶次) | \(-19.1\) | \(-\infty\) | \(-28.0\) | 柔和但仍偏方形味 |
| 锯齿波 | \(0\) | \(-6.0\) | \(-9.5\) | \(-12.0\) | \(-14.0\) | "亮"、像弓弦 |
| LC 槽路(近正弦带轻度非线性) | \(0\) | \(-20 \sim -30\) | \(-30 \sim -45\) | \(-45 \sim -60\) | \(<-55\) | 近正弦但温润有"色" |
单位:相对基频的 dB。
注意几个关键判别点:方波/三角波严格不含偶次谐波(\(H_2 = -\infty\)), 锯齿波 \(H_2 / H_3\) 都很强(远高于 \(-20\ \mathrm{dB}\)),只有"近正弦 + 轻度非线性"的 LC 振荡器 能产生 \(H_2\) 在 \(-20 \sim -30\ \mathrm{dB}\)、\(H_3\) 比 \(H_2\) 还要更低十多个 dB 的"指数衰减"特征。
把目光锁定到 LC 槽路 + 晶体管轻度非线性这一族拓扑。我们没有直接测出 \(Q\), 但可以构造一个最小综合信号,它的谐波电平正好等于实测的 \(\{0, -23, -36, -51, -65\}\) dB,再画出它的功率谱作为对照参考:
除了单点 FFT,把整个乐段画成时频图,每一个音和它的谐波就直接显形:
对录音里 7 个清晰音段做 FFT,每个音取稳态段 ~200 ms,加 Hann 窗。 基频和高次谐波的功率以 dB 相对基频列出:
| 音段时间 | \(f_0\) (Hz) | \(H_2\) | \(H_3\) | \(H_4\) | \(H_5\) |
|---|---|---|---|---|---|
| \(t = 0.5\ \mathrm{s}\) | 1070 | \(-22\) | \(-37\) | \(-51\) | \(-56\) |
| \(t = 3.0\ \mathrm{s}\) | 805 | \(-22\) | \(-35\) | \(-47\) | \(-57\) |
| \(t = 5.5\ \mathrm{s}\) | 805 | \(-23\) | \(-34\) | \(-47\) | \(-60\) |
| \(t = 8.0\ \mathrm{s}\) | 805 | \(-23\) | \(-36\) | \(-47\) | \(-63\) |
| \(t = 12.0\ \mathrm{s}\) | 1074 | \(-23\) | \(-41\) | \(-94\) | \(-94\) |
| \(t = 17.0\ \mathrm{s}\) | 805 | \(-24\) | \(-33\) | \(-47\) | \(-70\) |
| \(t = 28.0\ \mathrm{s}\) | 805 | \(-28\) | \(-37\) | \(-54\) | \(-87\) |
| 平均 | — | \(\approx -23\) | \(\approx -36\) | \(\approx -51\) | \(< -65\) |
单位:相对基频的 dB。
七个音的 \(H_2\) 全部落在 \(-22 \sim -28\ \mathrm{dB}\) 这个非常窄的带内,标准差不到 2 dB。 \(H_3\) 比 \(H_2\) 进一步低 \(\sim\!13\ \mathrm{dB}\),\(H_4\) 又低 \(\sim\!15\ \mathrm{dB}\)。这是跨多个音高的稳定特征, 说明它来自电路本身的转移函数,而不是录音/调制链的偶发产物。
图中实测柱(蓝色)与"近正弦 LC"几乎重合,与方波/三角波在 \(H_2\) 处的差距 > 20 dB (方波三角波此处理论应为 \(-\infty\),图中以 \(-80\ \mathrm{dB}\) 截断),与锯齿波在 \(H_2\) 处差距 \(\sim\!17\ \mathrm{dB}\)。 视觉上一目了然:源不是开关型振荡器,是谐振型振荡器。
这条频谱证据能排除什么、能确认什么,要分清:
如果工程师的目标只是"6 个明确音高",最容易的做法是用高 Q 晶体或高 Q LC 槽路 得到几乎纯正弦。但 502 所档案明确说他们主动叠加了二次谐波。 为什么?
| 方案 | \(H_2\) 含量 | 主观听感 | 工程权衡 |
|---|---|---|---|
| 纯正弦 (\(H_2 < -60\ \mathrm{dB}\)) | 极弱 | "干净"但单调,像信号发生器测试音 | 需要更高 \(Q\) 元件,反而更挑剔 |
| 实测:\(H_2 \approx -23\ \mathrm{dB}\) | 适中 | 类似钟磬/口琴的"温润"音色 | 普通晶体管 LC 振荡器自然达到,无需额外滤波 |
| 方波 (\(H_3 = -9.5\ \mathrm{dB}\)) | 无 \(H_2\),但 \(H_3\) 太强 | 电子蜂鸣器,刺耳 | 电路最简,但音质不可接受 |
\(-23\ \mathrm{dB}\) 是个"甜蜜点"——足够给单音染上一点泛音色彩,让音色有"骨头有肉", 又不至于像方波那样刺耳。据当时的设计参考,北京站的报时钟声是音色 灵感来源;钟磬类乐器恰恰在基频之上有几个有限的、衰减很快的偶次/奇次泛音, 和 LC 振荡器自然的非线性输出在频谱上同构。
基于频谱证据 + 502 所档案,可以反推出如下功能框图(用 graphviz 渲染):
前面几节给出了每个音的两组测量结果: (a) 基频 \(f_0\)(6 路 LC 振荡器各自的标定频率), (b) 谐波幅度 \(\{H_1, H_2, H_3, H_4, H_5\}\)(实测 \(\{0, -23, -36, -51, -65\}\) dB), 还有(c) 振幅包络 \(E(t)\)(50% 起音 \(\sim 10\) ms、90% 起音 \(\sim 350\) ms 的缓启动 + 持续 + 短衰减)。 这三组数能直接拼出每个音的时域波形公式—— 如果你想在 numpy / SciPy / Audacity 里"重新合成 DFH-1 的乐音", 下面这一行就是入口。
其中:
从 CHINA1 单音的 Hilbert 包络(见前面图)看到两个明显的时间尺度: 快速门控(\(\tau_1 \approx 5\) ms,对应电子开关瞬间打开)+ 振幅缓启动 (\(\tau_2 \approx 150\) ms,让 90% 上升点拖到 \(\sim 350\) ms)。 持续段约 200–300 ms,结尾有几十 ms 的指数衰减。一个足够好的两段拟合:
\[ E(t) \;=\; \begin{cases} \bigl(1 - e^{-t/\tau_1}\bigr)\bigl(1 - e^{-t/\tau_2}\bigr), & 0 \le t < t_{\text{off}} \\[0.4em] E(t_{\text{off}}) \cdot e^{-(t - t_{\text{off}})/\tau_3}, & t \ge t_{\text{off}} \end{cases} \]典型数值:\(\tau_1 = 5\) ms(快门控),\(\tau_2 = 150\) ms(缓启),\(\tau_3 = 30\) ms(释音), \(t_{\text{off}}\) 由节拍 ROM 决定(约 250–500 ms 一个音)。
下面就是把上面公式具体化成 6 张"波形配方卡"——每一行一个音都是即用:
| 音 (octave) | \(f_0\) (Hz) | 线性幅度 \(\{a_1,a_2,a_3,a_4,a_5\}\) (统一来自实测) | 合成式 \(s(t)\) — 取 \(\varphi_n = 0\) 形式 |
|---|---|---|---|
| G\(_5\) | 797 | \(\{1,\ 0.0708,\ 0.0158,\ 0.00282,\ 5.6{\times}10^{-4}\}\) | \(E(t)\sum_{n=1}^{5} a_n \cos(2\pi n \cdot 797\, t)\) |
| A\(_5\) | 895 | \(E(t)\sum_{n=1}^{5} a_n \cos(2\pi n \cdot 895\, t)\) | |
| C\(_6\) | 1075 | \(E(t)\sum_{n=1}^{5} a_n \cos(2\pi n \cdot 1075\, t)\) | |
| D\(_6\) | 1195 | \(E(t)\sum_{n=1}^{5} a_n \cos(2\pi n \cdot 1195\, t)\) | |
| F\(_6\) | 1420 | \(E(t)\sum_{n=1}^{5} a_n \cos(2\pi n \cdot 1420\, t)\) | |
| G\(_6\) | 1595 | \(E(t)\sum_{n=1}^{5} a_n \cos(2\pi n \cdot 1595\, t)\) |
设 \(1' = 1075\) Hz 为参考音"do",对照 6 路的频率比:
| 音程 | 实测比 \(f / f_{1'}\) | 纯律比 | 偏差 (cents) |
|---|---|---|---|
| 5 (sol, 下方四度) | 0.741 | 3/4 = 0.750 | −21 |
| 6 (la, 下方小三度) | 0.833 | 5/6 = 0.833 | −1 |
| 1' | 1.000 | 1 | 0 |
| 2' (re) | 1.112 | 9/8 = 1.125 | −21 |
| 3' (mi → 偏 fa♯) | 1.321 | 5/4 / 4/3 | 在 mi/fa 之间 |
| 5' (sol) | 1.484 | 3/2 = 1.500 | −18 |
6 路音不严格符合等律平均:sol/la/re/sol' 系统性比纯律低约 \(20\) cents, 3' 介于 mi 和 fa♯ 之间。这种偏移是模拟元件 1\(\sim\)2% 容差的常见后果—— LC 槽路本身只解一阶谐振方程,公差直接打到频率上。
最有意思的不是公式本身能不能跑,而是它跑出来的结果和 1970 年那段录音差多远。 下图把上面那条公式合成的单音直接覆盖在 CHINA1 录音里 \(t \approx 3\) s 一个稳定音段上, 对照三个层面:持续段时域波形(30 ms 缩放)、整段包络(650 ms)、稳态频谱(200 ms Hann FFT)。
"合成式 = 实测 dB 系数 + 简单包络"已经把一个音的听感主体抓住—— 人耳能分辨的差异主要是:(a) 缺失的起音瞬态精细结构,(b) 缺失的相位信息(合成里 \(\varphi_n = 0\)), (c) 缺失的温度漂移与起振 chirp。这三项要进一步复现,需要对每个音的瞬时频谱 做参数化建模——本博客没有走到那一步。但即便不走,公式本身已经够"听起来对"。
上面公式假定信号源是稳态简谐合成。真实 LC 振荡器在每次起振 / 收音瞬间会有:
所以这套公式能复现"听起来对",不能复现"示波器上和原始电路完全一致"。 模拟器件不是线性的——但只要把它当成一阶模型 + 显式 \(\{a_n\}\) 测量项, 回放误差就只是chirp 与温度漂移的二阶项,听感差异已经低于人耳辨识阈值。
合成版与原录音的听感差异并不全在音乐本身——还有录音链路的连续背景信号。 对 ChinSat 整段 40 秒音乐做持续性谱分析(每个频点过 \(P_{90}\) 的 40% 阈值的时间占比), 能看到只有 3 条始终亮着的频点:
| 频率 (Hz) | 持续度 | 时间平均功率 (dB) | 身份 |
|---|---|---|---|
| 50.0 | 0.75 | \(-23.6\) | 欧洲交流电网基频 |
| 100.0 | 0.87 | \(-13.1\) | 整流器二次谐波(最强) |
| 150.0 | 0.65 | \(-21.4\) | 整流器三次谐波 |
这条发现解释了几件事:
DFH-1 的乐音电路是个非常朴素的"硬连线 ROM 音乐盒":一只主时钟分频成 ~3 Hz 节拍时钟,节拍时钟驱动一个二极管矩阵 ROM 顺序走址, 每个地址里写着"现在哪一只 LC 振荡器开门"的位模式(6 位,对应 6 个 LC 通道)。 振荡器是一直运行的;ROM 切换地址时只是切换哪一路被开门放出来。 门切换的间隙(驱动器 RC 整定,~ 30 ms)就成为音与音之间的小停顿, 也是这段录音听感像音乐盒而不是连绵 synth pad 的根本原因。
502 所档案对乐音电路的设计目标本来就是"钟磬般"的金属感—— 高 Q LC 谐振 + 缓慢的释音衰减,让每个音在门关上之后仍然慢慢"叮"出去, 和下一个音的起音在时间上重叠。这是合成器要复制的关键听感,不是"硬切换 + 静音"的音乐盒模型。
本节的合成器按这个目标搭建:
chinsat_melody.mp3。
这是要对照的 SoT。x ** 1.4 缓和的幂曲线,让字间凹陷读到"接近 0"
而不是"残留 17%";理论上剩下的差异只来自录音链路,不来自卫星信号:
这些都故意没有补——目标是复现卫星信号本身,而不是模拟接收链路的瑕疵。 合成版听感比原录音"干净一截"是预期内的;原录音多出来的"暖"几乎全部来自上面几项。
下方播放器:顶部是切换按钮 + 音频控件,底下是实时滚动频谱瀑布 (X 轴=时间向左流逝,Y 轴=频率 0–3 kHz,颜色亮度=瞬时功率,瀑布在暂停时也暂停)。 切换源时当前播放时间会保留,可以"跳到 t=15 s,听原录音;按下合成;听同一时刻"。
对比要点:三段音频同一旋律时间线,亮带切换位置一致;区别在条带形态—— 原录音版的横亮带有上下抖动(温度 + 磁带 wow/flutter)、条带间纵向噪底(hiss + AM 残余)、 起音/收音的水平模糊(包络瞬态非简谐项); 3-周期降噪版利用 ChinSat 录到的 3 段重复音乐——ROM 信号每段相同、磁带噪声每段独立—— 互相关对齐之后逐样本取中位数,纵向噪底压下去 ~5 dB,但 wow/flutter 还在(每段都有一份); 合成版的条带笔直、均匀。 这正是"\(s(t) = E(t)\sum_n a_n \cos(2\pi n f_0 t)\) 公式 vs 真实 1970 年模拟链路"的二阶差距。
沿着上面框图自上而下,把每一级的输出实际画出来:
关键参数估计:
对每个音做 Hilbert 包络分析,提取 50% / 90% 起音时间:
下一章用实践一号(1971)的遥测做交叉验证——同一研制单位的下一颗 卫星,没有《东方红》乐音电路,但保留了相同风格的 VCO 多路复用调制方案, 是判断 DFH-1 系统设计延续性的关键参考。