Commit Graph

104 Commits

Author SHA1 Message Date
Robbert van der Helm b5dd806b2d Cache VST3 parameter information
This is in some cases needed to get decent performance in REAPER, as
REAPER seems to query this information (which cannot change without the
plugin requesting a restart) four times per second.
2021-01-30 22:24:05 +01:00
Robbert van der Helm 1043776e52 Differentiate between cached values in logs
If it turns out we forgot to flush this cache in some place.
2021-01-30 13:56:58 +01:00
Robbert van der Helm 68e10cd24c Flush the bus info cache in more places
The current approach 'works', but better err on the safe side. Once this
caching layer is no longer necessary we should just remove it.
2021-01-30 13:48:42 +01:00
Robbert van der Helm 10b7930779 Also clear bus cache on IAudioProcessor::setActive
Now we need a workaround for our REAPER workaround because REAPER
doesn't follow the audio processing workflow diagram, amazing!
2021-01-30 01:42:20 +01:00
Robbert van der Helm 6339618984 Fix response logging filtering with bus info cache
The response logging wasn't getting filtered.
2021-01-30 00:45:45 +01:00
Robbert van der Helm f5b4a28bd0 Cache bus information during processing
This works around an issue with REAPER. During every processing cycle
REAPER would query how many input and output busses we have, and it
would then enumerate over all of those busses. This meant that if a VST3
plugin has 32 output busses, then REAPER will do 34 extra function calls
before processing audio.
2021-01-30 00:02:06 +01:00
Robbert van der Helm 77414c80d6 Allow null pointers in IEditController::setComponentHandler 2021-01-24 14:51:18 +01:00
Robbert van der Helm d5e4424463 Also sync VST3 audio thread scheduling priorities
The exact same thing as the last commit, but for VST3 plugins.
2021-01-23 15:22:10 +01:00
Robbert van der Helm d3d57a3fe0 Use UID conversion for GetControllerClassId 2021-01-22 14:13:27 +01:00
Robbert van der Helm 1c6d3f8fd9 Fully implement IParameterFunctionName
We now support all VST 3.7.1 interfaces! At least, in theory we do.
2021-01-17 14:17:46 +01:00
Robbert van der Helm 3d8ee1ddf1 Add stubs for IParameterFunctionName 2021-01-17 13:23:17 +01:00
Robbert van der Helm aa1a7a1588 Fully implement IProgress
`IParameterFunctionName` will be the last interface before we _in
theory_ support all VST3 features.
2021-01-17 00:19:48 +01:00
Robbert van der Helm 9ddf4b2ae1 Fully implement IProcessContextRequirements 2021-01-16 16:29:21 +01:00
Robbert van der Helm a2203cfef7 Add stubs for IProcessContextRequirements 2021-01-16 16:09:31 +01:00
Robbert van der Helm 73fda0b568 Fully implement IPlugInterfaceSupport
With this we support all VST 3.6.12 interfaces.
2021-01-16 15:19:10 +01:00
Robbert van der Helm 7fdf646270 Fully implement IMidiLearn 2021-01-16 14:25:00 +01:00
Robbert van der Helm 85c1972c1f Add stubs for IMidiLearn 2021-01-15 22:36:25 +01:00
Robbert van der Helm 6e8d56923c Fully implement INoteExpressionPhysicalUIMapping
With this we support all VST 3.6.11 features.
2021-01-15 19:33:05 +01:00
Robbert van der Helm c485677987 Add stubs for INoteExpressionPhysicalUIMapping 2021-01-15 19:08:06 +01:00
Robbert van der Helm 1d9b60b481 Fully implement IComponentHandlerBusActivation
We now support all VST 3.6.8 features. (or technically, also all VST
3.6.10 features)
2021-01-14 16:42:19 +01:00
Robbert van der Helm 631166d0bf Fully implement IInfoListener 2021-01-12 17:04:07 +01:00
Robbert van der Helm ccdb121f96 Add stubs for IInfoListener 2021-01-12 16:54:13 +01:00
Robbert van der Helm 87b270273f Fully implement IPrefetchableSupport 2021-01-12 15:37:58 +01:00
Robbert van der Helm 7c081b458a Add stubs for IPrefetchableSupport 2021-01-12 15:24:37 +01:00
Robbert van der Helm 5855ffbe85 Fully implement IUnitHandler2 2021-01-10 23:54:43 +01:00
Robbert van der Helm a2d1a97309 Fully implement IAutomationState 2021-01-10 23:38:40 +01:00
Robbert van der Helm cfa1aff1bf Add stubs for IAutomationState 2021-01-10 23:32:55 +01:00
Robbert van der Helm 8971a65825 Pass through host provided IBStream objects
So if the host supports IStreamAttributes, we can also provide objects
that support the same itnerface to the plugin.
2021-01-10 16:57:36 +01:00
Robbert van der Helm 07a994089b Add missing null pointer checks
I did double check, and I don't think any of these are supposed to be
nullable.
2021-01-08 18:33:14 +01:00
Robbert van der Helm 2fc7621aee Fully implement XmlRepresentationController 2021-01-08 18:02:43 +01:00
Robbert van der Helm 2072310b2b Add stubs for IXmlRepresentationController 2021-01-08 17:43:43 +01:00
Robbert van der Helm 30bb6d3b97 Fully implement IKeyswitchController 2021-01-08 17:12:17 +01:00
Robbert van der Helm 7969ec20fd Add stubs for IKeyswitchController 2021-01-08 16:53:43 +01:00
Robbert van der Helm 5d5ec63fee Fully implement IEditControllerHostEditing 2021-01-08 16:33:27 +01:00
Robbert van der Helm eed068b9f7 Add stubs for IEditControllerHostEditing 2021-01-08 16:18:45 +01:00
Robbert van der Helm 83d45eef27 Implement the plugin side of IContextMenu 2021-01-07 16:19:41 +01:00
Robbert van der Helm 9e3c57476c Implement the plugin side if IComponentHandler3 2021-01-06 22:25:23 +01:00
Robbert van der Helm 0e3b5af94e Fully implement IAudioPresentationLatency
Now we support all VST 3.1.0 interfaces.
2021-01-04 22:33:44 +01:00
Robbert van der Helm dcfbc34ba1 Add stubs for IAudioPresentationLatency 2021-01-04 22:17:19 +01:00
Robbert van der Helm 9983f81875 Fully implement IComponentHandler2 2021-01-04 21:56:14 +01:00
Robbert van der Helm fb6e5ab33f Fully implement IMidiMapping 2021-01-02 23:54:01 +01:00
Robbert van der Helm e980afddb4 Add stubs for IMidiMapping 2021-01-02 23:49:47 +01:00
Robbert van der Helm a8a0e325fe Fully implement INoteExpressionCOntroller 2021-01-02 18:40:34 +01:00
Robbert van der Helm 8a4de7da53 Add stubs for INoteExpressionController 2021-01-02 15:27:55 +01:00
Robbert van der Helm 34f8d3b1d2 Update the copyright notices for 2021 2021-01-01 18:54:02 +01:00
Robbert van der Helm 9d24d422d1 Log successful FUnknown::queryInterface calls 2020-12-31 13:13:39 +01:00
Robbert van der Helm 3553b080fe Implement IUnitData
With this all VST 3.0.0 interfaces are finally supported.
2020-12-29 22:00:22 +01:00
Robbert van der Helm bddcc40e24 Implement IProgramListData on the plugin side
With this the interface is fully implemented.
2020-12-29 19:11:12 +01:00
Robbert van der Helm 22269570d0 Add stubs for IProgramListData 2020-12-29 15:53:01 +01:00
Robbert van der Helm 4226ab6e43 Pass pointers to IMessage objects around
Instead of serializing the actual `YaMessage`, for the reasons mentioned
in the comments. This was needed to stop iZotope VocalSynth 2 in Ardour
from segfaulting when editing parameters, because that plugin is
apparently being very naughty.
2020-12-29 00:22:42 +01:00