Build: 56f30cf | 15–17 kwietnia 2026
✏️ Handmade LFO — narysuj własny kształt fali
Rack Modulacji wzbogaca się o nowy typ kształtu LFO: Handmade. Zamiast wybierać gotowy preset (sinus, piła, kwadrat…), rysujesz własny kształt myszą — bezpośrednio na płótnie w UI.
- 256-punktowa tablica wavetable z 4-punktową interpolacją Hermite — płynne odtwarzanie bez schodkowania
- Interaktywne płótno rysowania — ciągły drag myszy, stroke interpolowany między klatkami
- Siatka i wskaźnik fazy — widzisz dokładnie, w którym miejscu cyklu jest modulator w czasie rzeczywistym
- Wbudowane presety w rozszerzonym edytorze: Tri, Saw, Sqr, Half, Bump — szybki punkt startowy
- Przyciski Smooth (wygładzanie krzywej) i Reset (powrót do płaskiej)
- Przycisk Expand otwiera większe okno edytora dla precyzyjnej pracy
- Tablica zapisywana i wczytywana z projektem (
#[serde(default)]— pełna kompatybilność wsteczna)
Pod maską: tablica przechowywana jako Box<[f32; 256]> — zero alokacji w callbacku audio. Komenda silnika SetLfoHandmadeWavetable przesyła nową tablicę przez bounded channel.
📊 Wielocelowy Analizator Widma
Analizator widma FFT działa teraz jako wielocelowy overlay — możesz mieć go otwartego jednocześnie w wielu slotach EQ i filtrów, na różnych ścieżkach:
- Każdy slot EQ/filtra ma własną instancję analizatora — niezależne nakładki w każdym oknie FX
- Silnik śledzi aktywne taps i wysyła dane FFT tylko dla aktywnych instancji — zero overhead przy zamkniętych panelach
- Nowa komenda
SubscribeSpectrum/UnsubscribeSpectrum— precyzyjna rejestracja i wyrejestrowanie bez wycieków - Naprawa logiki tap — brak duplikatów przy szybkim otwieraniu/zamykaniu paneli
- Czyszczenie martwego kodu w panelu FX mod
📦 Per-track Bounce — identyczny z live playback
Bounce per-track przeszedł kompletny rewrite. Poprzednia implementacja przechwytywała sygnał po vol/pan, co oznaczało, że eksportowany plik różnił się od tego, co słyszysz podczas odtwarzania. To zostało naprawione:
- Bounce przechwytuje teraz surowy sygnał post-FX, przed vol/pan — identycznie jak wbudowany render offline
- Podczas bounce'u wyjście audio jest wyciszone — brak podwójnego odsłuchu przez monitor
- Wynik bounce'u jest 100% identyczny z live playback — null test przechodzi
- Silnik raportuje postęp przez nowe komendy
StartPerTrackBounce/PerTrackBounceDone - Logika bounce wydzielona do
bounce.rs— czystsza architektura, mniej kodu wupdate_logic.rs
🧊 Freeze w Session View — poprawki i metadane
Track Freeze w widoku sesji działał nieprawidłowo przy klipach pętlowych — długość pętli nie była przekazywana do renderera offline. Naprawione:
- Długość pętli freeze poprawnie wyliczana i przekazywana do silnika przy zamrażaniu
- Metadane freeze (stan, ścieżka do pliku) propagowane przez cały potok: silnik → UI → projekt
- Nagłówki ścieżek w aranżacji wyświetlają status freeze z poprawnym stanem po wczytaniu projektu
- Poprawka w
freeze_render.rs— render teraz zawsze obejmuje pełną długość klipu sesji
🔌 Picker Wtyczek z Filtrowaniem po Typie
Okna wyboru instrumentu i efektu w Session View i Mixerze pokazują teraz zeskanowane wtyczki CLAP/VST3 z przeglądarki — nie tylko builtin syntezatory:
- Lista zeskanowanych wtyczek filtrowana automatycznie: instrumenty w pickerze instrumentów, efekty w pickerze FX
- Wspólna logika ładowania — pikery w Session i Mixerze korzystają z tego samego kodu
- Dane z przeglądarki wtyczek przepływają poprawnie do UI sesji — brak pustych list po pierwszym skanie
- Załadowanie wtyczki z pickera przypisuje ją bezpośrednio do slotu ścieżki
🧩 Modularyzacja Panelu Wtyczek CLAP/VST3
Panel sterowania wtyczką (parametry, GUI, sidechain) został wydzielony do osobnego modułu:
clap_plugin_panel.rs— dedykowany panel dla CLAP z kompletną obsługą parametrów, gesture begin/end, kIsList- Naprawione mapowanie
kIsListdla VST3 — lista wartości wyświetlana jako menu, nie suwak - Asynchroniczne ładowanie parametrów z logiką retry — brak pustych paneli przy wolno inicjalizujących się pluginach
- Sanityzacja zakresów pokręteł — żaden parametr nie może wychodzić poza zdeklarowany min/max
- UI wymuszony do języka angielskiego dla parametrów pluginu — spójna prezentacja
device.rs→device/mod.rs— refaktoryzacja zgodna z zasadą modulowości projektu
🗑️ Spójny Przycisk Remove na Kartach FX
Każda karta efektu w łańcuchu FX ma teraz jednolity przycisk Remove — wygląd i zachowanie spójne na wszystkich typach efektów (builtin, CLAP, VST3, Return Bus FX, Master FX). Poprzednio część kart nie miała przycisku usuwania lub miała go w innym miejscu.
🥁 Tomic — Malowanie Drag i Slide Toggle
Step sequencer Tomic (perkusja/groove) otrzymał tryb rysowania:
- Draw mode — przeciągnięcie myszy przez kroki aktywuje lub dezaktywuje je w jednym ruchu, bez klikania każdego osobno
- Tryb rysowania działa na wszystkich lane'ach: velocity, probability, slide, custom CC
- Slide toggle — nowy lane dla slide między krokami (legato efekt dla perkusji z portamento)
- Workaround dla
egui pointer.latest_pos— poprawne śledzenie kursora przy szybkim ruchu poza granicami widżetu
⚙️ Jakość kodu i naprawki Clippy
- Naprawa ostrzeżeń Clippy:
collapsible-if,precedence,let-and-return,is_multiple_of,let-unit-value— zerowe ostrzeżenia nacargo clippy -- -D warnings - Martwi kod usunięty z paneli modulacji i analizatora
- Formatowanie (
cargo fmt) na wszystkich zmodyfikowanych plikach
Omni jest aktywnie rozwijany — kolejna aktualizacja już wkrótce. 🚀
Handmade LFO — który kształt narysujesz jako pierwszy? Napisz do nas.
