Crate staff

Source
Expand description

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

§Feature flags

Staff uses a set of feature flags to reduce the amount of compiled code. It is possible to just enable certain features over others. By default, staff does not enable any features but allows one to enable a subset for their use case. Below is a list of the available feature flags. You may also notice above each function, struct and trait there is listed one or more feature flags that are required for that item to be used. If you are new to staff it is recommended that you use the full feature flag which will enable all public APIs. Beware though that this will pull in many extra dependencies that you may not need.

  • full: Enables all features listed below.
  • std: Enables std, otherwise this crate will use #![no_std]
  • parse Enables the staff::parse module.
  • fretboard Enables the staff::fretboard module.
  • render Enables the staff::render module.

§Examples

Create a C Major (1st inversion) chord and iterate over its notes.

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

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

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

assert!(chord.into_iter().eq(notes));

Create a C Major scale and iterate over its notes.

use staff::{midi, Note, Scale};

// C major
let scale = Scale::major(midi!(C, 4));

assert!(scale.eq([
    midi!(C, 4),
    midi!(D, 4),
    midi!(E, 4),
    midi!(F, 4),
    midi!(G, 4),
    midi!(A, 4),
    midi!(B, 4),
]));

Re-exports§

pub use chord::Chord;
pub use fmt::Format;
pub use note::Note;
pub use scale::Scale;
pub use set::Set;

Modules§

chord
Chord struct and iterators
fmt
Format trait to adjust fmt::Display output
fretboardfretboard
Fretboard iterator for guitar and other instruments
midi
Midi notes, octaves, and sets
note
Formatted notes
renderrender
Sheet music engraving
scale
Scales with iterators
set
Collections of intervals and pitches
time
uiui

Macros§

midi

Structs§

Interval
Music interval in semitones.
Key
A key signature represented as the total number of sharps or flats.

Enums§

Natural
A natural pitch
Pitch
Pitch class that can be found on the chromatic scale.