Robbert van der Helm
66f5a0e7de
Move MIDI parsing from CLAP wrapper to NoteEvent
2022-06-14 22:59:40 +02:00
Robbert van der Helm
34fa78a313
Update for CLAP 1.0
2022-06-10 00:36:16 +02:00
Robbert van der Helm
89afa8bf00
Use nih_trace!() for lesser important messages
...
Like the missing CLAP extensions.
2022-06-07 14:18:56 +02:00
Robbert van der Helm
bfc472e49b
Introduce a new enum for CLAP features
...
Based on the new CLAP 0.26 clap-features.h.
2022-06-02 01:16:30 +02:00
Robbert van der Helm
ce9142186e
Remove the win32-dpi-aware CLAP feature on Windows
...
I don't think this is correct, since none of the GUI adapters are able
to communicate the detected DPI back to NIH-plug.
2022-06-02 00:54:15 +02:00
Robbert van der Helm
19f4fdadc5
Update for CLAP 0.26
2022-06-02 00:50:36 +02:00
Robbert van der Helm
7a4e7b187a
Clear auxiliary output buffers at start of process
...
This prevents uninitialized data from lingering if the plugin doesn't
write to these buffers. Seen this happen in Bitwig.
2022-05-29 14:07:13 +02:00
Robbert van der Helm
c56e1eab14
Implement custom port names for CLAP
2022-05-28 00:39:16 +02:00
Robbert van der Helm
4b760d1c19
Move auxiliary IO handling down in process()
2022-05-28 00:11:14 +02:00
Robbert van der Helm
0242cc5235
Also implement auxiliary IO for VST3
2022-05-28 00:10:16 +02:00
Robbert van der Helm
ee900f74c2
Support auxiliary inputs and outputs for CLAP
...
This does not yet work for VST3. You'll always get empty slices there.
2022-05-27 02:30:57 +02:00
Robbert van der Helm
b2e6bd5515
Create a separate InitContext
...
Only a couple of these functions would be needed during initialization.
In the next couple commits ProcessContext will get a way to access
auxiliary IO, so this really had to be separated.
2022-05-27 01:17:15 +02:00
Robbert van der Helm
4c54716cc2
Remove unnecessary pub specifier
2022-05-24 14:26:13 +02:00
Robbert van der Helm
f4f54029eb
Add a deactivation callback
...
This is the equivalent of initialize()
2022-05-24 13:05:06 +02:00
Robbert van der Helm
596b04af0a
Add preliminary support for auxiliary IO
...
The missing parts are allocating buffers for these busses, copying data
to those buffers, and adding methods to the ProcessContext to interact
with these inputs and outputs.
2022-05-23 17:13:49 +02:00
Robbert van der Helm
ad661c857c
Expose CLAP note ports extension for output-only
2022-05-22 23:16:49 +02:00
Robbert van der Helm
2a58b771f3
Remove old todo
2022-05-22 23:05:18 +02:00
Robbert van der Helm
d42fd41007
Buffers for zero channel plugins are always valid
2022-05-22 22:48:55 +02:00
Robbert van der Helm
783dc2245e
Store the processing mode in BufferConfig
...
Instead of having a function on ProcessContext.
2022-05-22 13:33:38 +02:00
Robbert van der Helm
ee3b0bf8e6
Store the minimum buffer size in BufferConfig
2022-05-22 13:21:39 +02:00
Robbert van der Helm
e1d4be2a03
Change NON_AUTOMATABLE semantics and add HIDDEN
...
This now lets you have parameters that cannot be automated but that are
still changeable through the generic UI.
2022-05-22 12:37:30 +02:00
Robbert van der Helm
985db44503
Allow marking CLAP plugins as hard realtime
2022-05-22 01:01:59 +02:00
Robbert van der Helm
665108721a
Add a way to fetch the current processing mode
2022-05-22 00:58:53 +02:00
Robbert van der Helm
9601c9c0c1
Fix modulating non-smoothed parameters
...
And also get rid of duplicate code here.
2022-05-20 16:12:48 +02:00
Robbert van der Helm
6fc0b2e148
Call Plugin::initialize() for runtime preset load
...
It's the plugin's responsibility to not do any realtime unsafe work here
if they support runtime preset loading.
2022-05-13 14:46:25 +02:00
Robbert van der Helm
c141314e30
Update for CLAP 0.25
2022-05-09 16:50:24 +02:00
Robbert van der Helm
a74d8264fb
Support CLAP transport information events
...
This will cause the buffer to be split when the transport information
changes.
2022-05-05 17:23:46 +02:00
Robbert van der Helm
06c5e4b04a
Make parameter modulation stick after automation
...
This is how it's supposed to be implemented in CLAP.
2022-05-02 15:46:57 +02:00
Robbert van der Helm
10ae8e1d05
Enable modulation for CLAP parameters
...
Everything else has already been implemented, but this is kind of
important.
2022-05-02 11:51:56 +02:00
Robbert van der Helm
a4b251e5ef
Support monophonic modulation for CLAP plugins
...
This avoids the potential for state corruption caused by modulation and
modulation can be displayed differently on the GUI.
2022-05-01 19:05:51 +02:00
Robbert van der Helm
3d454bfc9c
Don't process audio at all with invalid buffers
...
If the host does some kind of flush this way with num_samples > 0 but
without any outputs or with zero output channels then we should not try
to read from the now invalid pointers from the previous cycle.
2022-04-30 02:00:09 +02:00
Robbert van der Helm
6185909ddf
Also safeguard against zero channel counts in CLAP
2022-04-27 17:06:19 +02:00
Robbert van der Helm
dedbfebb71
Add todos about potential duplicate reset calls
2022-04-26 14:15:57 +02:00
Robbert van der Helm
4779991edf
Also move reset() call to process start for CLAP
...
So the behavior is consistent for CLAP and VST3.
2022-04-26 14:14:12 +02:00
Robbert van der Helm
4ac0c40812
Reset last processing status for CLAP on start
...
Just like we're doing in the VST3 wrapper.
2022-04-26 14:10:00 +02:00
Robbert van der Helm
566095802c
Decouple state functions from CLAP/VST3 wrapper
...
This should also be usable with a plain `params` object, since we don't
need hashes in the standalone wrapper.
2022-04-24 19:46:07 +02:00
Robbert van der Helm
9acd312768
Parmaeters are not real, they can't hurt you
2022-04-24 19:46:07 +02:00
Robbert van der Helm
19d4b73039
Implement parameter changes for standalone target
...
Changing parameters from an editor now works just like in the other
targets.
2022-04-24 15:48:42 +02:00
Robbert van der Helm
f838062d72
Don't use an Arc for the CLAP editor
2022-04-24 15:48:05 +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
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
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
e4606918e7
Rename next_midi_event() to next_event()
2022-04-11 18:15:14 +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
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
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
24837d1552
Implement full MIDI support for CLAP
2022-04-07 23:28:31 +02:00