Build: 571f05d | August 23 – September 9, 2026
🎙️ Hardware Audio Recording, Low-Latency Roundtrip & Real-Time Monitoring
Omni now features a full, end-to-end hardware audio recording engine, bridging physical audio interfaces directly into track chains, session clips, and arrangement timelines:
- Dual-Stream Lock-Free Capture Pipeline — capture runs as a dedicated high-priority capture thread decoupled from the render loop via lock-free SPSC ring buffers (
cpalon Windows/macOS and nativeJACKon Linux). Supports arbitrary hardware channel counts (InputBlock), mono/stereo pair routing, and sample-rate validation with non-fatal degradation (input = None) on disconnected or misconfigured audio inputs. - Zero-Allocation Audio Thread Injection (Phase 1.93) — incoming hardware audio is summed into track buffers directly inside the real-time audio callback before the pre-FX snapshot. Hardware audio flows transparently through track insert effects, sends, and master buses with zero heap allocations, zero lock contention, and full support for pre-FX dry recording contracts (
dry: true). - Full Roundtrip Latency Compensation — implements an automated clock drift supervisor and roundtrip latency compensator. Compensates for the combined sum of output monitoring delay and input capture delay, ensuring live overdubs lock precisely onto the timeline grid without timing skew. Starting at bar zero automatically computes head trims (
compensated_start) without shifting audio out of bounds. - Dynamic Ring Buffering & Underrun Recovery — ring capacity dynamically scales to 0.5s of real audio stream buffer space, eliminating buffer truncation under WASAPI Shared Mode (where drivers return variable period sizes like 480 frames against 256 requested). Buffer underruns are padded with silence rather than cycling back into cold priming, eradicating chopped recordings and intermittent dropouts.
- Audio Input Routing & Non-Modal Selection Popup — arming an empty audio track now automatically maps the default hardware input. The track input configuration is housed in a clean, non-modal
egui::PopupwithCloseOnClickOutside, allowing multi-channel inspection and dB trim adjustment without accidental panel dismissals. - Real-Time Input Diagnostics & True Peak-Hold — hardware input levels are monitored right as signal leaves the ring buffer using atomic
fetch_maxpeak-hold metrics with destructive readouts, providing unambiguous visibility into interface signal health and eliminating silent recordings.
🎞️ Multi-Pass Loop Recording & Take Comping Workflow
Capturing multiple vocal takes or live instrumental solos is now seamless, following the comping ergonomics of modern studio DAWs:
- Automated Take Lanes on Loop Cycles — recording over looped sections automatically archives each successive iteration as a distinct, selectable take lane (
resolve_passes), preserving all CC automation and expressiveness across passes. - Successive Pass Stacking without Overwriting — recording a second pass over an existing clip automatically converts the new performance into a take lane beneath the active clip rather than creating unmanageable overlapping clips. Start points align with 1-bar tolerance, and clip boundaries dynamically expand to accommodate longer takes.
- Session Slot Binding (
record_slots) — newly recorded audio clips automatically claim the track's first free session slot and bind to a neutral one-shot sampler. Recorded audio waveforms immediately display in the audio editor for non-destructive pitch/gain adjustments, slicing, and destructive offline sample editing (Normalize, Fade, Reverse). Switching active takes updates the active slot in real time. - Arrangement Piano Roll Integration — double-clicking an arrangement MIDI clip or take lane directly opens its actual recorded notes in the Piano Roll editor (
ReplaceArrangementClip), rather than presenting an empty session clip placeholder.
📐 Linear Arrangement Timeline: Ripple Edit, Insert Time & Transport Decoupling
Linear composition in the Arrangement timeline has been overhauled with precision editing operations and robust state persistence:
- Ripple Delete & Insert Time — full timeline ripple editing is now integrated into both engine and UI.
Ctrl+Shift+Delcuts a selected time range and closes the gap;Ctrl+Shift+Insinserts empty bars, gracefully splitting clips at the boundary. Crucially, markers, automation envelopes, and tempo maps automatically shift and deduplicate alongside audio and MIDI clips. - Decoupled View & Playback Source — switching to the Session view no longer forces audio playback to jump to Session mode. The active playback source (
OmniApp::arrangement_playback) is strictly separated from viewport toggling (F4), allowing you to tweak samplers or plugins in Session view while the full Arrangement song continues playing. A "Back to Arrangement" indicator appears whenever tracks diverge. - Punch In / Punch Out Ruler Strip — dedicated punch in and punch out markers on the timeline ruler allow hands-free rehearsed overdubs without overwriting adjacent sections.
- Clip Nudge, Lock & Loop Toggles — nudge selected clips across the grid with
Ctrl+Shift+Arrows. Protect crucial clips against accidental slicing or erasure with "Lock Clip", or toggle looping directly from the clip context menu. - Undo/Redo Architecture Hygiene — resolved a double
Ctrl+Zconflict where global and arrangement undo managers triggered simultaneously. Clip duplication and brush painting now preserve full snapshots, restoring multi-clip duplicate chains on Redo (Ctrl+Y). Pasting (Ctrl+V) snaps cleanly to the current playhead position.
🌀 Euclidean Sequencer: Pitch Rings, Sub-Step Phase & Modular Architecture
The Euclidean Sequencer received a massive architectural and musical redesign, turning complex rhythmic generation into an intuitive, modular instrument:
- Modular Tabbed Solaris Interface — replaced the sprawling 2200px horizontal canvas with a focused 868px modular frame adhering to the Solaris hardware UI design system. Features dedicated OVERVIEW (per-channel block tiles with Steps/Pulse/Rot/Pitch knobs), CH 1..8 deep editors, and a MOD tab (4 LFOs and 16-slot modulation matrix).
- Dynamic Active Channels (1–8) — patterns now start with a focused single channel, expanding outwards as you add channels via the
+button. Inactive channels are completely bypassed and silenced in both the engine and UI, saving CPU and decluttering the screen. - Polyrhythmic Pitch Rings — introduces a 16-slot semitone
pitch_ringper channel. Pitches advance on each pulse rather than step, creating rich polyrhythmic phrases that evolve across cycles (e.g., a 3-note pitch sequence over a 4-pulse rhythm repeats only every 12 pulses). Semitone offsets feed directly into Omni's global scale quantizer. - Sub-Step Phase & Continuous Drift — fine-tune rhythmic groove with sub-step phase offsets (
offset_frac±1 step) and modulate it continuously with LFOs (EuclideanModParam::Phase). A convergence readout inside the concentric ring display indicates the exact bar count when all polyrhythmic channels cycle back to step zero. - High-Precision Per-Pulse Lane Editor — full-width lane editor for Velocity, Chance, Gate, Ratchet, Pitch Mod, Accent, and Micro-timing, with calibrated drag sensitivity, mouse wheel stepping, Shift-precision mode, and right-click deletion.
🔊 Deep DSP Engine & Built-in FX Audit (Phases 1.12–1.17)
Omni's built-in effects catalog has undergone an exhaustive mathematical and real-time safety audit, resolving critical DSP bugs and introducing high-performance filtering:
- Reverb (FDN Rebuild & Parameter Sync) — audited the Feedback Delay Network reverb:
- Restructured parameter mappings: mapped independent Room Size (FDN geometry scaling) and Decay (independent RT60 damping per line:
g_i = 10^(-3 * D_i / (f_s * RT60))). - Replaced pseudo-allpass diffusers with true allpass scattering delay networks, eliminating a rogue +4.4 dB resonant comb boost.
- Added true Freeze mode (unity gain bypassing damping filters) and click-free parameter smoothing on Mix, Width, and Feedback.
- Fixed 0ms pre-delay reading ahead of write (previously caused an immediate 200ms latency jump), replaced 8 per-sample
sin()calls with an efficient quadrature oscillator, and addedis_finite()guards against NaN recursive poisoning.
- Restructured parameter mappings: mapped independent Room Size (FDN geometry scaling) and Decay (independent RT60 damping per line:
- Saturator (55-Tap Kaiser Halfband & PDC) — overhauled oversampling filters:
- Replaced the inadequate 7-tap filter with a 55-tap Kaiser-windowed halfband filter (β = 7.0), providing -70.2 dB stopband attenuation and ±0.0003 dB passband ripple up to 20 kHz.
- Corrected the 4x oversampling cascade to filter channels sequentially rather than feeding decimated streams across parallel branches.
- Added plug-in delay compensation (PDC) reporting (42 samples in Fold mode) and aligned dry signal delay lines to eliminate phase cancellation comb filtering.
- Added a 5 Hz single-pole DC blocker on the wet output path, eliminating +22–24% DC bias in Tube saturation mode.
- Sequenced FX (Sample-Accurate Clocking & RT Safety) — eliminated heap allocations (
Vec::clone,String::clone) on the audio callback via pre-allocated parameter scratch buffers. Processing callback blocks are now split dynamically on step boundaries (frames_until_step_boundary) for microsecond-accurate rhythmic transitions. Mute, solo, bypass, and transport stops now glide smoothly through 64-sample crossfades without audio pops. - Transient Shaper — hardened IIR envelope detectors with
is_finite()checks to prevent permanent silence lockup after NaN samples. Added a -100 dBFS silence gate to prevent background floor noise from prematurely charging the sustain stage. Fixed envelope inversion when Attack Speed exceeded Release Speed. - Modal Resonator — fixed
stereo_spreadfailing to mark coefficients dirty during automation, eliminated full muting deadzones when position touched 0.0 or 1.0, implemented per-sample parameter glide, and added smooth 5ms crossfades during physical model switches. - Sample-Rate Aware Plugin Initialization — CLAP, VST3, VST2, and LV2 plugin instances now initialize with the engine's true runtime sample rate rather than a hardcoded 48 kHz default, guaranteeing exact filter cutoffs and delay times across 44.1 kHz, 88.2 kHz, 96 kHz, and 192 kHz projects.
🎻 Physical Modeling Synthesizers: Voice Stealing & DSP Hardening
Our physical modeling synthesis instruments received targeted voice allocation and boundary safety fixes:
- Violin & Reed Synthesizers — fixed a critical voice-stealing bug where note-off events arriving during the 3ms steal fade were discarded. Stolen voices now cache deferred release states (
pending_released), preventing infinite drone notes and stuck sustained pitches. Fixed edge cases where voices decaying to zero prematurely abandoned incoming notes. - Flute Synthesizer — comprehensive audit with 15 new unit tests:
- Added
is_finite()validation and range clamping across all 13 synthesis parameters. - Fixed dropped note-offs when MIDI events occurred with offsets at block boundaries.
- Implemented full MIDI CC handling, including CC120 (All Sound Off) and CC123 (All Notes Off).
- Added deferred voice-stealing crossfades and per-voice noise seeds to prevent coherent noise summing in chords.
- Corrected bore phase delay calculations and STK time constants across 44.1 kHz, 96 kHz, and 192 kHz sample rates.
- Added
🎛️ Modulation System & OmniScript Upgrades
- Per-Routing Polarity (
Bi/+/-) — each modulation connection in the Modulation Rack now features independent polarity selection. A single modulator can now drive one parameter symmetrically (bipolar) while modulating another exclusively upward (positive) or downward (negative). - OmniScript Compiler Robustness — fixed an issue where
.omfxscripts containing legacy@modulatesections compiled into halt instructions when@blockor@samplewere omitted. - Modulator DSP Refinements — corrected ADSR velocity sensitivity scaling in bipolar mode, unfreezed Macro smoothing glide times, corrected the Sidechain tilt crossover formula (2 * π * f), and fixed Marbles clock jitter to update once per cycle instead of per sample (eliminating a rogue +30% tempo speedup).
- Piano Roll Expression Lane Chord Isolation — dragging expression values (Velocity, Chance, Pan) across chord notes now isolates edits to the specifically clicked or selected note rather than simultaneously overwriting all notes sharing that timestamp.
🛡️ Metronome Resonator, ASIO4ALL Stability & Platform Polish
- Zero-Transcendental Resonator Metronome — new built-in metronome module powered by an ultra-efficient "magic circle" digital resonator (two multiply-accumulate operations per sample, zero trigonometric calls). Features distinct 1600 Hz downbeat accents vs 800 Hz beats, denormal protection, smoothed gain, and post-master routing that never bleeds into audio bounces.
- ASIO4ALL Control Panel Crash Fix — the "Control Panel" button in Audio Settings now safely locates and activates the running
a4apanel.exeinstance via Toolhelp32 process inspection, preventing host aborts from outdatedrundll32calls. - Audio Engine Diagnostics — added an audio test tone generator in Audio Settings, real-time logging of active output buffers exiting the process, and automated warning logs when engine initialization fails.
- Build Hash Embedding — release packaging (
build-asio.ps1with Inno Setup) embeds the exact Git commit hash and build timestamp directly into the binary, visible inside Omni's About dialog (Build 571f05d · 2026-09-09).
Over the past three weeks, Omni has transformed into a complete recording environment: from low-latency hardware audio capture and take comping to linear arrangement ripple editing, polyrhythmic Euclidean sequencing, and an uncompromising audit of our core DSP engines. Update to build 571f05d today and experience the next leap in open-source audio workstation design! 🚀

