Commit Graph

222 Commits

Author SHA1 Message Date
Robbert van der Helm 9d11b501cd Add a shared memory based audio buffer
We'll be using this to reduce the amount of copying we have to do during
audio processing.
2021-06-09 20:06:57 +02:00
Robbert van der Helm 53e4fa369f Bump to version 3.3.1 2021-06-09 16:36:02 +02:00
Robbert van der Helm 7228d49507 Bump to version 3.3.0 2021-06-03 17:35:45 +02:00
Robbert van der Helm db6ecdbbd4 Also define the shobjidl.h define globally
This was needed for Wine 6.2.
2021-05-11 02:27:43 +02:00
Robbert van der Helm af299f3c66 Always define NOMINMAX and friends globally
Repeating this every time is worse than defining them in the compiler
command line.
2021-05-11 02:27:43 +02:00
Robbert van der Helm 5577c4bfd8 Fix build on Wine 6.8 #103
Wine dropped `WINE_NOWINSOCK`, so now we sadly have to define this
globally instead.
2021-05-11 02:27:38 +02:00
Robbert van der Helm ffdab23d46 Bump the version to 3.2.0 2021-05-03 13:09:18 +02:00
Robbert van der Helm 459e7ac56b Fix syntax error in meson.build
As a result of 9daddb777b.
2021-05-01 19:31:44 +02:00
Robbert van der Helm 9daddb777b Fix unity builds
The version header was not being included in the correct unit,
sometimes.
2021-05-01 19:28:00 +02:00
Robbert van der Helm 5b28d44797 Define a static library for the Wine hosts
This means we only have to compile everything two times, instead of four
times. We sadly still need to compile lots of files at least three
times. (once for native, once for 64-bit Wine, and once for 32-bit Wine)
2021-05-01 01:09:58 +02:00
Robbert van der Helm 588a8fd590 Better structure the meson.build file
It's been growing a bit over the last year.
2021-04-30 16:16:35 +02:00
Robbert van der Helm 5680ed5035 Enable additional assertions in debug builds 2021-04-30 16:06:50 +02:00
Robbert van der Helm 93f089eca7 Always set FTZ instead of gating it behind a flag
After a quick round of testing it seems like REAPER doesn't always
enable this on the audio thread, but Bitwig, Ardour, Carla and Renoise
do. So it should be safe to just get rid of the option and to leave this
enabled all the time.
2021-04-28 12:07:14 +02:00
Robbert van der Helm a12e0dcc27 Enable SSE2 instructions
We need this to enable FTZ in 3aac8e3483.
SSSE2 is a default on x86_64, but we need to explicitly enable it when
compiling the 32-bit bitbridge.
2021-04-27 23:50:28 +02:00
Robbert van der Helm dd552dc8d7 Print the Wine version at Meson configure time 2021-04-18 14:06:33 +02:00
Robbert van der Helm ba6b87c790 Bump to version 3.1.0 2021-04-15 12:38:11 +02:00
Robbert van der Helm b1eaaa0638 Fix ABI compatibility with 32-bit VST3 plugins #80
This would cause 32-bit VST3 plugins to crash in mysterious ways. What
ended up being the issue is that the plugins expected doubles to be
8-byte aligned in structs, while GCC doesn't do that by default in x86
code for legacy ABI compatibility reasons. Figuring out what exactly was
the issue took months, but luckily the fix was to just add an
`-malign-double`!
2021-04-12 22:35:09 +02:00
Robbert van der Helm 05f739d9db Update to version 3.7.2 of the VST3 SDK 2021-04-03 18:02:23 +02:00
Robbert van der Helm 36e64d89dc Use dependency() with subproject fallback for deps
None of these libraries are packaged anywhere right now since they do
not have Meson build definitions, but in case they ever do it should be
possible to use them from a system package manager.
2021-03-12 14:50:42 +01:00
Robbert van der Helm 0d7b9bd178 Bump to version 3.0.2 2021-03-07 16:08:54 +01:00
Robbert van der Helm d91c8eeb07 Bump to version 3.0.1 2021-02-26 16:21:16 +01:00
Robbert van der Helm 8c2594f902 Bump to version 3.0.0 2021-02-14 14:36:01 +01: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 bb5471f2d9 Run certain GUI tasks from the host's run loop
This was a bit of a tricky one because it requires simulating mutual
recursion, but it's needed for REAPER as otherwide calls to
`IPlugFrame::resizeView()` and `IContextMenu::popup()` might cause
REAPER to segfault because its GUI is not thread safe.
2021-01-18 14:19:31 +01:00
Robbert van der Helm 06f6e6acfc Add a proxy class for IParameterFunctionName
This is the last official VST3 interface we have to implement!
2021-01-17 13:09:29 +01:00
Robbert van der Helm bfdfd9c341 Add proxy classes for IProgress 2021-01-16 18:02:15 +01:00
Robbert van der Helm 4f416e135a Add a proxy class for IProcessContextRequirements 2021-01-16 15:51:48 +01:00
Robbert van der Helm a8699eed18 Add a proxy class for IPlugInterfaceSupport 2021-01-16 14:33:09 +01:00
Robbert van der Helm 64507828bb Add a proxy class for IMidiLearn 2021-01-15 22:33:29 +01:00
Robbert van der Helm be7fccc920 Add a proxy class for INoteExpressionPhysicalUIMapping 2021-01-15 18:09:51 +01:00
Robbert van der Helm dd271a8c7f Add a serialization wrapper for PhysicalUIMap
Which we'll need for INoteExpressionPhysicalUIMapping.
2021-01-14 23:32:04 +01:00
Robbert van der Helm f24632ac8f Add proxy class for IComponentHandlerBusActivation 2021-01-14 16:08:48 +01:00
Robbert van der Helm 8cfe2512ed Add a proxy class for IPlugViewContentScaleSupport 2021-01-14 14:30:06 +01:00
Robbert van der Helm 9c63eb6fcd Add a proxy class for IInfoListener 2021-01-12 16:15:35 +01:00
Robbert van der Helm 8bcb3d7095 Add a proxy class for IPrefetchableSupport 2021-01-12 15:18:46 +01:00
Robbert van der Helm cbb8ebaf5d Add a proxy class for IUnitHandler2 2021-01-10 23:44:10 +01:00
Robbert van der Helm ba983be99f Add a proxy class for IAutomationState 2021-01-10 23:32:55 +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 d620117f6d Mention option for disabling VST3 support in error 2021-01-09 23:35:46 +01:00
Robbert van der Helm 7801313566 Prevent building VST3 support on old Wine versions
Those builds will segfault because of an interaction between those
version of Wine's winelib support and the `CoCreateGuid` function.
2021-01-09 22:38:15 +01:00
Robbert van der Helm ebd887d565 Add a proxy class for IXmlRepresentationController 2021-01-08 17:33:49 +01:00
Robbert van der Helm 4ef734dc5a Add a proxy class for IKeyswitchController 2021-01-08 16:44:58 +01:00
Robbert van der Helm 66020f3056 Add a proxy class for IEditControllerHostEditing 2021-01-08 16:12:38 +01:00
Robbert van der Helm f944bf4a39 Fully implement IContextMenu
Although all of this stuff is completely untested, and since no host on
Linux uses it we'll likely never know whether this implementation is
correct.
2021-01-07 16:47:28 +01:00
Robbert van der Helm 237b755c52 Add a proxy class for IComponentHandler3 2021-01-06 20:53:10 +01:00
Robbert van der Helm ead1008597 Add stubs for IContextMenuTarget 2021-01-06 19:02:52 +01:00
Robbert van der Helm d3eeebc9f9 Add a proxy class for context menu targets 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 fbbd2f0671 Add proxy classes for IContextMenu
So we can proxy objects returned by the host during
`IComponentHandler3::createContextMenu`.
2021-01-06 17:16:03 +01:00
Robbert van der Helm 5b70e0eea6 Fix source file ordering 2021-01-06 15:17:15 +01:00