Robbert van der Helm
d3d57a3fe0
Use UID conversion for GetControllerClassId
2021-01-22 14:13:27 +01:00
Robbert van der Helm
2ca1d5b8ca
Greatly increase reliability of deferred closing
...
It's pretty hard to find a solution that checks all of the boxes. I want
something that:
- Closes instantly when you close the editor, and in REAPER you should
be able to instantly switch between docked and floating modes
- Where there should not be a delay in user interaction when quickly
reopening the editor (or doing that switching thing in REAPER since that's
the same thing)
- Where the window manager should not try to reparent the window during
the losing process as that can cause some jarring flickering
- And, of course, there should be no weird Wine X11Drv crashes
And it should do all of that in Bitwig, REAPER, Carla, Ardour and
Renoise. Apparently it's quite the task to find an approach that checks
all the boxes there.
2021-01-21 16:47:35 +01:00
Robbert van der Helm
de8559caea
Get rid of some old todos
2021-01-19 15:20:22 +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
9ddf4b2ae1
Fully implement IProcessContextRequirements
2021-01-16 16:29:21 +01:00
Robbert van der Helm
6c40cd5ad1
Add stubs for IPlugInterfaceSupport
2021-01-16 14:47:40 +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
5dcedbace5
Add an option to disable VST3 content scaling
...
This might be necessary when using a HiDPI screen as plugin GUIs often
don't scale correctly under Wine.
2021-01-14 17:36:00 +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
561aee4963
Pass channel context data from the GUI thread
...
This fixes Melodyne crashing as it presumably immediately wants to
redraw upon receiving this.
2021-01-12 18:44:43 +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
bf3a4e7296
Allow changing the event loop tick rate
...
This also changes the refresh rate for most plugins. You can now lower
this setting if your computer is struggling to keep up with rendering a
certain heavy plugin.
2021-01-11 23:38:21 +01:00
Robbert van der Helm
b86df213fb
Change to SCHED_OTHER on IPlugView init/destruct
...
Instead of only on `IPlugView::attached`/`IPlugView::removed` like in
the previous commit. I forgot to also do this when creating and
destroying IPlugViews (since I can assume lots of plugins will then
already start loading resources).
2021-01-11 19:04:46 +01:00
Robbert van der Helm
f015739942
Open and close editors without realtime priority
2021-01-11 18:50:53 +01:00
Robbert van der Helm
a2d1a97309
Fully implement IAutomationState
2021-01-10 23:38:40 +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
9b62386099
Move VectorStream to a new YaBStream
...
We'll have to extend this with `IStreamAttributes` for VST 3.6.0 preset
meta data.
2021-01-10 15:12:47 +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
eed068b9f7
Add stubs for IEditControllerHostEditing
2021-01-08 16:18:45 +01:00
Robbert van der Helm
c375441971
Handle all IPlugView functions from the GUI thread
...
Melda plugins will freeze if GetSize wasn't called from the GUI thread
before.
2021-01-07 22:42:31 +01:00
Robbert van der Helm
5d0df7febe
Fully implement IContextMenuTarget
2021-01-07 00:17:55 +01:00
Robbert van der Helm
26eb8ac1f3
Store the actual context menu proxy impls
2021-01-07 00:07:48 +01:00
Robbert van der Helm
75284cea0b
Track registered context menus
...
So we can refer to them when the host executes a menu item later.
2021-01-06 23:09:55 +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
74c5728100
Get rid of old todos
2021-01-04 16:48:15 +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
52d4fe2f08
Add a wrapper struct around IPlugView for casts
2021-01-03 23:43:51 +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
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
fa0753f520
Use atomic fetch-and-add for unique window classes
2020-12-31 14:12:14 +01:00
Robbert van der Helm
651ebd4db3
Update the ViewRect in checkSizeConstraint()
2020-12-30 14:35:18 +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
96fe8b16a5
Add more explicit moves in VST3 message handling
...
The compiler might be smart enough to do this for us, but doing it
manually doesn't hurt.
2020-12-29 18:54:57 +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
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
Robbert van der Helm
dd74e54854
Add FIXME for a crazy design issue in VocalSynth 2
...
They're exchanging pointers between the processor and the controller
using messages. And not only that, they're storing the message objects
instead of storing the pointers.
2020-12-28 00:38:35 +01:00
Robbert van der Helm
9cacf03765
Add missing lambda return type annotations
2020-12-27 23:34:40 +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