#scope #tui #可视化 #cli

app scope-tui

适用于终端的简单示波器/矢量示波器/光谱仪

1 个不稳定版本

0.3.0 2024年3月16日

#153音频

MIT 许可证

44KB
960 代码行

scope-tui

适用于终端的简单示波器/矢量示波器/光谱仪

scope-tui interface

在这里观看操作演示,使用 Planets(由 Jerobeam Fenderson 编写的示波器音乐)

为什么

我非常喜欢 cava。它为您提供了音乐的一个粗糙但令人愉悦的频率图:仅显示基本的引子、独奏和贝斯线。我想看到波形,但据我所知,没有这样的工具。有一些声卡示波器软件可用,但通常图形GUI过时,破坏了魔法。因此,我决定亲自解决这个问题!在一个夜晚的捣鼓 pulseaudio(通过 libpulse-simple-binding)和一些 TUI 图形(通过 tui-rs)之后,第一个版本的 scope-tui 就开发出来了,只通过命令行提供非常基本的设置,但内置了一个矢量示波器模式。

安装

目前没有提供二进制文件或软件包,您必须自己编译。

如果您还没有安装rust工具链,请使用 rustup 获取它

一旦您有了 rustccargo,只需使用 cargo install

$ CARGO_NET_GIT_FETCH_WITH_CLI=true cargo install --git https://git.alemi.dev/scope-tui.git

(注意,我的git服务器不支持智能http克隆,设置fetch-with-cli允许dumb http克隆)

生成的二进制文件将位于 $HOME./cargo/bin。您可以将此文件夹添加到您的 $PATH,或将生成的二进制文件复制到您的 $PATH 中的某个位置。

源代码

始终可用一个非常粗糙的文件源,它可以是一个命名管道。虽然这允许将 scope-tui 连接到很多东西,但它并不非常方便,并且当有更专业的源可用时,应该使用更专业的源。

目前仅在Linux上实现了PulseAudio源,但计划在未来通过模块化源结构实现更多源。

在编译时通过传递相应的功能标志来启用源: --features=pulseaudio,...。使用 --no-default-features 禁用默认功能。

  • pulseaudio:使用 LibPulse 简单绑定的 pulseaudio 实现 (默认启用)

用法

$ scope-tui [OPTIONS] <COMMAND>

Commands:
  pulse  use PulseAudio Simple api to read data from an audio sink
  file   use a file from filesystem and read its content
  help   Print this message or the help of the given subcommand(s)

Options:
      --channels <N>      number of channels to open [default: 2]
      --tune <NOTE>       tune buffer size to be in tune with given note (overrides buffer option)
  -b, --buffer <SIZE>     size of audio buffer, and width of scope [default: 8192]
      --sample-rate <HZ>  sample rate to use [default: 44100]
  -r, --range <SIZE>      max value, positive and negative, on amplitude scale [default: 20000]
      --scatter           use vintage looking scatter mode instead of line mode
      --no-reference      don't draw reference line
      --no-ui             hide UI and only draw waveforms
      --no-braille        don't use braille dots for drawing lines
  -h, --help              Print help information
  -V, --version           Print version information

音频缓冲区大小直接影响资源使用、延迟和刷新率,其限制由音频刷新率给出。较大的缓冲区速度较慢但资源消耗较少。一个不错的起始值可能是 8192 或调整到第 0 个八度。

要更改音频缓冲区大小,必须重新启动 PulseAudio 客户端。因此,此选项只能在启动时进行配置。

控制

  • 使用 qCTRL+C 退出
  • 使用 s 切换散射模式
  • 使用 h 切换界面
  • 使用 r 切换参考线
  • 使用 <SPACE> 暂停和恢复显示
  • 使用 <LEFT><RIGHT> 增加或减少 X 范围
  • 使用 <UP><DOWN> 增加或减少 Y 范围
  • 使用 <ESC> 将视图设置还原为默认值
  • 使用 <TAB> 在模式之间切换
    • 示波器:
      • 使用 t 切换触发模式
      • 使用 e 切换边沿触发模式(上升/下降)
      • 使用 p 切换峰值显示
      • 使用 <PG-UP><PG-DOWN> 增加或减少触发阈值
      • 使用 -/_=/+ 增加或减少触发消抖
    • 频谱仪:
      • 使用 <PG-UP><PG-DOWN> 增加或减少平均值计数
    • 矢量仪:
  • 将增减命令与 <SHIFT> 结合使用以增加或减少 10 倍
  • 将增减命令与 <CTRL> 结合使用以增加或减少 5 倍
  • 将增减命令与 <ALT> 结合使用以增加或减少 1/5 倍

关于精度

当“散点”图模式与样本的精确度以及终端的允许程度相匹配时,“线”图模式仅在每个点之间绘制一条直线,这意味着高频数据无法得到适当的表示。

由于缓冲区和块的大小较小,因此延迟保持在最低。

采样率可以自由指定,但最终将受限于源的实际采样率。

减小/增大终端字体大小以增加/减小范围分辨率。

开发

任何帮助都受欢迎,如果您想贡献,请随时联系我。

我计划开发的一些功能和想要添加的功能

  • 示波器
  • 矢量仪
  • Linux音频源
  • 简单控制
  • 简单触发
  • 多通道
  • 频谱仪
  • 文件源
  • Mac音频源
  • Windows音频源
  • 改进文件音频源
  • 网络源
  • GUI前端
  • 串行源
  • USB源
  • SDR源

依赖关系

~4–11MB
~112K SLoC