Back to News
update release omni-plugins plugins ai stem-split neural-amp-modeler denoiser chorus sampler vst3 midi rt-safety omni daw build-ef88f67

Omni Plugins: A New Sandboxed Plugin Format, AI Stem Splitting, Neural Amp Modeler & a Deep FX/Sampler/Engine Audit — Omni Update August 2026

A massive stability and capability release for Omni: a brand-new plugin format called Omni Plugins with fully sandboxed in-process hosting and a modern GPU-accelerated GUI layer, AI-powered stem splitting that turns any audio clip into Vocals/Drums/Bass/Other, two new AI builtin FX (Neural Amp Modeler and RNNoise Denoiser), a from-scratch Chorus ensemble rebuild plus automation fixes across nine builtin effects, a 21-bug Sampler engine audit with per-voice playhead and destructive editing, and a 13-part real-time safety audit hardening the audio engine and VST3 plugin hosting.

August 22, 2026 Tomasz Głuc
Omni Plugins: A New Sandboxed Plugin Format, AI Stem Splitting, Neural Amp Modeler & a Deep FX/Sampler/Engine Audit — Omni Update August 2026

Build: ef88f67 | August 13 – August 22, 2026


🧩 Omni Plugins: A New Sandboxed Plugin Format

Alongside CLAP, VST3, VST2, and LV2, Omni now hosts a plugin format of its own — Omni Plugins (.omniplugin):

  • Fully Sandboxed, In-Process Runtime — Omni Plugins run inside an isolated, fully sandboxed runtime with no direct system access (no dlopen), so unlike native CLAP/VST3/VST2 plugins they're trusted automatically and skip the "trust this plugin" gate entirely. A built-in hang watchdog keeps a misbehaving plugin from ever freezing the audio thread.
  • Modern, GPU-Accelerated GUI — plugin interfaces render through a dedicated GUI surface running on its own thread, fully decoupled from the audio engine. Live parameter values, touched-parameter tracking (matching VST3/CLAP "last touched" highlighting), real-time note events, and full per-track spectrum data all stream into the plugin's interface, RT-safely.
  • Host Transport Sync — plugins now receive the same live transport info (playing state, tempo, beat position, bar, time signature) that CLAP/VST3/VST2/LV2 plugins already get.
  • Encrypted Single-File Containers — a new plugin-packing toolchain produces AES-256-GCM encrypted .omniplugin bundles for distributing closed-source plugins, with developer tools disabled in release builds.
  • Polished & Consistent Branding — every internal/engine-facing label that used to leak through to users — file pickers, device panel headers, automation node types, GUI tooltips — now consistently reads "Omni Plugin". FX and GUI window titles pull the real plugin name from its manifest instead of the raw filename.
  • Bundled Plugin Library — the omniplugins/ drop folder is now committed to the repo with eight ready-to-use plugins: Alchemy, EqProQ, Lawa, PolyBass, Primordia, Slizg, Violin, and WiatrDX7, all discoverable through the "Omni Plugins" section of the Plugins browser and the + Instrument/+ FX menus.
  • Persistence & Reliability Fixes — fixed Omni Plugins (e.g. PolyBass) silently losing their parameters after a project save/reload, FX slots like EqProQ not saving state at all, a GUI window that reset its local state (sequencer play position, loaded presets) every time it was reopened, and an installer permissions bug that prevented plugin GUIs from ever rendering once Omni was installed to Program Files.

See the Omni Plugin developer guide for the full spec if you're writing your own Omni Plugin.


🎚️ AI Stem Splitting

Right-click any audio clip in Session or Arrangement and choose "Split into Stems":

  • Four-Way Separation — a new omni_stem_split crate wraps stem-splitter-core/htdemucs over ONNX Runtime to split a clip into Vocals, Drums, Bass, and Other tracks in one step.
  • GPU-Accelerated, CPU Fallback — choose "Auto" (GPU with automatic CPU fallback) or "Force CPU"; the first use asks permission to download the ~209MB model (cached locally afterward).
  • Warp/Pitch/Gain-Aware Capture — splitting reuses the same audio capture path as "Bounce to New Audio Track", so warp markers, pitch shifting, gain, and fades on the source clip are correctly baked into the split stems.
  • Silent Stem Pruning — htdemucs always returns all four stems even when a source obviously has no vocals; Omni now checks each decoded stem's RMS and skips creating a track for anything below -50dBFS instead of littering your project with silent tracks.
  • AVX2 Safety Check — the CPU backend crashed with an illegal instruction on older CPUs lacking AVX2; Omni now checks cpu_supported() up front and shows a clear message instead of crashing, before the download dialog even appears.

