Commit Graph

101 Commits

Author SHA1 Message Date
Robbert van der Helm 4e4bbe1ba4 Replace const-rvalue with rvalue
Since const-rvalue doesn't make any sense.
2021-07-05 16:39:11 +02:00
Robbert van der Helm 1397400155 Reload supported interfaces after IPluginBase::initialize()
This is needed as a workaround to support Waves VST3 plugins.

Right now does does not actually fix the issue because the arguments are
not updated in the subclasses. The next commit will fix this.
2021-07-05 16:08:01 +02:00
Robbert van der Helm 20638b7349 Fix missing autoformatting
At some point Doom Emacs broke on-save formatting with lsp-mode in
certain circumstances, and I made these changes with wgrep so apparently
they were never formatted.
2021-06-26 12:27:01 +02:00
Robbert van der Helm 964c150158 Use the in new place optional extension 2021-06-10 23:44:47 +02:00
Robbert van der Helm 14e3ed2cd3 Add shared audio buffers config to IAudioProcessor::setupProcessing() 2021-06-10 21:37:42 +02:00
Robbert van der Helm 1464ec2ab0 Use text2b instead of container2b for u16string
Should be equivalent. The only reason why we use container2b in some
places is because strings based on `Steinberg::char16` arrays will have
an incorrect length on the Wine side, because character traits for
`wchar_t` is still reflects Linux instead of Windows there.
2021-05-23 19:33:27 +02:00
Robbert van der Helm 7c49fe739d Use our new custom std::variant bitsery extension
This prevents reinitializing `std::variant`s when the variant we want to
deserialize is already active. We store audio buffers in variants, so
reinitializing them results in a lot of unnecessary memory frees,
allocations and writes during every processing cycle.
2021-05-22 17:51:01 +02:00
Robbert van der Helm 59ba2aeb5f Add noexcept qualifications in src/common
Apparently this can actually make a difference in some cases, and the
C++ Core Guideliens recommend doing this on all default constructors,
destructors, and all functions that can not throw (and thus also don't
allocate).
2021-05-14 17:12:24 +02:00
Robbert van der Helm f1d7b7bf57 Avoid allocations in VST3 process response
This is very ugly so hopefully I can think of a neater way, but now the
response object is just a set of pointers, so we can avoid all copies
and moves on the Wine side.
2021-05-07 19:24:28 +02:00
Robbert van der Helm 93b8643cba Avoid allocations when reconstructing process data 2021-05-07 18:21:30 +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 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 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 2020acfec1 Don't serialize input info for IEditController::getParameterInfo 2021-02-12 19:02:27 +01:00
Robbert van der Helm 391206eea8 Work around incorrect wchar_t text serialization
`std::char_traits<wchar_t>::length()` would return the wrong length for
a wide string under Wine, and thus also for `String128`. This would
cause parts of the strings to get cut off. As a workaround we'll just
serialize the entire container including all null bytes at the end.
2021-02-02 15:43:53 +01:00
Robbert van der Helm 77414c80d6 Allow null pointers in IEditController::setComponentHandler 2021-01-24 14:51:18 +01:00
Robbert van der Helm d5e4424463 Also sync VST3 audio thread scheduling priorities
The exact same thing as the last commit, but for VST3 plugins.
2021-01-23 15:22:10 +01:00
Robbert van der Helm d3d57a3fe0 Use UID conversion for GetControllerClassId 2021-01-22 14:13:27 +01:00
Robbert van der Helm 4a5c961b63 Get rid of unused bitsery FUID extension
This would need a UID conversion to be safe anyway, so it's better to
just get rid of it.
2021-01-22 13:47:11 +01:00
Robbert van der Helm 249b82f846 Add conversions for the garbled UIDs
We'll need this to make sure the reported class IDs match up with the
actual IDs.
2021-01-22 13:47:11 +01:00
Robbert van der Helm 197aadad69 Fix style 2021-01-17 15:32:22 +01:00
Robbert van der Helm 4804174dae Add message structs for IParameterFunctionName 2021-01-17 13:42:08 +01:00
Robbert van der Helm 06f6e6acfc Add a proxy class for IParameterFunctionName
This is the last official VST3 interface we have to implement!
2021-01-17 13:09:29 +01:00
Robbert van der Helm 77ff3f23d5 Add message structs for IProcessContextRequirements 2021-01-16 16:11:48 +01:00
Robbert van der Helm 4f416e135a Add a proxy class for IProcessContextRequirements 2021-01-16 15:51:48 +01:00
Robbert van der Helm 1a66c67ec7 Add message structs for IMidiLearn 2021-01-15 23:13:51 +01:00
Robbert van der Helm 64507828bb Add a proxy class for IMidiLearn 2021-01-15 22:33:29 +01:00
Robbert van der Helm f50ed52073 Add message structs for INoteExpressionPhysicalUIMapping 2021-01-15 19:15:45 +01:00
Robbert van der Helm be7fccc920 Add a proxy class for INoteExpressionPhysicalUIMapping 2021-01-15 18:09:51 +01:00
Robbert van der Helm 67303f3adc Add message objects for IInfoListeener 2021-01-12 16:58:37 +01:00
Robbert van der Helm 9c63eb6fcd Add a proxy class for IInfoListener 2021-01-12 16:15:35 +01:00
Robbert van der Helm 2decaabb34 Add message structs for IPrefetchableSupport 2021-01-12 15:29:03 +01:00
Robbert van der Helm 8bcb3d7095 Add a proxy class for IPrefetchableSupport 2021-01-12 15:18:46 +01:00
Robbert van der Helm c62c67a96c Add a message structs for IAutomationState 2021-01-10 23:34:23 +01:00
Robbert van der Helm cfa1aff1bf Add stubs for IAutomationState 2021-01-10 23:32:55 +01:00
Robbert van der Helm ba983be99f Add a proxy class for IAutomationState 2021-01-10 23:32:55 +01:00
Robbert van der Helm 8971a65825 Pass through host provided IBStream objects
So if the host supports IStreamAttributes, we can also provide objects
that support the same itnerface to the plugin.
2021-01-10 16:57:36 +01:00
Robbert van der Helm 9b62386099 Move VectorStream to a new YaBStream
We'll have to extend this with `IStreamAttributes` for VST 3.6.0 preset
meta data.
2021-01-10 15:12:47 +01:00
Robbert van der Helm b3406189e7 Add messages for IXmlRepresentationController 2021-01-08 17:47:10 +01:00
Robbert van der Helm ebd887d565 Add a proxy class for IXmlRepresentationController 2021-01-08 17:33:49 +01:00
Robbert van der Helm e21568a38e Add message structs for IKeyswitchController 2021-01-08 16:59:53 +01:00
Robbert van der Helm 4ef734dc5a Add a proxy class for IKeyswitchController 2021-01-08 16:44:58 +01:00
Robbert van der Helm 78243c265f Add message structs for IEditControllerHostEditing 2021-01-08 16:25:00 +01:00
Robbert van der Helm 66020f3056 Add a proxy class for IEditControllerHostEditing 2021-01-08 16:12:38 +01:00
Robbert van der Helm 85d90217bd Add message structs for IAudioPresentationLatency 2021-01-04 22:25:02 +01:00
Robbert van der Helm 44f42d7e02 Add a proxy class for IAudioPresentationLatency 2021-01-04 22:06:05 +01:00
Robbert van der Helm e980afddb4 Add stubs for IMidiMapping 2021-01-02 23:49:47 +01:00
Robbert van der Helm 17d2d21bef Add request structs for IMidiMapping 2021-01-02 22:21:02 +01:00