你是否曾在深夜想要一段“远处公路”那种沙沙声,但打开常用的白噪音生成器,只有白、粉、棕几个固定选项?传统噪声分类太粗,没法精确到“略带金属感的低频嗡鸣”。HSL-Noise 这个实验项目,把噪声频谱映射到 HSL 颜色空间,让你像调色一样调声音。
基本原理:在颜色模型里,HSL 用色相(Hue)、饱和度(Saturation)、明度(Lightness)三个维度描述颜色。作者把这三维分别对应到噪声频谱的三个参数:色相决定钟形曲线的中心频率——红色(0°)对应20Hz低频,蓝色(240°)对应20kHz高频,绿色(120°)恰好居中。饱和度决定带宽——饱和度降为0时变成灰色,即白噪声(所有频率等能量);饱和度100%则收敛成几乎单一频率的纯音。明度则控制频谱峰的形状——暗色像“剪掉裙边”的峰,听起来空洞;亮色让峰更丰满,直到再次接近白噪声。
实现上,每个“颜色噪声”是一组高斯分布叠加在频谱上的结果。中心频率由色相线性映射,饱和度控制方差(标准差),明度控制峰值幅度。作者还加入了两个额外效果:Alpha 透明度能模拟“绒面噪声”的稀疏感,产生颗粒质感;梳状滤波器给频谱加上周期性波纹,产生类似雨滴砸在玻璃上的“叮叮”共振。此外,工具提供“保持RMS”选项——即让输出电平与相同明度的白噪声保持一致,避免亮度变化导致音量猛跌;还有自动扫频功能,可以沿着色相轴缓慢移动中心频率,方便你试听不同色相的听感差异。
滑块操控被调校得响应迅速,所有参数都会实时编码进页面 URL 的查询字符串里。你调好一个声场,复制链接发给朋友,对方打开就能听到完全相同的效果——比保存音频文件更轻量。甚至可以在两个浏览器标签页里分别生成不同颜色参数的噪声,比如“火焰嗡嗡”和“木头噼啪”,同时播放,就能叠加出复杂的场景声。
当然它也有局限:经典噪声如布朗噪声(Brownian,功率谱按 1/f² 衰减)和粉噪(Pink,按 1/f 衰减)的频谱是一条直线斜率,而钟形曲线无法精确拟合,只能近似。不过作者认为对于大多数听感场景,近似已经足够。他也分享了自己最爱的是“绿色噪声”——色相120°,听感类似远处高速公路,并觉得这种噪声在背景音爱好者里被低估了。
这个项目的意义不只在于一个玩具。它展示了如何用视觉隐喻来降低抽象信号参数的理解门槛:我们天生擅长区分颜色,但很难直觉理解频谱带宽、中心频率这些专业概念。把二者绑定后,任何人拖动滑块都能直观地塑造声音。源码已在 GitHub 开源,包含数学推导和设计决策注释。对于做音频工具、声音可视化、甚至交互设计的开发者,这是一个绝佳的参考——你可以借鉴“颜色=频谱”的映射方式,或者学习如何将用户熟悉的视觉概念用来操控其他抽象参数。比如你的应用需要一个“频谱预设选择器”,用色块代替列表也许更友好。
内容与图片版权归原作者所有 · 原文: https://hsl-noise.mitpit.com/