Commit Graph

288 Commits

Author SHA1 Message Date
Robbert van der Helm d8b2646563 Split off IComponent and create a monolithic class
We can now use implement all VST3 plugin interfaces through this class,
check whether the object from the plugin also supports these classes,
and then conditionally allow casting to the supported classes. This
should give us a one-to-one proxy of the original object.
2020-12-17 12:49:33 +01:00
Robbert van der Helm d6c28f48d9 Split YaAudioProcessor from YaComponent
Now all that's left is splitting YaComponent into the IComponent bits
and separate YaPluginMonlith that implements everything.
2020-12-17 00:31:32 +01:00
Robbert van der Helm 6809e73d6b Split IPluginBase from IComponent
We're also going to need this for `IEditController`. Separating all of
these classes will also keep everything much more maintainable with all
of these associated structs.
2020-12-16 23:46:47 +01:00
Robbert van der Helm f1aefc0a9d Finish implementing YaAudioBusBuffers 2020-12-15 22:32:42 +01:00
Robbert van der Helm f33b749172 Implement all event types 2020-12-15 17:44:26 +01:00
Robbert van der Helm 92c37f71db Implement IParameterChanges 2020-12-15 14:24:55 +01:00
Robbert van der Helm 026595d99f Implement IParamValueQueue 2020-12-15 14:23:55 +01:00
Robbert van der Helm 0c64aabeea Add a partial YaHostApplication implementation 2020-12-13 14:46:17 +01:00
Robbert van der Helm 919987298c Add the base for YaHostApplication 2020-12-13 13:46:00 +01:00
Robbert van der Helm 39984ad442 Use the new approach for creating plugin factory
Directly serializing and deserializing into objects was and more
boilerplate heavy (since we now need two implementations even though we
only use one), and also much less flexible because we can't wrap
payloads in structs or provide optional values that way.
2020-12-12 21:53:38 +01:00
Robbert van der Helm 4f8fe21fa9 Merge branch 'master' into feature/vst3 2020-12-12 13:33:36 +01:00
Robbert van der Helm 42c484bfc0 Bump to version 2.2.1 2020-12-12 12:48:09 +01:00
Robbert van der Helm 91a47a466c Create a universal wrapper around tvalue 2020-12-11 23:34:23 +01:00
Robbert van der Helm d1d85711f0 Split up the VST3 class implementations 2020-12-11 22:37:20 +01:00
Robbert van der Helm 9554bbc12d Merge branch 'master' into feature/vst3 2020-12-11 16:25:53 +01:00
Robbert van der Helm d0b9f1a602 Bump to version 2.2.0 2020-12-11 14:00:16 +01:00
Robbert van der Helm e3a52bca14 Revert "Get rid of all traces of pthreads in Wine"
This reverts commit e9af76d21e.