🎸 Two New AI-Powered Builtin Effects

  • Neural Amp Modeler (NAM) — load .nam amp/pedal models (WaveNet/LSTM, via nam-rs) as a track/return/master insert FX. Model parsing and network construction happen on a background thread; the audio thread only swaps in the finished model over a bounded channel — zero allocations, zero locks. The signal chain is Gate → Input Gain → Model → DC Blocker → 3-Band Tone Stack → Output Gain → Dry/Wet, with drag-and-drop .nam loading in the new Solaris-styled panel. Models travel with your project via "Collect & Save".
  • AI Denoiser — a recurrent neural network (RNNoise via nnnoiseless) that removes steady background noise (fan hum, wind, cable buzz) from vocals and podcasts, distinct from a NoiseGate's hard threshold cut. Runs dual-mono with an allocation-free 480-sample reframing pipeline and an allocation-free linear resampler for engines running at sample rates other than 48kHz.

🔊 FX Audit: Chorus Ensemble Rebuild & Automation Fixes

Chorus was rebuilt from a basic 2-voice sine-LFO design into a full ensemble: up to 4 modulated taps per channel, three LFO shapes (Sine/Triangle/Random S&H), a fully automatable 0–180° Spread, and optional Damping/Low-Cut filtering — all backward-compatible with existing projects. A voice-count normalization bug was also fixed: at low Depth, correlated delay taps could push the feedback loop's gain above 1.0 (up to 1.8x at 4 voices), causing runaway clipping into silence.

A broader FX audit also found and fixed real automation/modulation bugs across the builtin effects catalog:

  • Clouds — Position parameter was nearly dead outside a narrow range near zero, Feedback fed the dry signal instead of the processed tail, reverb tuning silently skipped exactly at 48kHz, and a broken RNG meant grain jitter/stereo panning never went "right". Added a Reverse-grains mode and soft (tanh) feedback limiting.
  • Compressor — fixed Attack/Auto-Makeup/Knee default and range mismatches.
  • Convolution Reverb — fixed mono impulse responses and incorrect reported latency.
  • Delay — time no longer ignores automation/modulation.
  • Parametric EQ — fixed Q and Shape descriptor range mismatches.
  • Filter — fixed numerical instability in CutoffWarp/ResoWarp/VintageLadder modes.
  • Gate — ballistics now respond to automation/modulation again.
  • Limiter — fixed incorrect parameter mapping and added an adjustable Lookahead.
  • Phaser — fixed missing Freq Min/Max automation and a stale-state click artifact.

✂️ Sampler Engine Audit: Per-Voice Playhead & Destructive Editing

A sixth audit pass covering sampler.rs/warp_clip_engine.rs/slicer.rs/AudioPool closed 21 tracked bugs. Highlights:

  • Playhead, Finally — sample position for all 8 voices is now packed into a single atomic (active | slice_idx | frame), giving a real per-voice playhead with slice highlighting in the waveform, overview, and ruler — including while transport is stopped. Previously only one voice's position was published, "0" ambiguously meant both silence and frame zero, and Granular mode published a fake counter.
  • Destructive Editing — a new sample_edit.rs module adds Normalize (Peak/RMS), Gain, Fade In/Out, Reverse, Silence, Crop, Cut, and DC-offset removal as pure functions running on a worker thread. Edits produce a new asset and swap source_id, so undo is a cheap SamplerData swap; slice markers remap automatically.
  • Critical RT FixAutoWarpClip ran full-file transient detection (up to ~34MB of allocation, tens of thousands of sorts) directly inside the audio callback, guaranteeing an xrun. Moved to a worker thread.
  • Sample-Rate Drift — samples recorded at a different rate than the engine played back up to 8.84% too fast after save/load, with slices drifting by the same factor — reload_audio_assets now uses the resampled loader and compute_playback_rate reads the asset's actual sample rate.
  • DSP Quality — fixed loop crossfades mixing material after loop_start instead of before (pre-echo instead of a clean splice), per-zone gain/pan being silently ignored, ModTarget::Pan requiring unison, and abrupt clip-end cuts on OneShot/Slice regions.
  • Plus: fixed slicing crashes past 220 slices, missing zero-crossing snap, three per-callback SamplerData clones on the audio thread, and a Windows-specific bug where the watchdog's monotonic clock could return 0, skipping the deadline check on a session's very first process() call.

