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

14897 commits

Author SHA1 Message Date
ed
b7647e2acb Docs: Added ladspa-sdk to Linux dependencies list 2021-04-19 19:03:02 +01:00
Tom Poole
d3248a5f66 Re-saved all projects 2021-04-19 17:33:31 +01:00
Tom Poole
70250dd0c1 Projucer: Added on option to select the macOS application category 2021-04-19 17:31:04 +01:00
reuk
e4dba6a40a
PlistOptions: Add MIDI tag to aumi plists 2021-04-19 14:37:38 +01:00
reuk
965f14311d
AUv3 Wrapper: Tidy up sample rate detection 2021-04-19 14:37:38 +01:00
reuk
8f74f3624c
AU Format: Enable output channels in MIDI FX
This mostly reverts commit 6e89e61b89.

MIDI FX plugins are allowed to have audio channels, even if they only
produce silence. If a plugin requests a particular bus/channel layout,
the host should respect this request, or attempt to update the layout.
The host should fill all channels that the plugin expects to be filled.

The old commit also meant that we weren't correctly supplying the host
sample rate to MIDI FX plugins.
2021-04-19 14:37:38 +01:00
reuk
cafb437762
AU Wrapper: Use correct sample rate for MIDI FX with no buses
MIDI FX AudioUnits can retrieve their current sample rate from an output
bus. However, it's reasonable for a JUCE MIDI FX plugin to require 0
output buses, in which case the correct sample rate cannot be retrieved.

This patch modifies the AU wrapper to ensure that MIDI FX plugins will
always have at least one output bus. This bus does not necessarily
correspond to a matching bus in the AudioProcessor, and it will not be
passed to AudioProcessor::processBlock. With the output bus in place,
the correct sample rate is reported in `prepareToPlay`.
2021-04-19 14:37:38 +01:00
reuk
a3e421a36b
MIDILogger: Enable MIDI FX mode 2021-04-19 14:37:38 +01:00
Tom Poole
f900581605 Projucer: Do a breadth first search for modules 2021-04-19 14:02:54 +01:00
ed
d30c0502bf ASIO: Update buffer size list when opening a device
This fixes a bug where a new buffer size set from the device control panel may not be added to the bufferSizes array
2021-04-19 09:54:02 +01:00
ed
a483fb58ee Projucer: Set pdb filename to match pdb output file to workaround broken VS2019 copy step
When building a static library, VS2019 replaces the generated link pdb file with the one created during compilation due to a broken copy step in Microsoft.CppCommon.targets. This workaround generates the pdb in the output directory so the copy step is skipped.
2021-04-19 08:58:05 +01:00
Tom Poole
ee76137441 Fixed some compiler warnings 2021-04-16 16:44:05 +01:00
reuk
4cefb3707c
AudioDeviceManager: Ensure current state is updated correctly when device settings are updated 2021-04-14 14:31:43 +01:00
reuk
8023985a8a
CMake: Allow a broader range of source file extensions in modules 2021-04-14 12:36:48 +01:00
reuk
52fcd4b336
CMake: Ensure only supported module sources are built on each platform 2021-04-14 12:36:48 +01:00
reuk
146c8573ca
X11: Fix drag-n-drop bug in the XWindowSystem class
This resolves a regression which was introduced in
74ca3b44c4.

Prior to that commit, drag and drop on Linux/X11 worked as expected.
DragAndDropContainer::performExternalDragDropOfFiles allowed dropping
files onto other applications.

After the faulty commit, this function may cause the window manager to
enter a bad state in which the drag operation never finishes, making it
impossible to switch between windows or close windows.

I think the issue happens because the DnD source may receive (spurious?)
XdndLeave messages during the drag, which cause the peer's entry in the
dragAndDropStateMap to be removed. Before the faulty commit, each peer
had its own drag and drop state object, which was not destroyed in this
way.

