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

681 commits

Author SHA1 Message Date
attila
fd1c29e56b WASAPI: Fix bug where an external device sample rate change could permanently stop audio processing 2025-11-25 20:23:26 +01:00
reuk
e465b71188
Docs: Update language to be more diplomatic 2025-11-18 15:47:42 +00:00
reuk
83e5264c86
Formatting: Remove double-dots from comments and other strings 2025-11-18 15:47:42 +00:00
reuk
8b0ae502ff
CoreMidi: Fix timestamps for incoming MIDI messages
Previously, the elapsed time in nanoseconds was multiplied by 1e6
instead of 1e-6, leading to incorrect timestamps on incoming messages.

This change also DRYs the code handling time conversions between the
native/host time and JUCE timestamps (milliseconds in double format).
2025-11-03 18:30:24 +00:00
reuk
89fc608a34
ASIO: Bundle required headers from SDK 2025-10-21 17:32:36 +01:00
Tom Poole
81ca9e63ef Linux MIDI: Fix a compiler warning 2025-09-30 11:39:22 +01:00
Anthony Nicholls
d0aa6d0486 iOS and macOS: Use consistent capitalisation with @available syntax 2025-09-25 14:56:34 +01:00
Anthony Nicholls
e68627c9ed Smart Pointers: Add a new enum for indicating if a smart point should increment a reference count or not 2025-09-25 14:56:34 +01:00
reuk
a9a99a0a08
CoreMidi: Correctly apply protocol conversions for incoming messages 2025-09-24 13:12:19 +01:00
reuk
fa1b4b07ef
CoreMidi: Respect input protocol request 2025-09-24 13:00:55 +01:00
reuk
774819540e
CoreMidi: Fetch detailed error information on supported platforms 2025-09-17 12:50:07 +01:00
reuk
883d3cdce3
UMP: Fix typos and add detail to docs 2025-09-17 12:50:07 +01:00
reuk
a99bff1e1d
JACK: Fix build failure on Linux when JUCE_JACK=1 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
71b1d001de
BluetoothMidiDevicePairingDialogue: Improve formatting 2025-09-17 12:50:06 +01:00
reuk
9a7e70ced3
MIDI: Get rid of InputHandler types that are no longer required 2025-09-17 12:50:06 +01:00
reuk
fa1f8ed54e
MIDI: Switch BytestreamMidiView for BytesOnGroup in a few places 2025-09-17 12:50:06 +01:00
reuk
835216c581
MIDI: Use Spans instead of pointer pairs in more places 2025-09-17 12:50:06 +01:00
reuk
9a7ac1f743
Bela: Drop support 2025-09-17 12:50:05 +01:00
reuk
8ce1f19bf0
JNI: Tidying 2025-09-17 12:50:05 +01:00
reuk
99d8b9b5e1
iOS: Fix sample rate detection on iOS 26 2025-09-16 22:46:56 +01:00
reuk
9be03bc99e
Android Oboe: Reopen streams correctly after device disconnection
Even if the output stream is the only one receiving callbacks, it's
possible that the input device got disconnected, in which case we'll
still need to recreate both streams.
2025-08-27 16:57:17 +01:00
reuk
37bb7a6c30
iOS: Fix deprecation warning 2025-06-10 20:16:02 +01:00
reuk
dcf0bf1c2a
WASAPI: Fix bug where attempting to clear output buffers had no effect 2025-06-03 16:12:00 +01:00
reuk
4045b0f8f6
WASAPI: Attempt to avoid potential races on state flags 2025-06-03 16:11:59 +01:00
reuk
86e0248f79
WASAPI: Use more early returns 2025-06-03 16:11:59 +01:00
reuk
f6df3e3ce1
CoreAudio: Respect buffer size passed to audio callback
We now query the incoming buffers to see how many samples are available.

If the callback's buffers will fit into our preallocated buffer (i.e. the
length in samples is smaller or equal to the preallocated buffer), then
we perform an audio callback with the provided data, even if the number
of samples is smaller than expected.

