1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-19 01:04:20 +00:00
Commit graph

271 commits

Author SHA1 Message Date
reuk
47dcc31e77
VST3 Client: Allow setting latency from inside prepareToPlay 2021-10-07 14:31:26 +01:00
reuk
294caba2b5
VST3: Add dirty-state set/get
Adds a mechanism to notify the host that the plugin state needs saving,
using updateHostDisplay.

Also allows JUCE hosts to detect when a plugin needs its state saving
via the AudioProcessorListener.
2021-10-06 16:59:07 +01:00
reuk
afa6465098
UB Sanitizer: Avoid warnings in third party code, with clang 2021-09-28 11:31:50 +01:00
reuk
d0615041f0
Plugin clients: Avoid notifying listeners when parameters have not changed 2021-09-28 11:31:49 +01:00
reuk
ea250b3655
VST3 Client: Change VST3 native menu so that its position is specified in logical pixels 2021-09-28 11:31:48 +01:00
reuk
cfec0b5356
GenericAudioProcessorEditor: Add support for grouped parameters 2021-09-27 15:44:48 +01:00
reuk
b2a51eb253
VST3 Client: Avoid segfaults when updating program and bypass parameters
Previously, updating the program or bypass parameter could cause an
out-of-bounds access into the parameter value cache. This is because
AudioProcessorParameter::getParameterIndex() was used to index into the
cache, but the parameter index could be negative for parameters that
had not been added to the AudioProcessor.

We now use the appropriate index in the cache for parameters that
have not been added to the AudioProcessor.
2021-09-07 11:30:19 +01:00
reuk
8f29b2cb83
VST3: Allow plugins to designate the first input bus as Aux rather than Main
To use this feature, derive your AudioProcessor from
VST3ClientExtensions and override getPluginHasMainInput() to return
false. The main input bus will then be designated as an Aux bus, rather
than a Main bus.

