86a236f77d2e3b245d1b2b205ddff443c9dbbfb8
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
terminal-oscilloscope
A terminal-based oscilloscope with CRT phosphor physics, written in Nim using illwill.
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 — direct libav bindings via dlopen, zero dependencies
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 |
q |
Quit (with CRT shutdown effect) |
Audio
Captures system audio by opening the PulseAudio/PipeWire monitor of your default output sink directly via libavformat and libavdevice. Libraries are loaded at runtime with dlopen — no dev packages, no subprocess, no extra dependencies.
Credits
CRT turn-on/off animations inspired by AetherTune.
Languages
Nim
92.4%
Nix
7.6%
