Commit Graph

693 Commits

Author SHA1 Message Date
Robbert van der Helm bacda47671 Add stubs for a CLAP plugin proxy 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 bdf0c10605 Add explicit move when creating factory 2022-09-11 19:18:03 +02:00
Robbert van der Helm 6137fe32ce Load the CLAP plugin factory
Creating the plugin still fails.
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 15efbd462f Fix alignment in version out of sync warning 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 8ec2996187 Send configuration to the CLAP plugin host 2022-09-11 19:18:03 +02:00
Robbert van der Helm dd0ef70d3e Add CLAP module detection 2022-09-11 19:18:03 +02:00
Robbert van der Helm 707092086e Interact with CLAP bridge in libyabridge-clap.so 2022-09-11 19:18:03 +02:00
Robbert van der Helm fcb2c85935 Add boilerplate for a CLAP plugin bridge 2022-09-11 19:18:03 +02:00
Robbert van der Helm 54c506c703 Rename VST3 log_init_exception for consistency 2022-09-11 19:18:03 +02:00
Robbert van der Helm 6be5fbbcf4 Mention the CLAP feature in the init message 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 98bb4a019b Add CLAP whenever mentioning yabridge libs 2022-09-11 19:18:03 +02:00
Robbert van der Helm a172b0ad06 Add minimal boilerplate for a CLAP plugin 2022-09-11 19:18:03 +02:00
Robbert van der Helm 5e95c3b4e0 Make the VST3 bundle detection more specific
In yabridge itself.
2022-06-13 00:06:56 +02:00
Robbert van der Helm 818eeb2137 Remove unused include 2022-06-08 14:45:38 +02:00
Robbert van der Helm c598ca08e1 Update notifications for yabridge 4.0 2022-06-08 14:45:31 +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 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 6efc69071e Fix building with -Dvst3=false #180 2022-05-14 13:19:20 +02:00
Robbert van der Helm 3970bc7f52 [yabridgectl] Set up in ~/.vst/yabridge by default
Instead of creating `.so` files next to the VST2 plugin's `.dll` files.
This behavior is still available as an option. #123
2022-04-17 20:27:47 +02:00
Robbert van der Helm b3efcf4e06 Merge yabridge-group.exe and yabridge-host.exe
They were 95% the same, so this makes a lot more sense this way. When
group host processes were introduced yabridge only did VST2 bridging,
but we already have a plugin type argument anyways so might as well
reuse that for group hosts.
2022-04-16 23:26:24 +02:00
Robbert van der Helm 4d9e865dd3 Define plugin and chainloader deps in own dir
Just like we already did for the plugin host.
2022-04-16 23:00:25 +02:00
Robbert van der Helm 470f4dfaaa Remove the with- prefix from the build options 2022-04-16 21:13:46 +02:00
Robbert van der Helm 773b101cd4 Update error messages for chainloading changes 2022-04-16 20:37:11 +02:00
Robbert van der Helm 6f16eb5c76 Print library path in the initialization message
This is useful when chainloading, since it now tells you where eactly
it's loading the library from.
2022-04-16 20:37:11 +02:00
Robbert van der Helm d73a0041eb Find the correct library file from the chainloader
Instead of using this hardcdoed path.
2022-04-16 20:37:11 +02:00
Robbert van der Helm 3cad93cb65 Move get_augmented_search_path to process library
We'll need this for the chainloader.
2022-04-16 20:37:11 +02:00
Robbert van der Helm 0487947d91 Export chainloader functions in the plugin libs
These can be called from the new chainlaoder libraries to use yabridge
without needing copies of the full fat `libyabridge-{vst2,vst3}.so`
libraries.
2022-04-16 20:37:11 +02:00
Robbert van der Helm 0ba0dab675 Add missing extern "C" to GetPluginFactory 2022-04-16 20:37:11 +02:00
Robbert van der Helm 46af07748b Move desktop notifications to its own header
We'll need to use this from the chainloader.
2022-04-16 20:37:10 +02:00
Robbert van der Helm fde90d7bc3 Pass plugin path around instead of redetecting
This is now set only once at the top level. This is needed for the
chainloading to work because we'll need to set the path when we create
the bridge.
2022-04-16 20:37:10 +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 7b3afa4043 Replace Boost.Dll with our own function
Now we no longer rely on anything from Boost. Later we'll move the path
detection to the very beginning of the plugin bridge initialization so
it can be set from the coming chainloader libraries.
2022-04-16 20:37:10 +02:00
Robbert van der Helm b2ffbb8b4d Also consider empty dirs for find_dominating_file
Just in case.
2022-04-16 20:37:10 +02:00
Robbert van der Helm c2de0cce2e Use our own export macro 2022-04-16 20:37:10 +02:00
Robbert van der Helm 4e99afd53d Add a note on case sensitive extension matching 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 037d6ad5aa Replace Boost.Process for the Wine plugin host
Now we use our own library for this, so we can drop the Boost.Filesystem
dependency after a couple more changes.
2022-04-16 20:37:10 +02:00
Robbert van der Helm 1641fb2996 Fix find_dominating_file() for ghc::filesystem
"/".parent() now is "/" instead of "" (which does make more sense)
2022-04-14 23:42:12 +02:00
Robbert van der Helm a324042695 Use custom process library for notifications
Instead of using Boost.Process here. Last usage of Boost.Process is for
launching the child process.
2022-04-14 23:42:12 +02:00
Robbert van der Helm 006cc6f52a Read the Wine version without Boost.Process
By spawning the process using posix_spawn and manually reading from a
pipe.
2022-04-14 23:42:12 +02:00
Robbert van der Helm 0d6738093c Add a Boost.Process-like environment builder
We can use this with the `exec*e()` family of functions.
2022-04-14 23:42:12 +02:00
Robbert van der Helm 556b0e38f9 Replace Boost.Asio with standalone Asio library
We had to add an even hackier hack now to get Boost.Process to
interoperate with Asio's IO contexts. This will be replaced later when
we replace Boost.Process.
2022-04-14 23:42:12 +02:00
Robbert van der Helm d2d4cf4ea9 Replace most uses of Boost.{Filesystem,Process}
With the `ghc::filesystem` dependency from the previous commit. If we
can replace the rest of the Boost.Filesystem dependency then we can get
rid the one nasty runtime dependency we have, and it will make
implementing the chainloading simpler since can reuse more code without
bringing in Boost.
2022-04-14 23:42:12 +02:00