#music-notation #music #notation #abc #data-structures

abc-parser

ABC音乐符号解析器。将ABC文本转换为Rust数据结构,反之亦然。

6个版本

使用旧的Rust 2015

0.3.0 2021年6月8日
0.2.0 2018年8月21日
0.1.5 2018年8月20日

1771解析器实现

每月35 次下载

MIT 协议

45KB
1.5K SLoC

rust-abc-2

使用PEG编写的ABC解析器。

使用方法

将包添加到您的cargo依赖项中。

[dependencies]
abc-parser = "0.2"

然后您可以通过abc模块使用PEG生成的规则。

extern crate abc_parser;

use abc_parser::datatypes::*;
use abc_parser::abc;

let parsed = abc::tune_book("X:1\nT:Example\nK:D\n").unwrap();
assert_eq!(
    parsed,
    TuneBook::new(None, vec![
        Tune::new(
            TuneHeader::new(vec![
                InfoField::new('X', "1".to_string()),
                InfoField::new('T', "Example".to_string()),
                InfoField::new('K', "D".to_string())
            ]),
            None
        )
    ])
)

很可能dev分支有更多最近添加的功能,这些功能可能不完整,但(可能)不会破坏现有功能。您还可以像这样让cargo直接从dev分支安装

[dependencies]
abc-parser = { git = "https://gitlab.com/Askaholic/rust-abc-2", branch = "dev" }

特性列表

这些大致按照ABC标准的顺序。

  • 信息字段
  • 字段延续
  • 音符
    • 音高
    • 变化音
    • 时值
    • 连音
    • 破碎的节奏
  • 休止符
  • 谱号和移调
  • 符杠
  • 小节
  • 变奏终止式
  • 滑音
  • 装饰音
  • 连音
  • 装饰
  • 符号行
  • 重新定义符号
  • 和弦与单音
  • 和弦符号
  • 注释
  • 歌词
  • 多声部
  • 文本字符串
  • 样式表指令
  • 方言

历史

第一个版本是尝试手动编写解析器,但使用PEG更易于维护。旧的仓库在这里:https://gitlab.com/Askaholic/rust-abc

依赖项

~150KB