DeepNewsynthmidiweb-midituring-machinephase-distortion

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

Workshop Computer panelPitchPhase
Distortion
Waveform
Morph
Pitch CVPhase
Distortion
Wave Control
CV
Ext Turing
Clock
Envelope
Trig
Oscillator 1
/ Turing
Oscillator 2
/ Turing
Stepped
Turing CV
Smoothed
Turing CV
Main Turing
Pulse
Alternate
Turing Pulse

Controls

Main knob

Pitch
Oscillator pitch in synth mode

X knob

Phase Distortion
Phase-distortion amount

Y knob

Waveform Morph
Waveform selection/morph

Switch

Inputs & Outputs

Inputs

Outputs

Inputs

Audio 1

Pitch CV
1V/oct pitch modulation in PD synth mode

CV 1

Phase Distortion
Adds phase-distortion amount in synth and Turing modes

CV 2

Wave Control CV
Adds wave control in synth and Turing modes

Pulse 1

Ext Turing Clock
External Turing clock in switch-up mode

Pulse 2

Envelope Trig
Triggers selected envelope and oscillator sync in synth mode; held gates loop supported envelopes and gate-off lets them complete

Outputs

Audio 1

Oscillator 1 / Turing
Oscillator 1 in synth mode; self-playing stepped oscillator 1 in Turing mode

Audio 2

Oscillator 2 / Turing
Oscillator 2 in synth mode; self-playing stepped oscillator 2 in Turing mode

CV 1

Stepped Turing CV
Scaled stepped Turing CV; continues updating in synth mode

CV 2

Smoothed Turing CV
Smoothed Turing CV; continues updating in synth mode

Pulse 1

Main Turing Pulse
Main Turing pulse; continues updating in synth mode

Pulse 2

Alternate Turing Pulse
Alternate Turing bit pulse; continues updating in synth mode

LEDs

LED note

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.

LED note

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.

LED note

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 modulation
  • CV In 2: waveform modulation
  • Pulse 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 clock
  • CV Out 1: stepped Turing CV
  • CV Out 2: smoothed Turing CV
  • Pulse Out 1/2: Turing pulses

MIDI

MIDI CC controls on the selected input channel:

  • CC1: phase distortion
  • CC20: oscillator 2 detune
  • CC21: ring modulation
  • CC22: noise amount
  • CC23: waveform
  • CC24: 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 Lab header and a clearer guided import workflow.
  • Drag-and-drop or file-picker import for Casio CZ .syx files.
  • 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:

  1. Open C1ZZL3 Import Lab.
  2. Drop in or choose a Casio CZ patch file.
  3. Review the validation, decoded summary, warnings, and mapped draft.
  4. Use Open In Envelope Lab to carry the draft into the main editor.
  5. In Envelope Lab, review the result, adjust if needed, and send or save it.

How To Use The Editor

  1. Pick a preset on the left, or add a custom one.
  2. Choose Amplitude or Phase Distortion to focus the main graph lane.
  3. Use the Pitch Envelope graph below it to adjust pitch movement.
  4. Drag points on the graphs to change both level and timing.
  5. Watch the point numbers. When stages stack, only the highest number is shown.
  6. Use the tables below the graphs for exact values when you want precise edits.
  7. Connect Web MIDI. The editor automatically checks the card firmware type and saved envelope slots.
  8. 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.

Verify your download

Confirm the file you downloaded really is that new firmware.

macOS / Linux (Terminal)

shasum -a 256 firmware.uf2

Linux also has sha256sum firmware.uf2.

Windows (PowerShell)

Get-FileHash firmware.uf2 -Algorithm SHA256

Compare the result to the SHA256 on the website — it should match exactly.

Back to all programs Back to top