Commit Graph

82 Commits

Author SHA1 Message Date
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 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
Robbert van der Helm f2597ca0b9 Prevent race conditions from simultaneous dispatch calls 2020-03-14 18:11:35 +01:00
Robbert van der Helm 5f584323c2 Monkey patch async pipes foor Boost 1.72
This is an simple workaround and it's much more practical than having to
downgrade Boost since that breaks any application that links to it.
2020-03-14 16:49:38 +01:00
Robbert van der Helm bb6ffe4891 Fix crashes on startup in Bitwig's bridge 2020-03-12 23:17:14 +01:00
Robbert van der Helm a14d915ee7 Better describe Wine process shutdown 2020-03-12 21:22:37 +01:00
Robbert van der Helm 28b3800fb4 Force-stop the io_context manually
Apparently this will cause the io_context to just abandon all of its
work and not throw any exceptions.
2020-03-11 21:48:53 +01:00
Robbert van der Helm 05de100d3e Disable GUI related events 2020-03-11 17:27:34 +01:00
Robbert van der Helm 1ee0ffef8b Wrap event result data in an std::variant
Gets a bit more complicated this way, but this avoids having to use
string to manually serialize and deserialize arbitrary objects.

The new options for `AEffect` and `VstTimeInfo` structs are not yet
used.
2020-03-11 15:52:56 +01:00