This change will keep the peer's drag state object alive, even when an
XdndLeave message is received. The entry will still be removed when the
peer's window is destroyed.
2021-04-14 12:36:48 +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
ed
dbf5789cda Linux: Fixed a compile error when building VST3 plug-ins with JUCE_MODAL_LOOPS_PERMITTED=0 2021-04-13 16:25:26 +01:00
ed
11d872ea1b MessageMananger: Made dispatchNextMessageOnSystemQueue() accessible by internal code 2021-04-13 16:25:04 +01:00
ed
060f96ae7c Projucer: Generate consistent Xcode projects when saving on Windows 2021-04-12 17:16:33 +01:00
reuk
c3a98d44c5
DSP: Fix uses of "snap to zero" preprocessor definition 2021-04-12 10:57:19 +01:00
reuk
6832dca430 StandaloneFilterWindow: Auto-resize settings dialog when IO options change 2021-04-11 17:09:57 +01:00
ed
04fdc4c209 Standalone: Add a dummy output channel to MIDI effect plug-ins 2021-04-09 16:45:28 +01:00
ed
107a2cfe27 AudioProcessorPlayer: Support MIDI effect processors 2021-04-09 16:45:02 +01:00
reuk
9f03bbc358
VST3 Host: Ensure IEditController::setParamNormalized is only called from the message thread
Some plugins, such as the 'AGain' demo from the VST3 SDK and Diginoiz
Subdivine segfault when setParamNormalized is called from a background
thread.

This patch attempts to ensure that calls to get/set parameter values can
be made safely from the audio or message threads.

It also adds some MessageManagerLocks around some other calls to the
EditController's member functions which should technically only be made
from the GUI thread.

Finally, it updates the parameter input queues to the IAudioProcessor so
that writing to the queue is wait-free. As part of this change, a new
queue type is introduced which holds up to a single point. This should
improve memory usage for plugins with many parameters.
2021-04-09 12:19:22 +01:00
reuk
4cfe27af08
VST3 Host: Avoid using Array with a non-dummy CriticalSection 2021-04-09 12:19:22 +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
reuk
1f21ce5f30
VST3: Add CachedParamValues helper type 2021-04-09 12:19:21 +01:00
reuk
e4659fd8f2
File: Use unit test random instance to generate unique filename 2021-04-09 10:26:28 +01:00
reuk
44441d3d79
VST2: Prefer unique_ptr to manual delete calls 2021-04-08 13:33:12 +01:00
reuk
dbf7806488
DSPModulePluginDemo: Disable resizing, as the plugin window fails to layout elegantly at other sizes 2021-04-08 13:33:12 +01:00
reuk
d50c3920ef
FirstOrderTPTFilter: Ensure state is updated properly when samplerate is changed 2021-04-08 13:33:11 +01:00
reuk
cfd85ad4ee
UnitTestRunner: Fix bug in File tests when multiple test instances are run simultaneously 2021-04-08 13:33:11 +01:00
ed
1a5fb5992a BufferingAudioReader: Added some tests 2021-04-08 11:51:42 +01:00
ed
c4a9c7876f BufferedAudioReader: Fixed a bug reading past the end of the input source 2021-04-08 11:51:42 +01:00
ed
b17ca5200a BufferingAudioReader: Don't pre-read chunks in constructor 2021-04-08 11:51:42 +01:00
ed
b3bdfdb34c BufferingAudioReader: Fixed an infinite read bug 2021-04-08 11:51:41 +01:00
ed
0aeee97b91 VST3: Reduced the scope of some MessageManagerLocks on Linux/BSD 2021-04-08 11:51:41 +01:00
ed
4e89580295 VST3 Host: Replaced per-plugin window RunLoop with a global shared RunLoop instance on Linux 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
ed
33f37847bc VST: Use RAII initialisation for JUCE GUI and SharedResourcePointer for MessageThread 2021-04-08 11:51:41 +01:00
ed
ab90229583 VST: Pulled Linux SharedMessageThread out into its own file 2021-04-08 11:51:41 +01:00
ed
76d5c07c66 MessageManager: Only reinitialise platform-specific code on Windows when calling setCurrentThreadAsMessageThread() 2021-04-08 11:51:41 +01:00
ed
58761a44c1 Linux: Made X11Symbols singleton thread-safe 2021-04-08 11:51:41 +01:00
ed
be84627f93 Docs: Updated XmlElement docs to use getChildIterator() instead of deprecated macros 2021-04-08 11:51:41 +01:00
reuk
a10cc6faff
FileChooser: Improve MinGW compatibility 2021-04-07 16:24:39 +01:00
reuk
5753466bfb
UMP Tests: Add support for building with MinGW 2021-04-07 16:24:38 +01:00
reuk
98d5dc84e6
FileChooser: Get rid of unnecessary shared-ptr in win32 native implementation 2021-04-07 16:24:38 +01:00