logo
0
0
WeChat Login
fix: recording and WAV generation bugs

Ambient | 谧境

纯算法环境音乐生成器

无需音频文件,无需 AI 模型,纯粹的数学、波形与概率

Tech License Demo


✨ 特点

  • 🎵 纯算法生成 — 实时生成舒缓的环境音乐,无预录音频
  • 🎛️ 实时调节 — 5个参数实时控制音乐风格
  • 🔢 数学之美 — 基于 C 大调五声音阶,数学概率控制音符
  • 🎹 波形合成 — 正弦波与三角波交织,柔和动听
  • 🌊 空间感 — 延迟效果器营造沉浸式听觉体验
  • 零依赖 — 单个 HTML 文件,纯原生 JavaScript + Web Audio API
  • 📱 响应式 — 适配桌面和移动设备
  • ⏱️ 定时关闭 — 支持定时停止播放,适合睡眠场景
  • 💾 离线生成 — 直接生成指定时长的 WAV 音频文件
  • 🔴 实时录制 — 录制当前播放内容为 WebM 格式

🎛️ 可调参数

参数功能范围
音符密度控制音符出现的频率稀疏 ↔ 密集 (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秒回声,制造空间感可调节回声强度
低通滤波柔化高频,制造温暖感可调节滤波频率

包络线 (ADSR)

每个音符采用超长 Attack 和 Release,实现平滑的淡入淡出:

音量 ▲ │ ╱────────╲ │ ╱ ╲ │ ╱ ╲ │ ╱ ╲ └──────────────────▶ 时间 Attack Sustain Release

🚀 快速开始

在线体验

👉 在线演示

本地运行

# 克隆项目 git clone https://cnb.cool/lzf.ai/utils/ambient.git # 直接打开 HTML 文件 open ambient/index.html # 或使用本地服务器 npx serve ambient

⏱️ 定时关闭

适合睡前聆听或冥想场景:

  • 预设时长:15分 / 30分 / 1小时 / 2小时
  • 支持自定义时长(最长8小时)
  • 播放时显示剩余时间倒计时
  • 时间到自动停止播放

💾 下载音频

点击"生成并下载 WAV"按钮:

  1. 选择生成时长(1/5/10/15/30/60 分钟)
  2. 点击生成按钮
  3. 等待离线渲染完成
  4. 自动下载 WAV 文件

技术原理:使用 OfflineAudioContext 离线渲染所有音符事件,生成无损 WAV 格式。


🔴 录制音频

实时录制当前播放内容:

  1. 点击"开始播放"
  2. 点击"开始录制"(按钮变红闪烁)
  3. 随时点击"停止录制"
  4. 自动下载 WebM 文件

技术原理:使用 MediaRecorder 录制实时音频流,生成 WebM 格式。


🛠️ 技术栈

技术用途
Web Audio API音频合成与处理
OscillatorNode波形生成 (正弦波/三角波)
GainNode音量包络控制
BiquadFilterNode低通滤波器
DelayNode延迟效果器
OfflineAudioContext离线音频渲染
MediaRecorder实时录制

📂 项目结构

ambient/ ├── index.html # 唯一文件,包含 HTML + CSS + JavaScript └── README.md # 项目文档

🎨 设计理念

"用最简单的规则,创造最和谐的旋律。"

为什么选择五声音阶?

  • 五声音阶 (Pentatonic Scale) 是全球音乐文化的共同语言
  • 任意音符组合都不会产生刺耳的不协和音
  • 常见于民谣、蓝调、爵士等舒缓音乐风格

为什么用算法而不是 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';

改变 Drone 音高

// 改为 G2 低音 droneOsc.frequency.value = 98.00; // G2

🤝 贡献

欢迎提交 Issue 和 Pull Request!


📄 License

MIT License


Made with 🎵 and mathematics

About

Ambient | 谧境