1
0
Fork 0
Commit graph

875 commits

Author SHA1 Message Date
Robbert van der Helm 3bd3696abe Put the no_alloc guard around entire process call 2022-02-06 15:24:18 +01:00
Robbert van der Helm f644ae8df8 Don't require a write lock to create an editor 2022-02-06 15:22:30 +01:00
Robbert van der Helm 67e9cae37b Explicitly close the egui-baseview window
It's supposed to do this on drop, but it doesn't seem to work.
2022-02-06 15:09:35 +01:00
Robbert van der Helm 92c090766a Add TODOs for things that need fixing 2022-02-06 15:01:19 +01:00
Robbert van der Helm eefb5e604c Actually, adjust the peak meter range to -60 dBFS
This is the same range Bitwig shows in their tiny VU meters in between
devices.
2022-02-06 14:59:13 +01:00
Robbert van der Helm 0943d54404 Adjust the peak meter normalization to -40 dBFS 2022-02-06 14:58:14 +01:00
Robbert van der Helm a95b25cd06 Tweak the peak meter display 2022-02-06 14:18:47 +01:00
Robbert van der Helm 7000e9d42e Don't propagate parameter changes while processing
Let the host do this, this would solve all unsoundness issues and
potential collisions.
2022-02-06 14:15:43 +01:00
Robbert van der Helm ea18f62d02 Always redraw egui GUIs 2022-02-06 14:09:11 +01:00
Robbert van der Helm 40d7799df9 Don't handle context in create_egui_editor
There's no need for special handling here, just let the plugin do its
own thing.
2022-02-06 14:02:55 +01:00
Robbert van der Helm a10e1e1152 Rename the VU meter to generic digital peak meter
Before I get a visit from the VU police.
2022-02-06 13:36:55 +01:00
Robbert van der Helm bad5d0ace6 Use a patched baseview with fixed window visual
Otherwise trying to embed the GUI in REAPER will panic.

