Robbert van der Helm
fcaac219a6
💥 Reduce allocations in VST3 audio sockets
...
We do this by using this new `MessageReference<T>` type to avoid copying
our `YaAudioProcessor::Process` struct and the contained `YaProcessData`
object. This is only part of the work, but this redesign lets us keep
the these objects alive on both the plugin and the host side. On the
plugin side, we'll simply serialize the data from the referred to object
without copying it. On the Wine side, we'll write the data to a
persistent thread local object, and then reassign the
`MessageReference<T>` to point to that object. This lets us serialize
'references', thus avoiding potentially expensive allocations. With
these last few changes alone VST3 plugins are already at the same
performance level as our optimized VST2 plugin groups.
2021-05-07 16:32:08 +02:00
Robbert van der Helm
4f8eaaaa75
Refactor plugin factories into Vst3*Proxy format
...
Now every proxy object that's directly created by the host or plugin
shares the same structure.
2021-02-13 15:42:05 +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
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
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
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
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
0bed2b7bc0
Fully implement IPlugViewContentScaleSupport
...
With this we're at VST 3.6.6 level support.
2021-01-14 14:52:39 +01:00
Robbert van der Helm
631166d0bf
Fully implement IInfoListener
2021-01-12 17:04:07 +01:00
Robbert van der Helm
87b270273f
Fully implement IPrefetchableSupport
2021-01-12 15:37:58 +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
2fc7621aee
Fully implement XmlRepresentationController
2021-01-08 18:02:43 +01:00
Robbert van der Helm
30bb6d3b97
Fully implement IKeyswitchController
2021-01-08 17:12:17 +01:00
Robbert van der Helm
5d5ec63fee
Fully implement IEditControllerHostEditing
2021-01-08 16:33:27 +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
5d0df7febe
Fully implement IContextMenuTarget
2021-01-07 00:17:55 +01:00
Robbert van der Helm
5dffba4584
Implement Vst3ContextMenuProxyImpl destructor
2021-01-06 22:52:35 +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
ead1008597
Add stubs for IContextMenuTarget
2021-01-06 19:02:52 +01:00
Robbert van der Helm
0cbcf44e3e
Add stubs for an IContextMenu implementation
2021-01-06 19:02:52 +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
9983f81875
Fully implement IComponentHandler2
2021-01-04 21:56:14 +01:00
Robbert van der Helm
8924124abb
Fully implement IParameterFinder
...
With this we're at VST 3.0.2 support.
2021-01-03 23:46:13 +01:00
Robbert van der Helm
fb6e5ab33f
Fully implement IMidiMapping
2021-01-02 23:54:01 +01:00
Robbert van der Helm
a8a0e325fe
Fully implement INoteExpressionCOntroller
2021-01-02 18:40:34 +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
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
38211d0fb3
Implement IProgramListData on the Wine side
2020-12-29 18:50:17 +01:00
Robbert van der Helm
2823a74783
Implement all IUnitInfo functions
...
With this IUnitInfo has been fully implemented.
2020-12-27 18:07:32 +01:00
Robbert van der Helm
70c5792593
Implement IUnitInfo::getSelectedUnit
2020-12-27 16:48:47 +01:00
Robbert van der Helm
d34b399ba0
Implement IUnitInfo::getProgramPitchName
2020-12-26 23:20:13 +01:00
Robbert van der Helm
e414c58a7a
Implement IUnitInfo::hasProgramPitchNames
2020-12-26 23:04:02 +01:00
Robbert van der Helm
f96e6b5a1e
Implement IUnitInfo::getProgramInfo
2020-12-26 23:00:15 +01:00
Robbert van der Helm
204765ec0c
Implement IUnitInfo::getProgramName
2020-12-26 22:38:15 +01:00
Robbert van der Helm
60f6b30b84
Implement IUnitInfo::getProgramListInfo
2020-12-26 22:17:21 +01:00
Robbert van der Helm
92a7cb755a
Implement IUnitInfo::getProgramListCount
2020-12-26 22:10:46 +01:00
Robbert van der Helm
5e832a2689
Implement IUnitInfo::getUnitInfo
2020-12-26 22:03:26 +01:00
Robbert van der Helm
f3e706a39a
Implement IUnitInfo::getUnitCount
2020-12-26 21:33:19 +01:00
Robbert van der Helm
47177ed889
Implement IUnitHandler::notifyProgramListChange
...
With this IUnitHandler has been fully implemented.
2020-12-26 14:30:28 +01:00
Robbert van der Helm
bf40e10780
Implement IUnitHandler::notifyUnitSelection
2020-12-26 14:26:29 +01:00
Robbert van der Helm
86aaf2fa3a
Implement IEditController2::openAboutBox
...
With this IEditController2 has been fully implemented.
2020-12-26 00:10:39 +01:00
Robbert van der Helm
3c5700163e
Implement IEditController2::openHelp
2020-12-26 00:06:32 +01:00
Robbert van der Helm
91a96249fc
Implement IEditController2::setKnobMode
2020-12-26 00:03:29 +01:00
Robbert van der Helm
fbad4a65ab
Add an IConnectionPoint proxy implementation
...
We still have to pass this proxy to the plugin. That's next.
2020-12-25 13:46:03 +01:00
Robbert van der Helm
65694d261c
Implement IConnectionPoint::notify
2020-12-25 13:13:56 +01:00
Robbert van der Helm
9bb90388c1
Implement IPlugView::checkSizeConstraint()
...
With this the whole of `IPlugView` and thus also `IEditController` is
implemented.
2020-12-22 15:42:41 +01:00
Robbert van der Helm
5ef7e73725
Implement IPlugView::canResize()
2020-12-22 15:37:06 +01:00