crocus. verify

hardware verification checklist · run on the actual norns + grid + Minilab

A short, hand-runnable checklist for confirming the recent batch ships clean on real hardware. Each step has a setup, an action, and a clear pass/fail expectation.

Time: ~10 minutes You need: norns + grid (+ Minilab 3 for V3) Updated: 2026-05-13
V1 V2 V3 V4 V5

checklist

  1. V1 — Scale selection actually filters chord input
  2. V2 — Bass-mode round-trip restores the chord
  3. V3 — Hold button cycles play_style
  4. V4 — C7 spec dev: Free play_style ignores chord-type pads
  5. V5 — Smoke pass: a quick song

V1Scale selection

Confirms the scale-discoverability fix from commit 26b2911: editing any scale param auto-enables Key Mode so the snap actually changes what you hear.

V1.a Off-key root sounds wrong before, snapped after

  1. From a fresh script load (or after Reset to defaults), grid: hold maj (R2C3) and tap C# on row 8 (the cell just right of C). You hear a literal C#maj chord.
  2. Now navigate to the Options screen (E1 cycles to it). Scroll to scale_mode with E2; turn E3 once to Lydian (or any non-Natural mode).
  3. Look at key_mode in Options — it should now read ON automatically.
  4. Hold maj + tap C# again.

Pass: the second C# press snaps to a chord built from C major scale tones — sounds noticeably different from the literal C#maj. Top-left of the Home screen shows C maj lyd.

Fail: chord still sounds identical, or key_mode didn't auto-flip. Capture the maiden REPL output and report.

V1.b Pentatonic + Blues are reachable

  1. Options screen → key_quality: Major. Then scale_mode: turn E3 four times → reads Pentatonic. Top-left of Home screen shows C maj pen.
  2. Now key_quality: Minor. scale_mode: turn until you reach Pentatonic (mode 6) and Blues (mode 7). Top-left shows C min pen / C min blu.

Pass: both Pentatonic variants and Blues label correctly and are dial-reachable.

V2Bass-mode round-trip

Confirms the fix in commit 69cdfe2: switching out of Solo bass mode restores the chord notes (was stuck at "bass-only forever" before).

V2.a Solo → Chords Only restores the chord

  1. Hold maj + tap C on row 8 — you hear Cmaj plus a low C bass.
  2. Keep both pads pressed. Navigate to the Bass screen (E1) and turn E2 to Solo. Chord drops out; only the bass note remains.
  3. Turn E2 back to Chords Only.

Pass: the chord notes return, audible alongside the bass. Switching to Unison or Single Notes also restores them.

Fail (pre-fix behavior): only the bass keeps sounding; chord stays silent until you re-press the root.

V2.b Bass dial sweep is audible

  1. Hold maj + C.
  2. On the Bass screen, turn E3 (bass dial) from −2 through +2.

Pass: bass note octave shifts up and down audibly. Above +1 you may hit the chord-overlap range; that's normal.

If you can't hear bass at all, check that bass voice in PARAMS is set to a different nb voice than the chord (or to "share with chord"), and that bass_enabled is on (K2 on the Bass screen).

V3Minilab Hold button → play_style

NEW this batch: the Hold button on the Minilab 3 (which sends MIDI CC 64) cycles play_style Simple → Advanced → Free → wrap on each press. Sustain pedals plugged into the Minilab share CC 64 and behave the same.

V3.a Hold button cycles play_style

  1. Connect the Minilab 3 to the norns. Confirm in PARAMS > MIDI Input > MIDI In Device that the Minilab vport is selected.
  2. Open the Options screen. Scroll to play_style at the top — it should read Simple.
  3. Press the Minilab's Hold button once. Watch the Options screen.

Pass: on each Hold press, play_style advances Simple → Advanced → Free → Simple. Releasing Hold does NOT cycle (press-edge only).

V3.b Free style on the Minilab keyboard

  1. Press Hold twice so play_style is Free.
  2. Play single notes on the Minilab keyboard.

Pass: single notes play (no chord engine, no bass). Holding a Minilab pad (chord type) and pressing keys still produces single notes — chord type is ignored in Free.

V4C7 — Free + chord-type alone is silent

Spec deviation that appeared in early triage; verified clean in code on 2026-05-13. This step confirms the live behavior matches the spec: in Free play_style, pressing only a chord-type pad (no root) must NOT trigger the chord engine.

V4.a Chord-type pad alone in Free mode is silent

  1. Set play_style to Free (Options → play_style, OR press Minilab Hold twice).
  2. Make sure no roots are held.
  3. Press and hold the maj chord-type pad (R2C3) on the grid for 2–3 seconds. Don't touch row 8.

Pass: total silence. No chord, no bass, nothing.

Fail (would be C7 violation): a chord rings out from the chord-type press alone. Capture maiden REPL output and report.

V5Smoke pass — a quick song

Two-minute end-to-end sanity check covering chord engine, perf modes, scales, beats, FX. If this works, you're shipping.

V5.a The everything pass

  1. Load the script (it loads with bass already enabled and a polyphonic voice picked).
  2. Play a I IV V i progression in C minor — hold min, tap C; hold min, tap F (R8 col 9); hold maj, tap G (R8 col 11); hold min, tap C again.
  3. Add an extension — while holding the last C min, tap m7 on R4. Hear the new note added.
  4. Switch perf mode — E1 to Perform; E2 to Strum. Hold a chord and hear the cascade.
  5. Start beats — top-right cell of grid R1, OR K2 on the BPM screen. Drum pattern starts in time.
  6. Apply FX — PARAMS > crocus > Audio > reverb_send: turn up. Hear the chord wet.
  7. Quick-Key to G major — K2-long on the Home screen → tap G on row 8 (without holding Min). Top-left should now read G maj; subsequent root presses snap to G major.

Pass: all seven steps work without restarting the script. No stuck notes after release.

V5.b No stuck notes

After the V5.a sequence, lift everything from the grid and the Minilab. Wait 3 seconds.

Pass: the chord, bass, perf cascade, and any arp all stop within 1 second of the last release. The drum pattern keeps running until you stop it (that's correct).

Fail: any tone keeps ringing. Note which voice (chord / bass / perf) and report.