Robbert van der Helm
4c009cb670
Add an environment variable for disabling watchdog
...
This should only be used when running the Wine process under a separate
namespace.
2021-06-16 01:28:59 +02:00
Robbert van der Helm
4d58adb83f
Prevent against environment modifications
...
Should not be necessary here, but better safe than sorry.
2021-06-16 01:11:36 +02:00
Robbert van der Helm
efeb8d7348
Rearrange editor functions
2021-06-15 11:00:22 +02:00
Robbert van der Helm
42e1e49ab9
Remove debug prints
2021-06-13 00:27:24 +02:00
Robbert van der Helm
736b223af8
Set the audioMasterGetTime flags
...
Apparently this is a thing, and Ardour is the only DAW that respects
them.
2021-06-12 20:36:22 +02:00
Robbert van der Helm
8a754b08cf
Only initialize VST2 audio buffers on activation
...
Ardour apparently always calls `effMainsChanged()` with a value argument
of 0 when unloading the plugin, regardless of whether it has actually
initialized audio processing before that point.
2021-06-12 20:15:20 +02:00
Robbert van der Helm
67e754feb5
Make the maximum block size in VST2 optional
2021-06-12 20:05:39 +02:00
Robbert van der Helm
71cb421032
Reformat the REAPER host functions warning
...
So it's a bit nicer to look at.
2021-06-12 17:31:15 +02:00
Robbert van der Helm
9c439b62e3
Ignore REAPER host function API requests
...
Apparently there is a plugin that uses these.
2021-06-12 17:22:47 +02:00
Robbert van der Helm
9ae0e8ca38
[yabridgectl] Use reflinks instead of copies
...
Whenever available. This should speed up the copying process while also
reducing the amount of disk space wasted on Btrfs and XFS filesystems.
2021-06-12 11:40:24 +02:00
Robbert van der Helm
14ee304256
Silence spurious maybe unused errors
...
These only show up during unity builds, and they originate from
Boost.Container's small vector. The compiler's diagnostic also doesn't
make any sense here so it's probably just a weird GCC thing.
2021-06-12 00:35:59 +02:00
Robbert van der Helm
75dee9991c
Don't ignore read/write results
...
For some reason this only issues warnings on the CI.
2021-06-12 00:02:22 +02:00
Robbert van der Helm
b4e0941473
Don't cache reconstructed VST3 events at all
...
There's no need to since reconstructing the event is very cheap, and
this should be faster (less memory used) and also less error prone
anyways.
2021-06-11 18:18:13 +02:00
Robbert van der Helm
fe29def33f
Clear reconstructed VST3 events on deserialization
...
This fixes a regression from 964c150158 ,
because now the old reconstructed events buffer will stay alive.
2021-06-11 18:13:22 +02:00
Robbert van der Helm
9c30d64975
Fix speaker arrangement bitsets
...
The sizes were wrong, and Blue Cat Audio's VST3 plugins seem to use the
upper bits to store the channel configuration, which thus got read out
incorrectly.
2021-06-11 17:22:46 +02:00
Robbert van der Helm
78f6921cd8
Also use hashsets for the VST2 opcode dispatch
...
Should barely make a difference, but it should be as fast or faster.
2021-06-11 14:57:01 +02:00
Robbert van der Helm
aaf3e7438c
Use unordered maps for VST3 plugin instances
...
The better algorithmic time complexity should help when using many (say,
hundreds) of instances of a single VST3 plugin.
2021-06-11 14:48:28 +02:00
Robbert van der Helm
dec19dc12a
💥 Reimplement VST3 audio processing
...
In the same way as 50c25c1cf0 did it for
VST2 plugins. Input and output audio data is now stored in a shared
memory buffer instead of being sent over the sockets. This reduces the
bridging overhead to a minimum since copying data was the most expensive
operation we were doing and we now only need to copy the entire buffer
once per processing cycle.
2021-06-11 13:59:37 +02:00
Robbert van der Helm
a7d8063db4
Add getters for channel counts in audio buffers
2021-06-11 13:38:29 +02:00
Robbert van der Helm
340d376564
Add constant overloads for audio buffer pointers
2021-06-11 12:58:46 +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
f5214b7686
Add an in place std::optional bitsery extension
...
To avoid unnecessarily recreating the object during deserialization.
This has also been upstreamed to
https://github.com/fraillt/bitsery/pull/78 .
2021-06-10 23:43:45 +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
50c25c1cf0
💥 Reimplement VST2 audio processing
...
We now use shared memory to store the input and output audio buffers.
This means that we have to copy less data every processing cycle, since
a single copy to and a single copy from the shared memory object
suffices now. This should reduce the DSP load for VST2
plugins (especially when used in a plugin group) marginally to
significantly depending on the plugins used and the system
configuration.
2021-06-10 17:31:32 +02:00
Robbert van der Helm
80fa010af5
Prevent unnecessary copies in VST2 event handling
2021-06-10 17:31:32 +02:00
Robbert van der Helm
1bc804965c
Clean up lambdas in VST2 variant visitors
2021-06-10 16:53:55 +02:00
Robbert van der Helm
f99781c1b2
Make getting channel pointers noexcept
...
There should be no bounds checks in release mode anyways, and we'll
trust ourselves that this will be a simple lookup.
2021-06-10 16:09:55 +02:00
Robbert van der Helm
0370c64f99
Allow resizing shared memory buffers
2021-06-10 16:09:55 +02:00
Robbert van der Helm
23d99411c8
Define the Ack message in serialization/common.h
...
We're going to need this for VST2 audio processing.
2021-06-10 16:09:55 +02:00
Robbert van der Helm
503d8248c2
Refactor VST2 serialization primitives
...
Bundle all serialization function with the structs whenever possible to
simplify the serialization function, and add `Foo::Response` types so we
can make the `passthrough_event()` function slightly more type safe.
2021-06-10 13:13:01 +02:00
Robbert van der Helm
cacfc0b379
Fix serializing VST2 speaker arrangements
2021-06-10 13:05:47 +02:00
Robbert van der Helm
53d59f74d1
Reduce the VST2 events small vector capacities
...
Every DAW will just send all events in one go (and I think that's the
only way you should do it, but the VST2 spec is a bit leaky so who
knows). It wouldn't make much sense to preallocate more capacity,
because when DAWs do send all of those events individually they might
end up sending more than four of these anyways.
2021-06-10 12:43:54 +02:00
Robbert van der Helm
5a38a2e482
Lock mapped shared memory for audio buffers
2021-06-10 01:35:43 +02:00
Robbert van der Helm
a3aaeaa9a9
Mention that busses and channels are zero indexed
2021-06-09 20:47:52 +02:00
Robbert van der Helm
2210cb4fc3
Implement move semantics for shared audio buffer
2021-06-09 20:35:47 +02:00
Robbert van der Helm
9d11b501cd
Add a shared memory based audio buffer
...
We'll be using this to reduce the amount of copying we have to do during
audio processing.
2021-06-09 20:06:57 +02:00
Robbert van der Helm
e36a7e7e72
Add the effSetProcessPrecision opcode
2021-06-09 18:41:34 +02:00
Robbert van der Helm
087d5a6f87
Remind ourselves that we somehow survived 2020
2021-06-09 16:48:27 +02:00
Robbert van der Helm
53e4fa369f
Bump to version 3.3.1
3.3.1
2021-06-09 16:36:02 +02:00
Robbert van der Helm
19e78e22b5
Reword changelog
2021-06-09 16:36:02 +02:00
Robbert van der Helm
70d18edce2
Fix version strings when building from tarball
...
When that tarball has been extracted in an (unrelated) git repository.
2021-06-09 16:19:01 +02:00
Robbert van der Helm
8f655f71a6
Amend description of the disable_pipes option
...
This feature was part of yabridge 3.3.0, so it's no longer a master
branch only feature.
2021-06-09 15:58:48 +02:00
Robbert van der Helm
2b7839059c
Update the tested DAWs list
2021-06-09 15:30:32 +02:00
Robbert van der Helm
e421048925
Correctly configure clang-tidy for src/wine-host
2021-06-09 13:42:45 +02:00
Robbert van der Helm
d1badcb589
Prevent exceptions in IndividualHost::running
...
Apparently this might otherwise throw in some situations.
2021-06-09 13:09:57 +02:00
Robbert van der Helm
c97595a391
Mark Vst{2,3}Sockets as final
...
Since we're calling a virtual method during the destructor.
2021-06-09 13:04:51 +02:00
Robbert van der Helm
6fd31168d8
Reword changelog
2021-06-09 12:41:07 +02:00
Robbert van der Helm
7c9cd7b9e5
Fix uninitialized timed caches
...
This could prevent resizeable plugins from being resizeable in Ardour if
the initialized timestamp just happened to be greater than the current
time, since the returned result would then likely be some invalid value.
2021-06-09 12:31:03 +02:00
Robbert van der Helm
fb1eefa880
Reorder changelog
2021-06-09 12:21:13 +02:00
Robbert van der Helm
65c05aac88
Indicate cached IPlugView::canResize() calls
...
We apparently forgot to pass the flag here after implementing it in the
log function.
2021-06-09 12:07:29 +02:00