reuk
dd5ced96c1
VSTPluginFormat: Extract headless plugin format type
2025-09-17 12:50:08 +01:00
reuk
edcc699aa8
ARAHosting: Move to juce_audio_processors_headless
2025-09-17 12:50:08 +01:00
reuk
9c88358e46
VST3PluginFormat: Extract headless plugin format type
2025-09-17 12:50:08 +01:00
reuk
6fa7b21435
VSTComSmartPtr: Enable automatic upcasting
2025-09-17 12:50:08 +01:00
reuk
db64002610
VST3_SDK: Move to juce_audio_processors_headless
2025-09-17 12:50:08 +01:00
reuk
bf4486e2aa
LV2PluginFormat: Extract headless plugin format type
2025-09-17 12:50:08 +01:00
reuk
c3a3409c4d
LV2PluginFormat: Restructure to separate out UI dependency
2025-09-17 12:50:08 +01:00
reuk
1ce614d4b7
LV2_SDK: Move to juce_audio_processors_headless
2025-09-17 12:50:08 +01:00
reuk
4f22db33b7
LADSPAPluginFormat: Move to juce_audio_processors_headless
2025-09-17 12:50:07 +01:00
reuk
6f24663ed9
AudioUnitPluginFormat: Extract headless plugin format type
2025-09-17 12:50:07 +01:00
reuk
0d80e22276
AudioUnitPluginFormat: Remove unused preprocessor defs
2025-09-17 12:50:07 +01:00
reuk
04fd5dfb61
CommonProcessorUtilities: Move arrayContainsPlugin() to new file
2025-09-17 12:50:07 +01:00
reuk
3ae5a2d4ea
AU: Move juce_AU_Shared.h to juce_audio_processors_headless
2025-09-17 12:50:07 +01:00
reuk
426b74fcf7
AudioPluginFormatManager: Replace addDefaultFormats function() with non-member
2025-09-17 12:50:07 +01:00
reuk
33b9f1e6ec
PluginFormatDefs: Add a new file to hold plugin format enablement definitions
2025-09-17 12:50:07 +01:00
reuk
407cc5b004
Move files without UI dependencies to juce_audio_processors_headless
2025-09-17 12:50:07 +01:00
reuk
1a80d64261
Create new empty juce_audio_processors_headless module
2025-09-17 12:50:07 +01:00
reuk
ba7593df26
MIDI: Add support for MIDI 2.0 I/O using Universal MIDI Packets
...
Includes support for communication with USB and Bluetooth devices, as well as virtual devices.
2025-09-17 12:50:07 +01:00
reuk
fa1f8ed54e
MIDI: Switch BytestreamMidiView for BytesOnGroup in a few places
2025-09-17 12:50:06 +01:00
Tom Poole
360dfe5f3d
Bump version number to 8.0.10
2025-09-15 09:30:11 +01:00
attila
47d441787c
Linux: Fix bad window error when using the XEmbedComponent
...
The issue was reproducible by opening a plugin window in the AudioPluginHost.
2025-09-10 11:06:38 +02:00
reuk
e27183e044
LV2: Add clang-tidy warning suppression comments
2025-09-09 13:33:34 +01:00
reuk
0788df388b
VSTMidiEventList: Silence clang-analyzer OOB read warning
2025-09-09 13:20:20 +01:00
reuk
5d00156491
Remove unnecessary virtual keywords in final classes
2025-09-08 12:01:53 +01:00
Tom Poole
cb9ec7e38f
Bump version number to 8.0.9
2025-09-01 14:44:25 +01:00
reuk
6473deb155
PluginListComponent: Fix potential use-after-free on modal component dismiss
2025-08-27 16:57:17 +01:00
reuk
f9b70f1d39
LV2 Host: Fix leak of plugin classes when scanning plugins multiple times
2025-08-27 16:57:17 +01:00
reuk
eef9183fad
LV2 Host: Fix leak of LV2 path when calling lilv_world_set_option multiple times
2025-08-27 14:56:42 +01:00
reuk
ac89007949
ARA Host: Fix build
...
The build got broken in f3d7c74ea1 - the
ARAVST3.h include is needed for both hosts and clients.
2025-08-21 17:42:59 +01:00
reuk
ccdc9d6779
AudioProcessor: Remove friendship with AudioProcessorParameter
2025-08-14 14:14:47 +01:00
reuk
da8150bb58
AudioProcessorParameter: Break dependency cycle with AudioProcessor
2025-08-14 14:14:47 +01:00
reuk
96ff7a0dcb
AudioProcessor: Move getDefaultNumParameterSteps() to AudioProcessorParameter
2025-08-14 14:14:47 +01:00
reuk
476f09f2c9
AudioProcessorParameter: Remove friendship with unrelated types
2025-08-14 14:14:47 +01:00
reuk
edd274f18e
AudioProcessorListener: Move impl to dedicated file
2025-08-14 14:14:47 +01:00
reuk
1623b63889
AudioProcessorParameter: Move impl to dedicated file
2025-08-14 14:14:47 +01:00
reuk
90b948dffd
AudioProcessor: Remove deprecated functions
2025-08-14 14:14:47 +01:00
reuk
35d3fab960
AU Client: Improve AUChannelInfo reporting and add tests
...
The previous implementation could emit 'wildcard' channel layouts in too
many scenarios.
A wildcard channel count is -1 or -2, and indicates that any number of
channels is supported on the bus.
If the input and output layouts must match, then a layout of [-1, -1]
should be returned.
If any layout is valid in both directions, then a layout of [-1, -2]
should be returned.
In the case where we have a bus A and opposite bus B, we will now only
emit a wildcard count for bus A if every bus standard bus layout up to a
channel count of 16 can be applied successfully without changing the bus
count of B.
2025-08-14 14:13:09 +01:00
reuk
7e3aae3cb9
AU: Refactor getAUChannelInfo to make mismatch checking more concise
2025-08-14 14:13:09 +01:00
reuk
0fb62bd240
AU: Refactor getAUChannelInfo to reduce duplication
2025-08-14 14:13:09 +01:00
reuk
b5ea607dcc
AU Host: Avoid potential UB reads of MIDI data
2025-08-14 14:13:09 +01:00
Anthony Nicholls
36d07a6ce3
Docs: Replace doxygen preprocessor conditionals with @cond and @endconds
2025-07-21 18:11:43 +02:00
reuk
b0a3be2bb4
AudioProcessorGraph: Fix bug where channel delays could incorrectly be applied multiple times
2025-06-19 18:12:33 +01:00
Anthony Nicholls
46703f3e65
PluginListComponent: Replace inappropriate naming with more suitable alternatives
2025-06-10 16:14:06 +01:00
Anthony Nicholls
f3d7c74ea1
VST3: Allow manifest helper to run independently
2025-06-10 16:13:33 +01:00
Anthony Nicholls
80116d60da
VST3: Platform header should be included from user supplied SDK
2025-06-10 16:13:33 +01:00
reuk
5c34248d00
PluginListComponent: Wait for current scan to complete before calling owner.scanFinished()
...
I observed a deadlock when scanning AU plugins in-process in the
AudioPluginHost, and then clicking the "cancel" button in the scan
progress alert window.
The cause of the deadlock seems to be that JUCE uses async messages to
create and destroy AU plugins on the main thread. When running a plugin
scanner on a background thread, it was possible to end up in a situation
where the background thread was waiting on the message thread to process
a create/destroy message; and, at the same time, the main thread was
blocked waiting for all scan jobs to complete. This seemed to happen
because scanFinished() was called directly from the Scanner's
timerCallback as soon as the progress window was cancelled, even if
there was still a scan in progress at that point.
To avoid the deadlock, we now wait until the current scan has completely
finished before allowing the timerCallback to call scanFinished(). If no
scan is in progress, then the main thread can safely destroy the scanner
ThreadPool without needing to wait at that point.
2025-06-06 23:12:16 +01:00
reuk
dc890c69c2
PluginListComponent: Use lambda form of ModalCallbackFunction
2025-06-06 23:12:16 +01:00
reuk
6cd9566868
GenericAudioProcessorEditor: Avoid creating choice parameter components for discrete parameters with large numbers of steps
2025-06-06 23:12:16 +01:00
reuk
b349531966
AU Host: Avoid caching parameter value strings when getNumSteps() returns a large value
2025-06-03 16:12:00 +01:00
reuk
b20df8d713
PopupMenu: Add missing target components for menus created by built-in widgets
2025-06-03 16:08:56 +01:00