Robbert van der Helm
486fc67a4b
Serialize persistent fields for VST3 plugins
2022-01-30 17:09:18 +01:00
Robbert van der Helm
221e424f78
Use thread safe interior mutability for persist
...
Sadly there's not really a safe way to do this otherwise, but if you
really want to have persistence this way and absolutely need it to be
lock-free (because you're going to use it from the GUI thread), then you
can implement your own PersistentField.
2022-01-30 17:07:50 +01:00
Robbert van der Helm
c1ea1e429f
Use the persist attribute in the gain example
2022-01-30 16:16:15 +01:00
Robbert van der Helm
8ac036f6cc
Add an API for persisting arbitrary fields
2022-01-30 16:14:52 +01:00
Robbert van der Helm
c286958c63
Swap around trait bound order
2022-01-30 13:15:42 +01:00
Robbert van der Helm
b76b6e4a9b
Add boolean parameters
2022-01-30 02:17:40 +01:00
Robbert van der Helm
7feb8006ef
Persist the bypass parameter
2022-01-30 02:04:35 +01:00
Robbert van der Helm
16238f1e00
Support VST3 parameter flushes
2022-01-30 01:50:22 +01:00
Robbert van der Helm
6ddae6a506
Handle the output channel map
...
I apparently committed this a bit too early.
2022-01-30 01:43:40 +01:00
Robbert van der Helm
0c24398234
Target vst3-sys fork with better pointer semantics
2022-01-30 01:37:10 +01:00
Robbert van der Helm
29d110aee7
Fix path for VST3 bundle creation
2022-01-30 00:24:44 +01:00
Robbert van der Helm
902c3b2bf6
Upgrade vst3-sys dependency
2022-01-29 20:54:52 +01:00
Robbert van der Helm
6fc4d80483
Change the id attribute to be a key value pair
2022-01-29 20:40:14 +01:00
Robbert van der Helm
2a1fdb5d9f
Add a blank newline, because aesthetics
2022-01-29 18:43:07 +01:00
Robbert van der Helm
3019f7aea6
Add a way to create VST3 bundles after building
2022-01-29 18:38:09 +01:00
Robbert van der Helm
46cd75ec53
Add an xtask binary target for running tasks
2022-01-29 17:31:51 +01:00
Robbert van der Helm
edab467538
Mention all channel lengths being equal
2022-01-29 16:45:33 +01:00
Robbert van der Helm
47d102f2ba
Implement restoring parameter values
2022-01-29 16:42:20 +01:00
Robbert van der Helm
dabd2beca8
Add functions for interacting with plain values
2022-01-29 14:59:59 +01:00
Robbert van der Helm
ebb74a737c
Use plain instead of unnormalized in the APIs
...
It takes more effort than what should be needed to tell normalized and
unnormalized apart at a glance.
2022-01-29 14:54:48 +01:00
Robbert van der Helm
97a88e0db2
Implement saving parameter state
...
Restoring is next.
2022-01-29 14:20:14 +01:00
Robbert van der Helm
ef021915e5
Move the PlainParam functions to a trait
...
We can use this for setting parameter values, as a &Param can be turned
into a pointer which can then later be mapped to a parameter ID to
handle outputting parameter values.
2022-01-29 13:39:01 +01:00
Robbert van der Helm
5697183918
Rename from_string to set_from_string
...
To make it a bit more obvious at a glance that this mutates the
parameter.
2022-01-29 13:32:31 +01:00
Robbert van der Helm
f5f143b4f0
Read updated parmater values from the process data
2022-01-29 01:01:14 +01:00
Robbert van der Helm
59b1132d3b
Mark hyperlinks in doc comments
2022-01-28 18:10:28 +01:00
Robbert van der Helm
6b7acb7cb5
Add TODO for wrapping parameter access in a mutex
2022-01-28 17:58:40 +01:00
Robbert van der Helm
e393b3e268
Add a todo for handling incoming parameter changes
2022-01-28 17:58:40 +01:00
Robbert van der Helm
7d0fce2f84
Implement audio processing
2022-01-28 17:58:40 +01:00
Robbert van der Helm
673180fb6b
Update vst3-sys dependency
...
So the VST3 macro works for types with lifetime bounds.
2022-01-28 16:29:09 +01:00
Robbert van der Helm
61d7905148
Add a todo for transport information in process
2022-01-28 15:18:55 +01:00
Robbert van der Helm
c518cc9ede
Add a note about licensing
2022-01-28 15:02:55 +01:00
Robbert van der Helm
38bcf33a50
Use the precalculated bypass parameter hash
2022-01-28 14:52:04 +01:00
Robbert van der Helm
3064132821
Improve and simplify token handling in macros
...
The standard library macros also use a `$($foo:tt)*` for this, so we
should probably too. Since eprinln!() already handles trailing commas we
don't need to do any special handling, and this fixes parsing with
complex expressions as arguments.
2022-01-28 14:47:26 +01:00
Robbert van der Helm
71dc144c73
Add a simple formatters library
...
We can add common formats here so you don't need to repeat them all the
time.
2022-01-28 14:33:29 +01:00
Robbert van der Helm
6439acad84
Use the correct vendor name
2022-01-28 14:20:16 +01:00
Robbert van der Helm
b14dc7eae9
Avoid duplicate units in VST3 parameter strings
2022-01-28 14:06:51 +01:00
Robbert van der Helm
47f84081dd
Use a macro for the null pointer checks
2022-01-28 13:45:17 +01:00
Robbert van der Helm
b9d38f5c39
Implement most of IAudioProcessor
...
Except for the process function itself.
2022-01-28 13:40:47 +01:00
Robbert van der Helm
a34293fbb4
Silence too_many_arguments Clippy lint in wrapper
...
Aside from wrapping everything in another struct we can't really do
anything about this since this is all generated by the VST3 macro.
2022-01-28 13:39:44 +01:00
Robbert van der Helm
fa13371c5f
Allow trailing commas in debug macros
2022-01-28 13:32:37 +01:00
Robbert van der Helm
a9185dff21
Split finding and processing proc macro attributes
...
We're going to add another attribute that can't be combined with this
one.
2022-01-28 13:00:36 +01:00
Robbert van der Helm
b91a02baa6
Add a todo and idea for non-parameter persistence
2022-01-28 01:34:36 +01:00
Robbert van der Helm
5e17b2190a
Add null pointer checks to the VST3 wrapper
2022-01-27 22:51:49 +01:00
Robbert van der Helm
91e20f1230
Don't internally use param string IDs in wrapper
...
This avoids a layer of indirection for every parameter lookup using a
hash.
2022-01-27 22:36:46 +01:00
Robbert van der Helm
217b28fdca
Move VST3 categories and class ID to a new trait
...
Makes more sense than having this in either the general plugin trait or
as part of the macro.
2022-01-27 22:13:13 +01:00
Robbert van der Helm
c11abdc77d
Add a processing status for handling reverb tails
2022-01-27 21:03:49 +01:00
Robbert van der Helm
b5636ef556
Implement the rest of IEditController
2022-01-27 19:55:24 +01:00
Robbert van der Helm
9ff881b355
Add functions for previewing parameter conversions
2022-01-27 19:43:19 +01:00
Robbert van der Helm
1f0dbdbbec
Clean up parameter access conditionals
...
I forgot this works as an else if
2022-01-27 19:36:36 +01:00
Robbert van der Helm
338abf7367
Implement IEditController::getParamValueByString()
2022-01-27 19:30:42 +01:00