math-sonify 1.4.0

Real-time procedural audio from mathematical dynamical systems (Lorenz, Rossler, Double Pendulum, and more)
[package]

name = "math-sonify"

version = "1.4.0"

edition = "2021"

rust-version = "1.75"

description = "Real-time procedural audio from mathematical dynamical systems (Lorenz, Rossler, Double Pendulum, and more)"

license = "MIT"

repository = "https://github.com/Mattbusel/math-sonify"

homepage = "https://github.com/Mattbusel/math-sonify"

keywords = ["audio", "chaos", "dynamical-systems", "synthesis", "generative"]

categories = ["multimedia::audio", "science", "simulation"]

authors = ["Matt Busel <matt@mattbusel.com>"]

readme = "README.md"

documentation = "https://docs.rs/math-sonify"

exclude = [

    "release/",

    "screenshots/",

    "docs/bifurcation.png",

    "docs/portrait_*.png",

    "patch_*.py",

    "build_release.bat",

    "math_sonify_vision.pdf",

    "plugin/",

    "fuzz/",

    "dist/",

    ".claude/",

]



[[bin]]

name = "math-sonify"

path = "src/main.rs"



[lib]

name = "math_sonify"

path = "src/lib.rs"



[dependencies]

# Audio I/O

cpal = "0.15"



# GUI

eframe = { version = "0.27", features = ["default"] }

egui = "0.27"



# Config + serialization

toml = "0.8"

serde = { version = "1", features = ["derive"] }

serde_json = "1"

notify = "6"



# Concurrency utilities

crossbeam-channel = "0.5"

parking_lot = "0.12"

rayon = "1"

anyhow = "1"

thiserror = "1"

log = "0.4"

env_logger = "0.11"

hound = "3.5"

midir = "0.9"

rustfft = "6"

midly = "0.5"

png = "0.17"



# OSC collaborative sync (optional, enable with --features osc)

rosc = { version = "0.10", optional = true }



# Tracing instrumentation

tracing = "0.1"

tracing-subscriber = { version = "0.3", features = ["env-filter"] }





[workspace]

members = [".", "plugin"]



[features]

# Enable OSC collaborative sync (adds the `rosc` dependency).

osc = ["rosc"]



[profile.release]

opt-level = 3

lto = "thin"

codegen-units = 1

strip = "debuginfo"

panic = "abort"



[profile.dev]

opt-level = 1



[profile.bench]

opt-level = 3

lto = "thin"



[lints.clippy]

# Allow common false-positive triggers in audio DSP code

cast_precision_loss = "allow"

cast_possible_truncation = "allow"

cast_sign_loss = "allow"

module_name_repetitions = "allow"

too_many_arguments = "allow"

too_many_lines = "allow"

# DSP/audio code legitimately indexes into fixed-size audio buffers

indexing_slicing = "allow"

# These fire too many false positives in plugin/DSP code

derivable_impls = "allow"

manual_clamp = "allow"