Skip to content

v0.2.0 — works on hardware

Choose a tag to compare

@timncox timncox released this 20 Aug 14:31
· 36 commits to main since this release
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.