1
0
Fork 0
mirror of https://github.com/alemidev/scope-tui.git synced 2024-11-23 14:14:48 +01:00
a simple oscilloscope/vectorscope/spectroscope for your terminal
Find a file
alemidev e656b6303e
feat: trigger threshold, better heading
remade heading with table widgets, added triggering threshold controlled
with arrows and PgUp/PgDwn, small fixes
2023-01-02 01:18:07 +01:00
src feat: trigger threshold, better heading 2023-01-02 01:18:07 +01:00
.editorconfig initial commit 2022-12-24 03:04:49 +01:00
.gitignore initial commit 2022-12-24 03:04:49 +01:00
.rustfmt.toml initial commit 2022-12-24 03:04:49 +01:00
Cargo.toml chore: bump version 2022-12-27 19:04:09 +01:00
README.md chore: renamed metavars 2022-12-26 03:32:52 +01:00

scope-tui

A simple oscilloscope/vectorscope in your terminal

scope-tui interface

Currently only for Linux (with Pulseaudio)

Why

I really love cava. It provides a crude but pleasant frequency plot for your music: just the bare minimum to see leads solos and basslines. I wanted to also be able to see waveforms, but to my knowledge nothing is available. There is some soundcard oscilloscope software available, but the graphical GUI is usually dated and breaks the magic. I thus decided to solve this very critical issue with my own hands! And over a night of tinkering with pulseaudio (via libpulse-simple-binding) and some TUI graphics (via tui-rs), the first version of scope-tui was developed, with very minimal settings given from command line, but a bonus vectorscope mode baked in.

Usage

$ scope-tui [OPTIONS] [DEVICE]

Arguments:
  [DEVICE]  Audio device to attach to

Options:
  -b, --buffer <SIZE>      Size of audio buffer, and width of scope [default: 8192]
  -r, --range <SIZE>       Max value, positive and negative, on amplitude scale [default: 20000]
      --scatter            Use vintage looking scatter mode instead of line mode
      --vectorscope        Combine left and right channels into vectorscope view
      --tune <NOTE>        Tune buffer size to be in tune with given note (overrides buffer option)
      --sample-rate <HZ>   Sample rate to use [default: 44100]
      --server-buffer <N>  Pulseaudio server buffer size, in block number [default: 32]
      --no-reference       Don't draw reference line
      --no-braille         Don't use braille dots for drawing lines
  -h, --help               Print help information
  -V, --version            Print version information

The audio buffer size directly impacts resource usage, latency and refresh rate and its limits are given by the audio refresh rate. Larger buffers are slower but less resource intensive. A good starting value might be 8192

To change audio buffer size, the PulseAudio client must be restarted. Because of this, such option is configurable only at startup.

Controls

  • Use q or CTRL+C to exit
  • Use <SPACE> to pause and resume display
  • Use - and = to decrease or increase range (_ and + for smaller steps)
  • Use v to toggle vectorscope mode
  • Use s to toggle scatter mode
  • Use h to toggle interface
  • Decrease/increase terminal font size to increase/decrease scope resolution.

About precision

While "scatter" mode is as precise as Pulseaudio and the terminal lets us be, "line" mode simply draws a straight line across points, meaning high frequencies don't get properly represented.

Latency is kept to a minimum thanks to small buffer and block sizes.

Sample rate can be freely specified but will ultimately be limited by source's actual sample rate.