#chord #mapper #parser #mapping #notation #command-line-tool #notes

bin+lib chord_mapper

Chord Mapper 是一个 Rust 项目,提供了解析和弦符号并将其映射为构成和弦的单独音符的命令行工具。

3 个版本

0.1.2 2023年11月20日
0.1.1 2023年11月20日
0.1.0 2023年11月20日

#1736 in 命令行工具

MIT 许可证

15KB
244

Chord Mapper

简短描述

Chord Mapper 是一个 Rust 项目,提供了解析和弦符号并将其映射为构成和弦的单独音符的命令行工具。

  • 解析过程:解析本身委托给 'pest' 包。因此,有关解析过程的详细信息可以在这里找到:[链接](https://docs.rs/pest/2.7.5/pest/)

  • 解析内容:实际上只解析代表国际和弦符号的字符串,如 "C#", "C#m"。

  • 解析结果的用途:解析的字符串被转换为程序的和弦表示,然后转换为构成和弦的音符集合。例如:"Am" -> "A-C-E"(因为 A、C 和 E 音符构成和弦 Am)。

语法规则

Chord Mapper 使用自定义语法来解析和弦符号。语法规则定义如下

root = { SOI ~ delimitor* ~ chord ~ delimitor* ~ EOI }
delimitor = { " "+ }

chord = { minor_chord | major_chord }
major_chord = { tonic }
minor_chord = { tonic ~ "m" }

tonic = { sharped_note | flatted_note | bare_note }
bare_note = { "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" }
sharped_note = { ("A" | "C" | "D" | "F" | "G") ~ "#" }
flatted_note = { ("D" | "E" | "G" | "A" | "B") ~ "b" }
  • root:表示解析和弦符号的根规则。
  • delimitor:匹配任何数量的空格作为分隔符。
  • chord:定义和弦的结构,可以是 major_chordminor_chord
  • major_chord:表示由 tonic 组成的大三和弦。
  • minor_chord:表示由 tonic 后跟 'm' 组成的小和弦。
  • tonic:指定和弦的核心音符,可以是 sharped_noteflatted_notebare_note
  • bare_note:匹配裸音符名称,如 'A'、'B'、'C'、'D'、'E'、'F'、'G' 或 'H'。
  • sharped_note:匹配升音符名称,如 'A#'、'C#'、'D#'、'F#' 或 'G#'。
  • flatted_note:匹配降音符名称,包括 'Db'、'Eb'、'Gb'、'Ab' 或 'Bb'。

用法

Chord Mapper 项目包括一个命令行界面(CLI),允许您与工具交互。以下是一些可用的命令

  • parse:使用此命令解析和弦符号并显示其组成部分的音符。

    示例

    chord_mapper parse Cm
    
  • help:显示有关如何使用 Chord Mapper CLI 的信息。

    示例

    chord_mapper help
    
  • credits:显示关于项目和其贡献者的信息。

    示例

    chord_mapper credits
    

Chord Mapper 是音乐家和音乐爱好者的必备工具,帮助您理解和弦记号及其背后的音乐元素。

依赖项

~4MB
~76K SLoC