这个项目能做什么

Scribbletune 是一个开源的 JavaScript 库和命令行工具,用于以编程方式创作音乐。它不使用图形化的钢琴卷帘,而是采用紧凑的字符串符号来描述节奏和音高,从而可以直接在代码中或从终端生成音乐创意。 核心思想:模式以字符串形式编写,其中 `x` 表示音符开启,`-` 表示休止,`_` 延续前一个音符,`R` 从提供的音符池中随机选择一个音符,方括号细分节拍(例如 `[xx]` 在一个节拍内放置两个音符)。这些模式与音符列表、音阶、和弦或琶音结合,生成片段。 该库提供了诸如 `scale`、`chord`、`scales`、`chords`、`arp`、`progression` 和 `getChordsByProgression` 等辅助函数,由独立的 harmonics 包支持。`clip()` 函数在 Node.js 中将模式和音符转换为音符对象,`midi()` 函数将结果写入标准 MIDI 文件,可在 Ableton Live、GarageBand 或 Logic 等 DAW 中打开。 浏览器入口点(`scribbletune/browser`)基于 Tone.js 构建。它添加了 `Session` 和 `Channel` 抽象,用于管理多个乐器或采样,独立启动和切换片段,以及跨通道启动一行片段。通道可以使用内置的 Tone.js 合成器(按名称)、预构建的 Tone.js 乐器、单个音频采样 URL、多采样乐器以及效果链。 该包还附带一个 CLI。在全局或本地安装后,诸如 `--riff`、`--chord` 和 `--arp` 等命令接受根音、调式、节奏模式、细分以及输出文件名、sizzle、振幅、重音、风格和 BPM 等选项。和弦和琶音命令接受以度数数字、罗马数字、显式和弦名称或关键字 `random` 编写的进行。模式辅助包括重复简写,如 `x.repeat(4)` 和 `2(x-x[xx])`。 开发使用 npm 脚本进行安装、测试、构建(tsup)、代码检查(biome)和监视模式。该项目采用 MIT 许可证,并有一个配套网站 scribbletune.com。