无限背景音乐

3周前发布 42 00

浏览器端实时生成音乐 —— 打开网页点一下播放,音乐当场合成,永远不重复。 没有音频文件、没有曲库、没有服务器(访问计数除外),整个合成引擎跑在你的浏览器里。

所在地:
Jweokk
收录时间:
2026-10-06
其他站点:
无限背景音乐无限背景音乐

infinite‑bgm(无限背景音乐),基于 Web Audio API 的纯前端生成式音乐引擎。全部音乐在浏览器内实时运算合成,没有预存音频文件、没有曲库,除可选访问统计外不需要后端服务器。网页点击播放就即时生成音乐,可以无限播放、不会循环重复。

无限背景音乐

核心能力

内置 16种音乐风格:
Lofi、Zen、Jazzhop、Meditation、Ambient、Japanese、Nature、Sleep、Cinematic、Minimal、Dream、Synthwave、Deep House、Neo‑Classical、Chiptune、Dark Ambient。

  • 种子(Seed)确定性复现:相同种子+相同风格,会产出完全一致的音乐片段。可以记录种子,或者分享携带?seed=参数的链接,换设备、隔时间打开,复现同一配乐。
  • 真正无限播放:按小节滚动实时生成,连续播放数小时也不会回到开头循环。
  • 使用场景预设:漂流无尽、专注、睡眠、冥想,一键切换对应编排配置。

项目特性

  1. 零运行时依赖,整体体积约220KB,gzip压缩后仅约60KB;插件化架构,核心引擎与乐器、效果器、风格完全解耦。包含13种乐器、10种音频效果器、16套风格插件。
  2. 平滑切换风格/种子:在小节边界做交叉淡化,不会爆音、不会中断音乐。
  3. 完整中英双语UI:界面、参数、帮助、报错全部双语,右上角一键切换。
  4. 亮/暗双主题:跟随系统或者手动切换,设置本地持久保存。
  5. 移动端适配:MediaSession锁屏媒体控制、WakeLock播放防熄屏、iOS音频路由修复。
  6. 全屏事件驱动可视化画布,投屏友好,空闲自动隐藏鼠标光标。
  7. 支持URL参数?seed=?lang=?theme=,配置存入localStorage,刷新页面保留用户偏好。
  8. 访问计数为可选组件,不开启不影响全部音乐功能,获取不到统计接口前端就自动隐藏计数。

开发与构建

Node.js ≥ 18;仅构建阶段依赖Vite / TypeScript / Vitest,运行时代码无任何依赖。

git clone https://github.com/Jweokk/infinite-bgm.git
cd infinite-bgm/music-engine
npm install
npm run dev      # 开发服务器,--host开启,局域网手机可访问

脚本命令:

  • npm run dev:Vite开发服务
  • npm run build:类型检查并打包输出到dist/
  • npm run test:执行全部175个单元测试
  • npm run typecheck:仅做TS类型检查

部署

产物为纯静态文件,把打包输出的dist/目录上传到任意静态托管服务即可,如 Nginx、Netlify、Vercel、Cloudflare Pages。
仓库附带现成生产配置:

  • nginx.conf:静态托管、gzip压缩、缓存、CSP安全头;
  • security‑headers.conf:安全响应头;
  • docker‑compose.yml:静态站点容器;
  • counter/:纯Python标准库实现的可选访问计数后端。

Docker两种部署模式:

# 仅部署静态站(最小,无访问统计)
docker compose up -d --build bgm

# 静态站 + 开启访问计数(生成token写入.env)
echo "BGM_STATS_TOKEN=$(openssl rand -hex 16)" > .env
docker compose up -d --build

访问计数功能可选关闭,关闭不影响音乐生成、播放全部能力。

要点小结

  1. 完全浏览器本地WebAudio实时合成BGM,无音频文件、无曲库,不需要后端;
  2. 16种风格,种子机制可以复现好听片段,音乐不会循环;
  3. 轻量,gzip后仅60KB,插件化架构,双语、明暗主题、移动端锁屏控制齐全;
  4. 输出纯静态dist包,随便静态托管部署;访问计数是可选附加组件,默认可关闭。

相关导航