Commit Graph

206 Commits

Author SHA1 Message Date
Robbert van der Helm c5c1c334d9 Add group host support to the plugin
The difference between individual hosting and group hosting will have to
be encapsulated in a class to keep the rest of the plugin bridge clean.
2020-05-22 20:15:53 +02:00
Robbert van der Helm 903d977d83 Add a function for generating group host endpoints 2020-05-22 19:06:43 +02:00
Robbert van der Helm 615d23e525 Clean up new host process launching 2020-05-22 19:06:43 +02:00
Robbert van der Helm dd843519ce Rename PluginParameters to GroupReuqest 2020-05-22 19:06:43 +02:00
Robbert van der Helm 27af0f8c11 Search for the group host when using plugin groups 2020-05-22 19:06:43 +02:00
Robbert van der Helm fea256655d Move process launching to a function
Starting and connecting to plugin group host processes is not going to
work in the intializer list.
2020-05-22 19:06:43 +02:00
Robbert van der Helm 91b0ebf38b Remove mention of plugin groups flag
Since there's no reason for this to be behind a flag.
2020-05-21 17:15:24 +02:00
Robbert van der Helm 8eb01cb519 Listen on the group socket and handle requests 2020-05-20 18:45:33 +02:00
Robbert van der Helm 6d6d928838 Move all plugin group handling boilerplate 2020-05-19 15:29:48 +02:00
Robbert van der Helm daad6f2f00 Fix empty line spam in log file when Wine crashes 2020-05-19 12:27:32 +02:00
Robbert van der Helm 53acb1f78a Move wine-bridge.h -> bridges/vst2.h
This way we can structure the group handling and a potential future VST3
bridge in the same way.
2020-05-18 16:15:07 +02:00
Robbert van der Helm 994f3c9e38 Add a plugin group host application 2020-05-18 16:15:07 +02:00
Robbert van der Helm a849927a08 Move initialization message to a function
It was starting to get a bit unwieldy.
2020-05-17 14:43:21 +02:00
Robbert van der Helm d2cd608abb Print the configuration on startup 2020-05-17 14:43:21 +02:00
Robbert van der Helm 312200f100 Make the 'this_line_location' hack more reliable
It shouldn't be done if it's not needed.
2020-05-17 14:43:21 +02:00
Robbert van der Helm e76d4b474c Rearrange fields in PluginBridge 2020-05-16 14:46:48 +02:00
Robbert van der Helm a615a66cc5 Add the group configuration parser
As described in #15.
2020-05-15 16:35:18 +02:00
Robbert van der Helm f96c08775a Use Boost.Filesystem for the configuration
I'd much rather just use std::filesystem, but since all of
Boost.Process, Boost.DLL Boost.Asio uses its own filesystem library we
need to use it anyways.
2020-05-15 16:35:18 +02:00
Robbert van der Helm d9ff98de84 Move everything configuration related to plugin
If it's tied to the .so file rather than the .dll file it wouldn't make
any sense to use it directly from the Wine host.
2020-05-15 16:35:18 +02:00
Robbert van der Helm 9a82e82c87 Factor out directory finding from prefix detection
This will also be used to locate the `yabridge.tmol` configuration file.
2020-05-15 16:35:18 +02:00
Robbert van der Helm 37a74c8f98 Get rid of the dedicated AEffect socket 2020-05-13 13:15:52 +02:00
Robbert van der Helm 901d985080 Fix potential issue with plugins reporting size
I thought this was a problem for a plugin when it was not, but I can
still see this being a source of segfaults.
2020-05-11 22:54:42 +02:00
Robbert van der Helm 686ca11ba8 Work around improperly late initializing plugins
This fixes the Roland Cloud plugins.
2020-05-10 13:42:20 +02:00
Robbert van der Helm ba91971829 Simplify object reading
No longer needs to read into an existing object after the last change,
and reusing that function here too makes it less error prone.
2020-05-10 13:10:58 +02:00
Robbert van der Helm ded12379f9 Fix typo 2020-05-10 00:48:45 +02:00
Robbert van der Helm 54295f3a27 Fix shutdown cleanup issue for Ardour and Mixbus
Instead of just detaching the threads, it's much better to terminate the
Wine process and let the threads terminate themselves.

