数字
浏览器中的暗鼓和低音序列和混音器. 步骤上的程序模式 网格,将其安排成一首歌曲,与每道过滤器相混合,驱动和发送,以及 将歌曲保存为纯文本, 在 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