1
0
Fork 0
Commit graph

263 commits

Author SHA1 Message Date
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
Robbert van der Helm 41d9e43047 Mention the stable compiler target in the readme 2022-02-05 17:14:28 +01:00
Robbert van der Helm 42155903ec Add the workflow status badge 2022-02-05 17:13:07 +01:00
Robbert van der Helm b075d1b1bb Modify the editor API to use trait objects
The alternative isn't really feasible without specialization, and
NIH-plug should work on the stable compiler.
2022-02-05 17:12:03 +01:00
Robbert van der Helm e4c6c6c25b Update the documentation on the updated GuiContext 2022-02-05 17:10:17 +01:00
Robbert van der Helm eded48977f Cache Cargo dependencies and artifacts 2022-02-05 16:50:11 +01:00
Robbert van der Helm 3e2dc92b22 Avoid destructuring assignment
Somehow the nightly compiler just lets you do this without needing to
opt in to the unstable feature.
2022-02-05 16:46:29 +01:00
Robbert van der Helm 7c74d1f41d Add a GitHub Actions workflow for running tests 2022-02-05 16:40:42 +01:00
Robbert van der Helm fe96b8572e Type erase GuiContext by splitting the safe API
These functions not being able to be made into an object was the whole
reason why we needed the associated type in the first place. This will
make everything much nicer to work with, since
specialization/overlapping instances is still not possible with the
stable compiler.
2022-02-05 16:30:33 +01:00
Robbert van der Helm 1f2029ecbe Replace spawn_unchecked with static lifetimes
These things don't need to hold references, so this gets rid of some
nasty c ode.
2022-02-05 16:09:59 +01:00
Robbert van der Helm 1e77a92285 Require plugins to be 'static
They can't contain any references anyways since they're default
initialized. If they don't have a 'static lifetime, then it won't be
possible to pass a trait object casted from the inner wrapper to the
plugin.
2022-02-05 16:03:16 +01:00
Robbert van der Helm 78a83d5051 Allow unused variables in trait defaults 2022-02-05 13:32:03 +01:00
Robbert van der Helm d2407db284 Replace editor close function with a Drop bound 2022-02-05 13:06:18 +01:00