Commit Graph

256 Commits

Author SHA1 Message Date
Robbert van der Helm 1deb4cf664 Send the VST2 transport info along with processing
And cache it during the processing cycle. This greatly reduces the
overhead of bridging VST2 plugins.
2021-04-29 00:32:25 +02:00
Robbert van der Helm 676f995f83 Remove the changelog entry for force_ftz
Since this behaviour is now always enabled.
2021-04-28 15:36:14 +02:00
Robbert van der Helm 216c6bc4f2 Always provide at least some speaker arrangement
This works around a bug in the VST3 version of W. A. Production
Imperfect as mentioned in #97. Even if it's a synth and numInputs is 0,
the plugin will still try to read the input arrangement.
2021-04-28 13:35:15 +02:00
Robbert van der Helm 93f089eca7 Always set FTZ instead of gating it behind a flag
After a quick round of testing it seems like REAPER doesn't always
enable this on the audio thread, but Bitwig, Ardour, Carla and Renoise
do. So it should be safe to just get rid of the option and to leave this
enabled all the time.
2021-04-28 12:07:14 +02:00
Robbert van der Helm 2be41da9b6 Add compatibility option to force flushing to zero
This prevents Kush Audio REDDI from taking down the DAW when the host
passes it denormalized audio to process. I've discovered that the issue
with this plugin had to do with denormals in the issue linked below, but
I didn't realize that we can just enable the FTZ flag for plugins that
don't already do so.

https://github.com/osxmidi/LinVst/issues/174
2021-04-27 23:33:50 +02:00
Robbert van der Helm 3a73fb9689 Allow hiding the DAW name for VST2 plugins
This can be useful when plugins have (broken) host-specific behaviour
that you want to avoid. I'll later add a list of host/plugin
combinations where this may be useful to the readme.
2021-04-27 18:41:36 +02:00
Robbert van der Helm b52362e698 Fix time info cache being applied to other opcodes
I don't know how I've never noticed this, but we should of course only
be handling `audioMasterGetTime()` this way. This also explains why
enabling this permanently in the past broke some plugins.
2021-04-27 17:32:32 +02:00
Robbert van der Helm 0d1d368e4f Fix spelling in the changelog 2021-04-26 23:41:26 +02:00
Robbert van der Helm dfc9ad5d64 Add changelog entry for the version detection fix
For the WINELOADER version detection fix from #95.
2021-04-26 19:29:15 +02:00
Robbert van der Helm 0c7dbe8a4a Reparent to the root window before deferring close
We did this before implementing the deferred close in yabridge 3.0.0. It
didn't seem necessary anymore so we got rid of it, but without this
closing an iZotope Rx plugin's editor in Renoise was guaranteed to
trigger an X11 error and crash Renoise. Doing this reparent doesn't seem
to cause any slowdown but it does at least fix the specific combination
of iZotope Rx and Renoise.
2021-04-26 18:47:58 +02:00
Robbert van der Helm 3e71fc19b8 Explicitly handle VST2 callbacks with nullptrs
This is probably not needed, but we'll do it just in case another plugin
does something similar.
2021-04-25 22:44:15 +02:00
Robbert van der Helm 86bd19cd80 Fix loading plugins expecting COM to be available
The `LoadLibrary()` call for PSPaudioware InfiniStrip would fail because
the plugin would always expect COM to be initialized. Now if loading a
VST2 or VST3 module fails, we'll initialize COM and try again before
throwing an error. This may fix #94.
2021-04-25 21:54:34 +02:00
Robbert van der Helm 671c6a4c18 Specifically not read data for audioMasterWantMidi
Plugsound Free by UVI will pass random garbage to the data parameter for
this function call for whatever reason, and we'll run into a memory
error if we try to read it. Mentioned in #93.
2021-04-24 20:28:58 +02:00
Robbert van der Helm afefb725b5 Postpone clearing old MIDI events until next event
This fixes Native Instrument's FM7 crashing on MIDI input. The plugin
expects the last received MIDI event to always be alive during audio
processing, even if there have not been any new events in this
processing cycle.
2021-04-23 01:08:21 +02:00
Robbert van der Helm dd552dc8d7 Print the Wine version at Meson configure time 2021-04-18 14:06:33 +02:00
Robbert van der Helm ba6b87c790 Bump to version 3.1.0 2021-04-15 12:38:11 +02:00
Robbert van der Helm aa00779752 Fix wording in changelog 2021-04-15 12:14:54 +02:00
Robbert van der Helm d97e699db1 Run effSetChunk and effGetChunk from main thread 2021-04-14 21:38:15 +02:00
Robbert van der Helm 6ba2fbe98d [yabridgectl] Mention blacklist in the changelog 2021-04-14 19:30:49 +02:00
Robbert van der Helm a297866d45 Add way to use 32-bit VST3 when both are installed
Otherwise we would always use the 64-bit version and there would be no
way to use the 32-bit version, if version for some reason works better.

