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
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
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
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
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
Robbert van der Helm
8f89754ba5
Add simple linear parameter smoothing
2022-02-02 21:26:13 +01:00
Robbert van der Helm
fced4001c0
Access plain values using the method
...
Since we're also setting them using the method.
2022-02-02 20:39:04 +01:00
Robbert van der Helm
a42649b2de
Derive a Default instance for the Buffer
...
To make Clippy happy.
2022-02-02 20:37:06 +01:00
Robbert van der Helm
13369e4085
Reinitialize the plugin after restoring state
...
This lets you use the parameters to set fields on the plugin struct
during `initialize()`.
2022-02-02 15:39:55 +01:00
Robbert van der Helm
c982ad9599
Avoid duplicate state restores
2022-02-02 15:32:21 +01:00
Robbert van der Helm
c8cc6bd26b
Re-export all user facing includes
2022-02-02 15:16:10 +01:00
Robbert van der Helm
f44597df7c
Move the buffer adapter to its own module
2022-02-02 15:01:41 +01:00
Robbert van der Helm
048d69213e
Make the buffer own the output slices
...
This gets rid of a lot of lifetime casting and other unsoundness.
2022-02-02 14:41:35 +01:00
Robbert van der Helm
fbadfe3e12
Fix clippy lints
2022-02-02 13:02:28 +01:00
Robbert van der Helm
6cde9cea0e
Simplify spawn_unchecked lifetime transmute
2022-02-02 13:02:28 +01:00
Robbert van der Helm
58736f5cc8
Add a super unsafe channel buffer adapter
...
To avoid having to perform lifetime magic here, this buffer needs to own
the slices and be stored as part of the RwLock.
2022-02-02 13:02:28 +01:00
Robbert van der Helm
63e4a54d7c
Center skewed parameters around the skew center
...
It's a bit awkward and you can completely lose some parts of the range
if you don't do this.
2022-02-02 00:06:07 +01:00
Robbert van der Helm
1202b2b9d6
Update unimplemented features list
...
These things are now all implemented.
2022-02-01 23:39:13 +01:00