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

Modules

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

Macros

Structs

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

Enums

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