expo-juce 0.5.2-rc.2 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/ios/JucePadView.swift +3 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ expo-juce is being built toward full audio workstation capabilities. The work is
|
|
|
39
39
|
Replaced the mono SynthEngine + AVAudioEngine with a JUCE-owned audio stack built on `AudioProcessorGraph`. 8-voice polyphonic synth with per-voice oscillator, SVF filter, and full ADSR envelope. MIDI-style API (`noteOn(note, velocity)` / `noteOff(note)`). JUCE owns device management and output for cross-platform support (iOS, macOS, Windows, Linux).
|
|
40
40
|
|
|
41
41
|
### Diagnostics, recovery and latency
|
|
42
|
-
**Status:** Diagnostics done (0.5.2-diag.x); recovery and latency margin in 0.5.2 — see the [latency guide](docs/latency.md)
|
|
42
|
+
**Status:** Diagnostics done (0.5.2-diag.x); recovery and latency margin in 0.5.2 — see the [latency guide](docs/latency.md). TODO: latency measurement and interruption / route-change device checks ([list](docs/latency.md#todo-device-checks-pending-for-052))
|
|
43
43
|
|
|
44
44
|
`setup()` rejects with the failing step, `getDiagnostics()` exposes every layer from device callbacks to synth peak, `playTestTone()` bypasses the graph, an offline harness reproduces the device callback on Linux. Root causes of the first on-device silence (fixed 2026-10-22): a stale Metro bundle running the app on stubs, infinite recursion in `-setBeatCallback:`, `setup()` always resolving, and expo-av switching the shared session to Ambient. 0.5.2 adds: 128-sample buffer, no allocation on the audio thread, native `JucePadView` touch path, 2 ms default attack, session re-assert and interruption / media-reset recovery (keeping synth settings and transport state across rebuilds).
|
|
45
45
|
|
package/ios/JucePadView.swift
CHANGED
|
@@ -11,8 +11,11 @@ class JucePadView: ExpoView {
|
|
|
11
11
|
|
|
12
12
|
var note: Int = 60
|
|
13
13
|
var velocity: Int = 100
|
|
14
|
+
// Disabled pads leave hit-testing entirely, so touches reach the views underneath (forwarding
|
|
15
|
+
// to super would only walk the responder chain, which does not include siblings).
|
|
14
16
|
var enabled: Bool = true {
|
|
15
17
|
didSet {
|
|
18
|
+
isUserInteractionEnabled = enabled
|
|
16
19
|
if !enabled {
|
|
17
20
|
releaseAllTouches()
|
|
18
21
|
}
|