-
-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VST fixes again #4540
VST fixes again #4540
Conversation
Some plugins ignore updates to these values if they're changed while the plugin is in a "resumed" state, resulting in incorrect tuning after a change of sample rate.
Ignore requests to change the I/O count from within processReplacing and print a warning instead; the shared memory is in use so it can't be reallocated. Add a special case to return immediately if the I/O count hasn't changed at all; this will prevent spurious warnings when the plugin is only updating the latency and should reduce unnecessary reallocations in general.
Changed according to feedback from AudioBlast. The flag used to be set most of the time, now it is only set when playback starts/stops, looping is toggled, or playback jumps around.
This was fixed for setting the initial size of the window in 8e9f74d, but I missed the resizing case.
Stops each remote plugin process spawning a console host, and seems more in line with what other hosts do.
❤️ |
Great work! At first glance, I can't find any possible regressions. I think you may squash and reauthor three COM/OLE commits before merging if you want.
It will/should be handled when syncing branches.
|
Some plugins don't initialise it themselves, expecting it already to be done for them, and so are liable to hang without it (e.g. TX16Wx). Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com> Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
01cf0ee
to
8e6ee6f
Compare
@DomClark Could you explain that briefly? |
Updating the size of an embedded plugin requires sending a message from the remote plugin back to the host LMMS instance. LMMS isn't currently well equipped to receive messages back from plugins - messages are only processed when the plugin is first started, or when waiting for reply messages. In the current state, the window resize message would most likely be picked up on the processing thread while waiting for processing to complete, which isn't desirable. Even then it would only be received if processing were being done, so if, say, a VST effect didn't have any input at the time and the "process effects without input" setting were turned off, the GUI might not resize itself until audio input came again, which is also obviously undesirable. |
It sounds good. I think we should separate real-time(audio processing) and non-real-time(UI, etc.) messages when/if we do so. Here's just an idea:
|
Fixes a bug where some VSTs (e.g. Temper) would have their settings reset on project load, due to using programs as presets.
Passing |
I thought |
@lukas-w MinGW allows using |
I didn't know that. Not sure what the right approach is here. Doesn't matter too much I guess. |
Most remarks are in commit messages this time.
e5cc1a1 fixes #4479
4c1d617 fixes #4325
a4e1a0b fixes #4498
8e6ee6f fixes #4306 (see PR #4366)
3af9e26 fixes #4500
b9a8186 will fix window resizing when a plugin is not embedded, but won't work for embedded plugins (things like #4087, #4461); the machinery required to fix this is outside the scope of 1.2 I believe.
I think edf2365 fixes #4117, but it's not entirely clear to me what the point of that issue is; slow VSTs aren't necessarily our problem, but the "many CMD in taskmanager" part is addressed by this commit. @lukas-w requested on Discord that this be implemented differently on the
master
branch usingadd_executable
.