JUCE SDK integration.
This commit is contained in:
parent
8e09f58944
commit
adcbcdfd5e
16 changed files with 1057 additions and 0 deletions
|
|
@ -3440,6 +3440,64 @@ configuration correctly rejects the unsupported platform; no Windows build or
|
|||
ASIO hardware result is claimed.
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Phase 107 — JUCE Audio, Plugin, DSP and Interface Examples
|
||||
|
||||
### Goal
|
||||
|
||||
Use JUCE's relevant audio framework capabilities with the actual xtc C99 engine:
|
||||
AudioProcessor/plugin wrappers, standalone audio/MIDI devices, a native editor,
|
||||
parameter/state management, DSP effects, MIDI files, WAV export and VST3 hosting.
|
||||
Keep this integration optional and externally supplied. This user-requested
|
||||
phase can proceed alongside the unfinished platform work in Phase 106; it does
|
||||
not replace the main FLTK application or move the C engine into C++.
|
||||
|
||||
### Tasks and acceptance criteria
|
||||
|
||||
- [x] Add an offline-by-default external JUCE build and explain its
|
||||
AGPLv3/commercial licensing, dependencies and packaging boundary.
|
||||
- [x] Build working VST3 and standalone synth targets using xtc Soft Keys through
|
||||
the public C API; negotiate mono/stereo and handle variable host blocks.
|
||||
- [x] Provide a native JUCE editor with attached host parameters, on-screen MIDI
|
||||
keyboard, peak display, panic and transactional versioned preset files.
|
||||
- [x] Use JUCE DSP for a low-pass filter, reverb and smoothed output gain, with
|
||||
all processing storage prepared outside processBlock.
|
||||
- [x] Implement bounded MIDI queues/overflow panic and preserve host MIDI sample
|
||||
offsets without callback allocation, I/O, GUI calls or host-side locks.
|
||||
- [x] Provide a console example for Standard MIDI File import with tempo
|
||||
conversion and float32 stereo WAV rendering with atomic no-clobber output.
|
||||
- [x] Demonstrate explicit JUCE VST3 discovery, parameter inspection, state
|
||||
capture/restore and actual MIDI processing against the built example.
|
||||
- [x] Test C-render equivalence, stereo/mono, variable blocks, reset, invalid
|
||||
preparation, queue overflow, preset recovery, editor rendering/reopening
|
||||
and loading the JUCE VST3 from xtc's existing C host.
|
||||
- [x] Build with warnings enabled, run the focused integration checks and retain
|
||||
ordinary C/FLTK builds/tests without a JUCE dependency.
|
||||
|
||||
### Implementation status
|
||||
|
||||
Implemented and qualified on Linux with external JUCE 9.0.4 revision
|
||||
`3fb5cbc0340758596dac39f7c8de47d562b4896e`. See [JUCE.md](JUCE.md) and
|
||||
[examples/juce](../examples/juce/README.md) for reproduction.
|
||||
|
||||
Validation (2026-11-06):
|
||||
|
||||
- `make -j4 all test`: ordinary C/FLTK build and regression suite passed.
|
||||
- `make JUCE_ROOT=/path/to/JUCE test-juce`: warning-enabled VST3, standalone
|
||||
and CLI builds; processor/JUCE-host CTests; file/editor acceptance checks;
|
||||
and the existing C-host integration test passed under Xvfb.
|
||||
- Steinberg VST 3.8.1 validator: 47 tests passed, zero failed.
|
||||
- Rendered the demo to a 216000-frame 48 kHz stereo float32 WAV; inspected
|
||||
the actual 1560 × 980 editor snapshot. No physical audio device was opened.
|
||||
- C-host all-off uses individual note-offs, so acceptance checks finite release
|
||||
and eventual silence; the JUCE host also verifies immediate MIDI all-off timing.
|
||||
|
||||
Broader adoption in
|
||||
the main DAW, additional plugin formats, Windows/macOS portability, native ASIO
|
||||
and physical-device latency/loopback qualification remain separate work. Merely
|
||||
building JUCE's standalone wrapper does not establish hardware acceptance.
|
||||
|
||||
---
|
||||
|
||||
## Recommended Execution Order
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue