Plattformübergreifender Audiovisualisator
von Karl Stavestrand
Demovideo
Was es ist
Installieren
Von der Quelle
Paketmanager
Audio aufnehmen
Pulseaudio
Rohrdraht
ALSA
MPD
Sndio
OSS
JACK
Squeezelite
macOS
Windows
Läuft über ssh
Fehlerbehebung
Verwendung
Kontrollen
Konfiguration
Verwendung von Cava in anderen Anwendungen
Cavacore
Rohausgabe
Beitrag
Cava ist ein Balkenspektrum-Audiovisualisierer für Terminal oder Desktop (SDL).
funktioniert auf:
Linux
FreeBSD
macOS
Windows
Dieses Programm ist nicht für wissenschaftliche Zwecke bestimmt. Es ist so geschrieben, dass es bei der Visualisierung von Musik reaktionsschnell und ästhetisch wirkt.
Erforderliche Komponenten:
FFTW
libtool
Automarke
autoconf-archive (wird zum Einrichten von OpenGL benötigt)
pkgconf
Build-Essentials
iniparser
Empfohlene Komponenten:
Die Entwicklungsbibliothek eines dieser Audio-Frameworks, abhängig von Ihrer Distribution:
ALSA
Pulseaudio
Rohrdraht
Portaudio
Sndio
JACK
Optionale Komponenten:
SDL2-Entwicklungsdateien
Ncursesw-Entwicklungsdateien (gebündelt in Ncurses in Arch)
Zum Kompilieren von CAVA sind tatsächlich nur FFTW, iniparser und die Build-Tools erforderlich, Sie haben jedoch nur die Möglichkeit, aus FIFO-Dateien zu lesen. Um Audio direkt von Ihrem System zu erfassen, sind Pipewire-, Pulseaudio-, Alsa-, Sndio-, Jack- oder Portaudio-Dev-Dateien erforderlich (je nachdem, welches Audiosystem Sie verwenden).
Ncurses kann als alternative Ausgabemethode verwendet werden, wenn Sie Probleme mit der Standardmethode haben. Aber es ist nicht erforderlich.
Alle Anforderungen können problemlos in allen wichtigen Distributionen installiert werden:
FreeBSD
pkg install autoconf autoconf-archive automake fftw3 iniparser jackit libglvnd libtool pkgconf psftools sdl2 sndio
Führen Sie außerdem vor dem Erstellen diese Befehle unter FreeBSD aus:
export CFLAGS="-I/usr/local/include" export LDFLAGS="-L/usr/local/lib"
Debian/Ubuntu:
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
ArchLinux:
pacman -S base-devel fftw alsa-lib iniparser pulseaudio autoconf-archive pkgconf
openSUSE:
zypper install alsa-devel fftw3-devel libpulse-devel libtool autoconf-archive pkgconf
Fedora:
dnf install alsa-lib-devel fftw3-devel pulseaudio-libs-devel libtool autoconf-archive iniparser-devel pkgconf
macOS:
Installieren Sie zunächst Homebrew, falls Sie dies noch nicht getan haben:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Dann installieren Sie die Voraussetzungen:
brew install fftw libtool automake autoconf-archive pkgconf portaudio iniparser
Der Installationsort für Homebrew-Pakete unterscheidet sich zwischen Intel-Macs und Apple-Silicon-Macs. Daher werden die Befehle etwas anders sein. Welchen Typ Sie haben, erfahren Sie hier
Führen Sie für beide Computer diese Befehle aus, um zu beheben, dass macOS libtool nicht findet:
export LIBTOOL=`which glibtool` export LIBTOOLIZE=`which glibtoolize` ln -s `which glibtoolize` /usr/local/bin/libtoolize
Beachten Sie, dass der Dateiname je nach Version etwas unterschiedlich sein kann, das Verzeichnis jedoch dasselbe sein sollte.
Führen Sie außerdem diese Befehle auf Apple Silicon Macs aus, damit ./configure die Homebrew-Pakete finden kann:
export LDFLAGS="-L/opt/homebrew/lib" export CPPFLAGS="-I/opt/homebrew/include"
Intel Mac-Anweisungen getestet auf macOS Big Sur.
Apple Silicon-Anweisungen getestet auf macOS Ventura.
Windows:
siehe separate Readme-Datei im Ordner cava_win
.
Klonen Sie zunächst dieses Repo und cd es hinein, dann führen Sie Folgendes aus:
./autogen.sh ./configure make
Wenn Sie eine empfohlene Komponente installiert haben, diese aber nicht verwenden möchten (z. B. wenn Sie eine Binärdatei auf einem Computer erstellen, um sie auf einem anderen zu verwenden), kann die entsprechende Funktion während der Konfiguration deaktiviert werden (Einzelheiten finden Sie unter configure --help).
Für Windows gibt es eine VS-Lösungsdatei im Ordner cava_win
.
cava
im Standardverzeichnis /usr/local
installieren:
make install
Oder Sie können PREFIX
ändern, zum Beispiel:
./configure --prefix=PREFIX
make uninstall
Alle Distributions-spezifischen Installationsquellen sind möglicherweise veraltet. Bitte überprüfen Sie die Version, bevor Sie hier Probleme melden.
pkg install cava
Tumbleweed-Benutzer haben Cava in ihrem Repo. Sie können einfach Folgendes verwenden:
zypper in cava
Leap-Benutzer müssen zuerst das multimedia:apps-Repository hinzufügen:
zypper ar -f obs://multimedia:apps/openSUSE_Leap_42.2 multimedia
Wenn Sie eine andere Version verwenden, ersetzen Sie einfach openSUSE_Leap_42.2 durch openSUSE_13.2 und passen Sie es an Ihre Version an.
Cava ist in Fedora 26 und höher verfügbar. Sie können Cava installieren, indem Sie Folgendes ausführen:
dnf install cava
Cava ist in AUR.
pacaur -S cava
sudo apt install cava
Harshal Sheth hat CAVA zu seinem PPA hinzugefügt, es kann installiert werden mit:
add-apt-repository ppa:hsheth2/ppa apt update apt install cava
Cava ist in Homebrew.
brew install cava
Stellen Sie einfach sicher, dass Sie Pulseaudio-Entwicklungsdateien installiert haben und dass Cava mit Pulseaudio-Unterstützung erstellt wurde (dies sollte automatisch geschehen, wenn die Entwicklungsdateien gefunden werden).
Wenn Sie Glück haben, müssen Sie nur Cava trinken.
Wenn nichts passiert, müssen Sie möglicherweise eine andere Quelle als die Standardquelle verwenden. Der Standardwert könnte auch Ihr Mikrofon sein. Schauen Sie sich die Konfigurationsdatei an, um Hilfe zu erhalten.
Satz
method = pipewire
Die Standardquelle ist auto
und höchstwahrscheinlich die aktuell ausgewählte Ausgabe. Wenn Sie wireplumber ausführen, können Sie wpctl
verwenden, um den object.path
oder object.serial
des gewünschten Geräts zur Visualisierung abzurufen.
z.B
source = alsa:pcm:3:front:3:playback
Satz
method = alsa
in der Konfigurationsdatei.
ALSA kann schwierig sein, da es keine native Möglichkeit gibt, Audio von einem Ausgang abzurufen. Wenn Sie Audio direkt vom Ausgang (nicht nur vom Mikrofon oder Line-In) aufnehmen möchten, müssen Sie eine ALSA-Loopback-Schnittstelle erstellen und das Audio dann gleichzeitig sowohl an den Loopback als auch an Ihre normale Schnittstelle ausgeben.
Um eine Loopback-Schnittstelle zu erstellen, führen Sie einfach Folgendes aus:
sudo modprobe snd_aloop
Hoffentlich sollte Ihr aplay -l
jetzt eine Loopback-Schnittstelle enthalten.
Um es beim Booten dauerhaft zu machen, fügen Sie die Zeile snd-aloop
zu „/etc/modules“ hinzu. Um zu verhindern, dass es als erste Soundkarte geladen wird, fügen Sie die Zeile options snd-aloop index=1
zu „/etc/modprobe.d/alsa-base.conf“ hinzu. Dadurch wird es bei „1“ geladen. Sie können „1“ durch das ersetzen, was in Ihrem Audio-Setup am sinnvollsten ist.
Wenn Sie den Ton über Ihre Loopback-Schnittstelle abspielen, kann Cava ihn aufzeichnen, aber über Ihre Lautsprecher ist kein Ton zu hören. Um Audio auf der Loopback-Schnittstelle und Ihrer tatsächlichen Schnittstelle abzuspielen, müssen Sie den ALSA-Mehrkanal nutzen.
Sehen Sie sich die mitgelieferte Beispieldatei example_files/etc/asound.conf
an, um zu erfahren, wie Sie den Mehrkanal nutzen. Ich konnte dies mit einer HDA-Intel-PCH-Soundkarte zum Laufen bringen, aber mit einem USB-DAC hatte ich kein Glück.
Lesen Sie hier mehr über die ALSA-Methode.
Wenn Sie Probleme mit der Alsa-Methode auf Rasberry PI haben, versuchen Sie, mmap
zu aktivieren, indem Sie die folgende Zeile zu /boot/config.txt
hinzufügen und neu starten:
dtoverlay=i2s-mmap
@reluekiss, konnte Cava mit dmix zum Laufen bringen. Schauen Sie sich die Beispielkonfiguration in example_files/etc/asound_dmix.conf
an und geben Sie Problem 534 aus.
Fügen Sie diese Zeilen in mpd hinzu:
audio_output { type "fifo" name "my_fifo" path "/tmp/mpd.fifo" format "44100:16:2" }
Kommentieren Sie die Eingabemethode in der Konfigurationsdatei aus und ändern Sie sie in fifo
.
Der Pfad des FIFO kann mit dem source
angegeben werden.
Ich hatte einige Probleme mit der Synchronisierung (der Visualizer war dem Ton voraus). Das Reduzieren des ALSA-Puffers in mpd hat das Problem behoben:
audio_output { type "alsa" name "My ALSA" buffer_time "50000" # (50ms); default is 500000 microseconds (0.5s) }
Satz
method = sndio
Sndio ist das Audio-Framework, das unter OpenBSD verwendet wird, aber es ist auch unter FreeBSD, NetBSD und Linux verfügbar. Bisher wurde dies nur auf FreeBSD getestet, aber auf anderen Betriebssystemen ist es wahrscheinlich sehr ähnlich. Das folgende Beispiel zeigt, wie CAVA für sndio unter FreeBSD eingerichtet wird (eine ausführlichere Erklärung der verschiedenen pcmX
Soundgeräte und der entsprechenden /dev/dspX
Audiogeräte in diesem Beispiel finden Sie im Abschnitt „OSS“).
$ cat /dev/sndstat Installierte Geräte: pcm0: <Realtek ALC1220 (Rear Analog)> (Wiedergabe/Aufnahme) Standard pcm1: <Realtek ALC1220 (Analoges Frontmikrofon)> (Aufnahme) pcm2: <USB-Audio> (Wiedergabe/Aufnahme) Keine Geräte aus dem Userspace installiert.
Sndio arbeitet mit Gerätedeskriptoren. Im Allgemeinen gibt es für jedes /dev/dspX
Audiogerät einen entsprechenden rsnd/X
sndio Raw-Gerätedeskriptor. In diesem Beispiel gibt es rsnd/0
, rsnd/1
und rsnd/2
(sie sind nicht in /dev
aufgeführt, sndio verwendet diese Deskriptoren, um intern auf die entsprechenden Audiogeräte zuzugreifen). Sndio verarbeitet auch den impliziten default
-Gerätedeskriptor, der wie ein Symlink zum Rohgerätedeskriptor fungiert, der dem Standard-Audiogerät /dev/dsp
entspricht. In diesem Beispiel verhält es sich wie ein Symlink zu rsnd/0
, da das Standard-Audiogerät /dev/dsp
einen Symlink zu /dev/dsp0
enthält. Sndio wertet auch die Umgebungsvariablen AUDIODEVICE
und AUDIORECDEVICE
aus. Wenn einer dieser Parameter festgelegt ist ( AUDIORECDEVICE
überschreibt AUDIODEVICE
, wenn beide festgelegt sind) und ein Sndio-fähiges Programm versucht, den default
oder einen nicht angegebenen Gerätedeskriptor zu öffnen, verwendet das Programm den in der Umgebungsvariablen angegebenen Gerätedeskriptor.
Um nun den Mikrofoneingang in CAVA zu visualisieren, muss der source
in der Konfigurationsdatei auf den entsprechenden Audiodeskriptor gesetzt werden:
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
Mit source = default
kann man die Visualisierung auf der Kommandozeile umschalten, ohne die Konfigurationsdatei erneut zu ändern:
$ AUDIODEVICE=rsnd/0 cava $ AUDIODEVICE=rsnd/1 cava $ AUDIODEVICE=rsnd/2 cava
Sndio kann das wiedergegebene Audio nicht nur mit den rohen Gerätedeskriptoren aufzeichnen, dh die Sounds von einem Musikplayer oder einem Browser, die über rsnd/0
auf den externen Stereolautsprechern abgespielt werden, werden in CAVA nicht visualisiert. Damit dies funktioniert, muss der Sndio-Server gestartet und ein Überwachungs-Subgerät erstellt werden. Das folgende Beispiel zeigt, wie Sie den Server starten und aus rsnd/0
ein Überwachungs-Subgerät snd/0
erstellen und dann CAVA starten, wobei AUDIODEVICE
auf das neue Überwachungs-Subgerät verweist:
$ sndiod -f rsnd/0 -m play,mon $ AUDIODEVICE=snd/0 cava
Wechseln Sie zwischen den Lautsprechern und dem USB-Headset:
$ sndiod -f rsnd/2 -m play,mon -s usb -f rsnd/0 -m play,mon -s Lautsprecher $ AUDIODEVICE=snd/usb cava $ AUDIODEVICE=snd/speakers cava
Weitere Informationen zur Konfiguration und zum Start eines Sndio-Servers finden Sie auf der Manpage sndiod(8)
.
Satz
method = oss
Das unter FreeBSD verwendete Audiosystem ist das Open Sound System (OSS). Das folgende Beispiel zeigt, wie CAVA für OSS unter FreeBSD eingerichtet wird:
$ cat /dev/sndstat Installierte Geräte: pcm0: <Realtek ALC1220 (Rear Analog)> (Wiedergabe/Aufnahme) Standard pcm1: <Realtek ALC1220 (Analoges Frontmikrofon)> (Aufnahme) pcm2: <USB-Audio> (Wiedergabe/Aufnahme) Keine Geräte aus dem Userspace installiert.
Das System verfügt über drei pcm
Soundgeräte, pcm0
, pcm1
und pcm2
. pcm0
entspricht der analogen Ausgangsbuchse auf der Rückseite, in die externe Stereolautsprecher eingesteckt werden können, und der analogen Eingangsbuchse, in die man ein Mikrofon einstecken könnte. Da es sowohl Ausgabe als auch Eingabe kapselt, wird es als play/rec
markiert. Es ist auch als default
-Audiogerät festgelegt. pcm1
entspricht einer weiteren analogen Eingangsbuchse für ein Mikrofon auf der Vorderseite und ist rec
gekennzeichnet. Ein USB-Headset mit integriertem Mikrofon wird an einen USB-Anschluss angeschlossen und das System hat das pcm2
Soundgerät mit play/rec
dafür erstellt.
Im Allgemeinen gibt es für jedes pcmX
-Gerät ein entsprechendes /dev/dspX
-Audiogerät. In diesem Beispiel gibt es /dev/dsp0
, /dev/dsp1
und /dev/dsp2
(das System erstellt sie bei Bedarf, sie werden nicht über ls /dev
aufgelistet, wenn sie derzeit nicht verwendet werden). Das System erstellt außerdem ein implizites /dev/dsp
, das wie ein symbolischer Link zum default
-Audiogerät fungiert, in diesem Beispiel zu /dev/dsp0
.
Um nun den Mikrofoneingang in CAVA zu visualisieren, muss der source
in der Konfigurationsdatei auf das entsprechende Audiogerät gesetzt werden:
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 kann das ausgehende Audio nicht selbst aufzeichnen, dh die Sounds von einem Musikplayer oder einem Browser, die über /dev/dsp0
auf den externen Stereolautsprechern abgespielt werden, werden in CAVA nicht visualisiert. Eine Lösung ist die Verwendung von Virtual OSS. Es kann virtuelle Audiogeräte aus vorhandenen Audiogeräten erstellen, insbesondere kann es ein Loopback-Audiogerät aus /dev/dsp0
erstellen und von dem aus das wiedergegebene Audio in CAVA eingespeist werden kann:
$ doas pkg installiere virtual_oss $ doas virtual_oss -r44100 -b16 -c2 -s4ms -O /dev/dsp0 -R /dev/null -T /dev/sndstat -l dsp.cava $ cat /dev/sndstat Installierte Geräte: pcm0: <Realtek ALC1220 (Rear Analog)> (Wiedergabe/Aufnahme) Standard pcm1: <Realtek ALC1220 (Analoges Frontmikrofon)> (Aufnahme) pcm2: <USB-Audio> (Wiedergabe/Aufnahme) Installierte Geräte aus dem Userspace: dsp.cava: <Virtual OSS> (Wiedergabe/Aufnahme)
Es wurde ein virtuelles Loopback-Gerät /dev/dsp.cava
aus /dev/dsp0
erstellt. Nun wird das Audio in CAVA mit source = /dev/dsp.cava
in der Konfigurationsdatei visualisiert. Das Wiedergabeprogramm muss über eine Konfiguration verfügen, um das Gerät /dev/dsp.cava
verwenden zu können. Für Programme, bei denen dies nicht möglich ist, z. B. die immer /dev/dsp
verwenden, ersetzen Sie -l dsp.cava
durch -l dsp
. Virtual OSS kann unter FreeBSD als Dienst konfiguriert und gestartet werden.
Satz
method = jack
Das JACK Audio Connection Kit (JACK) ist eine professionelle Soundserver-API, die auf mehreren Betriebssystemen verfügbar ist, z. B. FreeBSD und Linux.
CAVA ist ein JACK-Client mit dem Basis-Clientnamen cava
und folgt dem Standard-Server-Start- und Stoppverhalten, d. h. CAVA startet einen JACK-Server, wenn noch keiner läuft und die Umgebungsvariable JACK_START_SERVER
definiert ist. In diesem Fall stoppt der Server auch, wenn alle Kunden sind ausgestiegen. Die source
in der CAVA-Konfigurationsdatei gibt den Namen des JACK-Servers an, zu dem CAVA versucht, eine Verbindung herzustellen. Der Standardwert ist default
, was auch der Standardname des JACK-Servers ist. Der Wert kann leer sein. In diesem Fall impliziert er default
. Daher sind die folgenden drei Einträge gleichwertig:
; source = default source = default source =
Eine Ausnahme bildet die Kombination aus einem leeren source
Eintrag und der Umgebungsvariablen JACK_DEFAULT_SERVER
. Wenn die Umgebungsvariable definiert ist, z. B. export JACK_DEFAULT_SERVER=foo
, dann sind die folgenden Einträge äquivalent:
source = foo source =
Weitere Informationen zur Konfiguration und zum Start eines JACK-Servers finden Sie auf der Manpage jackd(1)
.
CAVA erstellt Terminal-Audio-Eingangsports (also keine MIDI-Unterstützung). Diese Ports können mit den Ausgangsports anderer JACK-Clients verbunden werden, z. B. mit den Ausgangsports eines Musikplayers, und CAVA visualisiert die Musik. Derzeit unterstützt CAVA bis zu zwei Eingangsanschlüsse, dh es unterstützt Mono und Stereo. Die Anzahl der Eingabeports kann über die Option channels
im Eingabeabschnitt der Konfigurationsdatei gesteuert werden:
channels = 1 # one input port, mono channels = 2 # two input ports, stereo (default)
Der Kurzname des Ports lautet einfach M
für Mono und L
und R
für Stereo. Der vollständige Name des Eingangsports lautet entsprechend dem Basis-Client-Namen cava:M
für Mono und cava:L
und cava:R
für Stereo.
Die Option autoconnect
steuert die Verbindungsstrategie für CAVA-Ports mit den Ports anderer Clients:
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)
Die automatischen Verbindungsstrategien scannen die physischen Terminal-Eingangsports, also das echte Audiogerät, das tatsächlich den Ton ausgibt, und wenden dieselben Verbindungen an die CAVA-Ports an. Auf diese Weise visualisiert CAVA standardmäßig die von JACK-Clients wiedergegebenen Audiodaten.
Um die Verbindung zwischen CAVA-Ports und Ports anderer Client-Programme zu steuern und zu verwalten, gibt es Verbindungsverwaltungsprogramme für JACK. Einige bekannte Verbindungsmanager mit grafischer Benutzeroberfläche sind QjackCtl und Cadence. Das JACK-Paket selbst enthält häufig CLI-Tools. Abhängig vom Betriebssystem kann es notwendig sein, diese separat zu installieren, z. B. unter FreeBSD:
$ doas pkg jack-example-tools installieren
Zu den Tools zählen die Programme jack_lsp
und jack_connect
. Diese beiden Tools reichen aus, um Ports in der Befehlszeile aufzulisten und zu verbinden. Das folgende Beispiel zeigt, wie Sie Verbindungen mit diesen Tools einrichten:
$ jack_lsp system:capture_1 system:capture_2 system:playback_1 system:playback_2 Cava:L moc:output0 moc:output1 Cava:R
In dieser Auflistung werden alle vollständigen Portnamen angezeigt, die derzeit verfügbar sind. Diese entsprechen zwei externen JACK-Clients, cava
und moc
, und einem internen JACK-Client- system
. Die Typen und aktuell aktiven Verbindungen zwischen den Ports können mit den Schaltern -p
und -c
für jack_lsp
aufgelistet werden. Um die Ports von CAVA und MOC zu verbinden, wird jack_connect
verwendet:
$ jack_connect cava:L moc:output0 $ jack_connect cava:R moc:output1
Jetzt visualisiert CAVA das ausgehende Audio vom MOC.
Squeezelite ist einer von mehreren Software-Clients, die für den Logitech Media Server verfügbar sind. Squeezelite kann seine Audiodaten als Shared Memory exportieren, was dieses Eingabemodul nutzt. Passen Sie einfach Ihre Konfiguration an:
method = shmem source = /squeezelite-AA:BB:CC:DD:EE:FF
Dabei ist AA:BB:CC:DD:EE:FF
die MAC-Adresse von Squeezelite (überprüfen Sie die LMS-Web-GUI (Einstellungen > Informationen), wenn Sie unsicher sind). Hinweis: Squeezelite muss mit dem Flag -v
gestartet werden, um die Visualizer-Unterstützung zu aktivieren.
Hinweis: Cava wird im Standard-MacOS-Terminal nicht korrekt gerendert. Um eine optimale Darstellung zu erreichen, installieren Sie Kitty. Beachten Sie, dass Sie möglicherweise auf das in Nr. 109 dargestellte Problem stoßen. Es kann jedoch damit gelöst werden.
Hintergrundmusik
Installieren Sie Hintergrundmusik, die automatisch eine Loopback-Schnittstelle bereitstellt. Sobald es installiert und ausgeführt ist, bearbeiten Sie einfach Ihre Konfiguration, um diese Schnittstelle mit Portaudio zu verwenden:
method = portaudio source = "Background Music"
Klangblume
Soundflower arbeitet auch daran, eine Loopback-Schnittstelle zu erstellen. Verwenden Sie Audio-MIDI-Setup, um gemäß diesem Rezept eine virtuelle Schnittstelle zu konfigurieren, die Audio sowohl an Ihre Lautsprecher als auch an die Loopback-Schnittstelle ausgibt. Durch die Erstellung eines Geräts mit mehreren Ausgängen verlieren Sie die Möglichkeit, die Lautstärke auf Ihrer Tastatur zu steuern. Aus diesem Grund empfehlen wir die Hintergrundmusik-App, die Ihnen weiterhin Tastatursteuerung bietet.
Bearbeiten Sie dann Ihre Konfiguration, um diese Schnittstelle mit Portaudio zu verwenden:
method = portaudio source = "Soundflower (2ch)"
Sollte den Ton automatisch vom Standardausgabegerät erfassen.
Um über SSH auf einem externen Monitor auszuführen, leiten Sie die Ausgabe nach /dev/console
um:
~# ./cava <> /dev/console >&0 2>&1
Beenden Sie den Vorgang mit Strg+Z und führen Sie dann „bg“ aus, damit es nach dem Abmelden weiter ausgeführt wird.
(Sie müssen Root sein, um zur Konsole umzuleiten. Einfaches Sudo reicht nicht aus: Führen Sie zuerst sudo su
aus.)
Höchstwahrscheinlich Problem Nr. 399. Damit Cava funktioniert, müssen die Gebietsschemaeinstellungen korrekt eingestellt sein.
Dies ist ein bekanntes Problem bei Pipewire. Probieren Sie die hier beschriebene Problemumgehung aus
Dies liegt entweder an der Schriftart oder daran, dass der Zeilenabstand im Terminalemulator aktiviert ist. Versuchen Sie, die Schriftart zu ändern oder den Zeilenabstand zu deaktivieren.
Da die Grafiken einfach auf Zeichen basieren, versuchen Sie, die Schriftgröße zu verringern.
Einige Terminalemulatoren sind einfach langsam. Cava sieht in einem GPU-basierten Terminal wie Kitty oder Alacritty am besten aus. Sie können auch versuchen, die Schriftgröße zu erhöhen
Wenn Sie cava in einem TTY ausführen (z. B. Strg+Alt+F2), ändert das Programm die Schriftart in die enthaltene cava.psf
(eigentlich eine leicht modifizierte „Unifont“).
In Konsolenschriftarten werden anscheinend nur 256 Unicode-Zeichen unterstützt, wahrscheinlich weil es sich um Bitmap-Schriftarten handelt. Ich konnte keine Schriftart mit den Unicode-Zeichen 2581-2587 finden (die 1/8-7/8-Blöcke, die oben in jedem Balken verwendet werden, um die Auflösung zu erhöhen).
In cava.psf
werden die Zeichen 1–7 tatsächlich durch die Unicode-Zeichen 2581–2587 ersetzt. Wenn Cava beendet wird, wird die Schriftart wieder geändert. Wenn Cava abnormal beendet wird und Sie bemerken, dass 1-7 durch Teilblöcke ersetzt werden, ändern Sie einfach die Schriftart mit setfont
.
Eigentlich soll setfont
die Standardschriftart zurückgeben, diese ist jedoch normalerweise nicht festgelegt. Ich habe keine andere Möglichkeit gefunden, die aktuelle Schriftart zu erhalten. Daher setzt Cava bei einer Unterbrechung die Schriftart auf „Lat2-Fixed16“. Alle großen Distributionen sollten es haben. Beim Neustart wird die Standardschriftart wiederhergestellt.
Konsole unterstützt dies einfach nicht. #194
Usage : cava [options] Visualize audio input in terminal. Options: -p path to config file -v print version
Beenden Sie mit Strg+C oder Q.
Wenn Cava unerwartet beendet wird oder gewaltsam beendet wird, muss Echo manuell mit stty -echo
aktiviert werden.
Schlüssel | Beschreibung |
---|---|
hoch / runter | Empfindlichkeit erhöhen/verringern |
links rechts | Balkenbreite vergrößern/verkleinern |
f / b | Vordergrund-/Hintergrundfarbe ändern |
R | Konfiguration neu laden |
C | Nur Farben neu laden |
q oder STRG-C | Beenden Sie CAVA |
Ab Version 0.4.0 werden alle Optionen in der Konfigurationsdatei vorgenommen, keine Befehlszeilenargumente mehr!
Standardmäßig wird beim ersten Start in $XDG_CONFIG_HOME/cava/config
oder $HOME/.config/cava/config
eine Konfigurationsdatei erstellt, aber cava kann mit der Option -p
auch so eingestellt werden, dass es eine andere Datei verwendet.
Durch das Senden eines SIGUSR1-Signals an Cava wird Cava gezwungen, seine Konfigurationsdatei neu zu laden. Es verhält sich also so, als ob der Benutzer im Terminal r gedrückt hätte. Man könnte ein SIGUSR1-Signal mit pkill
oder killall
senden. Zum Beispiel:
$ pkill -USR1 cava
Ebenso werden beim Senden eines SIGUSR2-Signals an cava nur die Farben aus der Konfigurationsdatei neu geladen, was dem Drücken von c im Terminal entspricht. Dies ist etwas schneller als das Neuladen der gesamten Konfiguration, da die Audioverarbeitung nicht neu initialisiert werden muss.
$ pkill -USR2 cava
Beispiele zur Funktionsweise des Equalizers:
[eq] 1=0 2=1 3=0 4=1 5=0
[eq] 1=2 2=2 3=1 4=1 5=0.5
Die Kernverarbeitungs-Engine in Cava wurde in eine separate cavacore
-Bibliothek aufgeteilt. Weitere Informationen finden Sie unter CAVACORE.md.
Sie können die Ausgabe von Cava auch für andere Programme verwenden, indem Sie den Rohausgabemodus verwenden, der Balkendaten nach STDOUT
schreibt, die in andere Prozesse weitergeleitet werden können. Weitere Informationen zu dieser Option sind in der Beispielkonfigurationsdatei dokumentiert.
Ein nützliches, in Python geschriebenes Beispielskript, das Rohdaten verarbeitet, finden Sie hier.
Bitte lesen Sie CONTRIBUTING.md, bevor Sie eine Pull-Anfrage öffnen.
Dank:
Himmlisches Walross
Anko
livibetter
für wichtige Beiträge in der frühen Entwicklung dieses Projekts.
Vielen Dank auch an dpayne, der herausgefunden hat, wie man den Standard-Senkennamen von Pulseaudio findet.