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
Robbert van der Helm
b901dac012
Disambiguate rustdoc link references
2022-02-05 12:56:03 +01:00
Robbert van der Helm
63d30d33e4
Fix rustdoc links
2022-02-05 12:52:34 +01:00
Robbert van der Helm
7ac1df0d8d
Add stubs for editor handling
2022-02-05 12:46:26 +01:00
Robbert van der Helm
bbc190c67f
Hold the RwLock guard in the process context
...
This avoids having to constantly acquire a new lock.
2022-02-04 23:03:11 +01:00
Robbert van der Helm
ce3da8ea44
Use a dedicated struct for the process context
2022-02-04 22:55:10 +01:00
Robbert van der Helm
209c19b74f
Get rid of lifetime parameters for VST3 wrapper
...
This lifetime didn't make any sense anyways since these buffers don't
adhere to Rust's lifetime rules. Getting rid of these will let us make
nicer wrappers around the process context.
2022-02-04 22:54:28 +01:00
Robbert van der Helm
cbd51b0c3a
Monomorphize the context variables
...
For the parameter setting context functions we don't be able to use
trait objects.
2022-02-04 22:34:53 +01:00
Robbert van der Helm
f2d3d987a0
Update the current MIDI support status
2022-02-04 22:31:43 +01:00
Robbert van der Helm
a93ad650be
Remove old todo
2022-02-04 19:04:36 +01:00
Robbert van der Helm
4c0031d7b3
Fix clippy lints
2022-02-04 18:42:42 +01:00
Robbert van der Helm
2c0b797c40
Avoid clicks in the MIDI sine example
2022-02-04 15:26:37 +01:00
Robbert van der Helm
073fe743c2
Split up set_target and reset in smoothers
...
This makes it a bit less awkward to use in user code, if you need a
separate smoother there.
2022-02-04 15:17:42 +01:00
Robbert van der Helm
15d0e69d46
Remove TODO about adding MIDI support
...
Since we did just that.
2022-02-04 15:17:42 +01:00
Robbert van der Helm
05a7748482
Describe the examples
2022-02-04 15:17:42 +01:00
Robbert van der Helm
366deda83c
Add MIDI support to the sine example
2022-02-04 15:17:42 +01:00
Robbert van der Helm
fdfd1b01c2
Add a function for retrieving the next note event
2022-02-04 15:17:42 +01:00
Robbert van der Helm
0e67c61be0
Store timing along with the note events
2022-02-04 15:17:42 +01:00
Robbert van der Helm
02cf16e9c0
Accept incoming note events
2022-02-04 15:17:42 +01:00
Robbert van der Helm
51dace591d
Add an event bus depending on ACCEPTS_MIDI
2022-02-04 15:17:42 +01:00
Robbert van der Helm
aee3775c10
Add default implementations for most trait methods
...
Except for process()
2022-02-04 15:17:42 +01:00
Robbert van der Helm
74e0fa5964
Add defaults for some of the plugin constants
2022-02-04 15:17:42 +01:00
Robbert van der Helm
f69fdcef5f
Add another plugin constant for MIDI support
2022-02-04 15:17:42 +01:00
Robbert van der Helm
c1f435d909
Refer to the gain plugin in the Params trait
2022-02-03 17:05:38 +01:00
Robbert van der Helm
fc96bb4349
Fix channel map debug assertion
2022-02-03 17:03:33 +01:00
Robbert van der Helm
dfb73f6902
Mention the 6 character overflow limit for IDs
2022-02-03 17:02:42 +01:00
Robbert van der Helm
295ecc94ee
Shorten frequency parameter name
...
Since it would overflow otherwise.
2022-02-03 17:01:20 +01:00
Robbert van der Helm
10c306e035
Move example plugins into a subdirectory
2022-02-03 16:57:10 +01:00
Robbert van der Helm
30609c3ecd
Add an is_smoothing() check
2022-02-03 16:51:41 +01:00
Robbert van der Helm
82dfee9313
Document the FTZ flags in the process function
2022-02-03 16:22:32 +01:00
Robbert van der Helm
e642fb5ff8
Make sure FTZ is always enabled
2022-02-03 16:18:24 +01:00
Robbert van der Helm
dfedd7b2c4
Enable assert_no_alloc in debug builds
2022-02-03 15:58:00 +01:00
Robbert van der Helm
2ca54d220d
Add logarithmic smoothing
2022-02-02 23:00:17 +01:00
Robbert van der Helm
1ad477ee4f
Add smoothing tests
2022-02-02 22:34:29 +01:00
Robbert van der Helm
1c80744989
nih_debug_assert_neq -> nih_debug_assert_ne
2022-02-02 22:29:14 +01:00
Robbert van der Helm
da291175d1
Rename SmoothLinear to Linear
...
We'll rethink this when we get to sample accurate automation.
2022-02-02 22:00:00 +01:00
Robbert van der Helm
0ecec104fb
Completely reset smoothing on init or restore
2022-02-02 21:41:20 +01:00
Robbert van der Helm
f8eb0e4ea6
Make gain smoothing slower in examples
2022-02-02 21:35:18 +01:00
Robbert van der Helm
1336139a65
Update smoothers on init and state restore
...
Otherwise this would be filled with default values.
2022-02-02 21:33:20 +01:00
Robbert van der Helm
e30a72888a
Add an update_smoother() parameter method
2022-02-02 21:26:34 +01:00
Robbert van der Helm
ea7dc2ffa3
Implement smoothing for integers
2022-02-02 21:26:20 +01:00