1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00
Commit graph

22 commits

Author SHA1 Message Date
Tom Poole
94d98a2b10 Update licensing information 2024-04-16 11:39:35 +01:00
Tom Poole
2fb19ffd8f Fix some LLVM 17 compiler warnings 2023-09-25 11:21:11 +01:00
hogliux
e12e0bb4fe Examples: Ensured that the MultiOutSynth example accepts disabled aux busses 2022-10-26 09:35:33 +02:00
reuk
964a1aa870
VST3 Client: Allow host to enable/disable buses at will
Previously, activateBus would fail if the new BusesLayout wasn't
supported, as reported by isBusesLayoutSupported. However, according to
the VST3 docs, a host is allowed to enable and disable buses in any
combination, and the plugin should be able to handle this gracefully.

The ability to enable/disable individual buses without failure is
particularly important because there's no VST3 API to set a complete bus
layout in one go. That is, the only way to set all buses active or all
buses inactive is to set the appropriate state on each bus individually,
which in turn means that at some point, some buses will be active and
some will be inactive. Disallowing such 'intermediate' states may
prevent the host from putting the plugin into other (valid) states.

To ensure that the VST3 wrapper always accepts activateBus calls, it now
keeps track of the activation state of each bus as requested by the
host. When the host tries to change the activation state, the wrapper
will try to set the host's "ideal" bus layout on the AudioProcessor. If
this fails, the AudioProcessor will retain its previous bus layout.

The buffer remapping inside the process callback has been made more
robust, to handle cases where the host and the AudioProcessor disagree
about the activation state of each bus:

For input buses:
- If the host has activated the bus, but the AudioProcessor decided to
  keep the bus inactive, the host's input will be ignored.
- If the host deactivated the bus, but the AudioProcessor wanted to keep
  the bus active, the AudioProcessor will be provided with silence on
  that bus.

For output buses:
- If the host has activated the bus, but the AudioProcessor decided to
  keep the bus inactive, the wrapper will clear the host's output
  bus buffers.
- If the host deactivated the bus, but the AudioProcessor wanted to keep
  the bus active, the AudioProcessor's output on that bus will be
  ignored.

The AudioBuffer passed to the wrapped AudioProcessor will no longer
contain any pointers from the host's ProcessData. Instead, the host's
inputs will be copied (in JUCE channel order) to a temporary buffer,
and this temporary buffer will be passed to
AudioProcessor::processBlock. After processBlock, the buffer contents
will be copied to the host's output buffers.

This change is intended to avoid a potential issue when reordering
channels into JUCE order, which may necessitate copying a host input
channel to a different host output channel. In the case that the host is
using the same buffers for both inputs and outputs, copying an input to
an output channel may end up overwriting another input channel, breaking
the plugin's inputs.
2022-06-13 15:29:58 +01:00
reuk
560e75da27
MultiOutSynthPlugin: Avoid assertions in VST3PluginTestHost 2022-06-13 15:29:55 +01:00
Tom Poole
24e3340a55 Update all examples to use Visual Studio 2022 as the default Windows exporter 2022-05-23 20:20:44 +01:00
Tom Poole
dea3fe60e4 Update copyright banners 2022-04-04 12:36:32 +01:00
reuk
3f9e5b4ea0
Demos: Provide a default program name
This prevents test failures in the Steinberg VST3 validator.
2021-06-21 19:05:39 +01:00
reuk
3dcd2759e6 MultiOutSynthPluginDemo: Implement isBusesLayoutSupported 2021-02-23 18:05:06 +00:00
Tom Poole
894e7d2bd2 Updated all license headers 2020-04-23 17:30:39 +01:00
reuk
f20b93a458 AudioPluginHost: Include example plugins in project
This change adds the examples from `examples/Plugins` to the
AudioPluginHost, surfacing them as 'internal' plugins in the popup menu.
2020-04-16 12:18:46 +01:00
reuk
eae9a10944 MidiBuffer: Add iterator compatible with C++11 range-for 2020-04-13 13:16:06 +01:00
reuk
ece5644a20 CMake: Add support for building JUCE projects with CMake 2020-04-13 12:10:11 +01:00
reuk
bbd2184e3b Demos: Fix some build issues in demos with more warnings enabled 2020-03-20 14:28:36 +00:00
ed
7035a40879 Fixed some errors in the examples 2020-03-16 11:47:15 +00:00
ed
e45b1d9924 Updated the VS exporter of example projects to VS2019 2019-06-03 17:16:47 +01:00
jules
15567c7150 Changed the constructor of GenericAudioProcessorEditor to take a reference rather than a pointer, to match all the other AudioProcessorEditor classes. Also tweaked its implementation to resize its components horizontally to fit the width of the parent window 2019-05-29 17:13:06 +01:00
ed
d018eb8407 Enable the JUCE_STRICT_REFCOUNTEDPOINTER flag for all new projects and PIPs 2018-06-27 11:37:27 +01:00
Tom Poole
ab863a6dc2 Replaced all usage of ScopedPointer with std::unique_ptr 2018-04-19 20:27:47 +01:00
Tom Poole
77128db335 Capitalised the PIP vendor field for the examples 2018-03-26 09:58:54 +01:00
ed
3977403b1b PIPs: Fixed some errors in the plugin examples 2018-03-16 11:23:04 +00:00
ed
5507801dfd Add all PIP examples 2018-03-15 12:10:34 +00:00