Build: 940f719 | 17–22 kwietnia 2026
🎛️ Sequenced FX — własny Effectrix w Omni
Nowy efekt Sequenced FX to pełnoprawna siatka sekwencyjna w stylu Effectrix — każdy wiersz uruchamia inny efekt w wybranym kroku taktowym, tworząc ewoluujące, rytmiczne wzorce brzmieniowe niemożliwe do uzyskania klasycznym chainiem FX.
- Wiersze audio i MIDI w jednej siatce — wiersz może sekwencjonować efekt audio (reverb, delay, saturator…) lub MIDI FX (arp, chord, transpose), wszystko na jednym gridzie
- Per-FX-type kolory — każdy typ efektu ma swój kolor, natychmiast widoczny na siatce bez czytania etykiet
- Pełnoprawne okna parametrów — kliknięcie wiersza otwiera ten sam panel UI co w zwykłym chainie FX (EQ z krzywą, Reverb z czasem RT60, kompressor z charakterystyką…)
- Drag-to-draw/erase — przeciągnięcie aktywuje lub wymazuje kroki; PPM kasuje pojedynczy krok
- Mute/solo per wiersz — izoluj jeden efekt bez usuwania pozostałych
- Random i Shift — generator losowych wzorców i przesunięcie całej sekwencji w fazie
- Polirhytm — każdy wiersz może mieć własną długość kroku (1/4 do 1/32), niezależnie od pozostałych
- Playhead indicator — widoczna pozycja odtwarzania na siatce w czasie rzeczywistym
- Presety (.sfxp) — zapis i odczyt całej siatki (grid + parametry wszystkich FX + ustawienia polirhytmu) do pliku JSON
- Pełna persistencja projektu — grid, typy efektów, kroki i parametry zapisane w pliku .omni;
#[serde(default)]na nowych polach zachowuje kompatybilność wsteczną - Dostępny w dropdownach track FX, master FX i return bus FX
OmniScript w Sequenced FX
Wiersze Sequenced FX akceptują teraz skrypty OmniScript jako efekty:
- Audio row (.omfx) — ładujesz skrypt OmniScript jako procesor audio w jednym wierszu siatki
- MIDI row (.omfx midi) — skrypt OmniScript jako MIDI FX; silnik dispatchuje go przez
ScriptFxpath, identycznie jak inne MIDI FX
Kombinacja: sekwencja kroków → wyzwolenie skryptu → transformacja MIDI lub audio. Pierwszy krok w kierunku pełnej programowalności rytmicznej.
☁️ GranularClouds — granularny FX inspirowany Clouds
Omni dostaje nowy efekt: GranularClouds — granularny procesor brzmieniowy inspirowany słynnym modułem Mutable Instruments Clouds.
- Granularny bufor z regulowaną pozycją, rozmiarem ziarna i gęstością
- Parametry: Position, Size, Density, Texture, Pitch, Blend (dry/wet) — identyczna terminologia co oryginalny moduł
- FabFilter-quality UI — profesjonalna wizualizacja z animowanymi ziarnami na tle spektrum; projektowana tak samo jak FabFilter Pro-R
- Pełna integracja: track FX, return FX, master FX, mod routing (pierścienie modulacji na każdym parametrze)
- Przeszedł wszystkie universalne testy FX: bypass transparent, silence→silence, brak NaN, round-trip parametrów
🔔 Modal Resonator — fizyczne modelowanie rezonansów
Modal Resonator (port Rings) to efekt oparty na fizycznym modelowaniu modalnym — symuluje rezonanse strun, płyt i dzwonów:
- Modele: struna, płyta modalna, symfoniczne dzwony, modele uderzeniowe
- Parametry: Frequency, Structure, Brightness, Damping, Position, Chord
- Profesjonalne UI w stylu FabFilter z wizualizacją widma modalnego — nagłówki sekcji zawsze poziomo (brak pionowego tekstu)
- Sekcje parametrów z animowanym podglądem odpowiedzi częstotliwościowej
- Obsługiwany w mod routingu — możesz modulować np. Frequency przez LFO lub Envelope
🎹 Expression Lanes — 10 trybów ekspresji
Piano Roll wzbogaca się o Expression Lanes — edytor ekspresji per-nuta z pełną gamą trybów CLAP/VST3:
- 10 trybów ekspresji: Velocity, Pan, Pitch (±24 półtony), Pressure (aftertouch), Volume, Timing, Release Velocity, Expression CC, Brightness, oraz Custom CC
- Lollipop UI — każda wartość wyświetlana jako słupek z kółkiem na górze, identycznie jak w Bitwig i Logic
- Silnik przesyła wartości ekspresji przez poprawne CLAP Expression IDs: PAN=1, VOLUME=0, TUNING=2, PRESSURE=6 — zgodność ze specyfikacją CLAP 1.x
- Ekspresja na poziomie per-voice: Vital, DIVA i inne MPE-świadome pluginy reagują poprawnie
- Wartości pitch (±24 st) wkładane jako
pitch_offsetdo zdarzeńToggleNote/UpdateNote— zgodność z wszelkimi backendami syntezy - Polysynth i BassSynth obsługują per-voice pan, volume, detune z expression lanes
🎼 Smart Progression Panel — 50+ progresji akordów
Piano Roll otrzymuje panel Smart Progression — generator progresji akordów zintegrowany ze skalą i systemem akordów:
- Ponad 50 gotowych progresji podzielonych na kategorie: Pop, Jazz, Blues, Klasyczne, Modalne, filmowe i inne
- Losowe generowanie — przycisk Randomize dobiera progresję dopasowaną do aktualnej skali i trybu
- Wygenerowane nuty są automatycznie zaznaczane po wstawieniu — możesz od razu transponować, przekształcać lub przenosić bez ręcznego zaznaczania
- Pełna integracja z systemem skali/akordu — progresja generuje właściwe stopnie harmoniczne w aktywnej skali
⌨️ Profesjonalny System Skrótów Klawiaturowych
Omni dostaje pełnoprawny, konfigurowalny system skrótów klawiaturowych:
- Key Map Mode — aktywowany przez dedykowany przycisk lub skrót; na każdym kontrolowalnym elemencie wyświetlane jest przypisane klawiszowe, klikalne bez myszy — analogia do Ableton's Key Map Mode
- Globalne akcje: Ctrl+N (nowy projekt), Ctrl+O (otwórz projekt), Ctrl+Shift+M (dodaj ścieżkę MIDI), Ctrl+Shift+A (dodaj ścieżkę audio)
- F9 — toggle natywnego GUI pluginu (ShowPluginGui) bez otwierania menu kontekstowego
- Mapowanie klipów i scen — możliwość przypisania dowolnego klawisza do wyzwalania klipu lub sceny w Session View
- Skróty widoczne w panelu Ustawień (Settings) — pełny podgląd aktualnego mappingu
🔌 VST3 Sandboxing i Watchdog Pluginów
Architektura hostowania pluginów zewnętrznych przeszła poważną aktualizację bezpieczeństwa i niezawodności:
- VST3 Sandboxing — pluginy VST3 uruchamiane są teraz w procesie potomnym (
omni_plugin_host) z komunikacją przez pamięć współdzieloną; crash pluginu nie zabija hosta - Refaktoryzacja backendu pluginu — spójna abstrakcja dla CLAP i VST3 w trybie sandbox, mniejszy coupling między modułami
- Watchdog Thread dla resurrekcji — dedykowany wątek monitoruje procesy pluginów; po wykryciu zawieszenia lub crasha automatycznie restartuje plugin i przywraca stan parametrów bez ingerencji użytkownika
- Watchdog działa niezależnie od głównego wątku GUI i wątku audio — brak wpływu na latencję
🗺️ Automation w Aranżacji — Curve Handles i Multi-select
Edytor automatyzacji w widoku Aranżacji przeszedł znaczące ulepszenia UX:
- Per-clip lanes automatyzacji — każdy klip może mieć rozwinięty panel automatyzacji bezpośrednio pod sobą; linie można zwijać i rozwijać
- Curve handles — uchwyty krzywizny między punktami automatyzacji; przeciągnięcie zmienia interpolację z liniowej na Beziera bez dodawania nowych punktów
- Multi-select automatyzacji — zaznaczenie wielu punktów jednym prostokątem; operacje (move, delete, paste) działają na całym zaznaczeniu
- Paste Anchor — wklejone punkty kotwiczą się do pozycji kursora, a nie do pozycji oryginalnego copy — zachowanie identyczne z Ableton
- Dup-N — duplikacja zaznaczonych punktów N razy z automatycznym odsunięciem w czasie
- Naprawiona utrata zaznaczenia przy kliknięciu bez ruchu — kliknięcie na zaznaczonym obszarze nie kasuje już zaznaczenia
- Mini-klipy w osi czasowej wyświetlane przy wysokich poziomach zoomu; wyższy zakres zoomu (więcej klatek na ekran)
🥁 TOMNIC Drum Synth — nowa nazwa, nowe możliwości
Step sequencer perkusyjny zmienił nazwę z TOMiC na TOMNIC (Tone-OMNIc Controller) i zyskał nowe możliwości:
- Per-channel step rate — każdy kanał perkusji może mieć własną rozdzielczość rytmiczną (1/4, 1/8, 1/16, 1/32), niezależnie od pozostałych; naturalne polirhytmy między kick, snare i hi-hat
- Beat-aligned step grid — siatka kroków wyrównana do pozycji beatowych; kolumny lane panelu synchronizują się z gridm bez rozbieżności przy niestandardowych ratach
- Per-channel rate z pętlą iteracyjną — poprawne wykrywanie wrapowania pętli per-kanał (nie globalnie), eliminuje błędne triggery przy zmianie tempa
- Preset save/load — zapis i wczytywanie całej konfiguracji TOMNIC (kanały, kroki, prędkości, ustawienia syntezy) do pliku JSON
⚡ Zero-Alloc na Całej Linii MIDI FX
Trzy znaczące optymalizacje wydajnościowe eliminujące alokacje na wątku audio:
- Zero-alloc MIDI FX trait — nowe metody
process_into(),bypass_into(),reset_into()przyjmują wyjściowy bufor jako argument zamiast alokowaćVecw każdym wywołaniu. Stary interfejs (process()→Vec) usunięty ze ścieżki hot path. - Zero-alloc Sequenced MIDI FX —
SequencedMidiFx::process_midi()przepisane tak, by nie alokować przy żadnym wywołaniu w callbacku audio - Zero-alloc bounce capture — ścieżka przechwytywania per-track bounce gwarantuje zero alokacji: pre-allocowany ring buffer, bez tymczasowych Vec-ów przy każdym bloku audio
- Naprawa: zdarzenia MIDI przechwytywane przed MIDI FX chain — eliminuje double-processing (zdarzenia nie wchodziły drugi raz przez chain przy każdym ticku)
🔧 Naprawki i Jakość Kodu
- Warp marker fix —
start_offsetignorowany gdy istnieją warp markery; zachowanie identyczne z Ableton/Bitwig: warp markery definiują mapowanie absolutne, nie relatywne do start offset - Dwuklik na klipie audio otwiera Sample Editor (nie Piano Roll) — logika rozróżnia klipy audio od MIDI
- Presety syntezatorów naprawione: zapis zawsze pełnego zestawu parametrów; wczytywanie JSON odporne na brakujące pola; UI synchronizuje się poprawnie po wczytaniu
Button::roundingzastąpionecorner_radius— zgodność z najnowszym API egui (eliminacja deprecated warning)- Zero ostrzeżeń Clippy w całym workspace —
cargo clippy -- -D warningsprzechodzi zielono na wszystkich 5 crate'ach
To największy sprint od początku projektu — pięć dni, kilkanaście nowych systemów. Omni szybko zbliża się do poziomu, na którym można budować poważne produkcje od początku do końca bez wychodzenia z aplikacji. 🚀
Sequenced FX — który efekt sekwencjonujesz jako pierwszy? Podziel się w komentarzu.
