Skip to content

Releases: timncox/smack-versio

v0.4.1 — the GATE switch is called MODE

Choose a tag to compare

@timncox timncox released this 20 Aug 23:05
e9b9631

The firmware is byte-identical to v0.4.0 (sha256 53735983…). If you are already running v0.4.0, there is nothing to reflash. This release exists for the faceplate and the documentation.

What changed

The lower switch was legended GATE back when it selected how the gate jack was read. It stopped doing that in v0.4.0, when the clock source moved into the config layer — which left a switch called GATE that mostly chooses what the button does, on a panel whose gate input is legended CLK.

It reads MODE now, positions PUNCH / NORM / DUAL. Same behaviour, correct name.

Regenerated to match: the faceplate template, the print sheet, the one-page reference, the manual and the site.

Why re-cut a release for a label

The faceplate template ships inside the zip and gets printed onto real panels. A wrong legend there is permanent in a way a wrong line in a manual is not. v0.4.0 had been public for under an hour, so this was cheap.

If you are installing for the first time

Everything from v0.4.0 applies — the punch button, the triple-tap config layer and the DJ filter are all here. Flash smack_versio-0.4.1.bin from Noise Engineering's firmware page: no Daisy bootloader, no toolchain. The zip adds the manual, the flashing guide, the faceplate template and a BOOT_SRAM build for Daisy tooling.

Third-party firmware, not a Noise Engineering product and not supported by them. Fully reversible — flashing any official Versio firmware puts the module back.

Manual: https://timncox.github.io/smack-versio

v0.4.0 — a config layer, a punch button, and a DJ filter

Choose a tag to compare

@timncox timncox released this 20 Aug 21:33
0cf2fb5

Three new things on a panel that had run out of room, paid for by compiling the flash-bound build for size.

Flash from Noise Engineering's firmware page with smack_versio-0.4.0.bin — no Daisy bootloader, no toolchain. The full zip adds the manual, the flashing guide, the faceplate template and a BOOT_SRAM build for anyone using the Daisy tooling.

PUNCH — GATE switch left

The button becomes a momentary effect punch. Hold it and every slice is forced through one chosen effect; release and the pattern snaps back.

Nothing else is on the button in this position — no re-roll, no capture, no clear, no LIVE. A punch you have to think about is not a punch, and a gesture that might re-roll your pattern instead cannot be played hard. Capture in the centre position, then flip left to perform.

Punch CLEAN is worth trying first: instead of adding an effect it momentarily drops the glitch pattern, so a busy loop snaps back to unmangled for as long as you hold.

The config layer — triple-tap CAPTURE

Three knobs stop driving their printed functions and address a setting instead: PITCH picks its own second role, FX picks the punch effect, LENGTH picks how the gate is read. Any single tap leaves.

No cursor and nothing to scroll. With seven absolute controls on the front there is nothing for a menu to navigate, so all three settings simply show on the LEDs at once. Opening the layer to check a setting cannot change it — a knob is only adopted once you move it — and leaving hands the knobs back without jumping their normal functions.

The DJ filter — the PITCH knob's other job

Left sweeps a lowpass down to 40 Hz, right sweeps a highpass up to 6 kHz, and the centre is a true bypass. It runs last, after BLEND, across the whole output — so it works on your dry input before you have captured anything at all, which nothing else on this panel does.

It takes over when the knob next reaches the centre, not when you select it, so choosing the filter never drops one on a loop that is already playing.

Other changes

  • The GATE switch no longer selects a clock source. Auto already tells a steady train from sparse triggers, so that position was really a manual override for a rare case — a set-once decision, and set-once decisions moved to the config layer.
  • BOOT_NONE is now built at -Os. It had 4,056 bytes of headroom at -O3, less than one feature; it now links at 117,132 of 131,072 with everything above added.
  • The manual's claim that the two switches are mirror images of each other was wrong and is gone — left is left on both.
  • Corrected memory figures: the SDRAM pool is 32 MB and the buffer is 150 seconds.

Not a Noise Engineering product

Third-party firmware, not supported by Noise Engineering. Fully reversible — flashing any official Versio firmware puts the module back.

Manual and full documentation: https://timncox.github.io/smack-versio

v0.3.0 — flash it from Noise Engineering's own page

Choose a tag to compare

@timncox timncox released this 20 Aug 19:37
0e37242

No terminal. No bootloader. No extra tools.

Put the module in DFU — hold BOOT, tap RESET, release BOOT — then hand smack_versio.bin to Noise Engineering's firmware page. That is the whole procedure, and it is the same page you would use to put the module back to stock.

