A fix release, and the fixes are audible. Five drum part types have been quietly generating the same rhythm as each other since they shipped; break and fill placement has been counting in 4/4 on sets that aren't. Both are corrected here — which means some presets now generate different notes than they did in 1.6.2.
Your crash, fill and percussion stop copying the kick
HiHatPlus, Percussion, Crash, Fill and Roll had no Euclidean cell of their own, so all five fell back to the same generic 4-pulse pattern. A crash hit, a drum fill and a shaker part produced the literal identical rhythm, differing only by seed and pad.
Each now has its own cell, authored per part and checked by ear: sparse loud accents for Crash, dense pre-transition activity for Fill, off-grid movement for Percussion.
This changes generated output. Any preset using those five part types will produce different notes than it did in 1.6.2. Every other part type is untouched.
Bars that land where your meter says
BreakOverlay computed step offsets from a hardcoded 4/4 sixteenth, even though it already carried the real meter and derived bar boundaries from it. At any non-4/4 meter, step N landed on the wrong beat. Break and fill steps now use the same grid the rest of generation does — which also realigns them with the shadow kick grid they are supposed to lock to.
The installer stops refusing while Live is open
It used to exit with an error if Ableton was running, which is a support ticket for something you can solve yourself. Now it warns, proceeds, and tells you to restart Live.
That matters because Live reads the Vibrai device and the remote script at startup. Install over an open Live and the new files sit on disk unused. The installer can't tell you that — nothing inside a macOS package reaches your terminal — so vibrai version does:
vibrai versionIt now names any bridge serving a different build than the CLI and tells you to restart Live. Believe it over the installer's "successful".
Three JSON fields that were reporting the wrong number
If you script against Vibrai's --json output, read these — each is a breaking change to a value you may have compensated for:
scene_indexwas reported raw and 0-based bynotes set/notes addand their MCP siblings, whiletrack_idbeside it was already converted to the 1-based wire format. The write itself was always correct; only the reported number was off by one. If you were subtracting 1, stop.automation renderemitted a raw Live track id, a convention belonging to the olderautomation apply. It now matchesrender_automation, which never had the ambiguity.generatereturnedwarnings: nullwhen there was nothing to report, whileplanreturned[]for the same key. It is always an array now. Code branching onwarnings === nullwill take the other branch.
Also in this release
- 12 shipped genre files carried
automation:blocks that pointed at nothing and were silently skipped every render. Removed. vibrai updatecan no longer leave you with new CLI binaries and an untouched Ableton device — the Ableton-side reinstall now runs before the binary swap, not after.- The MCP user guide documents the eight generate-time style knobs (
swing,humanize,ornament_density,dropout,gate,native_randomization,bass_motion,kick_relation). They were only in the older combined guide before.
Full list of merged pull requests
What's Changed
- ci(migration): stub migrate-secrets.yml on main so workflow_dispatch can resolve it by @gitizenme in cssllcio/Vibrai#790
- docs(plan): migration copies secrets pre-transfer instead of regenerating them by @gitizenme in cssllcio/Vibrai#791
- docs(triage): route non-release work to programme milestones, not version numbers by @gitizenme in cssllcio/Vibrai#793
- docs(plan): the copy tool is now one commit + a tag; runbook knows both refs by @gitizenme in cssllcio/Vibrai#794
- docs(plan): migration timing — the v1.7.0 → v1.8.0 gap, event-triggered by @gitizenme in cssllcio/Vibrai#797
- Demo shorts Phase 1: docs-driven episode toolchain (spec, stage/shoot/check-release, S01–S03) by @gitizenme in cssllcio/Vibrai#799
- v1.6.3 release plan: spec + implementation plan (28 issues → 24 tasks) by @gitizenme in cssllcio/Vibrai#792
- feat(mix): resolve compression targets through Live's own display units (#777) by @gitizenme in cssllcio/Vibrai#801
- shorts: recorder = ScreenFlow (D7), per-display stage layout (D2′), HID hotkeys, driver focus, Voicebox VO bed by @gitizenme in cssllcio/Vibrai#804
- v1.6.3: 23 tasks closing 26 issues by @gitizenme in cssllcio/Vibrai#811
- docs: version stamping + vibrai doctor — design and implementation plan (#795, #796) by @gitizenme in cssllcio/Vibrai#812
- release-plan: every plan ends with a release-candidate task by @gitizenme in cssllcio/Vibrai#814
- Installer no longer fails on a running Live; report stale bridges instead by @gitizenme in cssllcio/Vibrai#817
- docs: add brand handoff bundle (briefs, reference material, apply script) by @gitizenme in cssllcio/Vibrai#822
- v1.6.3 triage: clear four milestone issues (#806, #385, #415, #467) by @gitizenme in cssllcio/Vibrai#824
- Scoping gate: window the closed-issue query server-side (#826) by @gitizenme in cssllcio/Vibrai#831
- docs(plan): record the approved exception for #467's unverified integration fix by @gitizenme in cssllcio/Vibrai#836
- Claude/release v1 6 3 3350ca0a by @gitizenme in cssllcio/Vibrai#841
Full Changelog: cssllcio/Vibrai@v1.6.2...v1.6.3