89 lines
4.9 KiB
Markdown
89 lines
4.9 KiB
Markdown
# v1.2.0
|
||
|
||
The StableStep release. Two flagship features: **StableStep**, a Stable Audio 3-powered
|
||
instrumental refiner that finally kills VAE fizz at the source, and **MIDI Studio**,
|
||
audio-to-MIDI transcription running on our own native GGML port of MuScriptor. Plus
|
||
timestep-gated adapters, parameter profiles, two new MDMAchine plugins, and a stack of fixes.
|
||
|
||
## ✨ StableStep — Stable Audio 3 instrumental refining
|
||
|
||
Generated tracks carry a characteristic high-frequency "fizz" from the ACE-Step
|
||
autoencoder. StableStep re-renders the instrumental through **Stable Audio 3**
|
||
(SDEdit-style partial re-noising, 8-step distilled rectified flow) so the fizz band is
|
||
*regenerated* with real spectral detail instead of filtered. Vocals are never touched:
|
||
BS-RoFormer splits them out (lead **and** backing), PP-VAE polishes them, and they're
|
||
remixed over the refined instrumental — the exact complement split guarantees nothing
|
||
is lost, and lyrics stay bit-identical.
|
||
|
||
- **One toggle + a strength slider** (0.10–0.60) in Post-Processing. The refine prompt is
|
||
derived from each track's own caption automatically (vocal descriptors stripped).
|
||
- **Runs natively in the C++ engine** — no Python. Two backends, selectable in-app:
|
||
- **GGML** (4 GGUF files, ~5.8 GB): CUDA, Vulkan, and CPU. The fastest option on
|
||
NVIDIA in our testing — ~2 s of compute for a 30 s clip on an RTX 5090.
|
||
- **ONNX Runtime / TensorRT** (~12 GB): NVIDIA alternative path.
|
||
- **Numerically validated end to end**: every ported component matches the reference
|
||
implementation at cosine > 0.9998; the two backends agree with each other at 0.9999.
|
||
- **Model Manager → StableStep tab** downloads either backend set from
|
||
[scragnog/HOT-Step-CPP-StableStep](https://huggingface.co/scragnog/HOT-Step-CPP-StableStep),
|
||
with license acceptance built in (Stability AI Community License — free for individuals
|
||
and orgs under $1M revenue). *Powered by Stability AI.*
|
||
- New engine surface for tinkerers: `POST /sa3-refine` (strength/steps/sampler/backend)
|
||
and SuperSep `level=4` — a dedicated vocals+instrumental split.
|
||
|
||
## 🎼 MIDI Studio — audio-to-MIDI on the native engine (#80)
|
||
|
||
Transcribe any library track or uploaded WAV/MP3 into multi-track MIDI (34 instrument
|
||
groups + drums) using **MuScriptor** (Kyutai & Mirelo) — ported phase by phase to our own
|
||
C++/GGML `ace-midi` engine and validated **byte-exact** against the reference
|
||
implementation. A 3.5-minute track transcribes in ~50 s on an RTX 5090; no Python anywhere.
|
||
|
||
- **Live piano roll** fills in while transcription runs, with per-channel instrument
|
||
coloring; crossfade playback slider between the original audio and the MIDI rendition,
|
||
plus per-instrument mute/solo.
|
||
- **Three model sizes** (small 103M / medium 307M / large 1.4B) with in-app gated-weight
|
||
download flow (weights are CC BY-NC 4.0 — non-commercial).
|
||
- Engine work along the way: exact-parity mel frontend + KV-cache greedy decode, F16 KV
|
||
cache to fix CUDA decode corruption, byte-exact event decode + MIDI writer.
|
||
- `ace-midi` ships in every platform bundle.
|
||
|
||
## 🎛 Adapter system
|
||
|
||
- **Timestep-dependent adapter gating** (interval experts / MoE) — restrict any stacked
|
||
adapter to a step window, e.g. one adapter shapes structure early, another handles
|
||
detail late. UI windows are evaluated **per step** (not raw t), and they now compose
|
||
correctly with Adapter VRAM quant (previously a silent 32 GB blowup).
|
||
- **PEFT DoRA support** + per-module `alpha_pattern`.
|
||
- **`runtime_lowrank` mode** — factor-apply without materialized deltas: the lowest-VRAM
|
||
way to run big adapter stacks.
|
||
- **Merge (low VRAM)** — opt-in requant of merged weights back to the base's native
|
||
quant type (~¼ merged-DiT VRAM on a Q8 base).
|
||
- LoKr Kronecker-apply self-test (`HOTSTEP_KRON_TEST`); `gain_domain` parse fix.
|
||
|
||
## 📋 Parameter profiles
|
||
|
||
Save, apply, and delete named full-state snapshots of your generation parameters —
|
||
in-app, with JSON import/export, inline rename, and click-to-inspect.
|
||
|
||
## 🔌 Plugins (MDMAchine)
|
||
|
||
- **MD HT Scheduler V3** and **MD Trajectory Anchor V5**, with user manuals.
|
||
- Max inference steps raised 200 → 300 (UI + engine clamp).
|
||
|
||
## 🔧 Fixes & polish
|
||
|
||
- **Storm streaming**: stream died instantly (premature `close` on body consumption);
|
||
"Keep DiT & VAE loaded" is now honored between stream slots.
|
||
- **In-app restart** was dead on Windows (ping-as-sleep hang meant taskkill never fired).
|
||
- **Queue**: deleted songs pruned from the persisted queue on load; Nuke All Generations
|
||
clears the queue store and recent-songs cache.
|
||
- **Logs**: GGML debug spam dropped at source with digit-insensitive dedup; terminal
|
||
stick-to-bottom pin survives layout shifts.
|
||
- MCP: generating model name appended to song titles.
|
||
|
||
---
|
||
|
||
**Models:** StableStep sets are on
|
||
[Hugging Face](https://huggingface.co/scragnog/HOT-Step-CPP-StableStep) or one click away
|
||
in the Model Manager. MuScriptor weights are gated (free) — request access via the links
|
||
inside MIDI Studio.
|