1
0
Fork 0
Commit graph

581 commits

Author SHA1 Message Date
Robbert van der Helm
73fe012751 Rename the buffer lifetimes 2022-02-13 01:48:56 +01:00
Robbert van der Helm
16e299ca34 Add the outer lifetime back to the sample buffer 2022-02-13 01:47:26 +01:00
Robbert van der Helm
81ddb410f5 Fix buffer iterators over last refactor
This len() function returns the remaining length, which is not what we
want.
2022-02-13 01:16:52 +01:00
Robbert van der Helm
8411313270 Move Buffer::iter_mut() lifetime definitions 2022-02-13 01:11:23 +01:00
Robbert van der Helm
eac3fdf612 Fix duplicate mutable borrow soundness in buffer
This gets rid of multiple simultaneous &mut references to the
vector (which should be fine, I think), and also replaces the
`.iter_mut()` that just resets the index (which definitely leads to
soundness issues) with an `.iter_mut()` and a `.into_iter()` that don't
let you have concurrent mutable borrows to the same sample data.
2022-02-13 00:59:25 +01:00
Robbert van der Helm
eea05cc748 Rename reset_iter to iter_mut
So it's more consistent.
2022-02-12 23:28:15 +01:00
Robbert van der Helm
2c394aabd5 Add nicer adapter for repeating channel iteration 2022-02-12 23:16:07 +01:00
Robbert van der Helm
c99877ec05 Fix Smoother::is_smoothing() 2022-02-12 20:54:03 +01:00
Robbert van der Helm
0bb3113197 Fix manual buffer accessors 2022-02-12 20:33:31 +01:00
Robbert van der Helm
cd0b870682 Directly pass a style to .with_smoother() 2022-02-12 19:56:37 +01:00
Robbert van der Helm
693b618bc5 Add accessors for channel data
This is needed when you want to modify the same sample multiple times
within an outer loop.
2022-02-12 19:24:41 +01:00
Robbert van der Helm
bc11c97fcf Use the new builder interface 2022-02-12 17:19:52 +01:00
Robbert van der Helm
34fa536acb Add a builder interface for constructing params 2022-02-12 17:10:25 +01:00
Robbert van der Helm
f645b6a92f Relicense under the ISC license 2022-02-12 16:04:46 +01:00
Robbert van der Helm
93fdb0da97 Shamelessly plug yabridge 2022-02-10 23:53:31 +01:00
Robbert van der Helm
379c74e874 Remove spurious dbg!() calls 2022-02-10 23:41:04 +01:00
Robbert van der Helm
69498f3527 Implement the event loop for Windows 2022-02-10 23:37:59 +01:00
Robbert van der Helm
6e1f7930e3 Fix VST3 CID consistency between platforms 2022-02-10 21:31:27 +01:00
Robbert van der Helm
8934d06381 Add a todo for adding builders to parameters 2022-02-10 01:21:07 +01:00
Robbert van der Helm
b61d17fee9 Require all parameters to have a Display instance
So their value can be easily formatted in UIs.
2022-02-09 19:45:16 +01:00
Robbert van der Helm
cd683187e0 Allow resetting parameters by double clicking 2022-02-09 11:51:30 +01:00
Robbert van der Helm
0633fddb5c Add a function for setting pre-normalized values 2022-02-09 01:07:17 +01:00
Robbert van der Helm
1d6a9aac74 Add a way to fetch a parameter's default value 2022-02-08 23:51:07 +01:00
Robbert van der Helm
19bf213204 Add alignment specifiers and soundness comment 2022-02-08 23:16:32 +01:00
Robbert van der Helm
0ddfae1dd3 Also mode the factory to its own module
Now you can finally find the thing you're looking for.
2022-02-08 22:32:54 +01:00
Robbert van der Helm
05b9d4dd0b Move the main VST3 wrapper to a module 2022-02-08 22:28:18 +01:00
Robbert van der Helm
08fe8e703e Explicitly guarantee no simultaneous editors exist 2022-02-08 20:16:04 +01:00
Robbert van der Helm
02115d5004 Use a patched {egui-,}baseview for X11 GL contexts 2022-02-07 21:58:59 +01:00
Robbert van der Helm
0fb8ce6f7e Add part of a Windows event loop implementation 2022-02-07 00:33:41 +01:00
Robbert van der Helm
ce37ec288e Don't store a GUID in the factory
This isn't actually needed.
2022-02-07 00:19:05 +01:00
Robbert van der Helm
c9a5818cb4 Fix Windows entry point names 2022-02-06 23:37:40 +01:00
Robbert van der Helm
df76047419 Move the process context to its own module 2022-02-06 18:51:46 +01:00
Robbert van der Helm
37a8f529b0 Move WrapperView to its own module 2022-02-06 18:46:16 +01:00
Robbert van der Helm
9db4c0d691 Move inner wrapper to its own module
We'll need to do this with the other parts as well. Navigating this
module has become practically impossible
2022-02-06 17:50:15 +01:00
Robbert van der Helm
427c7674b9 Move VST3 pointer check macros to a module 2022-02-06 17:40:35 +01:00
Robbert van der Helm
556bec7c0b Move editor handling to its own struct
This makes the API much, much nicer (especially consuming the egui
wrapper), and it also avoids having to lock the plugin instance which is
obviously very bad if the plugin is also supposed to be processing audio
on another thread.
2022-02-06 17:12:57 +01:00
Robbert van der Helm
3ede5ed751 Move the TODO on GUI opening xruns 2022-02-06 15:32:54 +01:00
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
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
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
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
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
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
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