Robbert van der Helm
e6f0fe16d8
Target VST3 SDK version 3.7.3
2021-08-10 17:14:48 +02:00
Robbert van der Helm
1883888ec6
Unify exception handling style
2021-08-07 13:17:03 +02:00
Robbert van der Helm
9160de6483
Implement VST2 SysEx events
...
Apparently these _are_ actually used. Sometimes.
2021-08-04 21:40:09 +02:00
Robbert van der Helm
5c3491c1e1
Use exception logger for the memory locking error
2021-07-23 15:53:19 +02:00
Robbert van der Helm
1a34a80c21
Add a special exception logger
...
We'll need this to make sure that we can redirect caught exceptions
printed in `src/common/` to the correct file if `YABRIDGE_DEBUG_FILE` is
set.
2021-07-23 15:46:08 +02:00
Robbert van der Helm
b1fc5233d1
Add missing copyright headers
2021-07-20 17:33:26 +02:00
Robbert van der Helm
640c188338
Fix duplicate timestamps in Wine log messages
...
Regression caused by the merging of these two functions in a1cb3b6 .
2021-07-20 04:09:19 +02:00
Robbert van der Helm
a1cb3b614b
Add a +editor flag to YABRIDGE_DEBUG_LEVEL
2021-07-20 03:01:16 +02:00
Robbert van der Helm
9fcf91dc72
Oops. (fix inverted conditional from last commit)
2021-07-20 02:39:17 +02:00
Robbert van der Helm
138dfb3284
Fix regression in pid_running from d99f571
...
In some cases we would treat dead processes as not running (we could
also get EAVAIL instead of EINVAL, so it's better to just check the one
thing we should treat as a success instead).
2021-07-20 02:35:24 +02:00
Robbert van der Helm
0e57f410a9
Warn on startup if RLIMIT_MEMLOCK is set too low
...
This should diagnose issues like #119 .
2021-07-18 23:13:51 +02:00
Robbert van der Helm
fe61a28524
Print a distinct error when mmap() returns EAGAIN
...
As mentioned in #119 .
2021-07-18 23:13:42 +02:00
Robbert van der Helm
3c14f0391b
Move memory mapping setup to a function
...
So we don't need to repeat this twice.
2021-07-18 22:40:04 +02:00
Robbert van der Helm
d99f571c05
Treat EACCES for pid_running() as alive
...
When the user has some sort of hardening going on, we might not be able
to read the Wine process's memory. In that case this check would return
`false` even though the process is still running. To combat this, we
should explicitly check for `EINVAL` which is returned when the file
doesn't exist at all or when it's a broken 'symlink' (even though it
isn't really a symlink).
2021-07-18 14:54:12 +02:00
Robbert van der Helm
5f5a7bbdd2
Only call ftruncate() when size > 0
...
Either Boost or Linux really doesn't like it if you ftruncate() shared
memory down to 0 bytes.
2021-07-17 22:01:29 +02:00
Robbert van der Helm
0c816b0046
Only ignore -Wmaybe-uninitialized on GCC
...
An ifdef sounds like a better approach than ignoring two additional
warnings.
2021-07-14 17:18:44 +02:00
Robbert van der Helm
f292158889
Silence some more clangd warnings
2021-07-14 17:11:27 +02:00
Robbert van der Helm
5fc7acccd1
Show a notification on version mismatch
...
Between the plugin and the Wine plugin host application.
2021-07-13 22:14:31 +02:00
Robbert van der Helm
4013aea63a
Include the configuration as a dependency
...
Apparently this wasn't even supposed to work, so it's probably a good
idea to do it properly before things break.
2021-07-13 22:05:11 +02:00
Robbert van der Helm
d21073f866
Escape spaces in URI encoding
2021-07-11 17:24:53 +02:00
Robbert van der Helm
83951200bb
Add a function for URL encoding file paths
2021-07-11 17:19:45 +02:00
Robbert van der Helm
a58a1ab111
Update parameter name in header
...
Apparently this wasn't saved yet when I commited
a06d0bc515 .
2021-07-05 18:29:04 +02:00
Robbert van der Helm
a06d0bc515
Actually update the supported interface status
...
With this Waves VST3 plugins now work. But was it worth it?
2021-07-05 16:48:24 +02:00
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
9edae35304
Don't build 64-bit plugin hosts on 32-bit systems
...
This should in theory work.
2021-07-01 15:16:56 +02:00
Robbert van der Helm
e1e5c8beae
Move the VST3 SDK patching
2021-07-01 15:15:20 +02:00
Robbert van der Helm
d459649f49
Move most of the Meson build to subdirectories
...
We sadly cannot call `shared_library()` and `executable()` in these
subdirectories while still maintaining the same `build/` directory
structure, but this is still much cleaner. All of the other build
artifacts are now also gone from the root of `build/` so it's cleaner
overall.
2021-07-01 14:57:23 +02:00
Robbert van der Helm
8dd3e091fb
Move VST3 SDK deps to a separate meson.build file
...
We should only have the global options in the main meson.build file. It
made sense to keep everything in one place at one point, but an 800 line
build script becomes a bit difficult to skim through.
2021-07-01 14:57:23 +02:00
Robbert van der Helm
388d9739a9
Move XML escaping to a separate function
2021-06-28 12:53:51 +02:00
Robbert van der Helm
e7366006df
Append to the STDERR stream
...
This got lost when changing from using `std::cerr` to opening
`/dev/stderr` directly.
2021-06-26 12:42:53 +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
94b3c92432
Get rid of pointer size checks
...
To allow cross-compiling 32-bit libraries.
2021-06-24 13:17:15 +02:00
Robbert van der Helm
75cfc8eaac
Fix new watchdog timer environment check
...
This would of course cause a segfault if the environment variable isn't
defined. The regression was introduced in
8873c11e1d .
2021-06-22 18:06:04 +02:00
Robbert van der Helm
4ab61a77b7
Compare to string view constant instead of string
...
These are constexpr, so hopefully the compiler can be a bit smarter
about it.
2021-06-22 17:42:37 +02:00
Robbert van der Helm
8873c11e1d
Move watchdog timer disable check to common/utils
...
We may also want to check this from the plugin.
2021-06-22 17:15:47 +02:00
Robbert van der Helm
c2b8626ec5
Rearrange declarations to match implementations
2021-06-22 17:15:47 +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
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
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
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
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