Confirmed on hardware 2026-08-20. The smack_versio.bin below is the exact image that was tested, not a rebuild of the same source.

What changed

Previous versions ran from QSPI behind the Daisy bootloader, which meant installing dfu-util, learning a button chord, and hitting a two-second window. This build is a plain internal-flash image at 0x08000000 — the same shape as the other third-party Versio firmwares, WTF! at 91 KB and FRGMNTS at 85 KB. Ours is 126,312 bytes.

Two builds

File Install Notes
smack_versio.bin NE's firmware page 126,312 B. Flash this one.
smack_versio-bootsram.bin Daisy programmer or dfu-util 132,492 B. Runs from QSPI, more room to grow, needs the bootloader installed once.

Also since v0.2.0

  • CPU is measured: 50–75% at the worst of several hard runs, with the 80% alarm never firing. That was the one question the whole design rested on.
  • -Os -flto across libDaisy costs no visible CPU and did not break anything — under 50% driven hard on the shipped build.
  • Boot is quicker: the bootloader's 2.5-second grace period is gone entirely.

Still worth knowing

Third-party firmware. Noise Engineering did not write it and cannot support it — please do not contact them about it. Installing is fully reversible: flash any official NE firmware from that same page and the module is back to stock.

Do not use v0.1.0. It hard-faults on boot.

Manual: https://timncox.github.io/smack-versio/

v0.2.0 — works on hardware

Choose a tag to compare

@timncox timncox released this 20 Aug 14:31
43a813d

First version that has been played. This build still needs testing — see below.

Do not use v0.1.0

It hard-faults on boot. The audio callback treated libDaisy's size as frames when it is samples, overrunning its buffer every block; the module emitted a steady buzz and nothing else. Fixed here.

What was wrong

LIVE mode had never fired on hardware, on any build. libDaisy links --specs=nano.specs, and newlib-nano leaves _printf_float as a weak reference nothing defines — so a %f conversion silently emits nothing. The engine returned play_frame as "%.0f", so atoi saw 0 and the wrap trigger compared 0 < 0 forever. Sibling params used %d/%u and worked, which is why the LED went cyan and the feature looked enabled while doing nothing. Every native test passed throughout — glibc formats floats, so no host test can reach this.

The loop recorder stalled behind the playing loop. The buffer was sized for one longest-possible loop when it needs two, since the playing loop is protected from the recorder. Past the stall every capture silently returned pre-stall audio. Measured: a capture after the stall point returned 0% fresh audio, now 93.7%; LIVE at 60 BPM was stalled 49 of 60 samples across a 300 s run, now 0.

Also fixed since v0.1.0: the block-size hard fault, LED PWM running at 125 Hz where libDaisy expects 1 kHz, BLEND not acting as a real dry/wet, and knob artifacts from pattern rolls in the audio interrupt.

Confirmed by ear

Audio, capture, the effects, and the knob layout — derived from NE's panel drawing, then checked knob-by-knob on a module.

Still needs testing

  • The LIVE and recorder fixes in this binary have not been heard. Both have native tests; neither has run on hardware.
  • The boot CPU report has never been read. Play hard, power cycle, read the LED bar — that is the one measurement worth sending back.

Notes

Button is tap = re-roll, hold >0.6 s = capture, hold >2 s = clear, double-tap = LIVE. LIVE refreshes once per loop pass, so LENGTH sets the interval — at 256 steps that is 32 s and looks dead; turn LENGTH down.

Third-party firmware. Noise Engineering did not write it and cannot support it — please do not contact them. Installing is reversible: flashing any official NE firmware restores the module to stock.

Manual: https://timncox.github.io/smack-versio/


Assets refreshed 2026-08-20. The zip was rebuilt with a corrected faceplate print sheet: the GATE switch legend printed over the CAPTURE button hole, and the button caption printed in the warning colour despite its position being confirmed. The firmware binary is byte-identical — SHA-256 a1e536af… is unchanged, so any checksum you already recorded still matches. Only the panel template changed.

v0.1.0 — DO NOT FLASH (hard-faults on boot)

Choose a tag to compare

@timncox timncox released this 09 Aug 15:23

⚠ Do not flash this. Use v0.2.0.

This build hard-faults on boot. The audio callback treated libDaisy's size parameter as a frame count when it is a sample count, so it overran its buffer on every block. A module flashed with this emits a steady buzz and responds to nothing — no knobs, no switches, no capture.

It was tagged before the firmware had ever run on hardware. It has since been run, and this is what happened.

Nothing here is dangerous to the module: flashing v0.2.0, or any official Noise Engineering firmware, recovers it completely. The assets stay published only so the checksums on this tag remain honest.

The original notes follow.