Repository navigation
v0.3.6 - Sample & Hold · Slew · Chaos · Euclidean sequencer · engine fixes
Three new modulators, Euclidean sequencing, and a stack of correctness + performance fixes.
Downloads
- Windows installer:
dataFLOU_compositor-0.3.6-win-x64.exe(NSIS, recommended) - Windows portable:
dataFLOU_compositor-0.3.6-portable.exe(single-file, no install) - macOS:
dataFLOU_compositor-0.3.6-mac-universal.dmg(Universal; Intel + Apple Silicon). Unsigned - ctrl-click → Open the first time to bypass Gatekeeper.
What's new
New modulators (modular-synth inspired)
- Sample & Hold: classic S&H with optional cosine-smoothed output and a
Probabilityknob that lets a clock tick occasionally hold the previous sample (Turing-Machine-style locked-in feel). - Slew: random target at the clock rate, glides toward it with independent rise/fall half-life (1 ms – 60 s each). Asymmetric rise/fall gives analog envelope character; OFF target mode is a predictable ±1 square-wave glide.
- Chaos: logistic-map iteration
x ← r · x · (1 − x).r3.4 – 4.0 spans stable → onset-of-chaos → period-3 window (3.83) → fully chaotic (4.0). Deterministic but feels random. - All three share the existing Free Hz / BPM-synced (dotted/triplet) clock controls and Unipolar / Bipolar output modes, so they drop in alongside LFO-style workflows.
Euclidean sequencer
- New Pattern: Steps (cycle) | Euclidean selector at the top of the Sequencer block. Euclidean mode exposes Pulses and Rotate with a live preview row (filled = hit, outlined = rest, blue-ringed = playing step).
- Hits emit
stepValues[i]normally; misses emit no OSC so the receiver holds its last value. Pattern comes from Toussaint's angle method, memoized per (pulses, steps, rotation) triple. - Cell badge shows
EUC 3/8(orEUC 5/8 +2with rotation).
Follow actions finally work everywhere
- Stale-closure fix: the duration-timer held a reference to the scene object at trigger time. Edits made mid-duration (changing
nextModeormultiplicatorin the UI) never took effect until the next retrigger. Now the timer re-reads the scene from the live session on every fire. - Empty-grid fallback:
next/prev/first/last/any/othersilently turned into Stop when nothing was placed in the Sequence grid. Engine now walks the palette (session.scenesin order) as a fallback, so follow actions work out of the box even before you arrange anything in the Sequence view.
Stop actually stops
- Removed the legacy "keep-alive carve-out" where modulation/sequencer kept the scene alive after the duration elapsed.
Stopnow morphs every armed cell to 0 over itstransitionMsand clearsactiveSceneId. Clean full stop.
Correctness + polish
- S&H smooth mode math fixed: cosine period was
2πinstead ofπ, so the output wobbled prev → held → prev inside every sample period instead of smoothly tweening prev → held. - Shutdown sequencing: duplicate
before-quithandlers consolidated into a single idempotentshutdown(). Autosave + engine no longer double-stop, OSC flush timer clears in the correct order. - Next dropdown widened: "Previous", "First", "Last" etc. no longer crop on narrow scene columns.
- MetaKnob is memoized: parent re-renders no longer ripple through all 8 visible knobs. Smoother during MIDI CC sweeps and bank switches.
Cleanup
- Dead
StatusBarcomponent deleted fromSequenceView(~100 lines) - the globalTransportBarhas been doing the job since 0.3.5.