这个项目能做什么
Tonal是一个面向JavaScript的音乐理论库,采用TypeScript实现,并以一系列npm包的形式发布。它专注于音乐理论的抽象,而非声音或音频播放:涵盖音符、音程、和弦、音阶、调式、调性、声部排列、和弦进行和节奏。
该库遵循函数式编程风格。函数是纯函数,数据不被修改,实体以普通数据结构而非类实例表示。它支持ES6导入、ES5 require,以及通过CDN脚本标签直接在浏览器中使用。
典型操作包括将音符转换为MIDI数字或频率、按音程转调音符、测量音程距离、获取音阶音符和音级、命名和弦,以及构建和弦转位。README中展示了示例,如Note.midi("C4")返回60,Note.freq("a4")返回440,Interval.semitones("5P")返回7,以及Scale.get("C major").notes返回七个音阶音。
项目被拆分为多个专注模块,每个模块有自己的README和以@tonaljs/为前缀的包名。这些模块涵盖音符、MIDI、音程、ABC记谱法、音阶和音阶类型、和弦及和弦类型、和弦检测、音高类别集合、声部排列、声部引导、声部排列字典、调性、调式、和弦进行、罗马数字、节奏模式、拍号、时值,以及核心和集合工具。安装总括性的tonal包包含所有模块,而单独安装个别模块可减小打包体积。
文档可在专门网站和每个模块的README中获取。贡献内容需包含音乐理论变更的参考、文档更新和测试。该库采用MIT许可证,并列出多个音乐理论库作为灵感来源,以及展示使用它的项目。
评论
0 评分人数达到10人后显示
登录后参与讨论。