If the callback's buffers are larger than expected, we split the
incoming buffer into chunks that are no larger than the prepared
buffer-size.
2025-06-03 16:08:20 +01:00
reuk
ff99341179
CoreAudio: Replace HeapBlock with vector to retain allocation size 2025-06-03 16:08:20 +01:00
reuk
457de394e0
iOS Audio: Remove buffer size assertion
This assertion is no longer relevant now that the AudioDeviceManager
enforces the maximum buffer size.
2025-05-27 14:39:27 +01:00
reuk
51be8b9332
Android: Remove unnecessary SDK version checks 2025-03-19 11:06:17 +00:00
Anthony Nicholls
f985cf0c31 iOS: Restore sample rate after iterating available sample rates 2025-02-27 14:50:53 +00:00
Anthony Nicholls
a433e4dce0 iOS: Set target settings before updating hardware info to reduce the number of device changes 2025-02-27 14:50:53 +00:00
Anthony Nicholls
462c1c857e iOS: Improve performance when detecting and changing sample rates 2025-02-27 14:50:53 +00:00
Anthony Nicholls
4cbbf203f8 iOS: Improve performance when detecting and changing buffer sizes 2025-02-27 14:50:05 +00:00
Anthony Nicholls
5008d349e9 iOS: Prevent audio glitches when changing sample rate 2025-02-27 14:50:05 +00:00
Anthony Nicholls
bd7eff0705 iOS: Fix an issue in which the reported sample rate may not always be correct 2025-02-13 09:34:41 +00:00
Anthony Nicholls
0864d614fd iOS: Provide a workaround for discovering sample rates on iOS 18
There appears to be a bug on iOS 18 which means the session sample
may not update after a call to setPreferredSampleRate
2025-02-12 11:58:02 +00:00
reuk
08fcb744cc
JACK: Fix missing-prototype and unused-function warnings emitted by clang
Co-authored-by: Pierre Guillot <guillotpierre6@gmail.com>
2025-01-13 15:27:00 +00:00
Oliver James
f608e7cce2 juce_audio_devices: Add support for JACK on Windows and macOS 2024-12-11 13:50:13 +00:00
Anthony Nicholls
5e803ded5f Deprecations: Add ignore deprecation warning macros 2024-11-27 11:07:04 +00:00
reuk
55fb6dbe62
iOS Audio: Ensure current sampleRate and bufferSize are always updated after querying sample rates
The code added in 6f20de5434 was only
executed when no explicit sample rates were set.

Now, the sample rate is always updated after querying available sample
rates and before querying available buffer sizes, so that the buffer
size check is guaranteed to use an up-to-date samplerate value.
2024-11-21 13:42:54 +00:00
reuk
2c8875c775
Android: Use new, safer signature of AudioStreamBuilder::openStream 2024-11-06 12:35:18 +00:00
reuk
90fbdfeb00
Android: Update Oboe to 1.9.0 2024-11-05 13:28:10 +00:00
reuk
93640b63ff
Compatibility: Add new macros for straightforward checking of minimum deployment target
This also fixes a bug introduced in f7c7225f5c
where the condition guarding the definition of traitCollectionDidChange
was incorrect. This function is never required if the deployment target
is at least 17.0.
2024-11-05 13:28:10 +00:00
reuk
3506d66fae
iOS Audio: Always deactivate device before setting new preferred samplerate
This fixes a bug on iOS 17 running on a 9th gen iPad.

- Set JUCE_IOS_AUDIO_EXPLICIT_SAMPLERATES=44100,48000,88200,96000
- Start the DemoRunner.
- Add a breakpoint in AudioDeviceManager::audioDeviceAboutToStartInt().
- In the DemoRunner, change the sample rate to 96000.
- The breakpoint will fire. Observe the value of
  getCurrentBufferSizeSamples().
- Move the breakpoint to audioDeviceIOCallbackInt and continue
  execution.
- The breakpoint will fire. Observe the value of the numSamples
  parameter.

numSamples should always be no larger than the sample count reported in
audioDeviceAboutToStartInt().

Before this change, it was possible for getCurrentBufferSizeSamples() to
return a value smaller than the buffer size of subsequent process
callbacks.

Removing the availability checks and unconditionally
deactivating/reactivating the device seems to fix this issue, and the
correct buffer size is returned immediately when the device is
(re)started.
2024-10-28 11:12:47 +00:00
reuk
90f37e27ea Windows: Fix DLL build
There were a few "ambiguous operator new/delete" errors that were due to
inheriting from a private base class that used the leak detector. These
errors are resolved by adding the leak detector to the derived classes.

JUCE_API was missing from a few useful types, notably the ARA hosting
types.
2024-10-22 13:24:46 +01:00
reuk
6f20de5434
iOS Audio: Reset sample rate to default after querying available rates 2024-10-21 22:36:31 +01:00
reuk
80ac9a78a0
Singleton: Add new macros to simplify singleton creation
The INLINE macros allow singletons to be declared and defined in one
line, without requiring a separate JUCE_IMPLEMENT_SINGLETON statement.
2024-10-16 10:36:52 +01:00
reuk
7e73ed7c36
iOS Audio: Use hard-coded set of potential block sizes to avoid slow hardware queries 2024-10-04 14:37:58 +01:00
attila
70c9c5bfdb
iOS Audio: Add waiting mechanism after AVAudioSession setActive: to ensure correct buffer size detection on iOS 18
The waiting is only added on iOS 18 as this is the only platform where
seems to be an asynchronous relationship between
(1) AVAudioSession setActive:
(2) AVAudioSession setPreferredIOBufferDuration:
and (3) AVAudioSession.IOBufferDuration.

The issue is not observable in the iOS 18 emulator.
2024-10-03 17:46:49 +01:00