Commit Graph

1177 Commits

Author SHA1 Message Date
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
Robbert van der Helm 67091bc13c Don't serialize input info for IComponent::getBusInfo 2021-02-12 19:12:49 +01:00
Robbert van der Helm e62bd603f9 Don't serialize input arrangement for IAudioProcessor::getBusArrangement 2021-02-12 19:08:51 +01:00
Robbert van der Helm d887a2905c Add comment about updated size in CheckSizeConstraintResponse 2021-02-12 19:03:48 +01:00
Robbert van der Helm 2020acfec1 Don't serialize input info for IEditController::getParameterInfo 2021-02-12 19:02:27 +01:00
Robbert van der Helm 5978247a0b Don't serialize input size for IPlugView::GetSize 2021-02-12 18:58:33 +01:00
Robbert van der Helm 3e24610d81 Remove todo about moving find_vst_host
Given the other functions in this file that mostly deal with locating
files and modifying the environment it makes sense to also have this
here.
2021-02-12 18:43:31 +01:00
Robbert van der Helm 0642e5d08e Remove todo about STDIO capture and Wine output
This seems to actually work in some cases, but in the instances where it
does not then there would also not be a way around it.
2021-02-12 18:36:16 +01:00
Robbert van der Helm a1bb522ea0 Move piping stream lines to the log to common 2021-02-12 18:35:07 +01:00
Robbert van der Helm dd0eb02970 Disable loading 32-bit VST3 plugins
There is some sort of memory corruption going on and these plugins
usually segfault on the audio thread. I'm clueless as to what could be
causing this (I wouldn't be surprised if this is caused by an
interaction between the VST3 SDK and Wine's Windows.h implementation),
but it's probably best to disable loading 32-bit VST3 plugins completely
until this has been fixed.
2021-02-11 13:55:44 +01:00
Robbert van der Helm cc5480a224 Fix loading 32-bit VST3 plugins
This is why GHC warns on shadowing by default. Probably.
2021-02-10 21:03:07 +01:00
Robbert van der Helm 3fbffa532d Move Win32 event handling to one place
Or technically, two, since the group bridge also does the same loop. We
no longer need special handling for VST2 and VST3 plugins, so we can
simplify things a bit here.
2021-02-09 23:45:33 +01:00
Robbert van der Helm a91fad2217 Clean up interface checks in VST3 plugin factory
Even though the interface ID is passed as an FIDString and there is a
function to compare FIDStrings obviously doesn't mean that you're
supposed to use them! Duh.
2021-02-09 23:40:55 +01:00
Robbert van der Helm 10b01b5140 Update comments on the VST3 info caches 2021-02-09 23:19:17 +01:00
Robbert van der Helm 2d62347393 Update old comments 2021-02-09 23:19:13 +01:00