크로스 플랫폼 오디오 V isu a lizer
칼 스타베스트랜드(Karl Stavestrand)
데모 비디오
그것은 무엇입니까
설치 중
소스에서
패키지 관리자
오디오 캡처 중
펄스오디오
파이프와이어
알사
MPD
Sndio
OSS
잭
스퀴즈라이트
macOS
윈도우
SSH를 통해 실행
문제 해결
용법
통제 수단
구성
다른 응용 프로그램에서 Cava 사용
캐바코어
원시 출력
기부금
Cava는 터미널 또는 데스크탑(SDL)용 막대 스펙트럼 오디오 시각화 장치입니다.
다음에서 작동합니다:
리눅스
FreeBSD
macOS
윈도우
이 프로그램은 과학적인 용도로 사용되지 않습니다. 음악을 시각화하는 데 사용할 때 반응성이 뛰어나고 미학적으로 보이도록 작성되었습니다.
필수 구성요소:
FFTW
libtool
자동 제작
autoconf-archive (OpenGL 설정에 필요)
pkgconf
빌드 필수 사항
이니파서
권장 구성요소:
배포판에 따라 다음 오디오 프레임워크 중 하나의 개발 lib입니다.
알사
펄스오디오
파이프와이어
포르오디오
Sndio
잭
선택적 구성 요소:
SDL2 개발 파일
ncursesw 개발 파일(아치의 ncurses에 번들로 포함)
실제로 CAVA를 컴파일하려면 FFTW, iniparser 및 빌드 도구만 필요하지만 이는 fifo 파일에서 읽을 수 있는 기능만 제공합니다. 시스템 파이프라인에서 오디오를 직접 캡처하려면 pulseaudio, alsa, sndio, jack 또는 portaudio dev 파일이 필요합니다(사용 중인 오디오 시스템에 따라 다름).
Ncurses는 기본 출력 방법에 문제가 있는 경우 대체 출력 방법으로 사용할 수 있습니다. 그러나 필수는 아닙니다.
모든 요구 사항은 모든 주요 배포판에 쉽게 설치할 수 있습니다.
FreeBSD
pkg install autoconf autoconf-archive automake fftw3 iniparser jackit libglvnd libtool pkgconf psftools sdl2 sndio
또한 빌드하기 전에 FreeBSD에서 다음 명령을 실행하십시오.
export CFLAGS="-I/usr/local/include" export LDFLAGS="-L/usr/local/lib"
데비안/우분투:
sudo apt install build-essential libfftw3-dev libasound2-dev libpulse-dev libtool automake autoconf-archive libiniparser-dev libsdl2-2.0-0 libsdl2-dev libpipewire-0.3-dev libjack-jackd2-dev pkgconf
아치리눅스:
pacman -S base-devel fftw alsa-lib iniparser pulseaudio autoconf-archive pkgconf
오픈수세:
zypper install alsa-devel fftw3-devel libpulse-devel libtool autoconf-archive pkgconf
페도라:
dnf install alsa-lib-devel fftw3-devel pulseaudio-libs-devel libtool autoconf-archive iniparser-devel pkgconf
맥OS:
아직 홈브류를 설치하지 않았다면 먼저 홈브류를 설치하세요.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
그런 다음 필수 구성 요소를 설치합니다.
brew install fftw libtool automake autoconf-archive pkgconf portaudio iniparser
Homebrew 패키지의 설치 위치는 Intel Mac과 Apple Silicon Mac 간에 다릅니다. 따라서 명령이 약간 다릅니다. 여기에서 귀하의 유형을 확인할 수 있습니다.
두 시스템 모두에서 다음 명령을 실행하여 macOS가 libtool을 찾지 못하는 문제를 해결합니다.
export LIBTOOL=`which glibtool` export LIBTOOLIZE=`which glibtoolize` ln -s `which glibtoolize` /usr/local/bin/libtoolize
버전에 따라 파일명이 조금씩 다를 수 있으니 참고하세요. 디렉터리는 동일해야 합니다.
또한 ./configure가 Homebrew 패키지를 찾을 수 있도록 Apple Silicon Mac에서 다음 명령을 실행합니다.
export LDFLAGS="-L/opt/homebrew/lib" export CPPFLAGS="-I/opt/homebrew/include"
Intel Mac 지침은 macOS Big Sur에서 테스트되었습니다.
Apple Silicon 지침은 macOS Ventura에서 테스트되었습니다.
윈도우:
cava_win
폴더에 있는 별도의 추가 정보를 참조하세요.
우선 이 저장소를 복제하고 여기에 CD를 넣은 후 다음을 실행하세요.
./autogen.sh ./configure make
권장 구성요소가 설치되어 있지만 이를 사용하고 싶지 않은 경우(아마도 한 시스템에서 다른 시스템에서 사용하기 위해 바이너리를 빌드하는 경우) 구성 중에 해당 기능을 비활성화할 수 있습니다(자세한 내용은 구성 --help 참조).
Windows의 경우 cava_win
폴더에 VS 솔루션 파일이 있습니다.
기본 /usr/local
에 cava
설치합니다.
make install
또는 PREFIX
변경할 수 있습니다. 예를 들면 다음과 같습니다.
./configure --prefix=PREFIX
make uninstall
모든 배포판별 설치 소스가 최신 상태가 아닐 수 있습니다. 여기에 문제를 보고하기 전에 버전을 확인하세요.
pkg install cava
Tumbleweed 사용자는 저장소에 카바를 가지고 있습니다. 그들은 다음을 사용할 수 있습니다:
zypper in cava
Leap 사용자는 먼저 Multimedia:apps 저장소를 추가해야 합니다.
zypper ar -f obs://multimedia:apps/openSUSE_Leap_42.2 multimedia
다른 버전을 사용하는 경우 openSUSE_Leap_42.2를 openSUSE_13.2 로 바꾸고 해당 버전에 맞게 조정하세요.
Cava는 Fedora 26 이상에서 사용할 수 있습니다. 다음을 실행하여 Cava를 설치할 수 있습니다.
dnf install cava
Cava는 AUR에 있습니다.
pacaur -S cava
sudo apt install cava
Harshal Sheth는 PPA에 CAVA를 추가했으며 다음과 같이 설치할 수 있습니다.
add-apt-repository ppa:hsheth2/ppa apt update apt install cava
카바는 홈브류에 있습니다.
brew install cava
pulseaudio dev 파일을 설치했고 cava가 pulseaudio 지원으로 구축되었는지 확인하세요(dev 파일이 발견되면 자동으로 지원되어야 합니다).
운이 좋다면 당신이 해야 할 일은 카바를 달리는 것뿐입니다.
아무 일도 일어나지 않으면 기본값이 아닌 다른 소스를 사용해야 할 수도 있습니다. 기본값은 마이크일 수도 있습니다. 도움이 필요하면 구성 파일을 살펴보세요.
세트
method = pipewire
기본 소스는 auto
이며 현재 선택한 출력일 가능성이 높습니다. wireplumber를 실행하는 경우 wpctl
사용하여 시각화할 원하는 장치의 object.path
또는 object.serial
가져올 수 있습니다.
예를 들어
source = alsa:pcm:3:front:3:playback
세트
method = alsa
구성 파일에서.
ALSA는 출력에서 오디오를 가져오는 기본 방법이 없기 때문에 어려울 수 있습니다. 출력(마이크 또는 라인 입력뿐만 아니라)에서 직접 오디오를 캡처하려면 ALSA 루프백 인터페이스를 생성한 다음 오디오를 루프백과 일반 인터페이스 모두에 동시에 출력해야 합니다.
루프백 인터페이스를 생성하려면 다음을 실행하세요.
sudo modprobe snd_aloop
이제 aplay -l
루프백 인터페이스가 포함되기를 바랍니다.
부팅 시에도 지속되도록 하려면 "/etc/modules"에 snd-aloop
줄을 추가하세요. 첫 번째 사운드카드로 로드되는 것을 방지하려면 "/etc/modprobe.d/alsa-base.conf"에 options snd-aloop index=1
줄을 추가하세요. 이렇게 하면 '1'에 로드됩니다. '1'을 오디오 설정에 가장 적합한 값으로 바꿀 수 있습니다.
루프백 인터페이스를 통해 오디오를 재생하면 cava가 오디오를 캡처할 수 있지만 스피커에서는 소리가 나지 않습니다. 루프백 인터페이스와 실제 인터페이스에서 오디오를 재생하려면 ALSA 다중 채널을 사용해야 합니다.
다중 채널 사용 방법은 포함된 예제 파일 example_files/etc/asound.conf
를 참조하세요. HDA Intel PCH 사운드 카드로 이 작업을 수행할 수 있었지만 USB DAC로는 운이 없었습니다.
여기에서 ALSA 방법에 대해 자세히 알아보세요.
Rasberry PI에서 alsa 방법에 문제가 있는 경우 /boot/config.txt
에 다음 줄을 추가하고 재부팅하여 mmap
활성화해 보십시오.
dtoverlay=i2s-mmap
@reluekiss는 dmix로 cava를 작동시킬 수 있었습니다. example_files/etc/asound_dmix.conf
에서 예제 구성을 확인하고 문제 534를 확인하세요.
mpd에 다음 줄을 추가하세요.
audio_output { type "fifo" name "my_fifo" path "/tmp/mpd.fifo" format "44100:16:2" }
구성 파일에서 주석 처리를 해제하고 입력 방법을 fifo
로 변경합니다.
fifo의 경로는 source
매개변수로 지정할 수 있습니다.
동기화에 문제가 있었습니다(비주얼라이저가 사운드보다 앞서 있었습니다). mpd에서 ALSA 버퍼를 줄이면 문제가 해결되었습니다.
audio_output { type "alsa" name "My ALSA" buffer_time "50000" # (50ms); default is 500000 microseconds (0.5s) }
세트
method = sndio
Sndio는 OpenBSD에서 사용되는 오디오 프레임워크이지만 FreeBSD, NetBSD 및 Linux에서도 사용할 수 있습니다. 지금까지는 FreeBSD에서만 테스트되었지만 아마도 다른 운영 체제에서도 매우 유사할 것입니다. 다음 예는 FreeBSD에서 sndio용 CAVA를 설정하는 방법을 보여줍니다(이 예의 다양한 pcmX
사운드 장치 및 해당 /dev/dspX
오디오 장치에 대한 자세한 설명은 OSS 섹션을 참조하십시오).
$ 고양이 /dev/sndstat 설치된 장치: pcm0: <Realtek ALC1220 (후면 아날로그)> (재생/녹화) 기본값 pcm1: <Realtek ALC1220 (전면 아날로그 마이크)> (rec) pcm2: <USB 오디오> (재생/녹음) 사용자 공간에서 설치된 장치가 없습니다.
Sndio는 장치 설명자에서 작동합니다. 일반적으로 모든 /dev/dspX
오디오 장치에는 해당하는 rsnd/X
sndio 원시 장치 설명자가 있습니다. 이 예에는 rsnd/0
, rsnd/1
및 rsnd/2
가 있습니다( /dev
에 나열되지 않으며 sndio는 이러한 설명자를 사용하여 해당 오디오 장치에 내부적으로 액세스합니다). Sndio는 또한 기본 오디오 장치 /dev/dsp
에 해당하는 원시 장치 설명자에 대한 심볼릭 링크처럼 작동하는 암시적 default
장치 설명자를 처리합니다. 이 예에서는 기본 오디오 장치 /dev/dsp
가 /dev/dsp0
에 심볼릭 링크되기 때문에 rsnd/0
에 대한 심볼릭 링크처럼 작동합니다. Sndio는 또한 환경 변수 AUDIODEVICE
및 AUDIORECDEVICE
평가합니다. 이들 중 하나가 설정되고(둘 다 설정된 경우 AUDIORECDEVICE
AUDIODEVICE
대체함) sndio 인식 프로그램이 default
장치 설명자 또는 지정되지 않은 장치 설명자를 열려고 시도하면 프로그램은 환경 변수에 지정된 장치 설명자를 사용합니다.
이제 CAVA에서 마이크 입력을 시각화하려면 구성 파일의 source
값을 해당 오디오 설명자로 설정해야 합니다.
source = default # default; symlink to rsnd/0 in this example; AUDIORECDEVICE and AUDIODEVICE evaluation source = # unspecified device descriptor; same as default above source = rsnd/0 # for the pcm0 mic on the rear source = rsnd/1 # for the pcm1 mic on the front source = rsnd/2 # for the pcm2 mic on the USB headset
source = default
사용하면 구성 파일을 다시 변경하지 않고도 명령줄에서 시각화를 전환할 수 있습니다.
$ AUDIODEVICE=rsnd/0 카바 $ AUDIODEVICE=rsnd/1 카바 $ AUDIODEVICE=rsnd/2 카바
Sndio는 원시 장치 설명자만으로는 재생된 오디오를 녹음할 수 없습니다. 즉, rsnd/0
통해 외부 스테레오 스피커에서 재생되는 음악 플레이어 또는 브라우저의 사운드는 CAVA에서 시각화되지 않습니다. 이것이 작동하려면 sndio 서버가 시작되어야 하고 모니터링 하위 장치가 생성되어야 합니다. 다음 예에서는 서버를 시작하고 rsnd/0
에서 모니터링 하위 장치 snd/0
을 만든 다음 새 모니터링 하위 장치를 가리키는 AUDIODEVICE
사용하여 CAVA를 시작하는 방법을 보여줍니다.
$ sndiod -f rsnd/0 -m 플레이,월 $ AUDIODEVICE=snd/0 카바
스피커와 USB 헤드셋 간 전환:
$ sndiod -f rsnd/2 -m 재생,mon -s usb -f rsnd/0 -m 재생,mon -s 스피커 $ 오디오 장치=snd/usb 카바 $ AUDIODEVICE=snd/스피커 카바
sndio 서버의 구성 및 시작에 관한 추가 정보는 맨페이지 sndiod(8)
참조하십시오.
세트
method = oss
FreeBSD에서 사용되는 오디오 시스템은 OSS(Open Sound System)입니다. 다음 예는 FreeBSD에서 OSS용 CAVA를 설정하는 방법을 보여줍니다:
$ 고양이 /dev/sndstat 설치된 장치: pcm0: <Realtek ALC1220 (후면 아날로그)> (재생/녹화) 기본값 pcm1: <Realtek ALC1220 (전면 아날로그 마이크)> (rec) pcm2: <USB 오디오> (재생/녹음) 사용자 공간에서 설치된 장치가 없습니다.
시스템에는 pcm0
, pcm1
및 pcm2
의 세 가지 pcm
사운드 장치가 있습니다. pcm0
외부 스테레오 스피커가 연결되는 후면의 아날로그 출력 잭과 마이크를 연결할 수 있는 아날로그 입력 잭에 해당합니다. 출력과 입력을 모두 캡슐화하므로 play/rec
로 표시됩니다. default
사운드 장치로도 설정되어 있습니다. pcm1
전면 마이크용 또 다른 아날로그 입력 잭에 해당하며 rec
로 표시되어 있습니다. 통합 마이크가 있는 USB 헤드셋이 USB 포트에 연결되어 있고 시스템에서 play/rec
기능이 있는 pcm2
사운드 장치를 생성했습니다.
일반적으로 모든 pcmX
장치에는 해당 /dev/dspX
오디오 장치가 있습니다. 이 예에는 /dev/dsp0
, /dev/dsp1
및 /dev/dsp2
가 있습니다(시스템은 필요할 때 생성하며 현재 사용 중이 아닌 경우 ls /dev
통해 나열되지 않습니다). 또한 시스템은 default
오디오 장치(이 예에서는 /dev/dsp0
에 대한 심볼릭 링크처럼 작동하는 암시적 /dev/dsp
를 생성합니다.
이제 CAVA에서 마이크 입력을 시각화하려면 구성 파일의 source
값을 해당 오디오 장치로 설정해야 합니다.
source = /dev/dsp # default; symlink to /dev/dsp0 in this example source = /dev/dsp0 # for the pcm0 mic on the rear source = /dev/dsp1 # for the pcm1 mic on the front source = /dev/dsp2 # for the pcm2 mic on the USB headset
OSS는 나가는 오디오를 자체적으로 녹음할 수 없습니다. 즉, /dev/dsp0
통해 외부 스테레오 스피커에서 재생되는 음악 플레이어나 브라우저의 사운드는 CAVA에서 시각화되지 않습니다. 해결책은 Virtual OSS를 사용하는 것입니다. 기존 오디오 장치에서 가상 오디오 장치를 생성할 수 있습니다. 특히 /dev/dsp0
에서 루프백 오디오 장치를 생성하고 재생된 오디오를 CAVA에 공급할 수 있습니다.
$ doas pkg install virtual_oss $ doas virtual_oss -r44100 -b16 -c2 -s4ms -O /dev/dsp0 -R /dev/null -T /dev/sndstat -l dsp.cava $ 고양이 /dev/sndstat 설치된 장치: pcm0: <Realtek ALC1220 (후면 아날로그)> (재생/녹화) 기본값 pcm1: <Realtek ALC1220 (전면 아날로그 마이크)> (rec) pcm2: <USB 오디오> (재생/녹음) 사용자 공간에서 설치된 장치: dsp.cava: <가상 OSS> (재생/녹화)
/dev/dsp0
에서 가상 루프백 장치 /dev/dsp.cava
를 생성했습니다. 이제 오디오는 구성 파일의 source = /dev/dsp.cava
사용하여 CAVA에서 시각화됩니다. 재생 프로그램에는 /dev/dsp.cava
장치를 사용하도록 구성이 있어야 합니다. 이것이 가능하지 않은 프로그램의 경우, 예를 들어 항상 /dev/dsp
사용하는 경우 -l dsp.cava
-l dsp
로 바꾸십시오. 가상 OSS는 FreeBSD에서 서비스로 구성하고 시작할 수 있습니다.
세트
method = jack
JACK 오디오 연결 키트(JACK)는 FreeBSD 및 Linux와 같은 여러 운영 체제에서 사용할 수 있는 전문 사운드 서버 API입니다.
CAVA는 기본 클라이언트 이름이 cava
인 JACK 클라이언트이며 표준 서버 시작 및 중지 동작을 준수합니다. 즉, CAVA는 이미 실행 중인 항목이 없고 환경 변수 JACK_START_SERVER
가 정의된 경우 JACK 서버를 시작합니다. 이 경우 모든 서버가 실행될 때 서버도 중지됩니다. 클라이언트가 종료되었습니다. CAVA 구성 파일의 source
CAVA가 연결을 시도하는 JACK 서버의 이름을 지정합니다. 기본값은 default
이며, 이는 기본 JACK 서버 이름이기도 합니다. 값은 비어 있을 수 있으며, 이 경우 default
의미합니다. 따라서 다음 세 항목은 동일합니다.
; source = default source = default source =
한 가지 예외는 빈 source
항목과 환경 변수 JACK_DEFAULT_SERVER
의 조합입니다. 환경 변수가 정의된 경우(예: export JACK_DEFAULT_SERVER=foo
) 다음 항목은 동일합니다.
source = foo source =
JACK 서버의 구성 및 시작에 관한 자세한 내용은 맨페이지 jackd(1)
참조하십시오.
CAVA는 터미널 오디오 유형(MIDI 지원 없음) 입력 포트를 생성합니다. 이러한 포트는 다른 JACK 클라이언트의 출력 포트에 연결할 수 있습니다. 예를 들어 음악 플레이어의 출력 포트에 연결하면 CAVA가 음악을 시각화합니다. 현재 CAVA는 최대 2개의 입력 포트를 지원합니다. 즉, 모노와 스테레오를 지원합니다. 입력 포트 수는 구성 파일의 입력 섹션에 있는 channels
옵션을 통해 제어할 수 있습니다.
channels = 1 # one input port, mono channels = 2 # two input ports, stereo (default)
포트의 짧은 이름은 간단히 M
(모노), L
및 R
(스테레오)입니다. 기본 클라이언트 이름에 따른 입력 포트의 전체 이름은 모노의 경우 cava:M
, 스테레오의 경우 cava:L
및 cava:R
입니다.
autoconnect
옵션은 CAVA 포트와 다른 클라이언트 포트의 연결 전략을 제어합니다.
autoconnect = 0 # don't connect to other ports automatically autoconnect = 1 # only connect to other ports during startup autoconnect = 2 # reconnect to new ports regularly (default)
자동 연결 전략은 물리적 터미널 입력 포트, 즉 실제로 사운드를 출력하는 실제 오디오 장치를 스캔하고 동일한 연결을 CAVA 포트에 적용합니다. 이러한 방식으로 CAVA는 기본적으로 JACK 클라이언트에서 재생된 오디오를 시각화합니다.
CAVA의 포트와 다른 클라이언트 프로그램의 포트 사이의 연결을 제어하고 관리하기 위해 JACK용 연결 관리 프로그램이 있습니다. 그래픽 사용자 인터페이스를 갖춘 잘 알려진 연결 관리자로는 QjackCtl 및 Cadence가 있습니다. JACK 패키지 자체에는 CLI 도구가 함께 제공되는 경우가 많습니다. 운영 체제에 따라 별도로 설치해야 할 수도 있습니다(예: FreeBSD):
$ doas pkg 설치 jack-example-tools
도구 중에는 jack_lsp
및 jack_connect
프로그램이 있습니다. 이 두 도구는 명령줄에서 포트를 나열하고 연결하는 데 충분합니다. 다음 예에서는 이러한 도구를 사용하여 연결을 설정하는 방법을 보여줍니다.
$ 잭_lsp 시스템:capture_1 시스템:capture_2 시스템:재생_1 시스템:재생_2 카바:L moc:출력0 moc:출력1 카바:R
이 목록에는 현재 사용 가능한 전체 포트 이름이 모두 표시됩니다. 이는 두 개의 외부 JACK 클라이언트인 cava
및 moc
와 하나의 내부 JACK 클라이언트 system
에 해당합니다. 포트 간의 유형 및 현재 활성 연결은 jack_lsp
에 대한 -p
및 -c
스위치를 사용하여 나열할 수 있습니다. CAVA와 MOC의 포트를 연결하기 위해 jack_connect
사용됩니다.
$ jack_connect cava:L moc:output0 $ jack_connect cava:R moc:output1
이제 CAVA는 MOC에서 나가는 오디오를 시각화합니다.
squeezelite는 Logitech Media Server에 사용할 수 있는 여러 소프트웨어 클라이언트 중 하나입니다. Squeezelite는 오디오 데이터를 이 입력 모듈이 사용하는 공유 메모리로 내보낼 수 있습니다. 구성을 조정하세요.
method = shmem source = /squeezelite-AA:BB:CC:DD:EE:FF
여기서 AA:BB:CC:DD:EE:FF
squeezelite의 MAC 주소입니다. 확실하지 않은 경우 LMS 웹 GUI(설정>정보)를 확인하세요. 참고: 시각화 도우미 지원을 활성화하려면 squeezelite를 -v
플래그로 시작해야 합니다.
참고: Cava는 기본 macOS 터미널 내에서 올바르게 렌더링되지 않습니다. 최적의 디스플레이를 얻으려면 Kitty를 설치하십시오. #109에 제시된 문제가 발생할 수 있다는 점에 유의하세요. 그러나 이것으로 해결될 수 있습니다.
배경음악
루프백 인터페이스를 자동으로 제공하는 배경음악을 설치합니다. 설치하고 실행한 후에는 portaudio와 함께 이 인터페이스를 사용하도록 구성을 편집하십시오.
method = portaudio source = "Background Music"
소리꽃
Soundflower는 루프백 인터페이스를 생성하는 데도 작동합니다. 이 레시피에 따라 오디오 MIDI 설정을 사용하여 스피커와 루프백 인터페이스 모두에 오디오를 출력하는 가상 인터페이스를 구성하세요. 다중 출력 장치를 만들면 키보드의 볼륨을 제어하는 기능이 상실됩니다. 이 때문에 여전히 키보드 제어 기능을 제공하는 배경 음악 앱을 권장합니다.
그런 다음 portaudio와 함께 이 인터페이스를 사용하도록 구성을 편집하십시오.
method = portaudio source = "Soundflower (2ch)"
기본 출력 장치에서 자동으로 오디오를 캡처해야 합니다.
SSH를 통해 외부 모니터로 실행하려면 출력을 /dev/console
로 리디렉션합니다.
~# ./cava <> /dev/console >&0 2>&1
ctrl+z로 종료한 다음 'bg'를 실행하면 로그아웃한 후에도 계속 실행됩니다.
(콘솔로 리디렉션하려면 루트여야 합니다. 간단한 sudo만으로는 충분하지 않습니다. 먼저 sudo su
실행하세요.)
가장 가능성이 높은 문제 #399. Cava가 작동하려면 로케일 설정을 올바르게 설정해야 합니다.
이는 파이프와이어의 알려진 문제입니다. 여기에 설명된 해결 방법을 시도해 보세요.
이는 글꼴 문제이거나 터미널 에뮬레이터에서 활성화된 줄 간격 문제입니다. 글꼴을 변경하거나 줄 간격을 비활성화해 보세요.
그래픽은 단순히 문자 기반이므로 글꼴 크기를 줄여보세요.
일부 터미널 에뮬레이터는 느립니다. Cava는 kitty 또는 alacritty와 같은 GPU 기반 터미널에서 가장 잘 보입니다. 글꼴 크기를 늘릴 수도 있습니다
TTY(예: ctrl+alt+F2)에서 cava를 실행하면 프로그램은 글꼴을 포함된 cava.psf
(실제로는 약간 수정된 "unifont")로 변경합니다.
콘솔 글꼴에서는 256개의 유니코드 문자만 지원되는 것으로 보입니다. 아마도 비트맵 글꼴이기 때문일 것입니다. 유니코드 문자 2581-2587(해상도를 높이기 위해 각 막대의 상단에 사용되는 1/8 - 7/8 블록)이 포함된 글꼴을 찾을 수 없습니다.
따라서 cava.psf
에서 문자 1-7은 실제로 유니코드 문자 2581-2587로 대체됩니다. cava가 종료되면 글꼴이 다시 변경됩니다. cava가 비정상적으로 종료되고 1-7이 부분 블록으로 대체된 것을 발견하면 setfont
사용하여 글꼴을 변경하면 됩니다.
실제로 setfont
기본 글꼴을 반환해야 하지만 일반적으로 설정되지 않습니다. 현재 글꼴을 얻는 다른 방법을 찾지 못했습니다. 따라서 cava는 중단될 때 글꼴을 "Lat2-Fixed16"으로 설정합니다. 모든 주요 배포판에는 이 기능이 있어야 합니다. 재부팅 시 기본 글꼴로 되돌아갑니다.
Konsole은 이를 지원하지 않습니다. #194
Usage : cava [options] Visualize audio input in terminal. Options: -p path to config file -v print version
ctrl+c 또는 q로 종료합니다.
cava가 예기치 않게 종료되거나 강제 종료된 경우 stty -echo
사용하여 에코를 수동으로 켜야 합니다.
열쇠 | 설명 |
---|---|
위 / 아래 | 감도 증가/감소 |
왼쪽 / 오른쪽 | 막대 너비 증가/감소 |
f / b | 전경색/배경색 변경 |
아르 자형 | 구성 다시 로드 |
기음 | 색상만 다시 로드 |
q 또는 CTRL-C | CAVA 종료 |
버전 0.4.0부터 모든 옵션은 구성 파일에서 수행되며 더 이상 명령줄 인수가 없습니다!
기본적으로 $XDG_CONFIG_HOME/cava/config
또는 $HOME/.config/cava/config
에서 처음 시작할 때 구성 파일이 생성되지만 -p
옵션을 사용하여 cava가 다른 파일을 사용하도록 만들 수도 있습니다.
cava에 SIGUSR1 신호를 보내면 cava가 해당 구성 파일을 다시 로드하게 됩니다. 따라서 사용자가 터미널에서 r을 누른 것처럼 동작합니다. pkill
또는 killall
사용하여 SIGUSR1 신호를 보낼 수 있습니다. 예를 들어:
$ pkill -USR1 cava
마찬가지로 cava에 SIGUSR2 신호를 보내면 구성 파일의 색상만 다시 로드됩니다. 이는 터미널에서 c를 누르는 것과 같습니다. 오디오 처리를 다시 초기화할 필요가 없으므로 전체 구성을 다시 로드하는 것보다 약간 빠릅니다.
$ pkill -USR2 cava
이퀄라이저 작동 방식에 대한 예:
[eq] 1=0 2=1 3=0 4=1 5=0
[eq] 1=2 2=2 3=1 4=1 5=0.5
cava의 핵심 처리 엔진은 별도의 라이브러리 cavacore
로 분할되었습니다. 자세한 내용은 CAVACORE.md를 참조하세요.
다른 프로세스로 파이프될 수 있는 STDOUT
에 막대 데이터를 쓰는 원시 출력 모드를 사용하여 다른 프로그램에 대해 Cava의 출력을 사용할 수도 있습니다. 이 옵션에 대한 자세한 내용은 예제 구성 파일에 설명되어 있습니다.
원시 데이터를 사용하는 Python으로 작성된 유용한 시작점 예제 스크립트는 여기에서 찾을 수 있습니다.
끌어오기 요청을 열기 전에 CONTRIBUTING.md를 읽어보세요.
감사합니다:
천상의해마
안코
리비베터
이 프로젝트의 초기 개발에 큰 기여를 했습니다.
또한 pulseaudio 기본 싱크 이름을 찾는 방법을 알아낸 dpayne에게 감사드립니다.