@a2f0/dnbm

中文文档
0.4.34发布于 2026/11/07UNLICENSEDTypeScriptES Module零依赖构建来源已验证近 30 天下载 5488

一个深色鼓和低音序列器、混音器和播放器,带有WebAssembly音频引擎,准备嵌入一页

中文使用文档
文档目录5 节
  1. 快开始
  2. 版式
  3. 歌声
  4. 软件包
  5. 发展

数字

浏览器中的暗鼓和低音序列和混音器. 步骤上的程序模式 网格,将其安排成一首歌曲,与每道过滤器相混合,驱动和发送,以及 将歌曲保存为纯文本, 在 Git 中清晰地 diff 并合并 . 此回波可在网络上获取 https://dnbm.a2f0.net (中文(简体) )。它的玩家,在 https://dnbm.a2f0.net/ player/ (中文(简体) ),作为播放列表播放示例歌曲.

声音来自编译为Web Assembly的Rust引擎并运行在AudioWorklet上. 每个鼓和贝斯的声音都是被合成的,而不是被采样的;步骤落在确切的样品上 同一引擎使WAV文件脱机。 一首歌听起来一样 浏览器,在导出和命令行中.

独立网站使用 CT 点击跟踪。嵌入式应用程序 离开追踪他们的宿主.

快开始

安装 爱 财务报告和审定财务报表 生锈; 锈蚀安装 工具链和WebAssembly目标 rust-toolchain.toml 开始使用.

mise install                      # Bun, Node, ShellCheck and wasm-opt (see .mise.toml)
bun install
bun run hooks:install             # once per clone
bun run dev                       # http://localhost:8174 (player: /player/)

编辑器打开了示例歌曲"下道";按下空间播放.

版式

路径什麽
packages/sequencer/编辑和混音器,在现场的根
packages/player/播放列表播放器,服务于 /player/
packages/synth/共享合成器: Rust 引擎,其 AudioWorklet 主机和歌曲格式
src/联合国 @a2f0/dnbm 软件包
songs/举个例子

建筑 描述套件如何组合在一起.

歌声

歌声是 .dnbm.json 文档。 每个图案行是一行,所以改变一个步骤 文件的一行 :

"rows": {
  "kick": "X... .... ..X. .... | ..X. .... ..X. ....",
  "snare": ".... X... .... X... | .... X... .... X...",
  "reese": "F-1 --- --- ---  --- --- ... F-1  --- ... F-1 ---  F#1 --- --- ... | ..."
}

在Chrimium中,Save会写回您打开的文件,所以在 Git 检查出单中的一首歌可以 编辑、保存和投入到位. 歌曲格式 描述每个字段.

bun run render songs/undertow.dnbm.json   # render to undertow.wav (24-bit, 48 kHz)
bun run songs:fmt                         # rewrite songs/ canonically
bun run songs:check                       # fail on an invalid or non-canonical song

举个例子 songs/ 从编辑器打开 实例 菜单,以及播放器 全部弹出. 低调 f小调为172 BPM 滚筒:同步子和 Reese 低音,干后拍,鬼叫和稀有,被过滤的哑巴回声. 它的36个酒吧从 通过四巴变体进行简短的介绍,半场休息和较重的回报. 十个 更黑暗的歌曲,从巴斯耶尔的慢压和乌布丽特的裸细胞到腐蚀 工业研磨和Sever的技术步骤削减, 每一个比Undertow更长,所有建造 无人机和刺伤来自 pad 调试器 在缓慢的共振式滤波器下,锯成相隔一对.

软件包

dnbm 也作为 npm 发布 @a2f0/dnbm, (中文(简体) ), 将整个应用程序嵌入到另一页或应用程序中,例如微型应用程序窗口:

import { copyDnbmAssets } from "@a2f0/dnbm/build"; // in a build script
await copyDnbmAssets("./public/dnbm");

import { mountDnbm } from "@a2f0/dnbm"; // in the browser
const dnbm = mountDnbm(container, { assetsUrl: "/dnbm/" });
await dnbm.ready; // it shows

import { mountDnbmPlayer } from "@a2f0/dnbm"; // or just the player
const player = mountDnbmPlayer(container, { assetsUrl: "/dnbm/", songs });

该应用程序在主机自己的文档中, 在保留其样式的阴影根中制作 和主机分开, 并且只取按在它里面的密钥。 一个主机自己 控件,例如窗口的菜单和工具栏,可以驱动它:每个实例运行 命令 (dnbm.run("save")),报告其状态(演奏,歌曲的标题,未保存) 更改,哪些命令可供使用),并在更改时告知订阅者,以及 actions: false 为这些命令留下应用程序自己的按钮. 软件包指南 覆盖嵌入和释放.

发展

bun run check   # everything CI checks; the pre-push hook runs it too; needs Google Chrome
bun run test    # build the engine, then the TypeScript tests
bun run engine:check   # rustfmt, clippy and cargo test
bun run fix     # format TypeScript, Rust and songs

见 发展 用于布局、脚本所有权和验证, 软件包发布 用于出版,以及 扶养费 升级程序 和积极的制约因素.

版本与发布记录

@a2f0/dnbm 共发布 45 个版本,首次发布于 2026/10/07;过去 12 个月发布了 45 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.4.34latest2026/11/07今天
0.4.332026/11/061 天前
0.4.322026/11/061 天前
0.4.312026/11/061 天前
0.4.302026/11/061 天前
0.4.292026/11/061 天前

关于 @a2f0/dnbm 的常见问题

@a2f0/dnbm 是什么?

一个深色鼓和低音序列器、混音器和播放器,带有WebAssembly音频引擎,准备嵌入一页

如何安装 @a2f0/dnbm?

在项目目录运行 npm install @a2f0/dnbm,或使用 pnpm add / yarn add / bun add。

@a2f0/dnbm 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@a2f0/dnbm 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@a2f0/dnbm 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@a2f0/dnbm 可以商用吗?

@a2f0/dnbm 使用 UNLICENSED 许可。作者声明为 UNLICENSED,即不授予公开使用许可(与公共领域的 Unlicense 不同)。使用前需获得作者授权。以上为概括,不构成法律意见,请以许可原文为准。

@a2f0/dnbm 的下载量有多少?

根据 npm 官方下载统计,@a2f0/dnbm 在 2026/10/05 – 2026/11/03 这 30 天内被下载 5,488 次,日均约 183 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@a2f0/dnbm 还在维护吗?

最新版本 0.4.34 发布于 2026/11/07(今天);至今共发布 45 个版本,其中过去 12 个月发布了 45 个;首次发布于 2026/10/07。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。