Commit Graph

465 Commits

Author SHA1 Message Date
Robbert van der Helm c7f9b12ca6 Add clap_plugin msgs for everything except process 2022-09-11 19:18:03 +02:00
Robbert van der Helm c0c2a61f03 Move PrimitiveWrapper to serialization common 2022-09-11 19:18:03 +02:00
Robbert van der Helm 6865cbd937 Implement CLAP plugin initialization 2022-09-11 19:18:03 +02:00
Robbert van der Helm bc2bad3e94 Add constructors for reading extension support 2022-09-11 19:18:03 +02:00
Robbert van der Helm 7ea29cdfed Add message structs for initializing plugins 2022-09-11 19:18:03 +02:00
Robbert van der Helm d2fb84e529 Add CLAP plugin destroying
Everything else is still a stub, but at least the lifecycle now works
correctly.
2022-09-11 19:18:03 +02:00
Robbert van der Helm 423534f373 Implement Wine side for creating plugin instances 2022-09-11 19:18:03 +02:00
Robbert van der Helm e74c25445d Add messages for creating plugin instances 2022-09-11 19:18:03 +02:00
Robbert van der Helm bba5d34d41 Add a serialization struct for clap_host data 2022-09-11 19:18:03 +02:00
Robbert van der Helm 49e3f7ff1e Capitalize CLAP plugin descriptor class name
To stay consistent with the rest of the naming.
2022-09-11 19:18:03 +02:00
Robbert van der Helm d0aeeaba2a Move CLAP version clamping to a function 2022-09-11 19:18:03 +02:00
Robbert van der Helm 41b2c2ea72 Fix bridged CLAP plugin names 2022-09-11 19:18:03 +02:00
Robbert van der Helm c36590abf5 Add a basic CLAP plugin factory implementation
Which can only list plugins without creating them.
2022-09-11 19:18:03 +02:00
Robbert van der Helm 6098ebc778 Add a TODO for speeding up VST3 compilation 2022-09-11 19:18:03 +02:00
Robbert van der Helm ec8028f78c Allow serializing CLAP plugin factory list message 2022-09-11 19:18:03 +02:00
Robbert van der Helm edc0cbbe38 Add serialization for enumerating CLAP factories 2022-09-11 19:18:03 +02:00
Robbert van der Helm 653a3a88cb Add serialization for CLAP plugin descriptors 2022-09-11 19:18:03 +02:00
Robbert van der Helm 38187241d4 Add a document outlining CLAP support status 2022-09-11 19:18:03 +02:00
Robbert van der Helm 7a60cf37ea Fix typos 2022-09-11 19:18:03 +02:00
Robbert van der Helm b7b6dff922 Add minimal boilerplate for CLAP serialization 2022-09-11 19:18:03 +02:00
Robbert van der Helm 6df0741195 Prefix top level VST3 message types
CLAP will use a similar structure. Alternatively we could use
namespaces, but while that would solve clashes for the linker with the
way namespaces in C++ work it would still be ambiguous which one is
being referred to just looking at the code.
2022-09-11 19:18:03 +02:00
Robbert van der Helm 5b4dbdd890 Move get_request_variant template function
This needs to be specialized for the CLAP and VST3 request variant
types.
2022-09-11 19:18:03 +02:00
Robbert van der Helm 9edb4aa567 Move WantsConfiguration to common
We'll also need this for CLAP.
2022-09-11 19:18:03 +02:00
Robbert van der Helm 4ca7ea17b2 Change terminology from 'VST' to 'plugin' 2022-09-11 19:18:03 +02:00
Robbert van der Helm bf7280fc7e Move Vst3MessageHandler to common and make generic
CLAP will use the same strategy.
2022-09-11 19:18:03 +02:00
Robbert van der Helm 637176541d Remove old TODOs 2022-06-08 14:57:16 +02:00
Robbert van der Helm d9de22ddbd Add support for VST2 effBeginLoad{Bank,Program}
A user reported that REAPER was using these on the REAPER forum, but I
have not been able to reproduce that. And they went MIA after posting
about it. But hopefully this helps.
2022-06-08 14:27:04 +02:00
Robbert van der Helm 65cf9cd782 Increase VST2 buffer and MIDI serialization limits
This really, really shouldn't be needed, but some plugins do weird
things.
2022-05-26 12:57:18 +02:00
Robbert van der Helm 39605ef465 Increase MIDI event count limits for VST2
This really shouldn't be needed, but apparently there are plugins that
output more than 2048 events per buffer.

