Robbert van der Helm
895dada6f6
Add window type constants missing from vst3_sys
2022-02-05 18:41:54 +01:00
Robbert van der Helm
2a0fde2fd5
Create a plugview if the plugin has an editor
...
The plugview, however, is still filled with stubs.
2022-02-05 18:07:03 +01:00
Robbert van der Helm
ea8edf2563
Move the editor to the IPlugView instance
...
This way the RAII make much more sense.
2022-02-05 18:06:52 +01:00
Robbert van der Helm
4c5622cf40
Implement GuiContext for the VST3 wrapper
2022-02-05 17:47:55 +01:00
Robbert van der Helm
640fe0ebd7
Make parameter pointers hashable
...
So we can use have generic APIs that take a `Param` implementation and
know how to map those to the parameter IDs used by the plugin API.
2022-02-05 17:43:15 +01:00
Robbert van der Helm
e97082aba2
Implement the ParamSetter
2022-02-05 17:32:57 +01:00
Robbert van der Helm
0bc8f9b5b1
Move preview_{normalized,plain} to Param
...
We're going to need this for setting parameter values with a gneric API.
2022-02-05 17:32:06 +01:00
Robbert van der Helm
9d2ddf016a
Add Editor and GuiContext stubs in VST3 wrapper
2022-02-05 17:15:07 +01:00
Robbert van der Helm
41d9e43047
Mention the stable compiler target in the readme
2022-02-05 17:14:28 +01:00
Robbert van der Helm
42155903ec
Add the workflow status badge
2022-02-05 17:13:07 +01:00
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