Sampler test coverage grew by 43 tests in omni_engine (now 1278 passing) and 7 in omni_shared.


🛡️ Engine RT-Safety & Stability Audit (Phases 0.7–0.13)

A continuing systematic audit of omni_engine's real-time guarantees fixed:

  • Real Thread Priority for the DSP PoolRtThreadPool workers now get genuine OS-level real-time priority (RTKit/MMCSS/THREAD_TIME_CONSTRAINT_POLICY) on the live engine, the same mechanism the audio callback thread already used — previously they silently failed to elevate on every platform.
  • Circuit Breaker Coverage — the soft hang-watchdog (inprocess_breaker.rs) now also protects LV2 and CLAP insert effects, which previously could freeze the audio thread indefinitely if a plugin hung.
  • FTR Export Transport — offline export never called update_transport(), so plugins and beat-synced FX rendered with a frozen/stopped transport state during bounce.
  • Recording Splice on Track Remove/Reorder — removing or dragging a track mid-recording could silently merge two different tracks' audio/MIDI into one clip, because recording state was pinned to slot index rather than track identity.
  • Frozen Scope at Zero Tracks — the oscilloscope/goniometer froze on the last non-silent frame instead of showing silence when track count hit zero, and a similar idle-path bug silently muted the A/B Reference player on an empty project.
  • VST3 Hosting for nih_plug Plugins — fixed TOMiC Drum Synth losing sound entirely and knob/checkbox edits "springing back" to their previous value when built with the nih_plug framework, by correctly acknowledging parameter edits and reporting real transport play-state.
  • Precision & Allocations — corrected a fast_exp2/dB-conversion approximation with 0.52dB of error (vs. a documented 0.06dB budget) down to ~0.0005dB, and removed several remaining real-time-thread allocations (AudioBuffers under audio-driver jitter, TOMiC's generated-event draining, sequencer step triggers).

💥 VST3 Crash & Deadlock Fixes

Resizing a plugin's own GUI window (e.g. TomicDrumSynth, MT Power Drum Kit) could crash or hang the whole application. The fix required three layered changes: calling the VST3-mandated IPlugView::onSize() acknowledgment after a plugin-initiated resize, queuing resizes to run outside the plugin's own nested Windows message pump instead of re-entering it mid-frame, and switching a blocking mutex to a try_lock to eliminate a genuine deadlock when a plugin opened its own popup during a resize. A last-resort SEH crash handler was also added, writing .dmp minidumps to %APPDATA%\omni\crashes\ for any future native-plugin access violations.


🎛️ Workflow Polish & Fixes

  • MIDI Import Fix — SMF import only ever read track 0, so standard Format 1 files (notes on track 1+, track 0 reserved for tempo/meter) imported with zero notes. Now imports all tracks, preserves original velocity, and recovers tempo/time-signature/CC automation.
  • Sample Browser Arrow Navigation — with the cursor over the Samples file list, Up/Down now jumps to the next/previous audio file (skipping folders, wrapping at the ends) and auto-plays it.
  • Iris Preset Portability.iris presets now embed their source image (base64) instead of only numeric parameters, so loading a preset reproduces the exact same sound regardless of what image happens to be loaded on the track.
  • "Save As..." — a third option next to "Save" and "Save as Copy" in the project save dialog, which switches the active project path to the new file location.
  • Small Fixes — corrected Saturator's Mix/Output knobs writing to parameter indices the engine doesn't use (and removed two knobs — Bias/HPF — that never existed in the engine), and fixed Arrangement's Pencil tool drawing 1-bar blocks instead of full-length blocks for audio clips with no explicit sample end set.

Over the past ten days, Omni gained an entirely new sandboxed plugin format, AI-powered stem splitting and two new neural FX, a rebuilt Chorus and a sweep of automation fixes across the effects catalog, a much deeper Sampler engine, and a long list of real-time safety and VST3 stability hardening. Update to build ef88f67 today! 🚀