This fixes #11 on my machine.
2020-05-09 21:31:57 +02:00
Robbert van der Helm 484032202a Stop accepting sockets if Wine crashes on startup 2020-05-09 16:31:11 +02:00
Robbert van der Helm 9c19a1d01c Move plugin bridge helper functions to utils.h 2020-05-09 15:18:32 +02:00
Robbert van der Helm d173ab9123 Clean up main plugin entry point 2020-05-09 13:57:54 +02:00
Robbert van der Helm 57cb404f6b Use a Logger to print initialization errors
This way the errors will get written to a file instead of to STDERR if
`YABRIDGE_DEBUG_FILE` is set.
2020-05-09 11:15:27 +02:00
Robbert van der Helm 99ecb2803e Add logging for the input speaker configuration 2020-05-07 18:23:54 +02:00
Robbert van der Helm 868b0fd357 Finally implement eff{Set,Get}SpeakerConfiguration
As mentioned in #1. This also indirectly allows yabridge to work under
Renoise.
2020-05-07 18:23:41 +02:00
Robbert van der Helm a3aad51e41 Also add a second payload value to event responses
This will only be used for `effGetSpeakerArrangement`.
2020-05-07 17:23:22 +02:00
Robbert van der Helm ff9f151639 Work around incorrect GCC warning in debug builds 2020-05-07 17:19:34 +02:00
Robbert van der Helm cb329f5b5f Fix 192154f869
I forgot to stage the other changes.
2020-05-07 14:53:10 +02:00
Robbert van der Helm 192154f869 Print the used Wine version on startup 2020-05-07 14:42:38 +02:00
Robbert van der Helm 7b07a2bfe1 💥 Rename HostBridge to PluginBridge
As mentioned in the last commit. The original reasoning behind these
names was that the HostBridge talks to the host, and the PluginBridge
talks to the plugin, but you could also argue that the HostBridge should
be part of the Wine VST host and the PluginBridge should be part of the
VST plugin. This removes that ambiguity.
2020-05-07 13:10:03 +02:00
Robbert van der Helm 2d0998047c 💥 Rename PluginBridge to WineBridge
I had swapped these names around once before but I think going with
PluginBridge for the plugin and WineBridge for the Wine VST host is the
least ambiguous it can get.
2020-05-07 13:04:00 +02:00
Robbert van der Helm 261cf0554c Change prefix detection to be relative to the .dll 2020-05-06 19:16:19 +02:00
Robbert van der Helm f79115992b Work around issue with invalid plugin paths #2
I'm not sure what would be causing this in some cases.
2020-05-06 18:30:38 +02:00
Robbert van der Helm 905e60b9b2 Rename find_plugin_*() -> find_vst_*()
For cinsistency's sake.
2020-05-06 14:42:13 +02:00
Robbert van der Helm e40f90085c Revert accidental removal of audioMaster logging
Got removed in af060054d3.
2020-05-06 01:22:07 +02:00
Robbert van der Helm af060054d3 Implement audioMasterProcessEvents, closing #5
This allows plugins to output MIDI events.
2020-05-06 01:04:20 +02:00
Robbert van der Helm 750130e4a5 Print errors that happen early during startup 2020-05-05 23:23:37 +02:00
Robbert van der Helm ad03d870ee Allow yet another symlinking method, fixing #3
This allows symlinking to a copy of `libyabridge.so.` Now we support:

- A symlink to `libyabridge.so` with a `.dll` file in the same directory
  as that symlink.
- A symlink to `libyabridge.so` with a symlinked `.dll`.
- A copy of `libyabridge.so` with a `.dll` file in the same directory as
  that copy.
- A symlink to a copy of `libyabridge.so` with a `.dll` file in the same
  directory as that copy.
- A symlink to a copy of `libyabridge.so` with a symlinked `.dll` file.

That seems a bit overkill, but hey, more options are always better,
right?
2020-05-04 13:15:28 +02:00
Robbert van der Helm ae92e61bcc Rename find_wine_vst_host -> find_vst_hsot
This way it's a bit more coherent and it's easier to see what's going on
with this function ordering.
2020-05-04 12:52:56 +02:00
Robbert van der Helm 592b5acdf1 Fix small typos 2020-05-04 00:21:44 +02:00
Robbert van der Helm 40d607353b Clarify and update documentation 2020-05-03 13:45:46 +02:00
Robbert van der Helm 1f404511d9 Make sure docstrings are at the declarations 2020-05-02 17:46:05 +02:00
Robbert van der Helm 4d7724c5b6 Add a workaround for a bug in Ardour 5.X
Ardour will send events to the plugin before it has even finished
initializing. This has been fixed back in 2018 but Ardour has not seen a
stable release since then.

https://tracker.ardour.org/view.php?id=7668
2020-05-01 17:53:06 +02:00