Relates to #80.
2021-04-13 19:28:36 +02:00
Robbert van der Helm b1eaaa0638 Fix ABI compatibility with 32-bit VST3 plugins #80
This would cause 32-bit VST3 plugins to crash in mysterious ways. What
ended up being the issue is that the plugins expected doubles to be
8-byte aligned in structs, while GCC doesn't do that by default in x86
code for legacy ABI compatibility reasons. Figuring out what exactly was
the issue took months, but luckily the fix was to just add an
`-malign-double`!
2021-04-12 22:35:09 +02:00
Robbert van der Helm da5c9c2965 Update wording in changelog 2021-04-12 22:01:44 +02:00
Robbert van der Helm 42096c6f60 Add a workaround for Bluecat Audio VST3 plugins
These plugins don't expose `IPluginBase` through the query interface, so
we have to do this nasty coercion instead.
2021-04-12 14:45:12 +02:00
Robbert van der Helm 3ae4bf56cd Fix memory error in remove_audio_processor()
We would close the socket, but the `receive_multi()` call would finish
after the object had already been deallocated using `erase()`. Somehow
this never caused any issues though.
2021-04-07 17:24:00 +02:00
Robbert van der Helm 86b9ad5c8a Fix spelling in changelog 2021-04-07 17:23:35 +02:00
Robbert van der Helm 05f739d9db Update to version 3.7.2 of the VST3 SDK 2021-04-03 18:02:23 +02:00
Robbert van der Helm b036230067 Work around a regression in Wine 6.5
Killing a Wine process no longer terminates its threads, see the
changelog entry and NOTE for more information.
2021-03-27 17:41:15 +01:00
Robbert van der Helm 36d93d05ca [yabridgectl] Fix spelling in help text 2021-03-25 20:38:02 +01:00
Robbert van der Helm 9e5c49007a Fix the dates in the changelog 2021-03-25 15:29:28 +01:00
Robbert van der Helm 36e64d89dc Use dependency() with subproject fallback for deps
None of these libraries are packaged anywhere right now since they do
not have Meson build definitions, but in case they ever do it should be
possible to use them from a system package manager.
2021-03-12 14:50:42 +01:00
Robbert van der Helm 0660776d61 Use a tag for the VST3 SDK wrap 2021-03-12 14:34:41 +01:00
Robbert van der Helm 0d7b9bd178 Bump to version 3.0.2 2021-03-07 16:08:54 +01:00
Robbert van der Helm a25adb3692 Change wording in the changelog 2021-03-07 16:08:04 +01:00
Robbert van der Helm 54c44e5256 Fix bus index not being serialized in GetBusInfo
This is embarrassing. Because the bus index was not being serialized,
all lookups were done for the bus with index 0. This meant that
sidechaining in Renoise didn't work because Renoise only allows
sidechaining to `kAux` busses and the first bus is always marked as
`kMain`. This would also cause Ardour to crash or freeze more often then
it should because while it does not support arbitrary bus I/O
configurations, it does support plugins with both a `kMain` and a `kAux`
input bus but since we would never get `kAux` busses Ardour just didn't
pass any buffers for the sidechain input.
2021-03-07 15:46:52 +01:00
Robbert van der Helm d91c8eeb07 Bump to version 3.0.1 2021-02-26 16:21:16 +01:00
Robbert van der Helm 7f2c7f653e Change wording in the changelog 2021-02-26 16:16:58 +01:00
Robbert van der Helm ebd6c95ceb [yabridgectl] Show VST3 module type and arch
In `yabridgectl status`.
2021-02-26 15:11:11 +01:00
Robbert van der Helm e6ec8819cb [yabridgectl] Use relative paths in verbose output
This should make the output look much less cluttered since most of the
output would consist of the same path prefix being repeated over and
over again.

The plugin location now also always ends with a trailing slash for
consistency's sake. I don't think Rust's Path has a way to normalize the
paths without also resolving symlinks.
2021-02-26 14:35:47 +01:00
Robbert van der Helm 9483c11ee0 [yabridgectl] Reword not yet installed status
The red `not installed` was causing some confusion.
2021-02-26 14:11:46 +01:00
Robbert van der Helm 2cf5f2dfb9 Fix missing timestamps since yabridge 3.0.0 2021-02-24 21:07:01 +01:00
Robbert van der Helm 7f0d6c80ab Reword changelog 2021-02-15 21:24:29 +01:00
Robbert van der Helm dc7c988623 Fix segfault in REAPER due to new vendor extension
This `effVendorSpecific` call would pass a non-zero non-pointer value to
the pointer argument, which would then of course result in segfaults.
2021-02-15 21:15:22 +01:00
Robbert van der Helm c29bc59059 Hack around a regression in Wine 6.2
This would otherwise prevent building with Wine 6.2.
2021-02-15 12:13:42 +01:00
Robbert van der Helm 8c2594f902 Bump to version 3.0.0 2021-02-14 14:36:01 +01:00
Robbert van der Helm 16b00bacde Update screenshot with VST3-only plugins
Since, well, we can handle VST3 plugins now! This also subtly shows off
the ability for VST3 plugins to use context data such as the track's
name.
2021-02-14 14:33:09 +01:00
Robbert van der Helm db6bab03f6 Remove mentions of VST3 support being experimental 2021-02-14 14:08:52 +01:00
Robbert van der Helm f07503b9b6 Print the matched config file section
To make it more obvious where settings are being set from.
2021-02-14 13:50:53 +01:00
Robbert van der Helm 546882a281 Bundle yabridgectl with yabridge in next release
Setting up VST3 plugins without yabridgectl is a lot of work and quite
error prone, so it seems like a good idea to now modify the CI build
artifacts to merge the yabridgectl binary in with the regular archives.

Those also resolves #67.
2021-02-14 13:20:54 +01:00
Robbert van der Helm 1090b8a6c0 Rewrite parts of the changelog 2021-02-14 12:06:26 +01:00
Robbert van der Helm 4f33d2b30b Mention VST3 compatibility list in the changelog 2021-02-14 11:32:13 +01:00