Skip to content

Releases: uglifruit/Workshop_Computer

Cathode Ray v1.0.0

Choose a tag to compare

@uglifruit uglifruit released this 30 Jun 00:22

Cathode Ray — a 1-bit PAL composite video synthesiser for the Music Thing Workshop Computer.

Wire a two-resistor DAC from Pulse Out 1 (1kΩ) + Pulse Out 2 (220Ω) into an RCA centre pin (grounds common), connect to any composite-input TV/monitor.

Features

  • Oscilloscope (Audio In 1) with knob-controlled sweep speed, audio gain and baseline position, and a sweep-locked phosphor fade.
  • Etch-a-sketch (CV In 1/2 as X/Y, full 48kHz sampling with line interpolation), with knob scale/offset and pickup hysteresis.
  • 5-level greyscale via a 2×2 spatial dither (4 cycling orientations) with level-aware dilation to keep whites crisp on the slow composite DAC.
  • Three independent performance triggers — Switch DOWN, Pulse In 1, Pulse In 2 — each assignable to: invert, clear, cycle/random/CV-selected effect, or a fixed effect (strobe / fade / fade-to-white / snow / swap / corrupt).
  • On-screen config menu (baked bitmap font): hold Switch DOWN + twist Main/X/Y to assign each trigger.
  • Screensaver alt-boot mode (hold Switch DOWN at power-on) — bouncing block, protects CRTs from burn-in.

Flash cathode_ray.uf2. See the README in releases/64_cathode/ for full wiring and controls.

OffAir v1.0.1

Choose a tag to compare

@uglifruit uglifruit released this 01 Jul 23:16
  • Morse tone level reduced to ~75% of broadcast level (was slightly too loud relative to stations)
  • README credits: acknowledge AM Coupler by Chris Johnson as inspiration for the RF PWM transmission path

OffAir v1.0.0

Choose a tag to compare

@uglifruit uglifruit released this 27 Jun 16:20

OffAir — AM/Shortwave/Longwave radio simulator for the Workshop Computer.

Tune between two Stations and interference with authentic heterodyne whistles, SSB pitch-shift detuning, AM envelope detection, swelling per-band static, and triggerable Insta-ference one-shots. Baked recordings or live audio inputs become the Stations.

Flash: download offair.uf2 below, hold BOOTSEL on the Computer, and drag the file across.

See the release folder for the README, panel overlay, source, and the convert_clips.py tool for baking your own sounds.

Chorgan v1.1.0

Choose a tag to compare

@uglifruit uglifruit released this 24 Jun 08:21

New in v1.1.0

Audio In 1 — Slew speed CV
Bipolar CV control over portamento glide time. 0V (unpatched) = instant, unchanged from v1.0. Positive voltage adds portamento to all six voices; +5V ≈ 1 minute glide. Works in both normal and slew boot modes. In slew mode, negative voltage shortens the zone-controlled rate toward instant.

Audio In 2 — Chord inversions
Bipolar CV shifts the voicing through octave inversions. Positive voltage raises the lowest-sounding voice by one octave per step (up to 6 steps); negative lowers the highest. CV Out 1 and Pulse Out 1 are unaffected.

ChordSeq v0.1.0

Choose a tag to compare

@uglifruit uglifruit released this 19 Jun 21:56

Initial release of ChordSeq — 8-oscillator morphing chord synthesizer.

Controls:

  • Knob X: Root pitch (C3–C6)
  • Knob Y: First interval (unison to octave, 13 semitone steps)
  • Main Knob: Waveform shape (saw → triangle → sine-ish)
  • CV In 1: V/oct pitch offset
  • Audio Out 1/2: Stereo output

Early release — chord voicing beyond the first interval coming soon.

Chorgan v0.2.6 — fix crash at TRI→SINE boundary

Choose a tag to compare

@uglifruit uglifruit released this 13 Jun 12:00

Fix: triSample() middle branch had >> 14 where >> 15 was needed. This mapped the descending slope of the triangle to values reaching -98304 instead of -32768, feeding a wildly wrong value into the blendWaveform lerp at exactly the TRI→SINE transition zone (~9 o'clock / ~3 o'clock). Deterministic crash every time the knob crossed that boundary.

Chorgan v0.2.5 — fix crash at SINE zone

Choose a tag to compare

@uglifruit uglifruit released this 13 Jun 11:53

Fix: sineSample() had a signed integer overflow (undefined behaviour on Cortex-M0+). The lerp terms s2frac and s1(65536-frac) each reach ~2.1B; their sum overflows int32_t's 2.147B limit near the sine peak/trough. This caused a CPU fault specifically when the Main knob was in the SINE blend zone (fully CCW/CW), corrupting processor state that survived warm resets. Fix: promote multiply operands to int64_t.

Chorgan v0.2.2 — fix knob lockout from fast CV/pulse inputs

Choose a tag to compare

@uglifruit uglifruit released this 13 Jun 11:15

Fix: fast signals on CV1/CV2/PU1/PU2 corrupt the shared ADC mux, driving knob IIR accumulators to 0 or 4095 and locking out X/Y/Main/Switch. Added per-knob rail-stuck detector — if railed for >0.5s, holds last known good value. Resets immediately when signal normalises. Survives any combination of CV/pulse inputs without requiring power cycle.

Chorgan v0.2.1 — fix intermittent freeze

Choose a tag to compare

@uglifruit uglifruit released this 13 Jun 10:35

Fix: removed spurious prevPreset = -1 inside the chord override block. This was causing updateTargets() to be called every sample (48kHz) while a chord was held, overrunning the audio budget and locking the processor. The freeze survived warm resets because RAM state persisted.

Chorgan v0.2.0 — chord sequencer working

Choose a tag to compare

@uglifruit uglifruit released this 13 Jun 10:32

Stable snapshot of chord sequencer feature before freeze bug fix. Chord store/recall fully working. Known intermittent freeze near SINE→TRI transition suspected to be a RAM placement issue — fix coming in v0.2.1.