This is mainly useful for synth plugins like vocoders, which may need a
sidechain audio input, but which should replace all audio on the channel
with the output of the synth, rather than mixing with the audio input.
2021-07-27 15:10:53 +01:00
ed
4fd0401752 VST3: Fix editor creation in Adobe Premiere Pro
See commit message of a1337a38 for more details
2021-07-22 16:33:42 +01:00
attila
7c68dd3709 VST3 Client: Avoid allocation in processParameterChanges() 2021-07-22 12:18:11 +02:00
attila
570e173583 VST3 Client: Fix allocation on audio thread caused by PluginHostType ctor 2021-06-25 15:05:19 +00:00
reuk
c3ab3eb77f
VST3 Client: Implement IProcessContextRequirements
This function is required by the Steinberg VST3 validator from VST 3.7
onwards.
2021-06-21 19:05:40 +01:00
reuk
bfb521b610
AudioProcessorEditor: Allow showing a host-provided parameter menu in VST3 plugins 2021-06-11 11:12:35 +01:00
reuk
63a40188d9
AudioProcessor: Add extensions API for VST3 clients 2021-06-11 10:53:26 +01:00
reuk
75922cac38
VST3 Client: Ensure main buses are enabled by default when using PreferredChannelConfigurations 2021-06-04 17:44:02 +01:00
reuk
712b14a272
VST3 Client: Normalise and denormalise program parameter correctly 2021-06-04 17:44:02 +01:00
reuk
77ad8b23bb
VST3 Client: Enable support for more FrameRateTypes, and set editOriginTime correctly 2021-06-04 13:04:44 +01:00
reuk
31a7c62baf
Windows: Fix and suppress some analysis warnings
This fixes warnings that are emitted when building with the `-analyze`
flag enabled.
2021-05-26 15:34:26 +01:00
reuk
6db900926b
VST3 Client: Fix issue where host failed to receive latency change notifications
In cases where a VST3 plugin set a non-zero latency in its
prepareToPlay, and then set its latency to 0 later on, the host was not
notified about the latency change.
2021-05-21 16:30:18 +01:00
reuk
2f04d6a846
VST3 Client: Fix leak caused by unnecessary manual refcounting
In older versions of the VST3SDK, hostContext is a raw pointer,
in newer versions it's a smart pointer. If we do manual
refcounting with the smart pointer, we may cause leaks.
2021-05-21 16:29:48 +01:00
reuk
47c7751750
VST3 Host: Avoid calling IMidiMapping functions on the audio thread 2021-05-12 11:14:35 +01:00
reuk
f35c2d90e2
VST3 Host: Ensure AudioProcessor parameter indices are used when appropriate
Previously, IEditController parameter indices were being used to index
into the AudioProcessor parameter array, but these parameter indices are
not guaranteed to point to the same parameter (parameter groups may
cause reordering on JUCE's side). Now, we use the IEditController
indices universally.
2021-05-06 16:04:22 +01:00
ed
a8aafed53d Removed some unnecessary virtual keywords 2021-04-27 15:56:01 +01:00
ed
a1337a3863 VST3: Workaround incorrect VST3 editor ref-count bug in Adobe Audition
Audition incorrectly increments the ref-count of the IPlugView* returned from IEditController::createView() and never fully releases it. This commit reverts e0306d25 for Audition to ensure that an editor is always returned, otherwise Audition displays a blank GUI.
2021-04-22 12:20:07 +01:00
ed
a06063dfd7 VST3: Added a missing return in the previous commit 2021-04-14 11:44:13 +01:00
ed
b1294fdadb VST3: Call setComponentState() on message thread on Linux 2021-04-13 16:25:43 +01:00
reuk
361f839546
VST3 Client: Avoid calling performEdit from the audio thread
Previously, all VST3 parameter changes were signalled to the host via
performEdit, regardless of the originating thread. This breaks the
contract of the IEditController interface, which requires that all calls
are made from the UI thread.

This change modifies the VST3 wrapper so that it will only call
performEdit when a parameter is set on the message thread. If a
parameter is set on the audio thread instead, then the parameter change
will be signalled to the host using
`ProcessData::outputParameterChanges`.

If your VST3 plugin uses a background thread to update parameters for
some reason, you'll encounter data races. Please don't do that.
2021-04-09 12:19:22 +01:00
reuk
c507ec9e73
VST3 Client: Ensure IComponentHandler::restartComponent is only called from the UI thread
When loading a JUCE plugin in Live, Live was producing diagnostic
messages in its Log.txt warning that restartComponent was being called
from a non-UI thread. This change should silence this warning, and
improve compliance with the VST3 spec.
2021-04-09 12:19:22 +01:00
ed
0aeee97b91 VST3: Reduced the scope of some MessageManagerLocks on Linux/BSD 2021-04-08 11:51:41 +01:00
ed
efd52398d1 VST3: Use shared MessageThread on Linux to run the message loop when host run loop interface isn't available 2021-04-08 11:51:41 +01:00
Tom Poole
60e13bec0c Allow use of an external VST3 SDK on BSD 2021-04-01 08:39:25 +01:00
ed
af4b727b8a VST3: Fixed an assertion when JUCE_FORCE_LEGACY_PARAM_IDS=1 due to getProgramParameter() returning the wrong parameter 2021-03-29 17:02:00 +01:00
ed
d8004e2e2b Docs: Fixed a few switched "namespace juce" comments 2021-03-29 09:22:01 +01:00
ed
4b5a67f067 VST3: Fixed bypass and program parameter indices when JUCE_FORCE_USE_LEGACY_PARAM_IDS=1 and AudioProcessor::getBypassParameter() is implemented 2021-03-29 09:20:35 +01:00
Tom Poole
ef5608654d VST3: Fixed a bug loading plug-ins 2021-03-26 10:31:45 +00:00
Tom Poole
a9ad07a945 Use RAII for CFTypes 2021-03-25 15:48:35 +00:00
ed
71b8885460 VST3: Fixed a crash accessing the program parameter when JUCE_FORCE_USE_LEGACY_PARAM_IDS=1 2021-03-22 08:34:10 +00:00
reuk
e0306d25d4
VST3 Client: Disallow creating a new editor if one editor is already active 2021-03-08 15:36:50 +00:00
ed
e813531d9b VST3: Fixed an issue with jumpy resizing when using a fixed aspect ratio 2021-02-26 09:35:19 +00:00
ed
a7c5337568 VST/VST3: Removed a workaround for checking whether DPI-aware windows were incorrectly scaled in editor resized() callback 2021-02-19 19:07:12 +00:00
ed
3c494b8a70 VST3: Improved stability of scaled plug-in windows 2021-02-19 19:07:12 +00:00
reuk
b1917085db
AudioProcessor: Update listener callback with change details 2021-02-18 10:54:29 +00:00
ed
94330cbb53 VST3: Repaint editor when size changes in Bitwig on Linux to fix UI glitches 2021-02-11 11:23:33 +00:00
ed
d8542481fd VST3: Fixed some intellisense arithmetic overflow warnings 2021-02-11 11:23:06 +00:00
ed
77f8e48730 VST3: Fixed incorrect high-DPI plug-in initial window size in Live on Windows
Live calls getSize() before the plug-in has been attached to the system window and can query the correct system scale factor, this size is then used to resize the plug-in after it has been attached resulting in an unscaled window size.
2021-02-11 11:23:06 +00:00
ed
5fc20f7106 VST: Made the check for Windows high-DPI screen change resizing more strict to prevent UI glitches when resizing manually 2021-02-11 11:23:06 +00:00
ed
46f5b126d5 Tidied up some template statement whitespace 2021-01-29 15:40:12 +00:00
ed
a1ff4eec6a VST: Renamed ComSmartPtr -> VSTComSmartPtr to avoid confusion with existing class in juce_core 2021-01-28 11:26:13 +00:00
ed
9a127e32e4 VST3: Added explicit check for current program value in setComponentState() so it is recalled correctly when loading 2021-01-25 09:37:53 +00:00
Tom Poole
9cc7e40c86 Updated some documentation 2021-01-22 16:54:08 +00:00