rstmt-nrt

Crates.iorstmt-nrt
lib.rsrstmt-nrt
version0.0.13
created_at2025-06-06 07:53:42.979153+00
updated_at2026-01-21 23:11:36.115452+00
descriptionthis crate focuses on providing support for the neo-riemannian theory of music
homepagehttps://github.com/FL03/rstmt/wiki
repositoryhttps://github.com/FL03/rstmt.git
max_upload_size
id1702691
size186,860
Joe McCain III (FL03)

documentation

README

rstmt

crates.io docs.rs GitHub License


_Warning: expect heavy changes to the API as the library is currently in the early stages of development and is not yet ready for production use.

rstmt is a generalize music-theory toolkit written in Rust.

Features

  • American Standard Pitch Notation (ASPN)
  • The Neo-Riemannian Theory

Usage

Add this to your Cargo.toml:

[dependencies.rstmt]
features = ["full"]
version = "0.0.x"

Examples

Example #1: Using the Triad implementation

    extern crate rstmt;

    use rstmt::Note;
    use rstmt::nrt::Triad;

    fn main() -> Result<(), Box<dyn core::error::Error + Send + Sync + 'static>> {
        let root = Note::from_pitch(0);
        // initialize a c-major triad
        let triad = dbg!(Triad::major(root));
        // test the root of the triad
        assert_eq!(triad.root(), root);
        // test the parallel transformation
        assert_eq!(triad.parallel(), Triad::minor(root));
        // assert the invertibility of the transformations
        assert_eq!(triad.parallel().parallel(), triad);
        Ok(())
    }

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

Getting Started

For more information on getting an environment setup to develop the crate view the QUICKSTART file.

Commit count: 0

cargo fmt