1
0
Fork 0
Commit graph

1480 commits

Author SHA1 Message Date
Robbert van der Helm 1a8f81e4c0 Support MIDI CCs, aftertouch, pitch bend for VST3
This required rewriting the way events and parameter changes are handled
for VST3 by putting them all in a single sorted array, because we can
now no longer read directly from the host's events list because we also
need to mix these new generated MIDI CC events in with it.
2022-04-08 20:53:32 +02:00
Robbert van der Helm 059c733b78 Handle predefined VST3 note expressions 2022-04-08 17:49:13 +02:00
Robbert van der Helm 25dd0d9bef Control sine level through velocity and aftertouch 2022-04-08 17:44:05 +02:00
Robbert van der Helm 2a4a61947f Update reasoning for clearing last param ID bit 2022-04-08 00:02:28 +02:00
Robbert van der Helm 9740246d0a Always sort VST3 note events in prep for CCs
So we won't forget to add this then. CC messages come from the parameter
change queues while regular note event messages come from another queue,
so they need to be merged into one sorted queue.
2022-04-07 23:57:56 +02:00
Robbert van der Helm 4abefe23cf Mention lack of VST3 support for new note events 2022-04-07 23:37:49 +02:00
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