84 Cosmik C1ZZL3
Stable phase-distortion synthesiser and Turing machine firmware with pitch-aware Web MIDI envelopes, envelope readback, PD, detune, eight waveform families, hosted CZ patch import, USB MIDI device/host operation, and optional Turing MIDI output that defaults off.
Panel
DistortionWaveform
MorphPitch CVPhase
DistortionWave Control
CVExt Turing
ClockEnvelope
TrigOscillator 1
/ TuringOscillator 2
/ TuringStepped
Turing CVSmoothed
Turing CVMain Turing
PulseAlternate
Turing Pulse
Controls
Pitch
Oscillator pitch in synth mode
Phase Distortion
Phase-distortion amount
Waveform Morph
Waveform selection/morph
Inputs & Outputs
Inputs
Outputs
Inputs
Pitch CV
1V/oct pitch modulation in PD synth mode
Phase Distortion
Adds phase-distortion amount in synth and Turing modes
Wave Control CV
Adds wave control in synth and Turing modes
Ext Turing Clock
External Turing clock in switch-up mode
Envelope Trig
Triggers selected envelope and oscillator sync in synth mode; held gates loop supported envelopes and gate-off lets them complete
Outputs
Oscillator 1 / Turing
Oscillator 1 in synth mode; self-playing stepped oscillator 1 in Turing mode
Oscillator 2 / Turing
Oscillator 2 in synth mode; self-playing stepped oscillator 2 in Turing mode
Stepped Turing CV
Scaled stepped Turing CV; continues updating in synth mode
Smoothed Turing CV
Smoothed Turing CV; continues updating in synth mode
Main Turing Pulse
Main Turing pulse; continues updating in synth mode
Alternate Turing Pulse
Alternate Turing bit pulse; continues updating in synth mode
LEDs
In synth mode: LED 1 shows phase-distortion amount, LED 2 shows waveform position, LED 3 shows oscillator 2 level, LED 4 shows ring modulation amount, LED 5 shows noise amount, and LED 6 lights while the switch is held down.
In Turing mode: LEDs 1-3 show low bits of the Turing pattern, LED 4 follows Pulse In 1, LED 5 shows sequence length, and LED 6 flashes on each Turing clock step.
In startup envelope selection: factory presets use the binary LED display, and custom slots light LED 6 and use LEDs 1-3 for the custom slot number.
README
C1ZZL3
Stable production firmware for the Cosmik C1ZZL3 Music Thing Modular Workshop Computer card.
C1ZZL3 is a dual phase-distortion synthesiser with browser-editable amplitude, phase-distortion, and pitch envelopes, USB MIDI device/host support, optional Turing MIDI output, and a Turing machine mode with CV and pulse outputs. Turing MIDI output defaults to off and must be enabled deliberately.
For the user-facing card guide, see:
CARD_README.md
Stable Build
Current stable UF2:
uf2/C1ZZL3.uf2
Checksum:
47f7d71ba1049149bd17fb0de495351da27f91fbfeb8b5fefebb5adb95b52645
This is hardware-tested production release 1.4.
Release 1.4 works with Envelope Lab and C1ZZL3 Import Lab and includes Web MIDI PD, detune, eight waveform families, card-to-editor envelope readback, browser CZ patch import handoff, pitch envelopes, gate-held envelope looping with natural completion on gate/note release, corrected CZ DCW-to-PD, DCA-to-amplitude, and DCO-to-pitch import mapping, high-PD audio smoothing, and rapid-retrigger oscillator phase continuity.
Current Stable Feature Set
- Phase-distortion synth voice.
- Factory envelopes plus eight protected custom envelope slots.
- Web MIDI envelope editor with amplitude, phase-distortion, and pitch lanes.
- USB MIDI device mode for DAW/browser use.
- USB MIDI host mode for class-compliant controllers.
- MIDI notes with gate-held envelope sustain/release.
- MIDI CC control with knob pickup handoff.
- Turing machine audio, CV, pulse, and optional MIDI note output.
- Turing CV and pulse outputs continue running in synth mode.
- Settings readback from the card into the Web MIDI editor.
- Saved envelope readback from the card, including pitch envelope data.
- Ring, noise, MIDI channel, Turing range, and Turing MIDI settings persist; the baseline for Turing MIDI output is off.
Controls
Switch middle: synth mode.
- Main: pitch
- X: phase distortion
- Y: waveform
CV In 1: phase-distortion modulationCV In 2: waveform modulationPulse In 2: gate-held envelope trigger/release and oscillator sync
Switch down from middle: performance edit and save.
- Main: oscillator 2 detune
- X: ring modulation
- Y: noise/grit
Switch up: Turing mode.
- Main: mutation/lock
- X: sequence length, 2 to 16 steps
- Y: internal clock speed
Pulse In 1: external clockCV Out 1: stepped Turing CVCV Out 2: smoothed Turing CVPulse Out 1/2: Turing pulses
MIDI
MIDI CC controls on the selected input channel:
CC1: phase distortionCC20: oscillator 2 detuneCC21: ring modulationCC22: noise amountCC23: waveformCC24: Turing CV octave range, from 1 to 8 octaves
The physical knobs and MIDI CC controls share the same control values. After a CC change, the related knob must be swept through the current value before it takes over again.
Web MIDI Editor
Hosted editor:
https://tomwhitwell.github.io/Workshop_Computer/programs/84-cosmikc1zzl3/web/index.html
Local editor from this release folder:
python3 -m http.server 5173 --directory web
Open:
http://localhost:5173
Use Chrome or another browser with Web MIDI and SysEx support.
C1ZZL3 Import Lab
Hosted import lab:
https://tomwhitwell.github.io/Workshop_Computer/programs/84-cosmikc1zzl3/web/import/index.html
Local import lab from this release folder:
python3 -m http.server 5174 --directory web/import
Open:
http://localhost:5174
Use this page to decode Casio CZ .syx patches into C1ZZL3 drafts, then open
the result in Envelope Lab for final editing and sending.
Current Import Lab features:
- Light and dark mode toggle matching the Envelope Lab palette.
- Larger
C1ZZL3 Import Labheader and a clearer guided import workflow. - Drag-and-drop or file-picker import for Casio CZ
.syxfiles. - Browser-side validation, patch summary, decoded data, and draft mapping.
- CZ frame awareness for common patch-send SysEx files, including command, location, channel, selected data offset, and payload candidates.
- CZ envelope assignment: choose merged, line 1, or line 2 mapping for CZ DCA amplitude and DCW phase-distortion envelopes; CZ DCO pitch envelopes map to the pitch lane.
- Draft handoff into Envelope Lab in a new tab for final editing and card send.
- Separate import page so CZ translation and envelope editing stay distinct.
Import Lab flow:
- Open
C1ZZL3 Import Lab. - Drop in or choose a Casio CZ patch file.
- Review the validation, decoded summary, warnings, and mapped draft.
- Use
Open In Envelope Labto carry the draft into the main editor. - In Envelope Lab, review the result, adjust if needed, and send or save it.
How To Use The Editor
- Pick a preset on the left, or add a custom one.
- Choose
AmplitudeorPhase Distortionto focus the main graph lane. - Use the Pitch Envelope graph below it to adjust pitch movement.
- Drag points on the graphs to change both level and timing.
- Watch the point numbers. When stages stack, only the highest number is shown.
- Use the tables below the graphs for exact values when you want precise edits.
- Connect Web MIDI. The editor automatically checks the card firmware type and saved envelope slots.
- Use the action buttons when you want to send, save, refresh, or reset.
Button quick reference:
Load RAM: send the envelope to the card until reset.Load Envelope + Settings: temporarily load the selected envelope and send all current settings in one action.Save Envelope: store the selected custom envelope in flash.Delete Envelope Slot: clear the selected custom slot from card flash.Read Envelopes from Card: load occupied card slots into the editor without overwriting changed local drafts.Read Settings from Card: pull the current performance settings into the editor.Send Settings: send the current performance settings to the card.Reset Preset: restore the selected preset to its factory value.
Load RAM, Load Envelope + Settings, and Send Settings are temporary. Use
Save Envelope to retain an envelope in flash. To make the current performance
settings the startup baseline, move the hardware switch from middle to down and
hold it until the card confirms the save.
The card can save up to eight custom envelopes. Factory presets are not
overwritten. Custom presets are labelled Local only, Saved - slot N, or
Changed - slot N. Envelope readback confirms which custom slots are occupied
and verifies saves and deletions when supported by the firmware. The editor also runs a quiet settings/envelope check automatically when MIDI connects or ports change, so the firmware type is visible without first pressing the read buttons.
Envelope behaviour:
- Pulse In 2 and MIDI note-on trigger the selected envelope and sync the oscillators when the envelope starts from inactive.
- While the gate or MIDI note is held, loop-capable envelopes cycle their middle stages.
- A short trigger runs the envelope through to completion.
- Pulse In 2 gate-off or MIDI note-off exits the loop and lets the envelope complete naturally from its current point.
- Turing-triggered envelopes continue to run through without waiting for a gate release.
- Rapid retriggers keep oscillator phase continuous while the envelope is active to reduce clicks.
Build
cmake -S . -B build
cmake --build build
The built UF2 will be:
build/C1ZZL3.uf2
The production source build currently reports:
FLASH: 146736 B
RAM: 155644 B
Stability Notes
The stable version includes the lookup-table oscillator optimisation, 192 MHz clock, optional Turing MIDI output, settings readback, and full CC/knob pickup handoff. Turing MIDI output defaults off across current builds with Turing MIDI support, and should be enabled deliberately when needed. Tap tempo remains removed; Y is the Turing internal clock control.
License Notes
This project is released under the MIT License. The included computercard.h
hardware helper is ComputerCard by Chris Johnson and is also MIT licensed; keep
its MIT notice present when copying firmware files into releases or experiments.