[package] name = "lasprs" version = "0.6.4" edition = "2021" authors = ["J.A. de Jong "] description = "Library for Acoustic Signal Processing (Rust edition, with optional Python bindings via pyo3)" readme = "README.md" repository = "https://code.ascee.nl/ascee/lasprs" license = "MIT OR Apache-2.0" keywords = ["dsp", "audio", "measurement", "acoustics", "filter"] categories = ["multimedia::audio", "science", "mathematics"] [lib] name = "lasprs" crate-type = ["cdylib", "rlib"] [dependencies] # Error handling anyhow = "1.0.91" # Numerics # Optional future feature for ndarray: blas ndarray = { version = "0.16.1", features = ["rayon"] } # This is required for HDF5, as it apparently doesn't update anymore. ndarray15p6 = { package = "ndarray", version = "0.15.6", features = ["rayon"] } num = "0.4.3" # blas-src = { version = "0.8", features = ["openblas"] } # openblas-src = { version = "0.10", features = ["cblas", "system"] } # Parallel iterators rayon = "1.10.0" # Python bindings pyo3 = { version = "0.22.5", optional = true, features = [ "extension-module", "anyhow", ] } # Python bindings for Numpy arrays numpy = { version = "0.22.0", optional = true } # White noise etc rand = { version = "0.8.5", features = ["small_rng"] } rand_distr = "0.4.3" # Cross-platform audio lib cpal = { version = "0.15.3", optional = true } # Nice enumerations strum = "0.26.3" strum_macros = "0.26.4" # Conditional compilation enhancements cfg-if = "1.0.0" # Reinterpret buffers. This is a workaround for the #[feature(specialize)] not # being available in stable rust. reinterpret = "0.2.1" # Faster channels for multithreaded communication crossbeam = "0.8.4" # Serialization serde = { version = "1.0.193", features = ["derive"] } toml = "0.8.19" # Initialize array for non-copy type array-init = "2.1.0" # Types of a sample dasp_sample = "0.11.0" # Required for recording and looking into measurements hdf5-sys = { version = "0.8.1", features = ["static"], optional = true } hdf5 = { version = "0.8.1", optional = true } # Useful iterator stuff itertools = "0.13.0" # Approximate equal stuff approx = "0.5.1" # For getting timestamps. Only useful when recording. chrono = { version = "0.4.38", optional = true } # For getting UUIDs in recording uuid = { version = "1.10.0", features = ["v4"], optional = true } # Command line argument parser, for CLI apps clap = { version = "4.5.13", features = [ "derive", "color", "help", "suggestions", ] } # FFT's realfft = "3.3.0" # Fast Mutex parking_lot = "0.12.3" # Builder code derive_builder = "0.20.0" # Stack-allocated vectors smallvec = "1.13.2" # Compile time constant floating point operations softfloat = "1.0.0" [features] default = ["f64", "cpal-api", "record"] # Use this to test if everything works well in f32 # default = ["f32", "cpal-api", "record"] # When building Python bindings of Lasprs, you should enable the feature flag # "python-bindings". When debugging these, to safe the flag specification you # could just uncomment the line below here and comment the one above. If only # testing the implementations, or building the extension module, you should # call: # $ maturin develop -F python-bindings # Or: # $ maturin develop --release -F python-bindings # For faster code #default = ["f64", "python-bindings", "record", "cpal-api"] pulse-api = [] cpal-api = ["dep:cpal"] record = ["dep:hdf5-sys", "dep:hdf5", "dep:chrono", "dep:uuid"] f64 = [] f32 = [] python-bindings = ["dep:pyo3", "dep:numpy"] extension-module = []