Robbert van der Helm
24837d1552
Implement full MIDI support for CLAP
2022-04-07 23:28:31 +02:00
Robbert van der Helm
0b3a5cd297
Support all of the CLAP expression types
...
These aren't supported for VST3 yet, we'll need to register note
expression controllers for that.
2022-04-07 21:17:31 +02:00
Robbert van der Helm
b9a10455bb
Add polyphonic aftertouch support
2022-04-07 20:55:31 +02:00
Robbert van der Helm
1141616466
Replace ACCEPTS_MIDI bool with new enum
...
So we can gate future MIDI CC support behind an additional option since
this involves more work on the VST3 side.
2022-04-07 20:27:37 +02:00
Robbert van der Helm
8f359feadb
Store velocity as a float
...
Instead of converting this to a 0-127 value. We may be throwing away
precision otherwise.
2022-04-07 20:12:30 +02:00
Robbert van der Helm
5b03ae8d0e
Update vizia fork
2022-04-07 18:44:37 +02:00
Robbert van der Helm
4d8a515e9a
Mention the new state API
2022-04-07 17:42:52 +02:00
Robbert van der Helm
2af3f84416
Rename State to PluginState
...
Now that it is part of the public API.
2022-04-07 17:39:34 +02:00
Robbert van der Helm
84bac0a47c
Spool param rescan call to the GUI thread
...
Otherwise the CLAP example host std::terminates, and we can also reuse
the existing restart task for the VST3 wrapper.
2022-04-07 17:25:12 +02:00
Robbert van der Helm
d0064f87d6
Add state saving and restoring through GuiContext
...
While preventing any possible data races.
2022-04-07 17:19:24 +02:00
Robbert van der Helm
7ca855b3fc
Make State cloneable
...
This is needed for user preset support.
2022-04-07 16:50:02 +02:00
Robbert van der Helm
56e9cd54c1
Pass the GuiContext to vizia editors
...
There's no clean way to expose the state save/restore functionality
through events.
2022-04-07 16:14:34 +02:00
Robbert van der Helm
083885a40c
Rework Params trait API with Arc instead of Pin
...
This is a breaking change requiring a small change to plugin
implementations.
The reason why `Pin<&dyn Params>` was used was more as a hint to
indicate that the object must last for the plugin's lifetime, but `Pin`
doesn't enforce that. It also makes the APIs a lot more awkward.
Requiring the use of `Arc` fixes the following problems:
- When storing the params object in the wrapper, the `ParamPtr`s are
guaranteed to be stable.
- This makes it possible to access the `Params` object without acquiring
a lock on the plugin, this is very important for implementing
plugin-side preset management.
- It enforces immutability on the `Params` object.
- And of course the API is much nicer without a bunch of unsafe code to
work around Pin's limitations.
2022-04-07 15:31:46 +02:00
Robbert van der Helm
7cc05fce9a
Use crate instead of super for prelude reexports
2022-04-07 14:13:03 +02:00
Robbert van der Helm
54371fb488
Expose the State object
...
So we can later allow plugins to save and restore state from their GUI
this way.
2022-04-07 14:12:53 +02:00
Robbert van der Helm
b1c34146ee
Get rid of automatically generated bypass params
...
I thought these were mandatory in VST3, they are not.
2022-04-06 13:34:32 +02:00
Robbert van der Helm
af44796056
Fix clippy lints
2022-04-06 13:33:01 +02:00
Robbert van der Helm
0cf8bdfed6
Mention multi architecture bundler in readme
2022-04-05 16:42:41 +02:00
Robbert van der Helm
a49393f863
Update for CLAP 0.24
2022-04-05 16:32:00 +02:00
Robbert van der Helm
cf05ca10f8
Handle AArch64 and more cross compilation targets
...
In the bundler.
2022-04-05 04:12:26 +02:00
Robbert van der Helm
98d725d24f
Add an Iterator implementation for smoothers
2022-04-04 17:58:25 +02:00
Robbert van der Helm
6f01097b03
Add mapped next_block() functions for smoothers
2022-04-04 17:44:49 +02:00
Robbert van der Helm
8dbebdb76f
Fix directory creation from last commit
2022-04-01 16:13:10 +02:00
Robbert van der Helm
3ec042d739
Prevent GitHub Actions from eating zip directory
2022-04-01 16:03:20 +02:00
Robbert van der Helm
63a087f265
Simplify resize handle hover handling
2022-03-29 18:50:34 +02:00
Robbert van der Helm
8d91020238
Fix typo in comment
2022-03-29 17:10:45 +02:00
Robbert van der Helm
7990307b58
Optimize resize handle triangle intersection
...
I guess doing these other checks doesn't really make much sense since
the triangle will always be in the same place.
2022-03-29 17:05:48 +02:00
Robbert van der Helm
7db6101aea
Only resize when clicking on the triangle part
2022-03-29 17:01:35 +02:00
Robbert van der Helm
beb66e46c3
Fix non-hover active styling for resize handle
2022-03-29 16:59:46 +02:00
Robbert van der Helm
d9b018b125
Fix a very important typo
2022-03-29 03:16:55 +02:00
Robbert van der Helm
8ecc30e399
Mark SIMD conversion functions as always inline
2022-03-29 03:14:40 +02:00
Robbert van der Helm
f301726f37
Fix sample accurate automation for VST3
2022-03-29 00:56:04 +02:00
Robbert van der Helm
6dd11561c5
Add resize handles to all vizia GUIs
2022-03-29 00:49:31 +02:00
Robbert van der Helm
7b9eff456c
Update for new vizia resize patch
...
This version uses a property on the context instead of events. This gets
rid of all of the problems and complexity of the previous
implementation.
2022-03-29 00:02:11 +02:00
Robbert van der Helm
4195105e43
Replace FFTW in Diopser with realfft
2022-03-28 18:02:26 +02:00
Robbert van der Helm
2211232ed1
Use realfft for Puberty Simulator
2022-03-28 17:51:36 +02:00
Robbert van der Helm
b4ff09ca33
Get rid of unnecessary RustFFT scratch buffer
2022-03-28 17:45:46 +02:00
Robbert van der Helm
80c3fb8d51
Swap fftw in the stft example out for realfft
...
The FFTW bindings can't statically link on Windows.
2022-03-28 17:13:23 +02:00
Robbert van der Helm
b56c9892c0
Update vizia to fix redrawing after resizing
...
Everything's still very laggy because we're processing 16 resize events
per frame, we need some way to debounce events until the end of the
frame in vizia.
2022-03-28 13:38:40 +02:00
Robbert van der Helm
b9b7903108
Add a lower limit to the GUI size scaling
2022-03-28 00:51:58 +02:00
Robbert van der Helm
c568e5d3be
Don't wait for the request resize result
...
We'll need to find a workaround for this, but this makes resizing in the
CLAP example host way too slow.
2022-03-28 00:50:08 +02:00
Robbert van der Helm
772c1ecfaf
Add a resize handle widget
...
This currently only works on Linux, and it causes a random white bar to
be added to the bottom of the GUI.
2022-03-28 00:33:10 +02:00
Robbert van der Helm
d46169cb18
Update vizia dependency to fix rounding issue
2022-03-27 23:16:14 +02:00
Robbert van der Helm
f3330aee86
Implement the resize request callback for CLAP
2022-03-27 23:11:04 +02:00
Robbert van der Helm
a39eea1fe9
Add a way to rescale and resize the UI from VIZIA
...
With some additional VIZIA patches. This currently causes the layout to
do weird things, so it's not usable yet. On the baseview side this has
also only been implemented for Linux. Once the vizia quirks are gone we
can add a widget that you can add to your GUI to make it scaleable.
2022-03-27 23:09:47 +02:00
Robbert van der Helm
f9db59f4bc
Add a resize request callback to VST3 GuiContext
...
With some more work in baseview this can be used to resize windows from
the plugin.
2022-03-27 19:23:43 +02:00
Robbert van der Helm
8d71369b2e
Rename .is_bypass() to .make_bypass()
...
Because just like `.bypass()` sounds like a getter, so does
`.is_bypass()`.
2022-03-27 03:45:06 +02:00
Robbert van der Helm
f37974448d
Change naming convention for formatters
...
This still isn't idea, but at least it's less ambiguous than it was
before this.
2022-03-27 03:43:39 +02:00
Robbert van der Helm
47a96ee02b
Fix broken rustdoc links
2022-03-27 03:32:45 +02:00
Robbert van der Helm
5caca30f83
Work around ICE for cargo doc+nih_plug_iced
2022-03-27 03:24:39 +02:00