Without this the event loop will just not run, not sure why. This needs
some more investigation.
2020-12-10 17:38:09 +01:00
Robbert van der Helm e9af76d21e Get rid of all traces of pthreads in Wine
Since this can only cause issues.
2020-12-10 15:44:37 +01:00
Robbert van der Helm 5eb1fe2de2 Redesign how interface instantiation works
Transferring some argument pack is much easier than trying to
deserialize into an existing object when you also have to transfer more
information than just that object.
2020-12-08 17:33:51 +01:00
Robbert van der Helm 049eb257c5 Make YaPluginFactory abstract
And add separate implementations for the native plugin and the Wine
plugin host. This way we can easily allow the native host to do
callbacks without having to manage a load of lambdas.
2020-12-07 18:28:16 +01:00
Robbert van der Helm 85f818ab0b Patch the SDK for winegcc debug builds 2020-12-07 18:28:16 +01:00
Robbert van der Helm 42f3639e93 Add boilerplate for PluginFactory serialization 2020-12-07 18:28:16 +01:00
Robbert van der Helm 76ad377522 Don't set __MINGW32__
This took me a few hours of non-stop headaches to figure out. Apparently
deep inside of Wine's headers having __MINGW32__ defined will cause some
GUIDs to be defined slightly differently. This normally wouldn't cause
issues, but when including `shellobj.h` or `objbase.h` this results in
multiple definition linking errors that are basically impossible to
diagnose.
2020-12-07 18:28:16 +01:00
Robbert van der Helm 426231a22b Avoid potential UB in loggers using composition
This cast would work fine, but any other fields added to those loggers
would be left uninitialized.
2020-12-07 18:28:16 +01:00
Robbert van der Helm ff2807c939 Add all the boilerplate for the Vst3PluginBridge
And now that I also have an idea of what the communication model will
look like, this can server as a base for instantiating plugins.
2020-12-07 18:28:16 +01:00
Robbert van der Helm ebc7802c08 Patch Win32 module loading to use Boost.Filesystem
C++17's `<filesystem>` header still doesn't seem to work with winegcc.
2020-12-07 18:28:16 +01:00
Robbert van der Helm 8381b4a836 Link to shell32.dll
For some reason this is required on the Ubuntu 18.04 build, but not on
my computer nor on the Ubuntu 20.04 build all using the same version of
Wine and GCC.
2020-12-07 18:28:16 +01:00
Robbert van der Helm a25aea1a76 Use consistent architecture naming for Wine deps 2020-12-07 18:28:16 +01:00
Robbert van der Helm a4af1a2535 Fix compiling VST3 module system with winegcc 2020-12-07 18:28:16 +01:00
Robbert van der Helm 715a95075b Add required compiler args to the Wine VST3 dep 2020-12-07 18:28:16 +01:00
Robbert van der Helm f51f920426 Move VST3 dependency defs to the rest of the deps 2020-12-07 18:28:16 +01:00
Robbert van der Helm d848498d9b Define all sources at the top of meson.build
To make things a bit more organized since it's growing a bit out of
hand.
2020-12-07 18:28:16 +01:00
Robbert van der Helm e273051a6c Add a Vst3Bridge implementation file 2020-12-07 18:28:16 +01:00
Robbert van der Helm eeb6acf8dd Move event handling to a common HostBridge 2020-12-07 18:28:16 +01:00
Robbert van der Helm cf72c13579 Add a define for VST3 support 2020-12-07 18:28:16 +01:00
Robbert van der Helm f9a1bcd7bd Split VST2 specific functionality into Vst2Logger 2020-12-07 18:28:16 +01:00
Robbert van der Helm 2230b5099f Move logger to common/logging/common.h 2020-12-07 18:28:16 +01:00
Robbert van der Helm 1c5a9423d2 Print the plugin type on initialization 2020-12-07 18:28:16 +01:00
Robbert van der Helm 7fc7a51a46 Move PluginArchitecture to common
Along with the accompanying function to parse a PE32 file. We're going
to have to define some common tags for different plugin types.
2020-12-07 18:28:16 +01:00
Robbert van der Helm 5b2221b251 Add a (nonfunctional) VST3 entry point 2020-12-07 18:28:16 +01:00
Robbert van der Helm 6c26168303 Patch the rest of the VST3 SDK for winegcc 2020-12-07 18:28:16 +01:00
Robbert van der Helm e7e1387c30 Also patch pluginterfaces for winegcc compilation 2020-12-07 18:28:16 +01:00
Robbert van der Helm 7dc0be40a4 Move libyabridge-vst2.so definition to above VST3 2020-12-07 18:28:16 +01:00
Robbert van der Helm b64c67d2ad Patch VST3 SDK base to allow winelib compilation 2020-12-07 18:28:16 +01:00
Robbert van der Helm c8d76d9c92 Add proper dependencies for the entire VST3 SDK 2020-12-07 18:28:16 +01:00
Robbert van der Helm 2fbd14908a Split communication/vst2.h into common and VST2
So we can reuse the generic bits for our VST3 implementation.
2020-12-07 18:28:16 +01:00
Robbert van der Helm 46bc0301af Move communication.h to communication/vst2.h 2020-12-07 18:28:16 +01:00
Robbert van der Helm 9c8b543d5d Split serialization.h into common and VST2 parts 2020-12-07 18:28:16 +01:00
Robbert van der Helm 04dacc0a40 Add a dependency for the VST3 pluginterfaces 2020-12-07 18:28:16 +01:00
Robbert van der Helm c6b58c1a64 Don't use CMake for the VST3 SDK
This can't work yet.
2020-12-07 18:28:16 +01:00