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