Robbert van der Helm
c96e61e321
Use a vst3-sys fork for fixed NoteOffEvent fields
2022-04-11 18:53:50 +02:00
Robbert van der Helm
97b2c9a2b1
Replace sine loop
2022-04-11 18:25:01 +02:00
Robbert van der Helm
8219d5f2b8
Add an example for next_event()
2022-04-11 18:25:01 +02:00
Robbert van der Helm
e4606918e7
Rename next_midi_event() to next_event()
2022-04-11 18:15:14 +02:00
Robbert van der Helm
eb5b81fcac
Remove MidiInput::None from nontrivial examples
...
Since it's the default, makes the examples a bit shorter.
2022-04-11 18:02:55 +02:00
Robbert van der Helm
2ae5aa429a
Use nih_debug_assert_failure!() in derive macros
...
Instead of nih_log!(). These messages won't appear in release builds.
2022-04-11 17:47:32 +02:00
Robbert van der Helm
329d1a63ab
Use $crate in the macros to refer to other macros
...
So you don't need to import all of them for them to work.
2022-04-11 17:44:54 +02:00
Robbert van der Helm
4e5afc152a
Add a basic docstring to the Params module
2022-04-11 17:38:20 +02:00
Robbert van der Helm
fc4386a585
Fix refresh page HTML
2022-04-11 17:11:52 +02:00
Robbert van der Helm
f9ccb40fc4
Fix path in docs workflow
2022-04-11 16:59:07 +02:00
Robbert van der Helm
7545d934ca
Mention docs in readme
2022-04-11 16:57:59 +02:00
Robbert van der Helm
d263924c93
Fix docs URL in readme
2022-04-11 16:56:51 +02:00
Robbert van der Helm
caadc06947
Rename docs workflow
2022-04-11 16:56:49 +02:00
Robbert van der Helm
755780f2a9
Generate docs on GitHub pages
2022-04-11 16:55:10 +02:00
Robbert van der Helm
1e12fbe3f5
Add a feature flag to enable doc_auto_cfg
2022-04-11 16:41:09 +02:00
Robbert van der Helm
c3b1ded35b
Fix links in docs
2022-04-11 16:23:34 +02:00
Robbert van der Helm
84d91d8826
Update dependencies for CLAP
...
The signature for this function was incorrect.
2022-04-11 16:18:39 +02:00
Robbert van der Helm
e74172b67b
Split build and package workflows
2022-04-11 16:11:42 +02:00
Robbert van der Helm
5b5bbf19f7
Prefix all polyphonic expressions with Poly
...
Makes it much more obvious that they're polyphonic at a glance.
2022-04-11 15:57:27 +02:00
Robbert van der Helm
63ad2b2cb8
Parse redundant CLAP MIDI events just in case
2022-04-11 15:56:33 +02:00
Robbert van der Helm
476dfb9f81
Fix compilation failure from f0303fe
2022-04-09 12:12:34 +02:00
Robbert van der Helm
33c2d8288b
Don't warn on parameter hash overflow
...
But do mention overflows in the duplicate parameter warning.
2022-04-09 11:47:23 +02:00
Robbert van der Helm
f0303fed4b
Remove now unnecessary input events sort
...
This was added in anticipation of having to merge the parameter change
MIDI CC events into the events stream, but VST3 threw a curveball and
now we need to do the sorting one step earlier.
2022-04-09 11:32:20 +02:00
Robbert van der Helm
52d7b47a24
Improve block splitting transport information
...
Don't do any recomputations at the start of the buffer, and also
recompute the bar positions and numbers.
2022-04-08 23:10:38 +02:00
Robbert van der Helm
8db35aaf9d
Remove notes about VST3 support for events
2022-04-08 20:59:46 +02:00
Robbert van der Helm
c082085711
Remove todo about adding more event types
2022-04-08 20:57:52 +02:00
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