[−][src]Crate rust_music_theory
Rust Music Theory
is a library that provides programmatic implementation of the basis of music theory.
About
Rust Music Theory
is used to procedurally utilize music theory notions like Note, Chord, Scale,
Interval, Key and more. All these theoretical concepts of sound and music are implemented as
Separate modules in the library. They sometimes can be used individually, and sometimes need
to be used together to correctly reflect the music theory to the code.
Quick Example
The following examples are the simplest usage of the library. Please see the tests folder for detailed examples of the modules.
extern crate rust_music_theory as rustmt; use rustmt::note::{Note, Notes, PitchClass}; use rustmt::scale::{Direction, Scale, ScaleType, Mode}; use rustmt::chord::{Chord, Number as ChordNumber, Quality as ChordQuality}; // to create a Note, specify a pitch class and an octave; let note = Note::new(PitchClass::As, 4); // Note { pitch_class: A, octave: 4 } // Scale Example; let scale = Scale::new( ScaleType::Diatonic, // scale type PitchClass::C, // tonic 4, // octave Some(Mode::Ionian), // scale mode Direction::Ascending, // direction ).unwrap(); // returns a Vector of the Notes of the scale let scale_notes = scale.notes(); // Chord Example; let chord = Chord::new(PitchClass::C, ChordQuality::Major, ChordNumber::Triad); // returns a Vector of the Notes of the chord let chord_notes = chord.notes();
Modules
chord | Chords. |
interval | Intervals between notes. |
note | Individual notes. |
scale | Scales. |