sim-lib-pitch-serial 0.1.0

Strict twelve-tone rows, total row operations, and explicit label conventions for SIM.
Documentation
//! Strict twelve-tone rows, complete families, matrices, and explicit labels.
//!
//! This crate is the pitch-specific layer over [`sim_lib_serial_core`]. It uses
//! the canonical [`sim_lib_pitch_core::PitchClass`] values, admits each of the
//! twelve classes exactly once, and keeps affine/reversal operation identity
//! separate from convention-dependent printed labels.
#![forbid(unsafe_code)]
#![deny(missing_docs)]

mod affine;
mod all_interval;
mod alphabet;
mod class;
mod combinatoriality;
mod derivation;
mod error;
mod family;
mod interval;
mod invariance;
mod label;
mod matrix;
mod mosaic;
mod multiply;
mod operation;
mod partition;
mod render;
mod reservoir;
mod row;
mod segment;
mod vertical;

pub use affine::{AffinePitchMap, PitchTransformOutput};
pub use all_interval::{AllIntervalMultiplicity, AllIntervalReport, analyze_all_interval};
pub use alphabet::PitchClassAlphabet;
pub use class::{FormEquivalence, RowClassAlias, RowClassReport, analyze_row_class};
pub use combinatoriality::{
    CombinatorialBlockEvidence, CombinatorialPartition, CombinatorialPartner,
    CombinatorialityReport, analyze_combinatoriality, analyze_combinatoriality_partition,
};
pub use derivation::{
    DerivationCellRelation, DerivationKind, DerivationMatch, DerivationReport, analyze_derivation,
    analyze_derivation_partition,
};
pub use error::RowError;
pub use family::{RowAlias, RowFamilySet};
pub use interval::OrderedIntervalString;
pub use invariance::{SegmentInvariant, analyze_invariance};
pub use label::{RowLabel, RowLabelConvention};
pub use matrix::{
    MatrixCoordinate, ROW_MATRIX_SIZE, RowMatrix, RowMatrixCell, RowMatrixEdgeLabels,
};
pub use mosaic::{MosaicBlock, MosaicReport, analyze_mosaic};
pub use multiply::{BlockProductReservoir, multiply_partitions};
pub use operation::{RowFamily, RowOperation};
pub use partition::{
    AggregateCoverageReport, BlockOrder, InterlockingPartitionReport, OrderKind,
    PartitionBlockMatch, PartitionSimilarityReport, RowPartition, RowPartitionBlock,
    analyze_aggregate_coverage, analyze_interlocking_partitions,
    analyze_partition_aggregate_coverage, analyze_partition_similarity, try_partition,
};
pub use render::RowMatrixData;
pub use reservoir::{
    BlockProjection, BlockProjectionSource, InvariantDelta, OrderedPitchBlock, PitchInvariant,
    PitchReservoir,
};
pub use row::{RowForm, ToneRow};
pub use segment::{RowSegment, RowSegmentSource};
pub use vertical::{VerticalCollection, VerticalSlice, verticalize};

/// Cookbook recipes for this lib, embedded at build time.
pub static RECIPES: sim_cookbook::EmbeddedDir =
    include!(concat!(env!("OUT_DIR"), "/cookbook_recipes.rs"));