flux-algebra-rs
<<<<<<< HEAD A pure Rust port of flux-algebra — algebraic structures for music theory.
Features
- HarmonicRing — Z/nZ ring for pitch-class arithmetic (transposition, inversion, units)
- PLR Group — Parallel, Leading-tone, Relative operations on triads
- Tropical Semiring — (R ∪ {∞}, min, +) with polynomial evaluation
- TuningField — Equal temperament and custom tuning systems
- Voice-leading combinatorics — Minimal smooth voice leading via permutation search ======= Rust port of flux-algebra — musical algebra for harmonic analysis.
Features
- Chord operations: major/minor/diminished/augmented, transposition, quality inversion
- PLR group: Parallel, Leading-tone, Relative (Neo-Riemannian transformations)
- Hexatonic cycles: 6-chord cycles through P/L transformations
- Tropical semiring: min-plus algebra over intervals
- Tuning fields: equal temperament, just intonation, cents deviation
- Voice leading: distance computation and smoothest voice leading
83fe680 (Initial Rust port: musical algebra library)
Usage
<<<<<<< HEAD
use ;
let ring = chromatic;
let transposed = ring.transpose; // C major → F major
let c_major = major;
let c_minor = p; // Parallel: Cm
let trop_min = add; // = 3.0
License
======= use flux_algebra::{Chord, parallel, relative, leading_tone, TuningField, voice_leading_distance};
let c_major = Chord::major(0); let a_minor = relative(&c_major); let b_minor = leading_tone(&c_major);
let tuning = TuningField::just_intonation(); let freq = tuning.frequency(60); // C4 in just intonation
## License
>>>>>>> 83fe680 (Initial Rust port: musical algebra library)
MIT