draft: false Name: Mazerunner short-description: Generate a maze and plot two independent solution paths - turn them into pitch cv and gates. summary: Load the webapp and connect to the Workshop Computer - on load, a momentary press down of the switch or a trigger detected on CV In 2 generates a maze and two solutions for it, using user-selected algorithms. Internal or external clock steps through the solution paths (resettable with a trigger to Pulse In 2), with Path B having separate clock division/multiplication. Once the end of the maze is reached, the path ping-pongs back and forth, looping indefinitely - depending on your choices and settings the loops can be vastly different lengths to each other, which can make for some happy accidents as they phase against each other over time. The braid control removes walls from dead ends, causing loops that can be quite musical to the ear. There are three choices for ways to map the resulting paths to the 2 quantised pitch CV outputs (1 step per turn, length of straight run mapped to pitch leap, length of opposite path's last straight run mapped to pitch leap) and gates fire each time a corner is turned. There are also sum and difference outputs, with slew that can be activated in the webapp. Language: C++ (Pico SDK + ComputerCard) Creator: XponentOne, AI-assisted (Claude) Version: "0.6.0" Status: Beta License: MIT date-created: 2026-09-29 contact: email: xponentoneaudio@gmail.com tags: - sequencer - generative - cv - gate - dual-voice - clock Editor: web panel: inputs: - id: PulseIn1 name: Clock type: pulse description: Internal clock (tempo knob) drives playback whenever nothing is patched in here; patching a cable takes over unconditionally - id: PulseIn2 name: Reset type: pulse description: Restarts both paths' playback from their entry cell; does not rebuild the maze - id: CVIn1 name: Scale Offset type: cv description: Live addition to the shared quantizer scale, regardless of switch bank - see X knob - id: CVIn2 name: Regenerate Trigger type: pulse description: Regenerate + reset trigger (crosses ~1.2V) - fires exactly what a Down-tap fires; not a modulation input - id: AudioIn1 name: Path B Clock Ratio Offset type: cv description: Live addition to Path B's clock multiply/divide, regardless of switch bank - see Y knob - id: AudioIn2 name: Mapping Mode Offset type: cv description: Live addition to the maze-to-CV mapping mode, regardless of switch bank - see Y knob outputs: - id: PulseOut1 name: Path A Gate type: pulse description: Fires when Path A turns a corner (either direction) - id: PulseOut2 name: Path B Gate type: pulse description: Fires when Path B turns a corner (either direction) - id: CVOut1 name: Path A Pitch type: cv description: Path A melody (calibrated MIDI note, shared quantizer scale) - id: CVOut2 name: Path B Pitch type: cv description: Path B melody (calibrated MIDI note, shared quantizer scale) - independent of Path A, not a harmony - id: AudioOut1 name: Pitch Sum type: cv description: Sum of Path A + Path B's pitch, uncalibrated - independent slew (Off/Fast/Medium/Slow), web-app-settable only - id: AudioOut2 name: Pitch Difference type: cv description: Absolute difference between Path A and Path B's pitch, uncalibrated, always >=0 - independent slew, web-app-settable only controls: switch: up: name: Algorithm Select description: Held - Main/X/Y select generation algorithm / Path A solve algorithm / Path B solve algorithm middle: name: Performance description: Held (default) - Main/X/Y select tempo / quantizer scale / maze-to-CV mapping mode down: name: Maze Settings description: Held - Main/X/Y select maze size / braid amount / Path B clock ratio (pending, except clock ratio which is live) tap: name: Regenerate description: Quick press and release of Down fires one regenerate using whatever is currently pending knobs: - when: { z: up } main: name: Generation Algorithm x: name: Path A Solver description: Knob-only, no CV modulation y: name: Path B Solver description: Knob-only, no CV modulation - when: { z: middle } main: name: Tempo description: 40-400 BPM internal clock x: name: Quantizer Scale description: Shared by both paths; knob-only apart from CV In 1 y: name: Mapping Mode description: Maze-to-CV mapping mode, shared by both paths; also offset by Audio In 2 - when: { z: down } main: name: Maze Size description: Pending until the next regenerate x: name: Braid Amount description: Pending until the next regenerate; knob-only, no CV modulation y: name: Path B Clock Ratio description: Multiply/divide, applied live; also offset by Audio In 1 leds: - display: list items: - id: LED0 name: Clock Tick description: Blinks on every main clock tick (internal or external) - id: LED1 name: Path A Direction description: Lit while Path A is travelling forward in its ping-pong - id: LED2 name: Held Bank description: Off = Middle, about half = Up, full = Down - id: LED3 name: Bank Headline Value description: Brightness shows generation algorithm / quantizer scale / braid amount for the current bank - id: LED4 name: Path A Turn description: Flashes when Path A turns a corner - id: LED5 name: Path B Turn description: Flashes when Path B turns a corner host: usb: - name: Web MIDI editor role: editor description: Browser app in `web/` (Chrome/Edge, USB-C data cable) showing the maze and both solved paths live, with settable scale and Audio Out 1/2 slew