rolandnsharp 94d5b2cf63 Rename crt → osc throughout
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 13:43:15 +10:00
2026-04-05 13:43:15 +10:00
2026-04-05 13:43:15 +10:00
2026-04-05 12:47:30 +10:00
2026-04-05 13:43:15 +10:00
2026-04-05 13:43:15 +10:00
2026-04-05 13:43:15 +10:00

terminal-oscilloscope

A terminal-based oscilloscope with CRT phosphor physics, written in Nim using illwill.

demo

Features

  • CRT boot/shutdown animations — phosphor ramp, beam sweep, vertical collapse, dot fade
  • Y-T and X-Y modes — time-domain waveform or Lissajous figures
  • Phosphor persistence — beam bloom, decay trails, intensity-based shading
  • Half-block rendering — 2x vertical resolution using Unicode ▀▄█ characters
  • Live audio capture — visualises system audio via ffmpeg/PulseAudio monitor
  • Demo mode — built-in synthesised waveforms when no audio source is available

Install

Requires Nim 2.x.

git clone https://github.com/rolandnsharp/terminal-oscilloscope.git
cd terminal-oscilloscope
nimble build
./osc

Controls

Key Action
m Toggle Y-T / X-Y mode
+ / - Increase / decrease gain (amplitude)
] / [ Zoom in / out time axis
g Cycle grid: full → crosshair → off
space Freeze display
d Cycle demo frequency presets
q Quit (with CRT shutdown effect)

Audio

Captures system audio automatically using ffmpeg with the PulseAudio/PipeWire monitor of your default output sink. Falls back to parec if available, or a built-in demo signal.

No extra packages needed — just ffmpeg (pre-installed on most Linux systems).

Credits

CRT turn-on/off animations inspired by AetherTune.

Description
Terminal-based oscilloscope with CRT phosphor physics, written in Nim
Readme MIT 57 MiB
Languages
Nim 92.4%
Nix 7.6%