Commit Graph

989 Commits

Author SHA1 Message Date
Robbert van der Helm 5f14958146 Implement IpluginFactory3::getClassInfoUnicode 2020-12-07 18:28:16 +01:00
Robbert van der Helm ef3f82e00f Implement IpluginFactory2::getClassInfo2 2020-12-07 18:28:16 +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 1db3c0371f Expand on the VST3 implementation readme 2020-12-07 18:28:16 +01:00
Robbert van der Helm dd48523183 Implement IPluginFactory::getClassInfo 2020-12-07 18:28:16 +01:00
Robbert van der Helm e6da03ae84 Implement IPluginFactory::countClasses() 2020-12-07 18:28:16 +01:00
Robbert van der Helm 79df8fecc2 Serialize the factory info 2020-12-07 18:28:16 +01:00
Robbert van der Helm fa10600114 Add more thoughts on how the factory should work 2020-12-07 18:28:16 +01:00
Robbert van der Helm 82c1542b74 Add boilerplate for copying factory interfaces 2020-12-07 18:28:16 +01:00
Robbert van der Helm 8f152c7af5 Clean up the query interface serialization 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 a77e2fbfae Add Bitsery serialization for FUIDs 2020-12-07 18:28:16 +01:00
Robbert van der Helm d87afa99e0 Add logging for the VST3 plugin 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 c1e7f53cd0 💥 Major refactor of initialization plumbing
To account for the differences in VST2 plugins and VST3 modules we had
to wrap most of our old functions from `src/plugin/utils.h` in a new
`PluginInfo` struct that gathers all of this information while taking
into account the differences between VST2 and VST3 plugins.

With this change things are also a lot more organized. We can just query
the plugin information we need rather than having to store things
separately or having to recalculate things. This also moved the
responsibility of all the weird `WINEPREFIX` behaviour to a single place
instead of having it spread around `utils.pp`, the initialisation
message, and `host-procoess.cpp`.
2020-12-07 18:28:16 +01:00
Robbert van der Helm 0819e9fda9 Request/send config for VST3 plugins
Using the new Vst3MessageHandler.
2020-12-07 18:28:16 +01:00
Robbert van der Helm 70405e8917 Encapsulate our VST3 message handling pattern
Similarly to how how we do it in `EventHandler`.
2020-12-07 18:28:16 +01:00
Robbert van der Helm db1a51af5c Add serialization primitives for VST3 2020-12-07 18:28:16 +01:00
Robbert van der Helm e889ad22e2 Only pass Logger reference to AdHocSocketHandler
The boolean flag wasn't used, and it doesn't make any sense in the
context of VST3.
2020-12-07 18:28:16 +01:00
Robbert van der Helm 19eb33a7e2 Add a AdHocSocketHandler::receive_multi overload
With only a single callback.
2020-12-07 18:28:16 +01:00
Robbert van der Helm ab7449a0e0 Add control sockets to Vst3Sockets 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 6e5aa1c1c6 Add the Vst3Bridge boilerplate 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 e21d3e020f Rename GroupRequest to HostRequest
We'll also use this to encode information in when launching
`yabridge-host.exe` for individually hosted plugins.
2020-12-07 18:28:16 +01:00
Robbert van der Helm f9bb3822de Pass plugin type when calling the host application 2020-12-07 18:28:16 +01:00
Robbert van der Helm 1142c908df Add serialization support for PluginType 2020-12-07 18:28:16 +01:00
Robbert van der Helm 67388dc2a6 Add a plugin type tag and conversion functions 2020-12-07 18:28:16 +01:00
Robbert van der Helm 47baef3107 Rename architecture related functions and structs 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 687696ec6b Reimplement EventHandler on top of AdHocSocketHandler 2020-12-07 18:28:16 +01:00
Robbert van der Helm 5607a643e4 Add a generic ad hoc socket listener
This is a generalized version of EventHandler.
2020-12-07 18:28:16 +01:00
Robbert van der Helm 555b442f75 Add a todo regarding benchmarking ad hoc sockets 2020-12-07 18:28:16 +01:00
Robbert van der Helm fa719c286d Create base class for sockets and derive from that
Now the host launching procedure can be agnostic of the socket
implementation.
2020-12-07 18:28:16 +01:00
Robbert van der Helm bb85d99657 Rename 'Sockets' to 'Vst2Sockets' 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 28fe0ecd60 Add [[maybe_unused]] to our constexpr constants 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 4291083a46 Rename PluginBridge to Vst2PluginBridge 2020-12-07 18:28:16 +01:00
Robbert van der Helm 9d40e04a62 Update all references to libyabridge.so 2020-12-07 18:28:16 +01:00
Robbert van der Helm 84d00b568b Add a more distinct wrapper around chunk data 2020-12-07 02:43:23 +01:00
Robbert van der Helm 7f7da50282 Log processing cycles on verbosity level 2 2020-12-07 02:08:03 +01:00
Robbert van der Helm 23d5567e72 Add a time info caching compatibility option #62
This is needed to get good performance out of SWAM Cello until this
issue is fixed by the plugin.
2020-11-30 14:49:02 +01:00
Robbert van der Helm f0b4232239 Add more debug printing for audioMasterGetTime() 2020-11-23 16:38:46 +01:00
Robbert van der Helm ed5f0c42d9 Fix off-by-one error in speaker arrangement read
This is why you don't do pointer arithmetic. Fixes an error message in
Renoise when trying to load a plugin as an effect.
2020-11-14 19:37:04 +01:00
Robbert van der Helm 5486d91201 Fix style 2020-11-07 23:17:00 +01:00
Robbert van der Helm a0c0a86e2c Drop the separate effProcessEvents socket
Now that event handling is fully concurrent and thus no longer gets
blocked by the Win32 message loop.
2020-11-07 20:54:33 +01:00
Robbert van der Helm 5087b49cc4 Simplify EventHandler::receive_events 2020-11-06 17:49:16 +01:00