diff --git a/Cargo.lock b/Cargo.lock index c0ae5e8..d234bd9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,22 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "ab_glyph" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + [[package]] name = "addr2line" version = "0.24.1" @@ -29,12 +45,30 @@ version = "1.0.0-beta.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f1f8f5a6f3d50d89e3797d7593a50f96bb2aaa20ca0cc7be1fb673232c91d72" +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + [[package]] name = "atomic_float" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62af46d040ba9df09edc6528dae9d8e49f5f3e82f55b7d2ec31a733c38dbc49d" +[[package]] +name = "atomic_float" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "628d228f918ac3b82fe590352cc719d30664a0c13ca3a60266fe02c7132d480a" +dependencies = [ + "serde", +] + [[package]] name = "atomic_refcell" version = "0.1.13" @@ -47,11 +81,19 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] +[[package]] +name = "audio_util" +version = "0.1.0" +dependencies = [ + "float-cmp", + "nih_plug", +] + [[package]] name = "autocfg" version = "1.3.0" @@ -73,6 +115,24 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "baseview" +version = "0.1.0" +source = "git+https://github.com/RustAudio/baseview.git?rev=1d9806d5bd92275d0d8142d9c9c90198757b9b25#1d9806d5bd92275d0d8142d9c9c90198757b9b25" +dependencies = [ + "cocoa", + "core-foundation", + "keyboard-types", + "nix 0.22.3", + "objc", + "raw-window-handle 0.4.3", + "uuid", + "winapi", + "x11", + "xcb 0.9.0", + "xcb-util", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -85,6 +145,44 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytemuck" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + [[package]] name = "camino" version = "1.1.9" @@ -117,6 +215,15 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cc" +version = "1.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +dependencies = [ + "shlex", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -128,6 +235,60 @@ name = "clap-sys" version = "0.3.0" source = "git+https://github.com/robbert-vdh/clap-sys.git?branch=feature/cstr-macro#523a5f8a8dd021ec99e7d6e0c0ebe7741a3da9d4" +[[package]] +name = "clipboard-win" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fdf5e01086b6be750428ba4a40619f847eb2e95756eee84b18e06e5f0b50342" +dependencies = [ + "lazy-bytes-cast", + "winapi", +] + +[[package]] +name = "cocoa" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +dependencies = [ + "bitflags 1.3.2", + "block", + "cocoa-foundation", + "core-foundation", + "core-graphics", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" +dependencies = [ + "bitflags 1.3.2", + "block", + "core-foundation", + "core-graphics-types", + "libc", + "objc", +] + +[[package]] +name = "copypasta" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4423d79fed83ebd9ab81ec21fa97144300a961782158287dc9bf7eddac37ff0b" +dependencies = [ + "clipboard-win", + "objc", + "objc-foundation", + "objc_id", + "smithay-clipboard", + "x11-clipboard", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -144,6 +305,30 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "core-graphics" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "libc", +] + [[package]] name = "crossbeam" version = "0.8.4" @@ -200,6 +385,24 @@ version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +[[package]] +name = "crossfader_gui" +version = "0.1.0" +dependencies = [ + "atomic_float 1.1.0", + "audio_util", + "nih_plug", + "nih_plug_iced", + "parking_lot 0.12.3", + "style", +] + +[[package]] +name = "cty" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" + [[package]] name = "deranged" version = "0.3.11" @@ -209,18 +412,173 @@ dependencies = [ "powerfmt", ] +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + [[package]] name = "equivalent" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "euclid" +version = "0.22.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" +dependencies = [ + "num-traits", +] + +[[package]] +name = "float-cmp" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8" +dependencies = [ + "num-traits", +] + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "fruitsuite" version = "0.1.0" dependencies = [ "nih_plug", - "parking_lot", + "parking_lot 0.12.3", +] + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", ] [[package]] @@ -229,6 +587,77 @@ version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +[[package]] +name = "glam" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579160312273c954cc51bd440f059dde741029ac8daf8c84fece76cb77f62c15" +dependencies = [ + "version_check", +] + +[[package]] +name = "glow" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8bd5877156a19b8ac83a29b2306fe20537429d318f3ff0a1a2119f8d9c61919" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glow_glyph" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f4e62c64947b9a24fe20e2bba9ad819ecb506ef5c8df7ffc4737464c6df9510" +dependencies = [ + "bytemuck", + "glow", + "glyph_brush", + "log", +] + +[[package]] +name = "glyph_brush" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225e5bd28cddb97578e31da78ae24eff4d6611523fb03b73f300d511461834c0" +dependencies = [ + "glyph_brush_draw_cache", + "glyph_brush_layout", + "ordered-float", + "rustc-hash", + "twox-hash 2.0.0", +] + +[[package]] +name = "glyph_brush_draw_cache" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb6c910def52365fef3f439a6b50a4d5c11b28eec4cf6c191f6dfea18e88d7f" +dependencies = [ + "ab_glyph", + "crossbeam-channel", + "crossbeam-deque", + "linked-hash-map", + "rayon", + "rustc-hash", +] + +[[package]] +name = "glyph_brush_layout" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1e288bfd2f6c0313f78bf5aa538356ad481a3bb97e9b7f93220ab0066c5992" +dependencies = [ + "ab_glyph", + "approx", + "xi-unicode", +] + [[package]] name = "goblin" version = "0.6.1" @@ -255,6 +684,97 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "iced_baseview" +version = "0.0.3" +source = "git+https://github.com/robbert-vdh/iced_baseview.git?branch=feature/update-baseview#df3a852a15cf0e9fcc8d2b32f5718e56780beaf3" +dependencies = [ + "baseview", + "copypasta", + "iced_core", + "iced_futures", + "iced_glow", + "iced_graphics", + "iced_native", + "keyboard-types", + "raw-window-handle 0.4.3", +] + +[[package]] +name = "iced_core" +version = "0.4.0" +source = "git+https://github.com/iced-rs/iced.git?rev=a53fa91e0ddf374bbeb66d5e831b79127ed47a9d#a53fa91e0ddf374bbeb66d5e831b79127ed47a9d" +dependencies = [ + "bitflags 1.3.2", + "wasm-timer", +] + +[[package]] +name = "iced_futures" +version = "0.3.0" +source = "git+https://github.com/iced-rs/iced.git?rev=a53fa91e0ddf374bbeb66d5e831b79127ed47a9d#a53fa91e0ddf374bbeb66d5e831b79127ed47a9d" +dependencies = [ + "futures", + "log", + "wasm-bindgen-futures", + "wasm-timer", +] + +[[package]] +name = "iced_glow" +version = "0.2.0" +source = "git+https://github.com/iced-rs/iced.git?rev=a53fa91e0ddf374bbeb66d5e831b79127ed47a9d#a53fa91e0ddf374bbeb66d5e831b79127ed47a9d" +dependencies = [ + "bytemuck", + "euclid", + "glow", + "glow_glyph", + "glyph_brush", + "iced_graphics", + "iced_native", + "log", +] + +[[package]] +name = "iced_graphics" +version = "0.2.0" +source = "git+https://github.com/iced-rs/iced.git?rev=a53fa91e0ddf374bbeb66d5e831b79127ed47a9d#a53fa91e0ddf374bbeb66d5e831b79127ed47a9d" +dependencies = [ + "bytemuck", + "glam", + "iced_native", + "iced_style", + "raw-window-handle 0.4.3", + "thiserror", +] + +[[package]] +name = "iced_native" +version = "0.4.0" +source = "git+https://github.com/iced-rs/iced.git?rev=a53fa91e0ddf374bbeb66d5e831b79127ed47a9d#a53fa91e0ddf374bbeb66d5e831b79127ed47a9d" +dependencies = [ + "iced_core", + "iced_futures", + "iced_style", + "num-traits", + "twox-hash 1.6.3", + "unicode-segmentation", +] + +[[package]] +name = "iced_style" +version = "0.3.0" +source = "git+https://github.com/iced-rs/iced.git?rev=a53fa91e0ddf374bbeb66d5e831b79127ed47a9d#a53fa91e0ddf374bbeb66d5e831b79127ed47a9d" +dependencies = [ + "iced_core", +] + [[package]] name = "indexmap" version = "2.5.0" @@ -265,18 +785,73 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + [[package]] name = "itoa" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +[[package]] +name = "js-sys" +version = "0.3.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "keyboard-types" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7668b7cff6a51fe61cdde64cd27c8a220786f399501b57ebe36f7d8112fd68" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "lazy-bytes-cast" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10257499f089cd156ad82d0a9cd57d9501fa2c989068992a97eb3c27836f206b" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + [[package]] name = "libc" version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +[[package]] +name = "libloading" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + [[package]] name = "lock_api" version = "0.4.12" @@ -308,6 +883,24 @@ version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + [[package]] name = "midi-consts" version = "0.1.0" @@ -344,7 +937,7 @@ source = "git+https://github.com/robbert-vdh/nih-plug.git#dfafe90349aa3d8e40922e dependencies = [ "anyhow", "anymap", - "atomic_float", + "atomic_float 0.1.0", "atomic_refcell", "backtrace", "bitflags 1.3.2", @@ -358,8 +951,8 @@ dependencies = [ "nih_log", "nih_plug_derive", "objc", - "parking_lot", - "raw-window-handle", + "parking_lot 0.12.3", + "raw-window-handle 0.5.2", "serde", "serde_json", "vst3-sys", @@ -367,6 +960,11 @@ dependencies = [ "windows", ] +[[package]] +name = "nih_plug_assets" +version = "0.1.0" +source = "git+https://github.com/robbert-vdh/nih_plug_assets.git#a04e327923e120bfaba864098c906d7444e40d6b" + [[package]] name = "nih_plug_derive" version = "0.1.0" @@ -377,6 +975,21 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "nih_plug_iced" +version = "0.0.0" +source = "git+https://github.com/robbert-vdh/nih-plug.git#dfafe90349aa3d8e40922ec031b6d673803d6432" +dependencies = [ + "atomic_refcell", + "baseview", + "crossbeam", + "iced_baseview", + "nih_plug", + "nih_plug_assets", + "raw-window-handle 0.4.3", + "serde", +] + [[package]] name = "nih_plug_xtask" version = "0.1.0" @@ -390,12 +1003,56 @@ dependencies = [ "toml", ] +[[package]] +name = "nix" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" +dependencies = [ + "bitflags 1.3.2", + "cc", + "cfg-if", + "libc", + "memoffset", +] + +[[package]] +name = "nix" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset", +] + [[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.9", + "libc", +] + [[package]] name = "num_threads" version = "0.1.7" @@ -414,6 +1071,26 @@ dependencies = [ "malloc_buf", ] +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + [[package]] name = "object" version = "0.36.4" @@ -430,63 +1107,210 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] -name = "parking_lot" -version = "0.12.3" +name = "ordered-float" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e7ccb95e240b7c9506a3d544f10d935e142cc90b0a1d56954fb44d89ad6b97" +dependencies = [ + "num-traits", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.10", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.4", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8533f14c8382aaad0d592c812ac3b826162128b65662331e1127b45c3d18536b" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ - "lock_api", - "parking_lot_core", + "ppv-lite86", + "rand_core", ] [[package]] -name = "parking_lot_core" -version = "0.9.10" +name = "rand_core" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.52.6", + "getrandom", ] [[package]] -name = "plain" -version = "0.2.3" +name = "raw-window-handle" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" +checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41" +dependencies = [ + "cty", +] [[package]] -name = "powerfmt" -version = "0.2.0" +name = "raw-window-handle" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] -name = "proc-macro2" -version = "1.0.86" +name = "rayon" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ - "unicode-ident", + "either", + "rayon-core", ] [[package]] -name = "quote" -version = "1.0.37" +name = "rayon-core" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ - "proc-macro2", + "crossbeam-deque", + "crossbeam-utils", ] [[package]] -name = "raw-window-handle" -version = "0.5.2" +name = "redox_syscall" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] [[package]] name = "redox_syscall" @@ -512,12 +1336,24 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + [[package]] name = "ryu" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.2.0" @@ -594,12 +1430,77 @@ dependencies = [ "serde", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] + [[package]] name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +[[package]] +name = "smithay-client-toolkit" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9" +dependencies = [ + "bitflags 1.3.2", + "dlib", + "lazy_static", + "log", + "memmap2", + "nix 0.24.3", + "pkg-config", + "wayland-client", + "wayland-cursor", + "wayland-protocols", +] + +[[package]] +name = "smithay-clipboard" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a345c870a1fae0b1b779085e81b51e614767c239e93503588e54c5b17f4b0e8" +dependencies = [ + "smithay-client-toolkit", + "wayland-client", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "style" +version = "0.1.0" +dependencies = [ + "nih_plug_iced", +] + [[package]] name = "syn" version = "1.0.109" @@ -718,12 +1619,58 @@ dependencies = [ "winnow", ] +[[package]] +name = "ttf-parser" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5902c5d130972a0000f60860bfbf46f7ca3db5391eddfedd1b8728bd9dc96c0e" + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "static_assertions", +] + +[[package]] +name = "twox-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d09466de2fbca05ea830e16e62943f26607ab2148fb72b642505541711d99ad2" +dependencies = [ + "rand", +] + [[package]] name = "unicode-ident" version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + [[package]] name = "vst3-com" version = "0.1.0" @@ -761,6 +1708,177 @@ dependencies = [ "vst3-com", ] +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.77", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" + +[[package]] +name = "wasm-timer" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" +dependencies = [ + "futures", + "js-sys", + "parking_lot 0.11.2", + "pin-utils", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wayland-client" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" +dependencies = [ + "bitflags 1.3.2", + "downcast-rs", + "libc", + "nix 0.24.3", + "scoped-tls", + "wayland-commons", + "wayland-scanner", + "wayland-sys", +] + +[[package]] +name = "wayland-commons" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" +dependencies = [ + "nix 0.24.3", + "once_cell", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-cursor" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" +dependencies = [ + "nix 0.24.3", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" +dependencies = [ + "bitflags 1.3.2", + "wayland-client", + "wayland-commons", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" +dependencies = [ + "proc-macro2", + "quote", + "xml-rs", +] + +[[package]] +name = "wayland-sys" +version = "0.29.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4" +dependencies = [ + "dlib", + "lazy_static", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "widestring" version = "1.1.0" @@ -946,14 +2064,83 @@ dependencies = [ "memchr", ] +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-clipboard" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "473068b7b80ac86a18328824f1054e5e007898c47b5bbc281bd7abe32bc3653c" +dependencies = [ + "xcb 0.10.1", +] + [[package]] name = "x_fader" version = "0.1.0" dependencies = [ "nih_plug", - "parking_lot", + "parking_lot 0.12.3", +] + +[[package]] +name = "xcb" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62056f63138b39116f82a540c983cc11f1c90cd70b3d492a70c25eaa50bd22a6" +dependencies = [ + "libc", + "log", + "x11", +] + +[[package]] +name = "xcb" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771e2b996df720cd1c6dd9ff90f62d91698fd3610cc078388d0564bdd6622a9c" +dependencies = [ + "libc", + "log", + "quick-xml", +] + +[[package]] +name = "xcb-util" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43893e47f27bf7d81d489feef3a0e34a457e90bc314b7e74ad9bb3980e4c1c48" +dependencies = [ + "libc", + "xcb 0.9.0", ] +[[package]] +name = "xcursor" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" + +[[package]] +name = "xi-unicode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" + +[[package]] +name = "xml-rs" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" + [[package]] name = "xtask" version = "0.1.0" @@ -966,7 +2153,7 @@ name = "xy_fader" version = "0.1.0" dependencies = [ "nih_plug", - "parking_lot", + "parking_lot 0.12.3", ] [[package]] @@ -974,5 +2161,26 @@ name = "xyz_fader" version = "0.1.0" dependencies = [ "nih_plug", - "parking_lot", + "parking_lot 0.12.3", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", ] diff --git a/Cargo.toml b/Cargo.toml index ce6e489..334f71e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ authors = ["Zoe Oosting "] crate-type = ["cdylib"] [workspace] -members = [ "x_fader","xtask", "xy_fader", "xyz_fader"] +members = [ "style","crossfader_gui", "x_fader","xtask", "xy_fader", "xyz_fader", "audio_util"] [dependencies] nih_plug = { git = "https://github.com/robbert-vdh/nih-plug.git" } diff --git a/audio_util/Cargo.toml b/audio_util/Cargo.toml new file mode 100644 index 0000000..acc9145 --- /dev/null +++ b/audio_util/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "audio_util" +version = "0.1.0" +edition = "2021" + +[crate] +type = "cdylib" + +[dependencies] +float-cmp = "0.10.0" +nih_plug = { git = "https://github.com/robbert-vdh/nih-plug.git" } \ No newline at end of file diff --git a/audio_util/src/buffer.rs b/audio_util/src/buffer.rs new file mode 100644 index 0000000..eba8067 --- /dev/null +++ b/audio_util/src/buffer.rs @@ -0,0 +1,20 @@ +use nih_plug::prelude::AuxiliaryBuffers; + +/// checks sidechain sample at the position the main sample is +/// just returns zero when there is an error +pub fn get_sample_at_position( + channel_index: usize, + sample_index: usize, + aux: &mut AuxiliaryBuffers, +) -> f32 { + if let Some(buffer) = aux.inputs.first() { + let buffer = buffer.as_slice_immutable(); + if let Some(sample) = buffer.get(channel_index) { + if let Some(channel) = sample.get(sample_index) { + return *channel; + } + } + } + + 0.0 +} diff --git a/audio_util/src/crossfade.rs b/audio_util/src/crossfade.rs new file mode 100644 index 0000000..4c3243c --- /dev/null +++ b/audio_util/src/crossfade.rs @@ -0,0 +1,28 @@ +/** +converts from a linear crossfade between 0 and 1 to +an equal power crossfade between 0 and 1 + */ +pub fn constant_power(linear_fade_strength: f32) -> f32 { + let linear_fade_strength = linear_fade_strength.clamp(0., 1.); + return f32::sqrt(linear_fade_strength); +} + +#[cfg(test)] +mod tests { + use super::*; + use float_cmp::{approx_eq, assert_approx_eq}; + + #[test] + fn test_equal_power() { + // center + assert_approx_eq!(f32, constant_power(0.5), 0.70710677); + // left + assert_approx_eq!(f32, constant_power(0.0), 0.0); + // right + assert_approx_eq!(f32, constant_power(1.0), 1.0); + //value too high + assert!(approx_eq!(f32, constant_power(100.0), 1.0)); + // value too low + assert!(approx_eq!(f32, constant_power(-100.0), 0.0)) + } +} diff --git a/audio_util/src/lib.rs b/audio_util/src/lib.rs new file mode 100644 index 0000000..c59b27e --- /dev/null +++ b/audio_util/src/lib.rs @@ -0,0 +1,2 @@ +pub mod buffer; +pub mod crossfade; diff --git a/build_all.py b/build_all.py index 682b819..6aa9d72 100644 --- a/build_all.py +++ b/build_all.py @@ -11,6 +11,8 @@ "xy_fader", "-p", "xyz_fader", + "-p", + "crossfader_gui", "--release" ] ) diff --git a/crossfader_gui/Cargo.toml b/crossfader_gui/Cargo.toml new file mode 100644 index 0000000..abe2c44 --- /dev/null +++ b/crossfader_gui/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "crossfader_gui" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib"] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +nih_plug = { git = "https://github.com/robbert-vdh/nih-plug.git" } +nih_plug_iced = { git = "https://github.com/robbert-vdh/nih-plug.git" } +style = { path = "../style" } +audio_util = { path = "../audio_util" } +parking_lot = "0.12.3" +atomic_float = { version = "1", features = ["serde"] } diff --git a/crossfader_gui/src/editor.rs b/crossfader_gui/src/editor.rs new file mode 100644 index 0000000..037dac7 --- /dev/null +++ b/crossfader_gui/src/editor.rs @@ -0,0 +1,99 @@ +use std::sync::Arc; + +use nih_plug::{editor::Editor, prelude::GuiContext}; +use nih_plug_iced::widgets as nih_widgets; +use nih_plug_iced::*; +use style::{self}; + +use crate::XFaderParams; + +pub(crate) fn default_state() -> Arc { + return IcedState::from_size(180, 150); +} + +pub(crate) fn create( + params: Arc, + editor_state: Arc, +) -> Option> { + create_iced_editor::(editor_state, params) +} + +struct XFaderEditor { + params: Arc, + context: Arc, + // params + fade_strength_state: nih_widgets::param_slider::State, +} + +#[derive(Debug, Clone, Copy)] +enum Message { + ParamUpdate(nih_widgets::ParamMessage), +} + +impl IcedEditor for XFaderEditor { + type Executor = executor::Default; + type Message = Message; + type InitializationFlags = Arc; + + fn new( + params: Self::InitializationFlags, + context: Arc, + ) -> (Self, Command) { + let editor = Self { + params, + context, + fade_strength_state: Default::default(), + }; + (editor, Command::none()) + } + + fn context(&self) -> &dyn GuiContext { + self.context.as_ref() + } + + fn update( + &mut self, + _window: &mut WindowQueue, + message: Self::Message, + ) -> Command { + match message { + Message::ParamUpdate(message) => self.handle_param_message(message), + } + + return Command::none(); + } + + fn view(&mut self) -> Element<'_, Self::Message> { + Column::new() + .align_items(Alignment::Center) + .spacing(style::spacing::MD) + .push( + Text::new("X¹Fader") + .font(style::font::FIRA_BOLD) + .size(style::font::size::XL) + .color(style::color::BASE_CONTENT) + .horizontal_alignment(alignment::Horizontal::Center) + .vertical_alignment(alignment::Vertical::Center), + ) + .push(Space::with_height(style::spacing::MD.into())) + .push( + Text::new("Fade Strength") + .font(style::font::FIRA_REGULAR) + .size(style::font::size::MD) + .color(style::color::BASE_CONTENT), + ) + .push( + nih_widgets::ParamSlider::new( + &mut self.fade_strength_state, + &self.params.fade_strength, + ) + .font(style::font::FIRA_REGULAR) + .map(Message::ParamUpdate), + ) + .into() + } + + fn background_color(&self) -> Color { + return style::color::BASE; + } +} diff --git a/crossfader_gui/src/lib.rs b/crossfader_gui/src/lib.rs new file mode 100644 index 0000000..e7467a2 --- /dev/null +++ b/crossfader_gui/src/lib.rs @@ -0,0 +1,117 @@ +use nih_plug::{ + params::{FloatParam, Params}, + plugin::Plugin, + prelude::*, +}; +use nih_plug_iced::IcedState; +use std::sync::Arc; +mod editor; +use audio_util::{self, buffer::get_sample_at_position, crossfade}; + +struct XFader { + params: Arc, +} + +impl Default for XFader { + fn default() -> Self { + Self { + params: Arc::new(XFaderParams::default()), + } + } +} + +#[derive(Params)] +pub struct XFaderParams { + #[persist = "editor-state"] + editor_state: Arc, + + #[id = "53c56370-01c5-4820-a977-1dec2eef1af3"] + pub fade_strength: FloatParam, +} + +impl Default for XFaderParams { + fn default() -> Self { + Self { + editor_state: editor::default_state(), + fade_strength: FloatParam::new( + "Fade Strength", + 0.5, + FloatRange::Linear { min: 0.0, max: 1.0 }, + ) + .with_smoother(SmoothingStyle::Linear(5.0)), + } + } +} + +impl Plugin for XFader { + const NAME: &'static str = "X¹Fader"; + const VENDOR: &'static str = "kittycat.homes"; + const URL: &'static str = "https://github.com/fruitsbat/audioplugins"; + const EMAIL: &'static str = "zoe@kittycat.homes"; + const VERSION: &'static str = env!("CARGO_PKG_VERSION"); + const SAMPLE_ACCURATE_AUTOMATION: bool = true; + const AUDIO_IO_LAYOUTS: &'static [AudioIOLayout] = &[ + // stereo + AudioIOLayout { + main_input_channels: NonZeroU32::new(2), + main_output_channels: NonZeroU32::new(2), + + aux_input_ports: &[new_nonzero_u32(2)], + aux_output_ports: &[], + + names: PortNames { + layout: Some("Stereo"), + main_input: Some("Main"), + main_output: Some("Out"), + aux_inputs: &["Sidechain"], + aux_outputs: &[], + }, + }, + ]; + + type SysExMessage = (); + type BackgroundTask = (); + + fn params(&self) -> Arc { + return self.params.clone(); + } + + fn editor(&mut self, _async_executor: AsyncExecutor) -> Option> { + editor::create(self.params.clone(), self.params.editor_state.clone()) + } + + fn process( + &mut self, + buffer: &mut nih_plug::prelude::Buffer, + aux: &mut nih_plug::prelude::AuxiliaryBuffers, + _context: &mut impl nih_plug::prelude::ProcessContext, + ) -> nih_plug::prelude::ProcessStatus { + { + let linear_crossfade_power = self.params.fade_strength.smoothed.next(); + let constant_power_crossfade = crossfade::constant_power(linear_crossfade_power); + let x0_fade_strength = constant_power_crossfade; + let x1_fade_strength = 1.0 - constant_power_crossfade; + + // apply to main audio input + for (sample_index, channel_samples) in buffer.iter_samples().enumerate() { + for (channel_index, sample) in channel_samples.into_iter().enumerate() { + *sample *= x0_fade_strength; + *sample += + get_sample_at_position(channel_index, sample_index, aux) * x1_fade_strength; + } + } + + ProcessStatus::Normal + } + } +} + +impl ClapPlugin for XFader { + const CLAP_ID: &'static str = "1b06d8ac-4c9c-4aef-a105-16bcb76d989b"; + const CLAP_DESCRIPTION: Option<&'static str> = Some("DJ Style Crossfader"); + const CLAP_MANUAL_URL: Option<&'static str> = None; + const CLAP_SUPPORT_URL: Option<&'static str> = None; + const CLAP_FEATURES: &'static [ClapFeature] = &[ClapFeature::Utility, ClapFeature::Stereo]; +} + +nih_export_clap!(XFader); \ No newline at end of file diff --git a/style/Cargo.toml b/style/Cargo.toml new file mode 100644 index 0000000..0577b1d --- /dev/null +++ b/style/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "style" +version = "0.1.0" +edition = "2021" + +[dependencies] +nih_plug_iced = { git = "https://github.com/robbert-vdh/nih-plug.git" } diff --git a/style/assets/FiraSans-Bold.ttf b/style/assets/FiraSans-Bold.ttf new file mode 100644 index 0000000..95e1660 Binary files /dev/null and b/style/assets/FiraSans-Bold.ttf differ diff --git a/style/assets/FiraSans-Regular.ttf b/style/assets/FiraSans-Regular.ttf new file mode 100644 index 0000000..d9fdc0e Binary files /dev/null and b/style/assets/FiraSans-Regular.ttf differ diff --git a/style/src/color/mod.rs b/style/src/color/mod.rs new file mode 100644 index 0000000..a993e03 --- /dev/null +++ b/style/src/color/mod.rs @@ -0,0 +1,15 @@ +use nih_plug_iced::Color; + +pub const BASE: Color = Color { + r: 0.98, + g: 0.98, + b: 0.98, + a: 1.0, +}; + +pub const BASE_CONTENT: Color = Color { + r: 0.0, + g: 0.0, + b: 0.0, + a: 1.0, +}; \ No newline at end of file diff --git a/style/src/font/mod.rs b/style/src/font/mod.rs new file mode 100644 index 0000000..5a6fb4b --- /dev/null +++ b/style/src/font/mod.rs @@ -0,0 +1,13 @@ +use nih_plug_iced::Font; + +pub mod size; + +pub const FIRA_BOLD: Font = Font::External { + name: "Fira Sans Bold", + bytes: include_bytes!("../../assets/FiraSans-Bold.ttf"), +}; + +pub const FIRA_REGULAR: Font = Font::External { + name: "Fira Sans Regular", + bytes: include_bytes!("../../assets/FiraSans-Regular.ttf"), +}; \ No newline at end of file diff --git a/style/src/font/size.rs b/style/src/font/size.rs new file mode 100644 index 0000000..23b612b --- /dev/null +++ b/style/src/font/size.rs @@ -0,0 +1,6 @@ +pub const XS: u16 = 14; +pub const SM: u16 = 18; +pub const MD: u16 = 23; +pub const LG: u16 = 29; +pub const XL: u16 = 37; +pub const XXL: u16 = 47; diff --git a/style/src/lib.rs b/style/src/lib.rs new file mode 100644 index 0000000..25abe1d --- /dev/null +++ b/style/src/lib.rs @@ -0,0 +1,3 @@ +pub mod color; +pub mod font; +pub mod spacing; \ No newline at end of file diff --git a/style/src/spacing.rs b/style/src/spacing.rs new file mode 100644 index 0000000..d0b0595 --- /dev/null +++ b/style/src/spacing.rs @@ -0,0 +1 @@ +pub const MD: u16 = 4; \ No newline at end of file diff --git a/x_fader/src/lib.rs b/x_fader/src/lib.rs index 6b37d6c..0d775f4 100644 --- a/x_fader/src/lib.rs +++ b/x_fader/src/lib.rs @@ -15,19 +15,16 @@ impl Default for XFade { #[derive(Params)] struct ConstantPowerCrossfadeParams { - #[id = "xcrtl"] + #[id = "8eef0a45-7715-4714-845c-1d2dd0bf7c52"] pub main_side_mix: FloatParam, } impl Default for ConstantPowerCrossfadeParams { fn default() -> Self { Self { - main_side_mix: FloatParam::new( - "X Mix", - 0.5, - FloatRange::Linear { min: 0.0, max: 1.0 }, - ) - .with_smoother(SmoothingStyle::Linear(10.0)), + main_side_mix: FloatParam::new("X Mix", 0.5, FloatRange::Linear { min: 0.0, max: 1.0 }) + .with_smoother(SmoothingStyle::Linear(10.0)) + .with_step_size(0.0001), } } } @@ -41,7 +38,7 @@ impl Plugin for XFade { const VERSION: &'static str = env!("CARGO_PKG_VERSION"); const MIDI_INPUT: MidiConfig = MidiConfig::None; const MIDI_OUTPUT: MidiConfig = MidiConfig::None; - const SAMPLE_ACCURATE_AUTOMATION: bool = false ; + const SAMPLE_ACCURATE_AUTOMATION: bool = true; const AUDIO_IO_LAYOUTS: &'static [AudioIOLayout] = &[ // stereo @@ -135,7 +132,7 @@ impl ClapPlugin for XFade { } impl Vst3Plugin for XFade { - const VST3_CLASS_ID: [u8; 16] = *b"fruit.XFader0000"; + const VST3_CLASS_ID: [u8; 16] = *b"Vx2f3D7k!a@cJS8H"; const VST3_SUBCATEGORIES: &'static [Vst3SubCategory] = &[ Vst3SubCategory::Fx, Vst3SubCategory::Stereo,