rstmt 0.0.9

A complete framework for computational music theory, analysis, and research, with a focus on hypergraphs and topology.
docs.rs failed to build rstmt-0.0.9
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: rstmt-0.0.5

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.