Commit Graph

1191 Commits

Author SHA1 Message Date
Robbert van der Helm 73d9f5f9b8 Remove unnecessary include 2021-04-27 20:46:08 +02:00
Robbert van der Helm ab56115c87 Add Bitwig+Chromaphone 3 as a hide_daw candidate
Under Bitwig, the plugin will crash when trying to enter text unless you
hide the DAW the plugin is being hosted under.
2021-04-27 18:57:09 +02:00
Robbert van der Helm ee50044062 Also allow hiding the host for VST3 plugins 2021-04-27 18:50:47 +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 38abdbee50 Rearrange the configuration options 2021-04-27 17:54:46 +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 5a68b8b39d Flush the reparent from 0c7dbe8
This should add a root reparent to prevent that X11 error, but it should
still prevent flickering by doing it just before closing the window.
2021-04-27 03:43:45 +02:00
Robbert van der Helm 93df3fa1da Fix mismatching types in 2aadf52 #95
`wine_path` was a string, and `boost::process::search_path()` returns an
`boost::filesystem::path`. We should just be using paths here anyways.
2021-04-26 19:25:28 +02:00
Kira Bruneau 2aadf5256b Fix printing wine version with custom WINELOADER
- Don't call bp::search_path when using WINELOADER. It will return an
  empty string for an absolute path.

- To match the behaviour of the exe wrapper scripts, only print the
  wine version from WINELOADER if the path is executable.
2021-04-26 19:20:10 +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 0d53f03b28 Get rid of an incorrect comment
This probably ended up here during a refactor.
2021-04-26 18:32:50 +02:00
Robbert van der Helm f6cf1a7dd2 Use explicit narrowing for SetWindowLongPtr() 2021-04-26 18:32:50 +02:00
Robbert van der Helm a42ee0400f Print warning explicit COM init was necessary
So far only PSPaudioware InfiniStrip needed this. but it may be a good
idea to make this visible since it's probably an issue with the
plugin (even if most Windows hosts will have COM initialized).
2021-04-26 00:42:17 +02:00
Robbert van der Helm 68c846324c Also explicitly list simple dispatcher opcodes 2021-04-25 23:07:24 +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 d55f07e962 Fix a small typo 2021-04-25 21:46:55 +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 0d1cb0bd77 Move special effVendorSpecific handling for REAPER
It's a bit less hacky if we do the effVendorSpecific check where we're
supposed to be checking for those things.
2021-04-24 20:23:23 +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 b04c0b2c65 Update links to the VST3 documentation
Those were broken after Steinberg restructured the docs with the VST
3.7.2 SDK release.
2021-04-18 14:24:03 +02:00
Robbert van der Helm 80f649323a Add missing const qualification
I just noticed this while looking at the diff of this commit.
2021-04-16 14:12:48 +02:00
Robbert van der Helm e0094979bf Also run {get,set}State() for VST3 on GUI thread
This fixes the same issue with the VST3 version of Algonaut Atlas as the
last commit did for the VST2 version.
2021-04-14 21:38:15 +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 6746b2b924 Add missing <optional> include for GCC 11 2021-04-14 17:09:43 +02:00
Robbert van der Helm 4937010557 Fix some of the clang-tidy lints 2021-04-14 16:09:54 +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 f177b69aae Re-enable loading 32-bit VST3 plugins #80 2021-04-12 22:38:36 +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 5278c2e2ea Print all errors on the Wine side to STDERR
This one was using STDOUT for some reason
2021-04-12 14:19:31 +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 653dcc6843 Fix linking with unity builds and VST3 SDK 3.7.2 2021-04-03 18:54:33 +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 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 2cf5f2dfb9 Fix missing timestamps since yabridge 3.0.0 2021-02-24 21:07:01 +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 39da1b1e1c Add missing whitespace in VST2 debug logs 2021-02-15 20:51:45 +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 260aba393c Fix alignment in initialization message 2021-02-14 13:50:55 +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 9f756b4881 Rewrite architecture document ToC 2021-02-14 00:54:29 +01:00
Robbert van der Helm c9fbd0627f Rewrite the architecture document for VST3 support
This now also goes more in depth on the more interesting parts of
yabridge's implementation while skimming over lesser useful technical
bits.
2021-02-14 00:48:15 +01:00
Robbert van der Helm 78a28a679b Prevent nuking socket base dir if not temporary
If `yabridge-host.exe` were somehow to be run with a socket base
directory that's not inside of `$XDG_RUNTIME_DIR`/`/tmp`, then we'll now
warn instead of removing that directory. This should not be necessary,
but in case someone wants to write a wrapper around
`yabridge-host.exe.so` us using a custom `$WINELOADER` then this could
save a lot of headaches.
2021-02-13 18:09:36 +01:00
Robbert van der Helm 2ea3f52632 Fix double timestamps in Wine STDERR logger 2021-02-13 17:42:30 +01:00
Robbert van der Helm 0ef15fc911 Add human readable name for effGetTailSize opcode 2021-02-13 17:34:51 +01:00
Robbert van der Helm e57c642cfe Also log IBStream metadata keys 2021-02-13 17:29:35 +01:00
Robbert van der Helm 907925d660 Log process context contents in IInfoListener::setChannelContextInfos 2021-02-13 16:40:24 +01:00
Robbert van der Helm 4f8eaaaa75 Refactor plugin factories into Vst3*Proxy format
Now every proxy object that's directly created by the host or plugin
shares the same structure.
2021-02-13 15:42:05 +01:00
Robbert van der Helm 4e4ed3a6b4 Don't serialize input output info for IComponent::getRoutingInfo
Yes, input output info.
2021-02-12 19:24:33 +01:00