https://github.com/RustAudio/baseview/pull/113
2022-02-06 13:33:28 +01:00
Robbert van der Helm 5017dad7d3 Add a semi-broken GUI example
This needs a lot of work. We need widgets that know how to deal with our
parameters, and also basic widgets for things like meters. Egui-baseview
also has a couple quirks left. Most notably it only updates when
actively moving over the GUI (which means VU meters look pretty janky)
and it randomly panics.
2022-02-06 13:16:28 +01:00
Robbert van der Helm 33ad2d0b15 Fix typo in buffer iterator 2022-02-06 12:59:29 +01:00
Robbert van der Helm c4b983baf8 Implement ExactSizeIterator for the buffer adapter 2022-02-06 12:45:13 +01:00
Robbert van der Helm 2486368d08 Use AtomicF32 for the smoothing
This should at least not have a big performance impact since we can use
relaxed memory ordering here. AtomicCell always uses acquire/release
ordering.
2022-02-06 03:43:59 +01:00
Robbert van der Helm 5e2086e1ee Add even more dependencies 2022-02-06 03:14:41 +01:00
Robbert van der Helm 4fb79c208e Add more dependencies 2022-02-06 03:00:45 +01:00
Robbert van der Helm 0514d2de96 Increase the gain smoothing time 2022-02-06 02:36:31 +01:00
Robbert van der Helm f22f1364ac Fix name of xcb package 2022-02-06 02:26:59 +01:00
Robbert van der Helm 3e29548608 Install missing dependencies on CI 2022-02-06 02:23:01 +01:00
Robbert van der Helm 53f802b295 Fix accidental gain smoothing style change 2022-02-06 02:08:58 +01:00
Robbert van der Helm 6db85c535f Move ParamSetter creation to its own struct
This cannot be called from the trait object.
2022-02-06 01:52:16 +01:00
Robbert van der Helm f1b12e747c Remove unused import 2022-02-06 01:40:25 +01:00
Robbert van der Helm df1bc2b429 Fix the printed VST3 bundle path 2022-02-06 01:35:12 +01:00
Robbert van der Helm bf070fce5a Use atomics in the smoother
This is needed so we can share the params with the editor, but it isn't
great, is there a better alternative?
2022-02-06 01:33:19 +01:00
Robbert van der Helm 47b6631283 Revert "Initialize the egui GUI using the update function"
This reverts commit 5c9ac31408.
2022-02-06 01:02:26 +01:00
Robbert van der Helm cc3d2bcba0 Re-export egui 2022-02-06 00:54:13 +01:00
Robbert van der Helm 29a9c41389 Delay the process_wrapper() use
The other parts also don't allocate, but parking_lot doesn't play nicely
when spawning an editor thread. In that case its hashmap may get resized
on the audio thread which is not what we want, but it won't cause any
real problems.
2022-02-06 00:51:18 +01:00
Robbert van der Helm 5c9ac31408 Initialize the egui GUI using the update function 2022-02-06 00:51:02 +01:00
Robbert van der Helm 021c183331 Add an egui editor adapter 2022-02-06 00:22:33 +01:00
Robbert van der Helm d35957db65 Require static lifetimes on GUI contexts 2022-02-06 00:22:15 +01:00
Robbert van der Helm 3c867f9305 Allow all platform constants to be unused 2022-02-06 00:22:15 +01:00
Robbert van der Helm 7a6bfa4573 Add a HasRawWindowHandle wrapper struct 2022-02-06 00:22:15 +01:00
Robbert van der Helm 4021b28155 Fix rustdoc links 2022-02-06 00:22:15 +01:00
Robbert van der Helm b1afe0b224 Downgrade raw-window-handle for baseview compat 2022-02-06 00:22:15 +01:00
Robbert van der Helm 7b14106505 Update local parameters when changing from GUI 2022-02-05 22:26:42 +01:00
Robbert van der Helm 83c3410736 Don't require Send+Sync on the editor 2022-02-05 20:48:21 +01:00
Robbert van der Helm 75435ecb4a Don't require a Drop bound on Editor
On second thought, unless you're implementing something completely from
scratch this will already be part of the library you're using.
2022-02-05 20:15:09 +01:00
Robbert van der Helm 5a84733e7e Add more metadata to the Cargo.toml file 2022-02-05 19:40:42 +01:00
Robbert van der Helm 9d20ca8106 Add an idea for how the IRunLoop can be integrated 2022-02-05 19:35:20 +01:00
Robbert van der Helm 7e240146b7 Implement IPlugView 2022-02-05 18:42:06 +01:00
Robbert van der Helm 895dada6f6 Add window type constants missing from vst3_sys 2022-02-05 18:41:54 +01:00
Robbert van der Helm 2a0fde2fd5 Create a plugview if the plugin has an editor
The plugview, however, is still filled with stubs.
2022-02-05 18:07:03 +01:00
Robbert van der Helm ea8edf2563 Move the editor to the IPlugView instance
This way the RAII make much more sense.
2022-02-05 18:06:52 +01:00
Robbert van der Helm 4c5622cf40 Implement GuiContext for the VST3 wrapper 2022-02-05 17:47:55 +01:00
Robbert van der Helm 640fe0ebd7 Make parameter pointers hashable
So we can use have generic APIs that take a `Param` implementation and
know how to map those to the parameter IDs used by the plugin API.
2022-02-05 17:43:15 +01:00
Robbert van der Helm e97082aba2 Implement the ParamSetter 2022-02-05 17:32:57 +01:00
Robbert van der Helm 0bc8f9b5b1 Move preview_{normalized,plain} to Param
We're going to need this for setting parameter values with a gneric API.
2022-02-05 17:32:06 +01:00
Robbert van der Helm 9d2ddf016a Add Editor and GuiContext stubs in VST3 wrapper 2022-02-05 17:15:07 +01:00