Commit Graph

159 Commits

Author SHA1 Message Date
Robbert van der Helm aed369c4be Add stubs for IUnitInfo
This is a big boy.
2020-12-26 21:18:11 +01:00
Robbert van der Helm 5e26d30752 Add a wrapper for IUnitHandler 2020-12-26 14:12:40 +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 0fce9c9eed Add an IConnectionPoint proxy proxy
This is a bit dumb, but this way we can support indirectly connected
objects.
2020-12-25 13:28:03 +01:00
Robbert van der Helm 84b859c499 Implement IMessage 2020-12-25 01:01:13 +01:00
Robbert van der Helm b6304c83b5 Implement IAttributeList 2020-12-25 00:54:08 +01:00
Robbert van der Helm 1be9f53bb3 Add missing compile flags 2020-12-24 13:47:01 +01:00
Robbert van der Helm 91c4b414b0 Add a Vst3PlugFrameProxy implementation with stubs 2020-12-22 13:37:58 +01:00
Robbert van der Helm f5c75da451 Add Vst3PlugFrameProxy
For proxying the `IPlugFrame*` passed to `IPlugView::setFrame()`.
2020-12-22 13:26:54 +01:00
Robbert van der Helm 90de46428c Add an implementation wrapper for IPlugFrame 2020-12-22 13:20:49 +01:00
Robbert van der Helm ae057a0acf Add stubs for a Vst3PlugViewProxy implementation 2020-12-19 20:58:34 +01:00
Robbert van der Helm e391bbccb7 Add Vst3PlugViewProxy 2020-12-19 20:18:45 +01:00
Robbert van der Helm 76a1ed6082 Add an IPlugView wrapper 2020-12-19 20:09:04 +01:00
Robbert van der Helm 0522f84f4a Create Vst3HostContextProxy from YaHostApplication
This is quite a huge refactor, but note everything is consistent (and
we're going to need one or two more of these `Vst3*Proxy` objects).
Right now nothing extends `IHostApplication`, but this way it will be
trivial to add support for more host context interfaces.
2020-12-19 17:13:17 +01:00
Robbert van der Helm 132ba0baeb Add stubs for a component handler proxy impl 2020-12-19 14:37:50 +01:00
Robbert van der Helm f816b5ad5d Add IComponentHandler to Vst3ComponentHandlerProxy 2020-12-19 14:27:50 +01:00
Robbert van der Helm 54e73d2d19 Split YaEditController into YaEditController{,2}
Since even though the title would make you assume it's a versioned
interface, it's not.
2020-12-19 14:19:37 +01:00
Robbert van der Helm f83e526fc6 Add stubs for IConnectionPoint 2020-12-18 13:36:48 +01:00
Robbert van der Helm 2155240cca Add stubs for IEditController{,2} 2020-12-17 16:39:50 +01:00
Robbert van der Helm 655195a415 Move the plugin interfaces to a subdirectory 2020-12-17 13:12:54 +01:00
Robbert van der Helm 11bf7532fa Rename the monolitic class to Vst3PluginProxy
Now it's starting to look promising.
2020-12-17 13:07:42 +01:00
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