# Copyright (c) 2024 Mike Tsao [workspace.package] authors = ["Mike Tsao "] documentation = "https://docs.rs/ensnare/" edition = "2021" homepage = "https://github.com/ensnare-org/ensnare" license = "BSD-3-Clause" readme = "README.md" repository = "https://github.com/ensnare-org/ensnare" version = "0.0.3" [workspace] members = ["crates/proc-macros", "crates/services", "crates/toys"] [package] name = "ensnare" description = "Create digital audio" keywords = ["audio", "music"] readme.workspace = true authors.workspace = true documentation.workspace = true edition.workspace = true homepage.workspace = true license.workspace = true repository.workspace = true version.workspace = true exclude = ["test-data/*", "assets-nodist/*", "res/*"] [dependencies] anyhow = { version = "1.0.86", default-features = false } app_dirs2 = "2.5.5" bit-vec = "0.8.0" bounded-vec-deque = "0.1.1" byteorder = "1.5.0" convert_case = { version = "0.6.0", optional = true } cpal = { version = "0.15.3", optional = true } crossbeam = "0.8.4" delegate = "0.12.0" derivative = { version = "2.2.0", features = ["use_core"] } derive_builder = "0.20.0" derive_more = "0.99.17" eframe = { version = "0.28", optional = true } egui_extras = { version = "0.28", features = ["image"], optional = true } ensnare-proc-macros = { version = "0.0.8", path = "crates/proc-macros" } getrandom = { version = "0.2.12", features = [] } hound = { version = "3.5", optional = true } include_dir = "0.7.3" kahan = "0.1.4" # for Oscillator midly = "0.5.3" nalgebra = "0.32.3" # for Envelope nonoverlapping_interval_tree = "0.1.5" once_cell = "1.19.0" oorandom = "11.1.3" rustc-hash = "1.1.0" serde = { version = "1.0", features = ["rc", "derive"] } serde_json = "1.0" spectrum-analyzer = { version = "1.5.0", optional = true } strum = "0.26" strum_macros = "0.26" synonym = "0.1.6" thiserror = "1.0.50" typetag = "0.2.16" [dev-dependencies] clap = { version = "4.5.4", features = ["derive"] } egui_dock = "0.13.0" egui_extras_xt = { git = "https://github.com/xTibor/egui_extras_xt/", features = [ "knobs", "displays", ] } egui-notify = "0.15.0" ensnare-services = { version = "0.0", path = "crates/services" } env_logger = "0.10" float-cmp = "0.9.0" more-asserts = "0.3.1" native-dialog = "0.7.0" regex = "1.7" # TODO: hound should be only an example dependency; refactor sampler and drumkit [features] default = ["std", "egui", "hound", "simple"] cpal = ["dep:cpal"] egui = ["convert_case", "eframe", "spectrum-analyzer"] egui_extras = ["dep:egui_extras"] f32 = [] hound = ["dep:hound"] simple = [] std = ["getrandom/std", "anyhow/std"] [lib] name = "ensnare" path = "src/lib.rs" [package.metadata.docs.rs] all-features = true [profile.release] strip = true lto = true codegen-units = 1 panic = "abort" [[example]] name = "entity-gui-explorer" required-features = ["std", "egui"] [[example]] name = "hello-world" required-features = ["std", "hound", "egui_extras"] [[example]] name = "pocket-calculator" required-features = ["std", "egui", "ensnare-services/audio"] [[example]] name = "render-project" required-features = ["std"] [[example]] name = "widget-explorer" required-features = ["std", "hound", "egui_extras"] [[example]] name = "minidaw" required-features = [ "std", "egui", "egui_extras", "ensnare-services/audio", "ensnare-services/midi", ] [package.metadata.cross.target.aarch64-unknown-linux-gnu] pre-build = [ "dpkg --add-architecture $CROSS_DEB_ARCH", "apt -qq update", "apt -y install pkg-config libfontconfig-dev:$CROSS_DEB_ARCH libasound2-dev:$CROSS_DEB_ARCH", ] # See https://github.com/iced-rs/iced/blob/master/Cross.toml image = "ghcr.io/iced-rs/aarch64:latest" xargo = false [package.metadata.cross.target.armv7-unknown-linux-gnueabihf] pre-build = [ "dpkg --add-architecture $CROSS_DEB_ARCH", "apt -qq update", "apt -y install pkg-config libfontconfig-dev:$CROSS_DEB_ARCH libasound2-dev:$CROSS_DEB_ARCH", ] # See https://github.com/iced-rs/iced/blob/master/Cross.toml image = "ghcr.io/iced-rs/armv7:latest" xargo = false # TODO: this is a remnant from the main bin being minidaw. It is currently just # an example for a library crate, so this `cargo deb` section doesn't apply. # If/when there is a crate for the minidaw bin, then this will be useful. # # [package.metadata.deb] # name = "ensnare-minidaw" # assets = [ # # "You can use target/release/ in asset paths, even if Cargo is configured # # to cross-compile or use custom CARGO_TARGET_DIR. The target dir paths will # # be automatically corrected." https://github.com/kornelski/cargo-deb # ["LICENSE.md", "usr/share/doc/ensnare/LICENSE.md", "644"], # ["README.md", "usr/share/doc/ensnare/README.md", "644"], # ["assets-nodist/os/minidaw.desktop", "usr/share/applications/", "644"], # ["assets/patches/**/*.json", "usr/share/ensnare/patches/", "644"], # ["assets/samples/**/*.wav", "usr/share/ensnare/samples/", "644"], # ["projects/**/*.json", "usr/share/ensnare/projects/", "644"], # ["target/release/minidaw", "usr/bin/", "755"], # ]