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

1223 commits

Author SHA1 Message Date
reuk
b3a4d54a72
Build: Update the minimum C++ standard to C++17 2022-09-12 16:14:57 +01:00
reuk
f8e91d4003
AU: Replace CoreAudioUtilityClasses with files from new SDK 2022-09-12 16:14:56 +01:00
reuk
6c3b410e6f
VST3 Client: When emulating MIDI CCs with parameters, generate a MIDI event for each parameter event
Based on a similar patch in the Surge-XT fork of JUCE.

Co-authored-by: Paul Walker <paul@pwjw.com>
2022-09-01 15:44:26 +01:00
reuk
e0fd976779 VST2: Always request a resize from the host when attaching an editor
This fixes an issue in Live 11.2 where editors using OpenGL would be
scaled incorrectly after closing and reopening the editor.
2022-08-31 17:42:47 +01:00
reuk
e64f87b26c OpenGL: Allow setting window bounds from repaint callback
On Windows, the OpenGL context window sometimes receives a repaint
request after moving between screens with different scale factors.
If the screen has changed size/scale since the last paint operation,
failing to invalidate the painted area may cause the screen contents
to be drawn at the wrong scale until paint is next called.
2022-08-31 17:42:47 +01:00
reuk
11b4672b55 VST3 Client: Fix occasional incorrect scaling in Ableton Live when rendering with OpenGL
This patch fixes an issue where closing and reopening a plugin editor in
Live could cause it to display at the wrong scale when using OpenGL.
2022-08-31 17:42:47 +01:00
reuk
7ebd34012c LV2 Client: Use preferredChannelConfiguration if available when writing manifest 2022-08-31 17:42:47 +01:00
reuk
028d1eea78 Projucer: Fix signing issue when building LV2 plugins on Arm macs 2022-08-31 17:42:47 +01:00
reuk
6d267c2fdc
AUv3 Client: Improve const-correctness 2022-08-25 10:52:33 +01:00
reuk
a1e8aa4278
AUv3 Client: Remove unnecessary base class 2022-08-25 10:52:32 +01:00
reuk
064fb6fa53
AUv3 Client: Switch static data member for proper singleton 2022-08-25 10:52:32 +01:00
reuk
dedfac8dd8
AUv3 Client: Tidy up static methods 2022-08-25 10:52:31 +01:00
reuk
6de9927347 CMake: Avoid building juce_lv2_helper unless required for LV2 target 2022-08-23 18:10:27 +01:00
Tom Poole
7296b8e3f7 Bump version number to 7.0.2 2022-08-15 17:26:35 +01:00
attila
9d73008dc2 ARA: Fix ARA debug configuration
The ARA SDK's debug functionality is included in the audio_processors
module, hence the configuration had to be moved there from
juce_plugin_client.
2022-08-15 12:07:40 +02:00
reuk
9712775e5b
macOS: Remove macOS 10.12 preprocessor checks
The current minimum-supported Xcode (10.1) includes the macOS 10.14.1
SDK, so APIs from macOS 10.12 will always be available.
2022-08-04 22:51:17 +01:00
reuk
a22b23e335
iOS: Remove iOS 11 preprocessor checks
The current minimum-supported Xcode (10.1) includes the iOS 12.1 SDK, so
APIs from iOS 10 will always be available.
2022-08-04 22:51:17 +01:00
attila
6c09aa69d9 VST3 Client: Fix setComponentState() threading on Linux
Before this commit it was possible for the plugin to transfer control
to its internal MessageThread and call
IComponentHandler::restartComponent() from it.
2022-07-14 19:18:27 +00:00
Tom Poole
cf8a2d93c0 Android/iOS: Avoid building LV2 2022-07-07 09:15:30 +01:00
Tom Poole
fd8607302d Bump version number to 7.0.1 2022-07-04 15:07:43 +01:00
attila
6ea3788a3b VST3 Client: Fix warning when PreferredChannelConfigurations are set 2022-06-30 15:10:15 +00:00
reuk
f3ca634049
VST3 Client: Fix missing prototype warning 2022-06-27 14:38:26 +01:00
reuk
a2dc45d6a8 VST3 Client: Fix missing-prototype warning 2022-06-24 18:37:27 +01:00
Tom Poole
8b399998b4 Bump version number to 7.0.0 2022-06-21 08:38:55 +01:00
reuk
752c913cd2
AudioPlayHead: Move HostTimeNs out of AudioProcessor, to consolidate timing information 2022-06-16 16:19:09 +01:00
reuk
8fbd99c424
AudioPlayHead: Improve granularity of position info 2022-06-16 16:18:20 +01:00
reuk
891daf1332
Optional: Update implementation to improve debugging experience
This patch also makes Optional public to end users.
2022-06-16 16:17:53 +01: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
e86436297d
LV2 Client: Update param IDs to avoid writing malformed manifests 2022-06-07 12:41:53 +01:00
Tom Poole
c7cabbbaba VS2022: Work around a compiler bug 2022-05-23 20:20:44 +01:00
Tom Poole
2ec861d99e Update licensing banners to JUCE 7 2022-05-16 17:55:48 +01:00
attila
5f4da905d7 ARA Client: Add ARA interface extensions to AU and VST3 wrappers 2022-05-12 12:31:30 +02:00
attila
cc8aa57793 AU Client: Only call prepareToPlay() from SetProperty() if already in prepared state 2022-05-11 16:06:18 +02:00
attila
3b5d7898ed VST3 Client: Only call prepareToPlay() from IComponent::setActive() 2022-05-11 16:06:18 +02:00
reuk
4805b86ca4
LV2 Client: Update Atom parsing to use Optional 2022-05-04 20:48:11 +01:00
reuk
208fc05480
LV2 Client: Request buffers large enough to hold a change event for each parameter 2022-05-04 20:48:11 +01:00
Tom Poole
c2ecde591b macOS: Remove 32 bit specific functionality
This includes Carbon support
2022-05-03 08:16:37 +01:00
Tom Poole
b48dddcf4e RTAS: Remove RTAS functionality 2022-05-03 08:16:37 +01:00
reuk
0f16d2dded
AU Client: Prevent parameter change messages being sent during state restoration
This is intended to fix two issues:
- In REAPER, setting automation recording to 'Latch', recording some
  automation, saving and reloading the project, then starting playback causes
  automation data to be overwritten. This appears to be because REAPER
  interprets parameter change messages sent during state restoration as
  originating from the user.
