Robbert van der Helm
2f39650322
Remove last traces of Boost.Filesystem from host
...
Missed this in e728dbe5a2 .
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
95e716d229
Rename vst-host.cpp -> individual-host.cpp
2020-05-17 14:43:21 +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
0900dc9e18
Work around race condition in certain plugins
...
Some plugins would either crash or freeze on the next Win32 message loop
when `effEditGetRect` gets called before `effEditOpen` and we run the
message loop between these two event calls.
Fixes the issue with Superior Drummer 3 in Bitwig mentioned in #12 and a
similar issue with the Roland Cloud synths.
2020-05-12 13:17:24 +02:00
Robbert van der Helm
4351b03e18
Mention that WantsVstRect can return nothing
2020-05-12 13:14:10 +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
33e5d2bd56
Add a workaround for compilation with Wine 5.7+
2020-05-11 18:11:44 +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
e762a57c0d
Move AEffect updating to a function
2020-05-10 13:03:41 +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
92f0d95357
Rename EventResponsePayload to be clearer
2020-05-07 17:23:22 +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
044b7fa9a2
Add a second payload value to events
...
This is for data passed through the `value` `intptr_t` parameter. The
only two events that use this are `effSetSpeakerArrangement` and
`effGetSpeakerArrangement`. Since this is such a rare occurrence we'll
leave the regular `value` field as it is.
2020-05-07 17:19:34 +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
3202239a93
Add speaker arrangement to event payload types
2020-05-07 16:47:30 +02:00
Robbert van der Helm
384805ac41
Add serialization for speaker arrangements
2020-05-07 16:47:30 +02:00
Robbert van der Helm
ee5a4e6b50
Move the serialization function for VST events
2020-05-07 16:47:30 +02:00
Robbert van der Helm
a82c3ac08c
Add a dynamic wrapper for VstSpeakerArrangement
...
Similar to `DynamicVstEvents`, so we can serialize the object to binary
data transfer it over our sockets.
2020-05-07 16:45:04 +02:00
Robbert van der Helm
0822e49c59
Add opcodes and structs for speaker arrangements
2020-05-07 15:53:43 +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
dd684c26e1
Increase the maximum number of audio channels
...
This fixes #10 , as Scaler was reporting 64 inputs.
2020-05-06 23:47:05 +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
e4cfc8f43b
Fix typo in .dll loading error message
2020-05-06 01:39:14 +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
e71fd433f9
Clarify LoadLibrary() related startup error
...
The old message sounds too much like something that would come from
Linux's dynamic linker.
2020-05-06 00:06:46 +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