Robbert van der Helm
80b1bf12f2
Use AtomicRefCell for all uncontested locks
...
Since it would be a bug if those locks were somehow contested.
2022-03-03 21:21:08 +01:00
Robbert van der Helm
184355a886
Delay CLAP host extension query to init()
...
Or the CLAP example host will get very mad at us.
2022-03-03 21:09:12 +01:00
Robbert van der Helm
be4bbd4400
Allow nested parameter structs
...
See the Parameters docstring for the caveats.
2022-03-03 20:38:28 +01:00
Robbert van der Helm
76369ad1e1
💥 Rework FloatParam and IntParam
...
They are now two separate types with slightly different options. I had
these merged initially because they're 95% the same, and I thought it
would be fun to have weird distributions for integer parameters, but
that doesn't really work because hosts and the plugin APIs expect the
steps to be linear. And if you're going to have an unstepped integer
parameter, might as well use FloatParam with rounding.
Because non-linear ranges are no longer possible with IntParam, the
types have been split up to make everything much more readable instead
of adding a parameterizing the range type with another type family.
2022-03-03 19:24:40 +01:00
Robbert van der Helm
c0f03a97fc
Add a todo about removing skewed integer ranges
2022-03-03 18:36:36 +01:00
Robbert van der Helm
27570be4a6
Implement platform-specific CLAP GUI extensions
2022-03-03 18:29:37 +01:00
Robbert van der Helm
b5993c1bb8
Add a CLAP GuiContext for sending param changes
2022-03-03 17:47:41 +01:00
Robbert van der Helm
a4930dc887
Add parameter change outputs for CLAP
...
But without any way to send them, at least for now.
2022-03-03 17:21:32 +01:00
Robbert van der Helm
8f92669a47
Keep track of the processing status
2022-03-03 17:03:52 +01:00
Robbert van der Helm
de4921c033
Move CLAP input event handling to a function
2022-03-03 16:58:57 +01:00
Robbert van der Helm
f91958e971
Move VST3 GuiContext to a separate object
2022-03-03 16:33:41 +01:00
Robbert van der Helm
5766f037b2
Implement the general CLAP GUI extension
2022-03-03 15:52:10 +01:00
Robbert van der Helm
d688174b8b
Require Send+Sync on the editor handle
2022-03-03 15:40:16 +01:00
Robbert van der Helm
91f2f49fd3
Create stubs for the CLAP editor
2022-03-03 15:40:16 +01:00
Robbert van der Helm
87830abdf6
Store a reference to the wrapper on the wrapper
2022-03-03 15:13:36 +01:00
Robbert van der Helm
6d63d3f095
Rename wrapper: 👏 :plugin to *::wrapper
...
To match the struct name.
2022-03-03 15:08:14 +01:00
Robbert van der Helm
4ceb0efdc4
Use Arc instead of Box for the wrapper
...
We'll need this for the GuiContext.
2022-03-03 15:06:47 +01:00
Robbert van der Helm
d1840b8d86
Move Box creation to the CLAP wrapper
...
So the new->destroy pair makes more sense
2022-03-03 15:01:28 +01:00
Robbert van der Helm
cd070ad876
Remove todo about latency not being implemented
2022-03-03 14:42:17 +01:00
Robbert van der Helm
fa01d3bfeb
Generate most of ParamPtr with a macro
2022-03-03 14:28:52 +01:00
Robbert van der Helm
b5a471747f
Add name, unit, and step count functions to Param
...
Now we can simplify ParamPtr by generating all of these accessors.
2022-03-03 13:55:54 +01:00
Robbert van der Helm
4eb35ed585
Implement the CLAP latency extension
2022-03-03 00:46:49 +01:00
Robbert van der Helm
c3efc81957
Remove old todo
2022-03-03 00:11:12 +01:00
Robbert van der Helm
41ee117bfa
Prepent CLAP states with the length
...
To avoid having to read in chunks.
2022-03-02 22:25:10 +01:00
Robbert van der Helm
8cc216dc02
Actually support the state extension
...
That seems sort of useful, you know?
2022-03-02 16:26:47 +01:00
Robbert van der Helm
7e9eadfc64
Implement state handling for CLAP
2022-03-02 16:25:30 +01:00
Robbert van der Helm
ec452bd41d
Also move state deserialization to a function
2022-03-02 16:00:11 +01:00
Robbert van der Helm
7a3d3b8c8e
Move state serialization to a helper function
...
So we can reuse it for the CLAP wrapper.
2022-03-02 15:49:40 +01:00
Robbert van der Helm
bc2332801c
Implement the CLAP audio ports extension
2022-03-02 15:16:58 +01:00
Robbert van der Helm
70c81642a5
Implement CLAP audio ports config extension
2022-03-02 14:57:30 +01:00
Robbert van der Helm
78b815fede
Add consistent null pointer checks to CLAP wrapper
...
Just like we do for the VST3 wrapper.
2022-03-02 14:25:26 +01:00
Robbert van der Helm
5b369f6ab5
Re-introduce destructuring assignments
...
Now that that's landed on the stable compiler.
2022-03-02 02:03:57 +01:00
Robbert van der Helm
29c1b5e5d5
Clear input events in CLAP wrapper
2022-03-02 00:38:25 +01:00
Robbert van der Helm
69a085ddad
Handle MIDI events for CLAP
2022-03-02 00:29:50 +01:00
Robbert van der Helm
0d359c344a
Fix CLAP step count handling
2022-03-02 00:04:33 +01:00
Robbert van der Helm
37e88d063f
Change bypassed Enabled label to Not Bypassed
...
To remove ambiguity.
2022-03-01 23:55:33 +01:00
Robbert van der Helm
fdda32696a
Remove unused import
2022-03-01 23:50:41 +01:00
Robbert van der Helm
57ed66f8f6
Implement basic CLAP audio processing
2022-03-01 23:50:10 +01:00
Robbert van der Helm
a28e553fd2
Rename Block SIMD functions for more clarity
...
Because you could also do per-sample SIMD. For blocks that's simple
enough to do without any help though.
2022-03-01 21:59:12 +01:00
Robbert van der Helm
8c837573a0
Also add SIMD channel helpers for Block
2022-03-01 21:48:03 +01:00
Robbert van der Helm
33905e5bc2
Add optional SIMD helpers for channel buffers
2022-03-01 21:39:53 +01:00
Robbert van der Helm
8eafcebe62
Mention the panicking behavior of block smoothing
2022-03-01 20:23:04 +01:00
Robbert van der Helm
3e8b2b3759
Use AtomicRef instead of Mutexes for block smooth
2022-03-01 19:52:56 +01:00
Robbert van der Helm
3bd83ca55a
Implement CLAP input parameter handling
2022-03-01 19:31:16 +01:00
Robbert van der Helm
09534a2657
Add a TODO regarding inlining iterators
2022-03-01 19:02:49 +01:00
Robbert van der Helm
5a005553bc
Fix block length semantics
2022-03-01 17:55:38 +01:00
Robbert van der Helm
c3f4e7e2d9
Yield offsets in the block iterator
2022-03-01 17:46:34 +01:00
Robbert van der Helm
f389e0341e
Also run buffer miri tests without miri
2022-03-01 17:43:04 +01:00
Robbert van der Helm
3122c0cb41
Pass block references to the block smoother
...
So you can't mess this up by passing the maximum block size instead.
2022-03-01 17:33:22 +01:00
Robbert van der Helm
dffddfaf04
Implement the block smoothers
2022-03-01 17:29:09 +01:00