#visualizer #music #audio #graphics

app coffeevis

Linux个人图形/控制台音乐视觉化工具

5 个版本 (3 个破坏性更新)

新版本 0.5.0 2024年8月23日
0.4.0 2023年6月11日
0.3.0 2022年7月10日
0.2.1 2022年6月12日
0.2.0 2022年6月12日

#123可视化

MIT 许可证

5MB
5K SLoC

Logo of Coffeevis

咖啡音乐视觉化工具

用 Rust 编写的个人 GUI + TUI 音乐视觉化工具。

关于此项目

我决定编写这个视觉化工具,因为现有的项目不符合我的需求。有些太慢,有些没有我喜欢的那种视觉化效果,有些占用的 CPU 资源太多,等等。

这个项目也作为我的实验场,所以你会在源文件中看到很多奇怪的实现。

0.5.0 版本的新功能

终端和 minifb 模式已经移动到它们自己的功能。您需要使用 --features terminal 和/或 --features minifb 重新编译才能使用它们。

0.5.0 版本引入了 Winit 作为 Coffeevis 的默认窗口后端。Cvis 仍然可以通过 --minifb 标志使用 minifb 启动。Coffeevis 现在默认也支持 Wayland。

应用程序现在有一套新的视觉化工具,称为 Milky。这些视觉化工具(应该)比默认的 Classic 视觉化工具更艺术化和多彩。目前该套中只有 1 个视觉化工具。我计划在 0.6.0 版本之前设计更多。

通过性能改进,Cvis 现在应该使用更少的 CPU 资源,空闲时更少。

示例

console mode windowed mode

平台支持

Coffeevis 为 Linux 构建,并在 Linux 上运行。Windows、MacOS 和 BSD 的支持不可用。

安装

运行 cargo install coffeevis

要在终端中运行 coffeevis,使用

cargoinstall coffeevis --功能终端

如果出于某种原因您想使用 minifb,请使用

cargoinstall coffeevis --功能minifb

配置

Coffeevis 不会记住设置也不会生成配置文件(除非请求,否则不会实现此功能)。

为了解决这个问题,创建一个用户脚本,使用标志运行 coffeevis

例如

#!/bin/bash

/path/to/coffeevis --fps 60 --no-auto-switch --size 40x40

标志

Coffeevis 支持启动时的临时选项

选项 值(示例) 描述
--minifb 使用 minifb 打开窗口(coffeevis 默认使用 winit)
--x11 在 X11 中运行(默认为 Wayland)
--ascii
--block
--braille
在终端中运行
--no-auto-switch 禁用自动视觉化工具切换
--size 80x80 在窗口模式下设置分辨率
--scale 2 在窗口模式下放大
--fps 60 设置刷新率
--resizable 允许在窗口模式下调整大小
--max-con-size 50x50 在终端模式下设置最大分辨率
--vis 频谱 使用指定的可视化器启动coffeevis

注意

启动coffeevis时,它将捕获您的默认音频源,请使用音频配置工具将所需源定向到coffeevis(例如,pavucontrol)。

在Wayland上,coffeevis无法将其自身置于顶层,因此您需要依赖于外部工具。例如,在KDE Plasma上,您可以使用窗口规则功能。

当输入静默时,可视化器将尝试放大输入,以使可视化器不会变得无聊。

Coffeevis直接打印文本到stdout,渲染可能取决于您的终端。

建议使用支持GPU加速的终端(例如Alacritty、Kitty、Wezterm等)。

控制台模式中内置了最大分辨率(默认:50x50)。如果终端尺寸大于限制,Coffeevis将在屏幕中央渲染。

键盘快捷键

全局

描述
空格 遍历可视化器(循环)
b 向后遍历(循环)
Esc 退出
/ 重置所有设置
- / + 减小/增加输入音量
[ / ] 减小/增加频谱粗糙度
; / ' 减小/增加输入中的样本数量(仅适用于某些基于波的视觉化器)
\ toggles auto switching (默认: 开启,8秒)
n 遍历一组可视化器(循环)

终端

描述
. 在ASCII渲染、块渲染和点字渲染之间切换
9 / 0 减小/增加最大分辨率
7 / 8 减小/增加fps 5(默认:60)
1 ... 6 将fps更改为10 ... 60

请不要看我的代码。我不是在那里隐藏任何东西,它都是垃圾代码,我不知道如何做GPU编程,所以它都是CPU代码uh uhhh

依赖关系

~3–36MB
~569K SLoC