Commit Graph

565 Commits

Author SHA1 Message Date
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
Robbert van der Helm ed8e3ba114 Refactor event receiving to optimize MIDI handlign
This keeps compatibility with some weirdly designed plugins (such as
Kontakt) while avoiding some unnecessary data transformations. Before
this we'd convert from a `DynamicVstEvents` object to a `VstEvents`
object, back to a `DynamicVstEvents` and then finally back into another
`VstEvents` object. With this change we can skip the second half of the
conversions.
2020-05-01 14:06:06 +02:00
Robbert van der Helm 6c496da455 Clean up after reverting buffer handling change
This is what you get from not taking any breaks.
2020-04-30 22:45:22 +02:00
Robbert van der Helm 6266072641 Explicitly list opcodes that should return strings
The automatic detection works fine in every case I've tested other than
Fabfilter plugins, but this is probably for the best.
2020-04-30 20:55:49 +02:00
Robbert van der Helm efe5017788 Clarify comments in the PE architecture detection 2020-04-30 19:09:31 +02:00
Robbert van der Helm 2701907614 Improve the 'invalid architecture' error message
Not that I'm expecting to ever see this error message.
2020-04-30 19:07:26 +02:00
Robbert van der Helm 67c3e151d8 Choose a host application by parsing PE headers
Now yabridge can load both 64 and 32 bit plugins without having to
specify which are which.
2020-04-30 18:45:33 +02:00
Robbert van der Helm c051123796 Improve the look of the enabled features list 2020-04-30 16:44:26 +02:00
Robbert van der Helm 5958f8058a Print out a list of enabled compile time features 2020-04-30 13:40:55 +02:00
Robbert van der Helm 6ca7eae16a Mention 32-bit support in the readme 2020-04-30 12:48:03 +02:00
Robbert van der Helm c9060e984d Add another flag for enabling a bit bridge build 2020-04-29 16:55:47 +02:00
Robbert van der Helm 7ce42e4306 Add support for effGetMidiKeyName
Not a lot of plugins use it, but it's really nice to have when they do.
2020-04-28 12:54:36 +02:00
Robbert van der Helm 13dcb2f74a Fix handling of large chunk data 2020-04-27 16:41:55 +02:00
Robbert van der Helm 527db1f49f Use different types for strings and binary data 2020-04-27 00:51:36 +02:00
Robbert van der Helm bdd83de7a9 Strip the 'yabridge-' prefix from log messages 2020-04-27 00:50:28 +02:00
Robbert van der Helm af6ae2c2ad Fix capitalization of the word MIDI 2020-04-26 18:19:10 +02:00
Robbert van der Helm aeac8e87fa Implement effGetParameterProperties 2020-04-26 16:53:34 +02:00
Robbert van der Helm aee890fbf6 Remove the now unused ability to skip opcodes
If this is needed again in the future (it shouldn't be), then it should
be re-implemented using a separate function.
2020-04-26 16:30:11 +02:00
Robbert van der Helm 8bb1bdeadb Change the default return value for effClose 2020-04-25 17:02:41 +02:00
Robbert van der Helm 631e82f2ad Print the version and any VCS info at startup 2020-04-25 16:14:22 +02:00
Robbert van der Helm 259d23ec57 Add support for legacy plugins with only process()
By emulating the behavior of `processReplacing()`. Not that there should
still be any plugins around that don't support processReplacing.
2020-04-22 16:57:18 +02:00
Robbert van der Helm f29a859713 Don't put socket endpoints in a directory
This would only leave an empty directory behind.
2020-04-19 17:05:50 +02:00
Robbert van der Helm ed3b319f4f Clean up socket endpoint files 2020-04-19 17:00:17 +02:00
Robbert van der Helm 1f56617abe Remove more old todos 2020-04-19 16:17:18 +02:00
Robbert van der Helm b13d7d554d Prevent rare race conditions with get/setParameter
I've never seen it happen, but in theory they could be called
simultaneously.
2020-04-19 16:14:22 +02:00
Robbert van der Helm 717ffb719d Remove resolved todo 2020-04-19 16:05:37 +02:00
Robbert van der Helm 319e9b2b12 Get rid of the main() fallback entry point 2020-04-16 13:23:36 +02:00
Robbert van der Helm 36350c34de Fix casing of the legacy VST entry point name 2020-04-16 01:25:38 +02:00
Robbert van der Helm 4d7ce8f3fb Allow overriding the wine prefix manually 2020-04-14 19:16:46 +02:00
Robbert van der Helm d52989acc5 Allow midi events to be handled during interaction 2020-03-28 17:00:12 +01:00
Robbert van der Helm cc52c87f34 Properly handle effGet{Input,Output}Properties
Apparently the plugin needs the actual contents of the struct for this
to work.
2020-03-26 16:24:49 +01:00
Robbert van der Helm 0d7a5f10cd Change style of break statements with a block 2020-03-26 15:59:39 +01:00
Robbert van der Helm f1f7523248 Make the GUI embedding work
There's still a few things that need fixing.
2020-03-19 17:29:30 +01:00
Robbert van der Helm eebfceff56 Implement the rest of the GUI events
The GUI is still not updating though.
2020-03-19 00:58:03 +01:00
Robbert van der Helm 1c17513936 Move all window handling to the Wine host side 2020-03-17 21:31:19 +01:00
Robbert van der Helm d0a86887d3 Explicitely handle editor opening failures 2020-03-17 20:54:49 +01:00
Robbert van der Helm e7e1b26455 Add the base for GUI handling
Still need to embed the opened window into the window provided by the
host.
2020-03-17 01:51:02 +01:00
Robbert van der Helm 44a953c2d2 Change argument order for event handling functions 2020-03-17 00:53:09 +01:00
Robbert van der Helm a01319e507 Allow plugins to crash during shutdown
Sounds weird, but there are a small number of plugins that crash during
shutdown because they call functions not yet supported by Wine. Since
the host will have already saved all state before calling `effClose`
this should not cause any problems.
2020-03-16 14:14:55 +01:00
Robbert van der Helm 7172a42c67 Prevent data races in host callbacks 2020-03-16 13:58:49 +01:00
Robbert van der Helm 10c517401c Stop flood of empty lines on plugin crash 2020-03-15 17:26:01 +01:00
Robbert van der Helm 138fa9eb31 Add winedbg support behind a feature flag
I had something similar saved as a stash since I did not want to make
things more complicated by adding feature flags, but this should be
fine.
2020-03-15 16:30:25 +01:00