https://github.com/robbert-vdh/yabridge/issues/35#issuecomment-1138176117
2022-05-26 12:56:35 +02:00
Robbert van der Helm 03c2acd578 Add a todo on the VST 3.7.5 moduleinfo format
Supporting this in yabridge would require parsing JSON. So unless this
feature is actually used, we should probably not bother.
2022-05-19 22:31:16 +02:00
Robbert van der Helm 162aeed661 Only set up VST3 SHM audio buffers in setActive()
This avoids doing the duplicate check (since both `setProcessing()` and
`setActive()` would be called), and this also gets rid of the assumption
added a couple commits ago that `setupProcessing()` is only ever called
once, which is not true.
2022-05-19 14:43:59 +02:00
Robbert van der Helm 8c10edf861 Add explicit virtual default destructors
We need to silence the warning about this because Steinberg doesn't
declare their base class destructors as virtual (because of Windows ABI
compatibility issues). But we can still do it inside of yabridge to have
at least a bit more safety.
2022-05-18 18:44:15 +02:00
Robbert van der Helm dedcdefebf Allow resizing shared memory buffers in setActive
REAPER apparently changes bus arrangements between
`IAudioProcessor::setupProcessing()` and `IAudioProcessor::setActive()`.
2022-05-18 18:16:14 +02:00
Robbert van der Helm 1fec4c8860 Change the description in the GPL header 2022-04-16 20:37:10 +02:00
Robbert van der Helm b2a15620f3 Swap Boost.Container's small_vector out for LLVM's
This implementation misses a shrink to fit function, but reassigning the
vector with a fresh one should be equivalent.
2022-04-16 20:37:10 +02:00
Robbert van der Helm 4c4421d3e3 Don't requery the VST3 param change queues length
Since this shouldn't be able to change. Should speed up parameter
handling when many parameters are being automated.
2022-03-09 17:43:25 +01:00
Robbert van der Helm c625deadef Proxy host context menu items for VST3 plugins
This wasn't implemented yet because no plugin tried using the interface
in this way before this, but Surge XT incorporates the host's context
menu items into their own (much more elaborate) context menu. To
accommodate this, we now copy over all of the host's prepopulated
context menu items to the Wine plugin host, and calling the targets
associated with any of those items will cause the target on the
associated context menu item on the host to be called.

This is slightly more complicated than what would otherwise be necessary
because Bitwig does not assign tags to their context menu items and
instead always uses 0.
2022-01-03 17:04:00 +01:00
Robbert van der Helm 0e3aba1870 Move the VST3 context menu target implementation
So it can also be used on the Wine side in a bit.
2022-01-03 14:12:25 +01:00
Robbert van der Helm 0b9a16cf40 Change the naming scheme for class field members
I'm not a fan of Hungarian notation, but C++ kind of needs it with its
implicit `this`. And of all the common options for this, I find
suffixing members with an underscore the least offensive one.
2022-01-01 21:07:17 +01:00
Robbert van der Helm e0ab24e645 Update copyright headers
Happy new year!
2022-01-01 18:32:10 +01:00
Robbert van der Helm 0c9c4686f1 Use the small buffer optimization for VST3 SysEx
We apparently didn't do that yet. SysEx should be super rare (outside of
octave switching on Arturia keyboards), but there's still no reason not
to do it.
2021-09-23 14:29:12 +02:00
Robbert van der Helm e6f0fe16d8 Target VST3 SDK version 3.7.3 2021-08-10 17:14:48 +02:00
Robbert van der Helm 9160de6483 Implement VST2 SysEx events
Apparently these _are_ actually used. Sometimes.
2021-08-04 21:40:09 +02:00
Robbert van der Helm 0c816b0046 Only ignore -Wmaybe-uninitialized on GCC
An ifdef sounds like a better approach than ignoring two additional
warnings.
2021-07-14 17:18:44 +02:00
Robbert van der Helm f292158889 Silence some more clangd warnings 2021-07-14 17:11:27 +02:00
Robbert van der Helm 5fc7acccd1 Show a notification on version mismatch
Between the plugin and the Wine plugin host application.
2021-07-13 22:14:31 +02:00
Robbert van der Helm a58a1ab111 Update parameter name in header
Apparently this wasn't saved yet when I commited
a06d0bc515.
2021-07-05 18:29:04 +02:00
Robbert van der Helm a06d0bc515 Actually update the supported interface status
With this Waves VST3 plugins now work. But was it worth it?
2021-07-05 16:48:24 +02:00
Robbert van der Helm 4e4bbe1ba4 Replace const-rvalue with rvalue
Since const-rvalue doesn't make any sense.
2021-07-05 16:39:11 +02:00
Robbert van der Helm 1397400155 Reload supported interfaces after IPluginBase::initialize()
This is needed as a workaround to support Waves VST3 plugins.

Right now does does not actually fix the issue because the arguments are
not updated in the subclasses. The next commit will fix this.
2021-07-05 16:08:01 +02:00