staff 0.6.1

Music theory library with midi, notes, chords, scales, and more
Documentation

Staff

crate documentation

Music theory and score rendering library with midi, notes, chords, scales, and more.

staff

Installation

cargo install staff --features=cli

Usage

example.ly

<c''4 g'> <eis'2 f' g'> g'4
f''2 <c'4 eis'> c''

$ staff engrave example.ly > example.svg

Library

use staff::{midi, Chord, Pitch};

let chord = Chord::from_midi(
    midi!(C, 4),
    [midi!(E, 3), midi!(G, 3), midi!(C, 4)]
);

assert_eq!(chord.to_string(), "C/E");

let pitches = [Pitch::E, Pitch::G, Pitch::C];
assert!(chord.into_iter().eq(pitches));