Robbert van der Helm
a79099f573
Work around Bitwig VST3 note expressions bug
...
Bitwig will only send these note expression events if the plugin claims
to support at least one custom note expression type, and if it returns
`kResultOk` on `INoteExpressionController::get_note_expression_info()`
when the expression ID is equal to the note expression type (even though
these are out of range, since this index argument is supposed to be a
linear index from `0..count`).
2022-04-23 15:00:30 +02:00
Robbert van der Helm
3361c4454b
Define constants for VST3 note expression types
2022-04-23 14:49:19 +02:00
Robbert van der Helm
83f9ce3608
Add a todo for a standalone target
2022-04-21 21:30:04 +02:00
Robbert van der Helm
b88707769a
Add a way to find out the current plugin API
2022-04-21 21:27:36 +02:00
Robbert van der Helm
2bc77ed691
Work around vst3-sys not allowing #[cfg()] fields
2022-04-20 20:44:07 +02:00
Robbert van der Helm
6ae05eb01b
Log assertion failure if a VST3 resize is denied
2022-04-20 20:35:44 +02:00
Robbert van der Helm
8966ca5280
Fix C++ interface pointer transmutes
...
These are supposed to be pointers to vtable pointers.
2022-04-20 20:25:59 +02:00
Robbert van der Helm
5d343f7873
Also perform resize requests using the run loop
2022-04-20 19:52:02 +02:00
Robbert van der Helm
98924a5728
Use the host's run loop to handle VST3 tasks
2022-04-20 19:51:26 +02:00
Robbert van der Helm
37b62e4278
Add an IRunLoop event runner on Linux
2022-04-20 19:44:03 +02:00
Robbert van der Helm
4fa54ceabe
Add an object for implementing IEventLoop
...
We can't do this directly on WrapperView because of vst3-sys
limitations.
2022-04-20 17:18:41 +02:00
Robbert van der Helm
f3bb552cfe
Get a reference to the host's IRunLoop
2022-04-20 17:03:15 +02:00
Robbert van der Helm
55aabcea31
Add a note for PolyPressure + MPE
2022-04-20 16:48:37 +02:00
Robbert van der Helm
8eaecb6e5c
Add a way to completely exclude the vst3-sys dep
...
Because technically you might still include GPL'd symbols even if you
wouldn't use the `nih_export_vst3!()` macro.
2022-04-15 16:14:42 +02:00
Robbert van der Helm
0fd9a68146
Move u16strlcpy to the VST3 wrapper utils module
2022-04-15 16:13:14 +02:00
Robbert van der Helm
7b24dea719
Clarify param_map()
docstring
2022-04-13 20:20:27 +02:00
Robbert van der Helm
877eeadc7f
Add a todo for implementing FTZ for AArch64
2022-04-12 02:08:41 +02:00
Robbert van der Helm
54db43f48d
Fix c_char usage on AArch64
...
Apparently char is unsigned on AArch64.
2022-04-12 02:06:29 +02:00
Robbert van der Helm
3c69fb72cf
Make parameter names owned
...
That way you can generate parameters with custom `Params`
implementations.
2022-04-11 23:27:36 +02:00
Robbert van der Helm
ad50852aeb
Fix CLAP event output struct sizes
2022-04-11 20:53:25 +02:00
Robbert van der Helm
5e486ab3d9
Explicitly handle 0 channel IO
...
Instead of treating it as a flush. This is needed for note effect
plugins.
2022-04-11 20:46:51 +02:00
Robbert van der Helm
e0c5a3f5e4
Fix default accepts_bus_config implementation
...
This should use the constants.
2022-04-11 20:46:51 +02:00
Robbert van der Helm
65d87f87ed
Add a way to output note events
...
This supports all note events supported by NIH-plug, and both CLAP and
VST3.
2022-04-11 20:46:51 +02:00
Robbert van der Helm
1f8db9d9c2
Mention NoteEvents being zero indexed
2022-04-11 19:48:07 +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
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
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
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
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
2af3f84416
Rename State to PluginState
...
Now that it is part of the public API.
2022-04-07 17:39:34 +02:00