| 参数 | 功能 | 范围 |
|---|---|---|
| 音符密度 | 控制音符出现的频率 | 稀疏 ↔ 密集 (1-10) |
| 音色明亮 | 低通滤波器频率 | 柔和 ↔ 明亮 (200-2000 Hz) |
| 空间回声 | 延迟效果强度 | 0-100% |
| 低音铺底 | Drone 低频音量 | 0-100% |
| 主音量 | 总输出音量 | 0-100% |
概率 + 波形 + 时间 = 音乐
采用 C 大调五声音阶 (C-D-E-G-A),跨越三个八度:
Octave 3: 130.81, 146.83, 164.81, 196.00, 220.00 Hz Octave 4: 261.63, 293.66, 329.63, 392.00, 440.00 Hz Octave 5: 523.25, 587.33, 659.25, 783.99, 880.00 Hz
五声音阶的特性确保任意音符组合都和谐悦耳。
| 层级 | 描述 | 参数 |
|---|---|---|
| 随机音符 | 随机选择音高、波形、音量 | Attack 2-4s,Release 4-8s |
| 低音 Drone | 持续的 C2 极低音铺底 | Triangle 波形 |
| 延迟效果 | 1.5秒回声,制造空间感 | 可调节回声强度 |
| 低通滤波 | 柔化高频,制造温暖感 | 可调节滤波频率 |
每个音符采用超长 Attack 和 Release,实现平滑的淡入淡出:
音量 ▲ │ ╱────────╲ │ ╱ ╲ │ ╱ ╲ │ ╱ ╲ └──────────────────▶ 时间 Attack Sustain Release
👉 在线演示
# 克隆项目
git clone https://cnb.cool/lzf.ai/utils/ambient.git
# 直接打开 HTML 文件
open ambient/index.html
# 或使用本地服务器
npx serve ambient
适合睡前聆听或冥想场景:
点击"生成并下载 WAV"按钮:
技术原理:使用 OfflineAudioContext 离线渲染所有音符事件,生成无损 WAV 格式。
实时录制当前播放内容:
技术原理:使用 MediaRecorder 录制实时音频流,生成 WebM 格式。
| 技术 | 用途 |
|---|---|
| Web Audio API | 音频合成与处理 |
| OscillatorNode | 波形生成 (正弦波/三角波) |
| GainNode | 音量包络控制 |
| BiquadFilterNode | 低通滤波器 |
| DelayNode | 延迟效果器 |
| OfflineAudioContext | 离线音频渲染 |
| MediaRecorder | 实时录制 |
ambient/ ├── index.html # 唯一文件,包含 HTML + CSS + JavaScript └── README.md # 项目文档
"用最简单的规则,创造最和谐的旋律。"
为什么选择五声音阶?
为什么用算法而不是 AI?
修改 index.html 中的参数来创造不同风格:
// 改为 D 小调五声音阶
const scale = [
146.83, 174.61, 196.00, 220.00, 261.63,
293.66, 349.23, 392.00, 440.00, 523.25
];
// 使用更明亮的方波和锯齿波
osc.type = Math.random() > 0.5 ? 'square' : 'sawtooth';
// 改为 G2 低音
droneOsc.frequency.value = 98.00; // G2
欢迎提交 Issue 和 Pull Request!
MIT License
Made with 🎵 and mathematics