1
0
Fork 0
Commit graph

511 commits

Author SHA1 Message Date
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
449adb8bfc Add stable IDs for enum parameters 2022-06-03 22:22:36 +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
90ee514fe4 Implement custom port names for VST3 2022-05-28 00:34:44 +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
7eee0b032e Report at least a channel output bus for VST3
Bitwig just doesn't call the process function if plugins have no audio
IO.
2022-05-26 12:37:31 +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
2ac013df64 Fix warnings 2022-05-22 00:59:04 +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
4587c1405f Move VST3 buffer initialization
This was left over from the last commit.
2022-05-18 19:41:43 +02:00
Robbert van der Helm
024307872a Move VST3 initialization to set_active()
Because the host may still change the channel layouts at this point.
2022-05-18 19:29: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
0355ed3168 Add flush-to-zero support for AArch64 2022-05-10 23:12:52 +02:00
Robbert van der Helm
c141314e30 Update for CLAP 0.25 2022-05-09 16:50:24 +02:00
Robbert van der Helm
ffe4642aa5 Implement IProcessContextRequirements
This is needed for VST 3.7. We claim to be a VST 3.6.14 plugin, but
implementing this anyways seems like the safe bet. I doubt many hosts
would, but under VST 3.7 hosts are allowed to not send any transport
information unless this interface is implemented.
2022-05-07 13:24:17 +02:00
Robbert van der Helm
f05e31d9e3 Sort additional VST3 interace implementations
The sensible order would be IComponent, IEditController,
IAudioProcessor, and then everything else.
2022-05-07 13:18:20 +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
7cb671319e Properly define all predefined note expressions
This is apparently how you're supposed to do it in VST3. How would you
know? You'd ask Steinberg.
2022-05-05 15:35:14 +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
1d3ac1b2af Move param setting functions to new ParamMut trait
This makes things slightly less confusing because these functions should
never be called from user code.
2022-05-01 18:45:35 +02:00
Robbert van der Helm
a17c63bf71 Add parameter getters for unmodulated values
This is needed to be able to support modulation events in CLAP. There an
offset gets applied to the parameter's actual current value. That way
GUIs don't have to move around when parameters are being modulated and
save states cannot get influenced by modulation.
2022-05-01 18:30:30 +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
ddc28eef5e Clarify the VST3 output .take(num_outputs) 2022-04-30 01:52:53 +02:00
Robbert van der Helm
4fb67a720b Add a todo for fallback DPI scale detection 2022-04-27 19:26:39 +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
21e28fdca2 Handle hosts providing zero output channels 2022-04-27 16:52:30 +02:00
Robbert van der Helm
afde489bbf Add a fixme for REAPER's broken bypass handling 2022-04-27 16:45:34 +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
582ab50e58 Move VST3 Plugin::reset() call to set_processing()
This lets the host reset buffers the intended way.
2022-04-26 13:42:32 +02:00