#guitar-tabs #write #interface #line #pro #chord #command-line-interface

bin+lib guitarpro

Rust library and command line interface (CLI) for guitar tab files

1 unstable release

0.1.0 May 31, 2022

#10 in #guitar-tabs

MIT license

1.5MB
4K SLoC

Contains (Zip file, 14KB) test/all-percussion.gp, (Zip file, 9KB) test/accent.gp, (Zip file, 9KB) test/arpeggio.gp, (Zip file, 9KB) test/artificial-harmonic.gp, (Zip file, 9KB) test/barre.gp, (Zip file, 9KB) test/basic-bend.gp and 68 more.

Guitarpro

A Rust safe library to parse and write guitar pro files.

Tests rust-clippy

It is based on Perlence/PyGuitarPro, TuxGuitar and MuseScore sources.

usage

use guitarpro;

fn main() {
    let f = fs::OpenOptions::new().read(true).open("my_awesome_song.gp5").unwrap_or_else(|_error| {
        panic!("Unknown error while opening my_awesome_song.gp5");
    });
    let mut data: Vec<u8> = Vec::with_capacity(size);
    f.take(u64::from_ne_bytes(size.to_ne_bytes())).read_to_end(&mut data).unwrap_or_else(|_error|{panic!("Unable to read file contents");});
    let mut song: guitarpro::Song = gp::Song::default();
    match ext.as_str() {
        "GP3" => song.read_gp3(&data),
        "GP4" => song.read_gp4(&data),
        "GP5" => song.read_gp5(&data),
        "GPX" => println!("Guitar pro file (new version) is not supported yet"), //new Guitar Pro files
        _ => panic!("Unable to process a {} file (GP1 and GP2 files are not supported)", ext),
    }
}

Roadmap

  • Documentation
  • Read GP3 files
  • Read GP4 files
  • Read GP5 files: almost working, Coda and similar directions are not working, use test/Demo v5.gp5 to test/fix/pull request/...
  • Read GPX files (version 6)
  • Read GPX files (version 7)
  • Write GP3 files
  • Write GP4 files
  • Write GP5 files
  • Write GPX files (version 6)
  • Write GPX files (version 7)

About me

I started to play guitar in 2019 and I have a pack of Guitar Pro files and sometimes I get a new files from Songsterr. I want to write a better documentation but I don't know all the stuffs that I can see on a score ;)

In order to make another software (with advanced search, chord detection, ...), I need a library that is able to parse and write Guitar Pro files.

Dependencies

~5MB
~153K SLoC