8个版本 (2个稳定版)
1.0.1 | 2024年8月14日 |
---|---|
0.3.0 | 2024年8月12日 |
0.2.0 | 2024年8月10日 |
0.1.2 | 2024年8月9日 |
在音频类别中排名#113
每月下载量782次
被muzik使用
100KB
2.5K SLoC
chordparser
概述
ChordParser是一个库,可以从人类可读的字符串表示中解析音乐和弦。
它受到和弦符号的启发:https://npmjs.net.cn/package/chord-symbol.
不过,它实现了自己的规则和约定,这些规则和约定可能会在未来改变,因为这是一个正在进行的工程项目。
目前,该库的范围是解析流行、摇滚和爵士音乐中的和弦,这些和弦使用的是相对标准的英语记谱法。
古典记谱法,以及拉丁或德语记谱法,目前尚不支持。
和弦结构
一旦解析,Chord结构可以用来获取和弦的信息。
这包括
- 和弦的根音
- 如果有的话,和弦的根音
- 和弦的解析描述
- 输入的规范版本
- 音符文字
- 相对于根音的音程
- 相对于根音的半音
和弦还可以序列化为JSON,为其音符生成MIDI代码,并允许从一个调转到另一个调。
解析规则
由于对和弦应该如何书写还没有达成共识,任何和弦解析器本质上都是具有主观性的。
我们试图在拒绝所有无效的记法与接受任何可能的和弦表示之间取得良好的平衡。
查看/test文件夹中的测试用例,以了解可以和不能解析的和弦。
音色生成
Voicing模块公开了一个函数,可以从代表音色的Chord生成一组MIDI音符。音色生成在C1到G5的范围内。生成函数接受一个主音来生成围绕它的音色,这允许平滑地连接不同的和弦。
限制
- 当可能时,解析和弦音符将具有正确的等音名称。例如,一个
B#9
和弦将用C𝄪
代替 D 作为九度音。但是,由于很少使用,三降/升音符不受支持。 - 当转调时,斜杠低音音符(如 Ab/C 中的 C)可能不会是等音正确的。
- 目前解析器不可定制,但预计将来会实现,例如
- 包含或删除自定义和默认验证器。
- 包含或删除允许的符号集合。
- 可能允许其他符号表示法,如拉丁语或德语。
示例
请查看示例文件夹中的示例用法,运行
cargorun --exampleparse-chord
依赖项
~2.8–4.5MB
~87K SLoC