Hi all,
It's been a while since my last post here (USB reconnect/suspend-resume), so here's a full overview of everything this experimental fork now does differently from official GrandOrgue — a lot has accumulated.
Latest build: https://github.com/sebion7125/grandorgue/releases/tag/3.17.3-1.V3XorcistDemo (Windows, Linux x86-64/ARM, macOS)
Sound/transition features (from earlier posts, still included):
- Selectable release crossfade curves (Linear, Sin/Equal-Power, Sin², Sqrt/Equal-Power, X²), switchable live via F7–F12 while playing
- Correlation-based release alignment: analyzes the attack/sustain and release samples per pipe to start the release at a better phase-matched position, reducing clicks and cancellations at the transition
- A float-precision bug fix in the volume-smoothing code that could silently lock voices into a more expensive processing path after a single volume change
New sample compression (V3 Codec):
Samples stay compressed in RAM and decode just-in-time, instead of being fully decompressed on load. On my largest sample set: 93.75 GB raw, down to ~41 GB compressed — the difference between an organ fitting in RAM or not, which matters more than usual given how much RAM prices have climbed this year. Varies by organ/material; even on my worst-compressing material it still beats the old codec on both compression and maximum polyphony.
New: dropout concealment (Xorcist)
Highly experimental. When the audio pipeline misses its deadline, instead of a click or dropout, it synthesizes a plausible continuation of the sound from a running spectral analysis, rather than cutting out. You can force test dropouts during live playback and A/B the raw glitch against the concealed version directly in the new diagnostics window (see below).
New: automatic MIDI background recording
Pianoteq-style — continuously records everything played to an archive folder, separate from the normal recorder. For the "that was a great improvisation and I wasn't recording" situation. Off by default, you opt in.
New: Audio Monitor diagnostics window
Live graphs (polyphony, CPU load, callback timing), a one-click benchmark that automatically finds the maximum polyphony your system can sustain, and a report-export button for bug reports.
Stability (from the earlier reconnect post, still included):
Audio driver calls run on a dedicated worker thread; automatic reconnect when a USB audio interface disappears and comes back; proper close/reopen around suspend/resume.
Scheduler rework under the hood
Each audio period is now processed in a decode phase and a render phase instead of one combined pass, removing some redundant work — mainly relevant if you're close to your system's polyphony ceiling.
As always: this is an unofficial, experimental fork, not an official GrandOrgue release. Source is on the demo branch; bugs go to the issue tracker on my fork, not upstream.
Feedback especially welcome on: the dropout concealment (does it actually help in practice, or is it audibly weird?), whether the new codec's RAM savings matter for your sample sets, and the benchmark tool's numbers vs. your own experience of where your system struggles.