- In Ableton Live, automation lanes are sometimes disabled when loading
  projects. This also seems to be because the setStateInformation call
  may send parameter change messages back to the host.

According to the docs for kAudioUnitProperty_ClassInfo, the host is
required to notify all parameter listeners that the parameter values may
have changed, implying that the plugin need not send its own parameter
change notifications during state restoration.
2022-04-28 14:11:55 +01:00
reuk
45a5235298
AUv3: Fix race on factoryPresets
Some AUv3 presets crash when querying the set of presets in Loopy Pro.
The issue seems to be because `addPresets` may end up being called
concurrently with the host's queries.
2022-04-28 11:31:31 +01:00
reuk
f7e957a932
LV2 Client: Avoid declaring the turtle_recall feature in plugin manifests
This is an implementation detail for the build system of the plugin.
Users of the plugin should not know or care that this extension is
available.
2022-04-28 11:05:40 +01:00
reuk
215d5955f9
LV2 Client: Always declare resize and noUserResize in extensionData, even if only one will be used 2022-04-28 11:05:40 +01:00
reuk
67164f6af9
LV2 Client: Properly escape library names in the manifest.ttl 2022-04-28 11:05:40 +01:00
Tom Poole
3b6c05ec10 iOS: Fix a compiler warning 2022-04-26 15:37:38 +01:00
reuk
61f3c1dd98
LV2: Add initial client support 2022-04-22 14:18:52 +01:00
reuk
1182024fc4
LV2: Add initial hosting support 2022-04-22 14:18:51 +01:00
reuk
1d04669410
LV2: Add turtle-writer program 2022-04-22 14:18:51 +01:00
reuk
fe744f8112
VST2 Client: Flush command buffer after attaching plugin window on Linux 2022-04-22 14:18:50 +01:00
reuk
8ba09acc59
VST2 Client: Avoid potential deadlocks on stateInformationLock 2022-04-22 14:18:50 +01:00
reuk
e6efdaae0e
VST2 Client: Hook onto host event loop when editor is open 2022-04-22 14:18:50 +01:00