From cb989baf83f9a8fb9b8eabc1ec2cf0cd4f6569d7 Mon Sep 17 00:00:00 2001 From: okay stopped screaming Date: Sat, 21 Feb 2026 19:40:12 +0200 Subject: [PATCH] remove workspace --- Cargo.lock | 500 +++++++++++++++++++++++++++++++++++++++++++---- Cargo.toml | 119 ++++++----- app/Cargo.toml | 63 ------ app/tek.rs | 2 +- app/tek_impls.rs | 237 +++++++++++----------- dizzle | 2 +- shell.nix | 32 +-- tengri | 2 +- 8 files changed, 674 insertions(+), 283 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index af627d76..9adbfc42 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -171,6 +171,29 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" +[[package]] +name = "atk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + [[package]] name = "atomic-waker" version = "1.1.2" @@ -296,6 +319,31 @@ version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.11.0", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror 1.0.69", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + [[package]] name = "calloop" version = "0.13.0" @@ -355,6 +403,16 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + [[package]] name = "cfg-if" version = "1.0.4" @@ -395,7 +453,7 @@ version = "4.5.55" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.117", @@ -529,15 +587,6 @@ dependencies = [ "libc", ] -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -606,16 +655,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "ctor" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" -dependencies = [ - "quote", - "syn 2.0.117", -] - [[package]] name = "cursor-icon" version = "1.2.0" @@ -779,6 +818,16 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + [[package]] name = "find-msvc-tools" version = "0.1.9" @@ -912,6 +961,64 @@ dependencies = [ "slab", ] +[[package]] +name = "gdk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + [[package]] name = "gethostname" version = "1.1.0" @@ -964,6 +1071,148 @@ version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.11.0", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.2", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "hashbrown" version = "0.15.5" @@ -981,6 +1230,12 @@ version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" @@ -1092,10 +1347,7 @@ checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" name = "jack" version = "0.13.0" dependencies = [ - "approx", "bitflags 2.11.0", - "crossbeam-channel", - "ctor", "jack-sys", "lazy_static", "libc", @@ -1328,6 +1580,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + [[package]] name = "midly" version = "0.5.3" @@ -1413,7 +1674,7 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", "syn 2.0.117", @@ -1687,6 +1948,31 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + [[package]] name = "parking_lot" version = "0.11.2" @@ -1854,13 +2140,57 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + [[package]] name = "proc-macro-crate" version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit", + "toml_edit 0.23.10+spec-1.0.0", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", ] [[package]] @@ -2269,6 +2599,15 @@ dependencies = [ "zmij", ] +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + [[package]] name = "serde_spanned" version = "1.0.4" @@ -2400,7 +2739,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", @@ -2624,6 +2963,25 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml 0.8.2", + "version-compare", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + [[package]] name = "tek" version = "0.3.0" @@ -2632,7 +2990,10 @@ dependencies = [ "atomic_float", "backtrace", "builder-pattern", + "bumpalo", "clap", + "dizzle", + "gtk", "jack", "konst", "livi", @@ -2640,10 +3001,12 @@ dependencies = [ "palette", "proptest", "proptest-derive", + "quanta", "rand 0.8.5", "symphonia", + "tek", "tengri", - "toml", + "toml 0.9.12+spec-1.1.0", "uuid", "wavers", "winit", @@ -2665,16 +3028,21 @@ dependencies = [ [[package]] name = "tengri" -version = "0.14.0" +version = "0.15.0" dependencies = [ + "anyhow", "atomic_float", "better-panic", "crossterm 0.29.0", "dizzle", + "heck 0.5.0", "palette", + "proc-macro2", "quanta", + "quote", "rand 0.8.5", "ratatui", + "syn 2.0.117", "unicode-width 0.2.0", ] @@ -2743,6 +3111,18 @@ dependencies = [ "strict-num", ] +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + [[package]] name = "toml" version = "0.9.12+spec-1.1.0" @@ -2751,11 +3131,20 @@ checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" dependencies = [ "indexmap", "serde_core", - "serde_spanned", - "toml_datetime", + "serde_spanned 1.0.4", + "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", "toml_writer", - "winnow", + "winnow 0.7.14", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", ] [[package]] @@ -2767,6 +3156,30 @@ dependencies = [ "serde_core", ] +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap", + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + [[package]] name = "toml_edit" version = "0.23.10+spec-1.0.0" @@ -2774,9 +3187,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" dependencies = [ "indexmap", - "toml_datetime", + "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", - "winnow", + "winnow 0.7.14", ] [[package]] @@ -2785,7 +3198,7 @@ version = "1.0.9+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" dependencies = [ - "winnow", + "winnow 0.7.14", ] [[package]] @@ -2895,6 +3308,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "version-compare" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" + [[package]] name = "version_check" version = "0.9.5" @@ -3425,6 +3844,15 @@ dependencies = [ "xkbcommon-dl", ] +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + [[package]] name = "winnow" version = "0.7.14" @@ -3450,7 +3878,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" dependencies = [ "anyhow", - "heck", + "heck 0.5.0", "wit-parser", ] @@ -3461,7 +3889,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ "anyhow", - "heck", + "heck 0.5.0", "indexmap", "prettyplease", "syn 2.0.117", diff --git a/Cargo.toml b/Cargo.toml index 5b603f9f..43c3ded8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,53 +1,84 @@ -[workspace] -resolver = "2" -members = [ "./app" ] -exclude = [ "./tengri", "./dizzle" ] - -[workspace.package] +[package] +name = "tek" edition = "2024" version = "0.3.0" +[lib] +path = "app/tek.rs" + +[[bin]] +name = "tek" +path = "app/tek.rs" + +[target.'cfg(target_os = "linux")'] +rustflags = ["-C", "link-arg=-fuse-ld=mold"] + +[dependencies] +tengri = { path = "./tengri", features = [ "tui", "dsl" ] } +dizzle = { path = "./dizzle" } +jack = { path = "./rust-jack" } + +ansi_term = { version = "0.12.1" } +atomic_float = { version = "1.0.0" } +backtrace = { version = "0.3.72" } +builder-pattern = { version = "0.4.2" } +bumpalo = { version = "3.19.0" } +konst = { version = "0.3.16", features = [ "rust_1_83" ] } +midly = { version = "0.5" } +palette = { version = "0.7.6", features = [ "random" ] } +quanta = { version = "0.12.3" } +rand = { version = "0.8.5" } +toml = { version = "0.9.2" } +xdg = { version = "3.0.0" } + +clap = { optional = true, version = "4.5.4", features = [ "derive" ]} +livi = { optional = true, version = "0.7.4" } +symphonia = { optional = true, version = "0.5.4", features = [ "all" ] } +winit = { optional = true, version = "0.30.4", features = [ "x11" ]} +wavers = { optional = true, version = "1.4.3" } +uuid = { optional = true, version = "1.10.0", features = [ "v4" ] } +gtk = { optional = true, version = "0.18.1" } + +#once_cell = "1.19.0" +#no_deadlocks = "1.3.2" +#suil-rs = { path = "../suil" } +#vst = "0.4.0" +#vst3 = "0.1.0" + +[dev-dependencies] +tek = { path = "." } +proptest = { version = "^1" } +proptest-derive = { version = "^0.5.1" } + +[features] +default = ["cli", "arranger", "sampler"] + +arranger = ["port", "editor", "sequencer", "track", "scene", "clip", "select"] +browse = [] +clap = [] +cli = ["dep:clap"] +clip = [] +clock = [] +editor = [] +host = ["lv2"] +lv2 = ["port", "livi"] +lv2_gui = ["lv2", "winit"] +meter = [] +mixer = [] +pool = [] +port = [] +sampler = ["port", "meter", "mixer", "browse", "symphonia", "wavers"] +scene = [] +select = [] +sequencer = ["port", "clock", "uuid", "pool"] +sf2 = [] +track = [] +vst2 = [] +vst3 = [] + [profile.release] lto = true [profile.coverage] inherits = "test" lto = false - -[workspace.dependencies.tengri] -path = "./tengri/tengri" -features = [ "tui", "dsl" ] - -[workspace.dependencies.tengri_proc] -path = "./tengri/proc" - -[workspace.dependencies.jack] -path = "./rust-jack" - -[workspace.dependencies] -tek = { path = "./tek" } - -atomic_float = { version = "1.0.0" } -backtrace = { version = "0.3.72" } -bumpalo = { version = "3.19.0" } -clap = { version = "4.5.4", features = [ "derive" ] } -gtk = { version = "0.18.1" } -konst = { version = "0.3.16", features = [ "rust_1_83" ] } -livi = { version = "0.7.4" } -midly = { version = "0.5" } -palette = { version = "0.7.6", features = [ "random" ] } -quanta = { version = "0.12.3" } -rand = { version = "0.8.5" } -symphonia = { version = "0.5.4", features = [ "all" ] } -toml = { version = "0.9.2" } -uuid = { version = "1.10.0", features = [ "v4" ] } -wavers = { version = "1.4.3" } -winit = { version = "0.30.4", features = [ "x11" ] } -xdg = { version = "3.0.0" } -#once_cell = "1.19.0" -#no_deadlocks = "1.3.2" -#suil-rs = { path = "../suil" } -#vst = "0.4.0" -#vst3 = "0.1.0" -proptest = { version = "^1" } -proptest-derive = { version = "^0.5.1" } diff --git a/app/Cargo.toml b/app/Cargo.toml index 975340ad..e69de29b 100644 --- a/app/Cargo.toml +++ b/app/Cargo.toml @@ -1,63 +0,0 @@ -[package] -name = "tek" -edition = { workspace = true } -version = { workspace = true } - -[lib] -path = "tek.rs" - -[[bin]] -name = "tek" -path = "tek.rs" - -[target.'cfg(target_os = "linux")'] -rustflags = ["-C", "link-arg=-fuse-ld=mold"] - -[dependencies] -ansi_term = "0.12.1" -atomic_float = { workspace = true } -backtrace = { workspace = true } -builder-pattern = "0.4.2" -clap = { workspace = true, optional = true } -jack = { workspace = true } -konst = { workspace = true } -livi = { workspace = true, optional = true } -midly = { workspace = true } -palette = { workspace = true } -rand = { workspace = true } -symphonia = { workspace = true, optional = true } -tengri = { workspace = true } -toml = { workspace = true } -uuid = { workspace = true, optional = true } -wavers = { workspace = true, optional = true } -winit = { workspace = true, optional = true } -xdg = { workspace = true } - -[dev-dependencies] -proptest = { workspace = true } -proptest-derive = { workspace = true } - -[features] -arranger = ["port", "editor", "sequencer", "editor", "track", "scene", "clip", "select"] -browse = [] -clap = [] -cli = ["dep:clap"] -clip = [] -clock = [] -default = ["cli", "arranger", "sampler", "lv2"] -editor = [] -host = ["lv2"] -lv2 = ["port", "livi"] -lv2_gui = ["lv2", "winit"] -meter = [] -mixer = [] -pool = [] -port = [] -sampler = ["port", "meter", "mixer", "browse", "symphonia", "wavers"] -scene = [] -select = [] -sequencer = ["port", "clock", "uuid", "pool"] -sf2 = [] -track = [] -vst2 = [] -vst3 = [] diff --git a/app/tek.rs b/app/tek.rs index a6348d46..cfd3009d 100644 --- a/app/tek.rs +++ b/app/tek.rs @@ -1167,7 +1167,7 @@ mod view { &connect.info))))))))) } - pub fn draw_header (state: &Lv2, to: &mut TuiOut, x: u16, y: u16, w: u16) { + #[cfg(feature = "lv2")] pub fn draw_header (state: &Lv2, to: &mut TuiOut, x: u16, y: u16, w: u16) { let style = Style::default().gray(); let label1 = format!(" {}", state.name); to.blit(&label1, x + 1, y, Some(style.white().bold())); diff --git a/app/tek_impls.rs b/app/tek_impls.rs index c876e99e..28d7b55e 100644 --- a/app/tek_impls.rs +++ b/app/tek_impls.rs @@ -1850,129 +1850,6 @@ impl HasContent for OctaveVertical { ) } } - -impl Lv2 { - - pub fn new ( - jack: &Jack<'static>, - name: &str, - uri: &str, - ) -> Usually { - let lv2_world = livi::World::with_load_bundle(&uri); - let lv2_features = lv2_world.build_features(livi::FeaturesBuilder { - min_block_length: 1, - max_block_length: 65536, - }); - let lv2_plugin = lv2_world.iter_plugins().nth(0) - .unwrap_or_else(||panic!("plugin not found: {uri}")); - Ok(Self { - jack: jack.clone(), - name: name.into(), - path: Some(String::from(uri).into()), - selected: 0, - mapping: false, - midi_ins: vec![], - midi_outs: vec![], - audio_ins: vec![], - audio_outs: vec![], - lv2_instance: unsafe { - lv2_plugin - .instantiate(lv2_features.clone(), 48000.0) - .expect(&format!("instantiate failed: {uri}")) - }, - lv2_port_list: lv2_plugin.ports().collect::>(), - lv2_input_buffer: Vec::with_capacity(Self::INPUT_BUFFER), - lv2_ui_thread: None, - lv2_world, - lv2_features, - lv2_plugin, - }) - } - - const INPUT_BUFFER: usize = 1024; - -} - - -fn lv2_jack_process ( - Lv2 { - midi_ins, midi_outs, audio_ins, audio_outs, - lv2_features, lv2_instance, lv2_input_buffer, .. - }: &mut Lv2, - _client: &Client, - scope: &ProcessScope -) -> Control { - - let urid = lv2_features.midi_urid(); - - lv2_input_buffer.clear(); - - for port in midi_ins.iter() { - let mut atom = ::livi::event::LV2AtomSequence::new( - &lv2_features, - scope.n_frames() as usize - ); - for event in port.iter(scope) { - match event.bytes.len() { - 3 => atom.push_midi_event::<3>( - event.time as i64, - urid, - &event.bytes[0..3] - ).unwrap(), - _ => {} - } - } - lv2_input_buffer.push(atom); - } - - let mut outputs = vec![]; - - for _ in midi_outs.iter() { - outputs.push(::livi::event::LV2AtomSequence::new( - lv2_features, - scope.n_frames() as usize - )); - } - - let ports = ::livi::EmptyPortConnections::new() - .with_atom_sequence_inputs(lv2_input_buffer.iter()) - .with_atom_sequence_outputs(outputs.iter_mut()) - .with_audio_inputs(audio_ins.iter().map(|o|o.as_slice(scope))) - .with_audio_outputs(audio_outs.iter_mut().map(|o|o.as_mut_slice(scope))); - - unsafe { - lv2_instance.run(scope.n_frames() as usize, ports).unwrap() - }; - - Control::Continue -} - - -#[cfg(feature = "lv2_gui")] -impl LV2PluginUI { - pub fn new () -> Usually { - Ok(Self { window: None }) - } -} - -#[cfg(feature = "lv2_gui")] -impl ApplicationHandler for LV2PluginUI { - fn resumed (&mut self, event_loop: &ActiveEventLoop) { - self.window = Some(event_loop.create_window(Window::default_attributes()).unwrap()); - } - fn window_event (&mut self, event_loop: &ActiveEventLoop, id: WindowId, event: WindowEvent) { - match event { - WindowEvent::CloseRequested => { - self.window.as_ref().unwrap().set_visible(false); - event_loop.exit(); - }, - WindowEvent::RedrawRequested => { - self.window.as_ref().unwrap().request_redraw(); - } - _ => (), - } - } -} impl Layout for RmsMeter {} impl Layout for Log10Meter {} impl Pool { @@ -3825,7 +3702,7 @@ mod draw { impl Draw for MidiEditor { fn draw (&self, to: &mut TuiOut) { self.content().draw(to) } } - impl Draw for Lv2 { + #[cfg(feature = "lv2")] impl Draw for Lv2 { fn draw (&self, to: &mut TuiOut) { let area = to.area(); let XYWH(x, y, _, height) = area; @@ -4001,7 +3878,7 @@ impl> RegisterPorts for J { #[cfg(feature = "port")] has!(Vec: |self: Sequencer|self.midi_outs); audio!(App: tek_jack_process, tek_jack_event); -audio!(Lv2: lv2_jack_process); +#[cfg(feature = "lv2")] audio!(Lv2: lv2_jack_process); audio!(Sampler: sampler_jack_process); has!(Jack<'static>: |self: App|self.jack); has!(Dialog: |self: App|self.dialog); @@ -4119,3 +3996,113 @@ handle!(TuiIn: |self: App, input|{ self.history.extend(history.into_iter()); Ok(None) }); + +#[cfg(feature = "lv2")] impl Lv2 { + const INPUT_BUFFER: usize = 1024; + pub fn new ( + jack: &Jack<'static>, + name: &str, + uri: &str, + ) -> Usually { + let lv2_world = livi::World::with_load_bundle(&uri); + let lv2_features = lv2_world.build_features(livi::FeaturesBuilder { + min_block_length: 1, + max_block_length: 65536, + }); + let lv2_plugin = lv2_world.iter_plugins().nth(0) + .unwrap_or_else(||panic!("plugin not found: {uri}")); + Ok(Self { + jack: jack.clone(), + name: name.into(), + path: Some(String::from(uri).into()), + selected: 0, + mapping: false, + midi_ins: vec![], + midi_outs: vec![], + audio_ins: vec![], + audio_outs: vec![], + lv2_instance: unsafe { + lv2_plugin + .instantiate(lv2_features.clone(), 48000.0) + .expect(&format!("instantiate failed: {uri}")) + }, + lv2_port_list: lv2_plugin.ports().collect::>(), + lv2_input_buffer: Vec::with_capacity(Self::INPUT_BUFFER), + lv2_ui_thread: None, + lv2_world, + lv2_features, + lv2_plugin, + }) + } +} + +#[cfg(feature = "lv2")] fn lv2_jack_process ( + Lv2 { + midi_ins, midi_outs, audio_ins, audio_outs, + lv2_features, lv2_instance, lv2_input_buffer, .. + }: &mut Lv2, + _client: &Client, + scope: &ProcessScope +) -> Control { + let urid = lv2_features.midi_urid(); + lv2_input_buffer.clear(); + for port in midi_ins.iter() { + let mut atom = ::livi::event::LV2AtomSequence::new( + &lv2_features, + scope.n_frames() as usize + ); + for event in port.iter(scope) { + match event.bytes.len() { + 3 => atom.push_midi_event::<3>( + event.time as i64, + urid, + &event.bytes[0..3] + ).unwrap(), + _ => {} + } + } + lv2_input_buffer.push(atom); + } + let mut outputs = vec![]; + for _ in midi_outs.iter() { + outputs.push(::livi::event::LV2AtomSequence::new( + lv2_features, + scope.n_frames() as usize + )); + } + let ports = ::livi::EmptyPortConnections::new() + .with_atom_sequence_inputs(lv2_input_buffer.iter()) + .with_atom_sequence_outputs(outputs.iter_mut()) + .with_audio_inputs(audio_ins.iter().map(|o|o.as_slice(scope))) + .with_audio_outputs(audio_outs.iter_mut().map(|o|o.as_mut_slice(scope))); + unsafe { + lv2_instance.run(scope.n_frames() as usize, ports).unwrap() + }; + Control::Continue +} + +#[cfg(feature = "lv2_gui")] +impl LV2PluginUI { + pub fn new () -> Usually { + Ok(Self { window: None }) + } +} + +#[cfg(feature = "lv2_gui")] +impl ApplicationHandler for LV2PluginUI { + fn resumed (&mut self, event_loop: &ActiveEventLoop) { + self.window = Some(event_loop.create_window(Window::default_attributes()).unwrap()); + } + fn window_event (&mut self, event_loop: &ActiveEventLoop, id: WindowId, event: WindowEvent) { + match event { + WindowEvent::CloseRequested => { + self.window.as_ref().unwrap().set_visible(false); + event_loop.exit(); + }, + WindowEvent::RedrawRequested => { + self.window.as_ref().unwrap().request_redraw(); + } + _ => (), + } + } +} diff --git a/dizzle b/dizzle index eec89565..89260648 160000 --- a/dizzle +++ b/dizzle @@ -1 +1 @@ -Subproject commit eec89565c99eb23c2c46803de1bfaabbb6ef95b2 +Subproject commit 89260648ff828ab3c55b566368007a7b83fc3fc8 diff --git a/shell.nix b/shell.nix index f40138ad..a449cf33 100755 --- a/shell.nix +++ b/shell.nix @@ -11,30 +11,38 @@ pkgs.cloc ]; buildInputs = [ + pkgs.libclang pkgs.jack2 pkgs.lilv pkgs.serd - pkgs.libclang + + #pkgs.glib + #pkgs.atk + #pkgs.gdk + #pkgs.pango ]; VST3_SDK_DIR = "/home/user/Lab/Music/tek/vst3sdk/"; LIBCLANG_PATH = "${pkgs.libclang.lib.outPath}/lib"; LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ pkgs.pipewire.jack + # for ChowKick.lv2: - pkgs.freetype - pkgs.libgcc.lib + #pkgs.freetype + #pkgs.libgcc.lib + # for Panagement - pkgs.xorg.libX11 - pkgs.xorg.libXcursor - pkgs.xorg.libXi - pkgs.libxkbcommon - pkgs.lilv - pkgs.serd + #pkgs.xorg.libX11 + #pkgs.xorg.libXcursor + #pkgs.xorg.libXi + #pkgs.libxkbcommon + #pkgs.lilv + #pkgs.serd #suil + # for Helm: - pkgs.alsa-lib - pkgs.curl - pkgs.libglvnd + #pkgs.alsa-lib + #pkgs.curl + #pkgs.libglvnd #xorg_sys_opengl ]; in pkgs.mkShell.override { diff --git a/tengri b/tengri index 006cddcc..06f8ed3a 160000 --- a/tengri +++ b/tengri @@ -1 +1 @@ -Subproject commit 006cddcc16868aa626ecca6abf1c0f00523402fc +Subproject commit 06f8ed3ae3a5d0458036ba816f244df11c6b1277