Chordpro file parser written in Rust. Chordpro is a simple text format for the notation of lyrics with chords. Although initially intended for guitarists, it can be used for all kinds of musical purposes.
Specification of the format can be found in the official website: https://www.chordpro.org/
The std::str::FromStr
is implemented for the Song
struct:
# use chordpro::Song;
# use std::str::FromStr;
let song = Song::from_str(r##"
{title: Song Title}"
{artist: The Artist}
This is the first verse.
You can specify chords using brackets.
This is a [G]chord
{soc}
This is the chorus of the song
[Em]You can also add some chords
{eoc}
"##).unwrap();
- Metadata:
- title (short: t)
- subtitle (short: st)
- artist
- composer
- lyricist
- copyright
- album
- year
- key
- time
- tempo
- duration
- capo
- meta
- Formatting:
- comment (short: c)
- comment_italic (short: ci)
- comment_box (short: cb)
- image
- Environments:
- start_of_chorus (short: soc)
- end_of_chorus (short: eoc)
- chorus
- start_of_verse
- end_of_verse
- start_of_tab (short: sot)
- end_of_tab (short: eot)
- start_of_grid
- end_of_grid
- Custom extensions (prefixed by
x_
)
At the moment, only A-G notation is supported for parsing. Flats (with b
),
sharps (with #
) and common postfixes (m
, min
, maj
, numbers).
Wrapping a reference to the chord in a chordpro::Latin
formats that chord with
latin notation (Do
, Re
, Mi
).