C ross-platform A udio V isu a lizer
بواسطة كارل ستافستراند
فيديو تجريبي
ما هو عليه
التثبيت
من المصدر
مدراء الحزم
التقاط الصوت
نبض الصوت
سلك الأنابيب
ألسا
MPD
سنديو
OSS
جاك
com.quesquelite
ماك
ويندوز
يعمل عبر SSH
استكشاف الأخطاء وإصلاحها
الاستخدام
الضوابط
إعدادات
استخدام الكافا في تطبيقات أخرى
com.cavacore
الإخراج الخام
مساهمة
Cava عبارة عن متخيل صوتي للطيف الشريطي للمحطة الطرفية أو سطح المكتب (SDL).
يعمل على:
لينكس
فري بي إس دي
ماك
ويندوز
هذا البرنامج غير مخصص للاستخدام العلمي. لقد تمت كتابته ليبدو مستجيبًا وجماليًا عند استخدامه لتصور الموسيقى.
المكونات المطلوبة:
FFTW
libtool
com.automake
أرشيف تلقائي (مطلوب لإعداد OpenGL)
com.pkgconf
أساسيات البناء
com.iniparser
المكونات الموصى بها:
مكتبة التطوير لأحد هذه الأطر الصوتية، اعتمادًا على التوزيعة الخاصة بك:
ألسا
نبض الصوت
سلك الأنابيب
بورتاوديو
سنديو
جاك
المكونات الاختيارية:
ملفات تطوير SDL2
ملفات ncursesw dev (مجمعة في ncurses في القوس)
فقط FFTW وiniparser وأدوات البناء مطلوبة فعليًا لتجميع CAVA، ولكن هذا سيمنحك فقط القدرة على القراءة من ملفات fifo. لالتقاط الصوت مباشرة من نظام الأنابيب الخاص بك، يلزم وجود ملفاتpuleaudio أو alsa أو sndio أو jack أو portaudio dev (اعتمادًا على نظام الصوت الذي تستخدمه).
يمكن استخدام Ncurses كطريقة إخراج بديلة إذا كانت لديك مشكلات مع الطريقة الافتراضية. ولكن ليس مطلوبا.
يمكن تثبيت جميع المتطلبات بسهولة في جميع التوزيعات الرئيسية:
فري بي إس دي
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
ماك:
قم أولاً بتثبيت برنامج homebrew إذا لم تكن قد قمت بذلك بالفعل:
/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
لاحظ أن اسم الملف قد يكون مختلفًا بعض الشيء اعتمادًا على الإصدارات، ولكن يجب أن يكون الدليل هو نفسه.
بالإضافة إلى ذلك، قم بتشغيل هذه الأوامر على أجهزة Apple Silicon Mac حتى يتمكن ./configure من العثور على حزم Homebrew:
export LDFLAGS="-L/opt/homebrew/lib" export CPPFLAGS="-I/opt/homebrew/include"
تم اختبار تعليمات Intel Mac على نظام التشغيل macOS Big Sur.
تم اختبار تعليمات Apple Silicon على نظام التشغيل macOS Ventura.
ويندوز:
راجع الملف التمهيدي المنفصل في المجلد cava_win
.
أولاً، قم باستنساخ هذا الريبو والقرص المضغوط فيه، ثم قم بتشغيل:
./autogen.sh ./configure make
إذا كان لديك مكون موصى به مثبتًا، ولكنك لا ترغب في استخدامه (ربما في حالة إنشاء مكون ثنائي على جهاز واحد لاستخدامه على جهاز آخر)، فيمكن تعطيل الميزة المقابلة أثناء التكوين (راجع التكوين --تعليمات للحصول على التفاصيل).
بالنسبة لنظام التشغيل Windows، يوجد ملف حل VS في المجلد cava_win
.
قم بتثبيت cava
على الوضع الافتراضي /usr/local
:
make install
أو يمكنك تغيير PREFIX
، على سبيل المثال:
./configure --prefix=PREFIX
make uninstall
قد تكون جميع مصادر التثبيت الخاصة بالتوزيع قديمة. الرجاء التحقق من الإصدار قبل الإبلاغ عن أي مشاكل هنا.
pkg install cava
مستخدمو Tumbleweed لديهم كافا في الريبو الخاص بهم. يمكنهم فقط استخدام:
zypper in cava
يحتاج مستخدمو Leap إلى إضافة الوسائط المتعددة: مستودع التطبيقات أولاً:
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 CAVA إلى PPA الخاص به، ويمكن تثبيته مع:
add-apt-repository ppa:hsheth2/ppa apt update apt install cava
الكافا في البيرة.
brew install cava
كل ما عليك هو التأكد من أنك قمت بتثبيت ملفاتpulsaudio dev وأن cava قد تم تصميمها بدعمpuleaudio (يجب أن يتم ذلك تلقائيًا في حالة العثور على ملفات dev).
إذا كنت محظوظًا، فكل ما عليك فعله هو تشغيل cava.
إذا لم يحدث شيء، فقد يتعين عليك استخدام مصدر مختلف عن المصدر الافتراضي. قد يكون الإعداد الافتراضي أيضًا هو الميكروفون الخاص بك. انظر إلى ملف التكوين للحصول على المساعدة.
تعيين
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
الآن على واجهة استرجاع.
ولجعله ثابتًا عبر التمهيد، أضف السطر snd-aloop
إلى "/etc/modules". لمنع تحميلها كبطاقة الصوت الأولى، قم بإضافة options snd-aloop index=1
إلى "/etc/modprobe.d/alsa-base.conf"، سيؤدي هذا إلى تحميلها عند "1". يمكنك استبدال الرقم "1" بأي شيء يبدو منطقيًا في إعداد الصوت لديك.
يؤدي تشغيل الصوت من خلال واجهة Loopback الخاصة بك إلى تمكين cava من التقاطه، ولكن لن يكون هناك صوت في مكبرات الصوت لديك. من أجل تشغيل الصوت على واجهة الاسترجاع والواجهة الفعلية، يجب عليك الاستفادة من قناة ALSA المتعددة.
انظر إلى ملف المثال المضمن example_files/etc/asound.conf
حول كيفية استخدام القنوات المتعددة. لقد تمكنت من تنفيذ هذا العمل باستخدام بطاقة صوت HDA Intel PCH، لكن لم يحالفني الحظ مع USB DAC.
اقرأ المزيد عن طريقة ALSA هنا.
إذا كنت تواجه مشكلات مع طريقة alsa على Rasberry PI، فحاول تمكين mmap
عن طريق إضافة السطر التالي إلى /boot/config.txt
وإعادة التشغيل:
dtoverlay=i2s-mmap
@reluekiss، كان قادرًا على تشغيل cava باستخدام dmix. تحقق من مثال التكوين في 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
.
واجهت بعض المشاكل في المزامنة (كان المتخيل متقدمًا على الصوت). تم إصلاح المشكلة عن طريق تقليل المخزن المؤقت ALSA بـ mpd:
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، لكنه ربما يكون مشابهًا جدًا على أنظمة التشغيل الأخرى. يوضح المثال التالي كيفية إعداد CAVA لـ sndio على FreeBSD (يُرجى مراجعة قسم OSS للحصول على شرح أعمق لأجهزة صوت pcmX
المتنوعة وأجهزة الصوت /dev/dspX
المقابلة في هذا المثال).
$ cat /dev/sndstat الأجهزة المثبتة: pcm0: <Realtek ALC1220 (تناظري خلفي)> (تشغيل/تسجيل) افتراضي pcm1: <Realtek ALC1220 (الميكروفون التناظري الأمامي)> (تسجيل) pcm2: <صوت USB> (تشغيل/تسجيل) لم يتم تثبيت أي أجهزة من مساحة المستخدم.
يعمل Sndio على واصفات الجهاز. بشكل عام، يوجد لكل جهاز صوت /dev/dspX
واصف جهاز rsnd/X
sndio Raw مطابق. في هذا المثال هناك rsnd/0
و rsnd/1
و rsnd/2
(وهي غير مدرجة في /dev
، يستخدم sndio هذه الواصفات للوصول إلى أجهزة الصوت المقابلة داخليًا). يتعامل Sndio أيضًا مع واصف الجهاز الافتراضي default
، والذي يعمل كرابط رمزي إلى واصف الجهاز الأولي المتوافق مع جهاز الصوت الافتراضي /dev/dsp
. في هذا المثال، يعمل كرابط رمزي لـ rsnd/0
لأن جهاز الصوت الافتراضي /dev/dsp
يرتبط بـ /dev/dsp0
. يقوم 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
، يمكن للمرء تبديل التصور في سطر الأوامر دون تغيير ملف التكوين مرة أخرى:
$ الصوت = rsnd/0 كافا $ الصوت=rsnd/1 cava $ الصوت = rsnd/2 كافا
لا يستطيع Sndio تسجيل الصوت الذي يتم تشغيله باستخدام واصفات الجهاز الأولية فقط، أي أن الأصوات الصادرة من مشغل موسيقى أو متصفح والتي يتم تشغيلها على مكبرات الصوت الاستريو الخارجية من خلال rsnd/0
لا يتم تصورها في CAVA. لكي يعمل هذا، يجب بدء تشغيل خادم sndio وإنشاء جهاز مراقبة فرعي. يوضح المثال التالي كيفية بدء تشغيل الخادم وإنشاء جهاز مراقبة فرعي snd/0
من rsnd/0
ثم بدء تشغيل CAVA مع توجيه AUDIODEVICE
إلى جهاز المراقبة الفرعي الجديد:
$ sndiod -f rsnd/0 -m play,mon $ الصوت=snd/0 cava
التبديل بين مكبرات الصوت وسماعة رأس USB:
$ sndiod -f rsnd/2 -m play،mon -s usb -f rsnd/0 -m play،mon -s مكبرات الصوت $ الصوت=snd/usb cava $ AUDIODEVICE=snd/مكبرات الصوت cava
راجع manpage sndiod(8)
للحصول على مزيد من المعلومات بخصوص التكوين وبدء تشغيل خادم sndio.
تعيين
method = oss
نظام الصوت المستخدم في FreeBSD هو نظام الصوت المفتوح (OSS). يوضح المثال التالي كيفية إعداد CAVA لـ OSS على FreeBSD:
$ cat /dev/sndstat الأجهزة المثبتة: pcm0: <Realtek ALC1220 (تناظري خلفي)> (تشغيل/تسجيل) افتراضي pcm1: <Realtek ALC1220 (الميكروفون التناظري الأمامي)> (تسجيل) pcm2: <صوت USB> (تشغيل/تسجيل) لم يتم تثبيت أي أجهزة من مساحة المستخدم.
يحتوي النظام على ثلاثة أجهزة صوت pcm
، pcm0
، pcm1
و pcm2
. يتوافق pcm0
مع مقبس الإخراج التناظري في الخلف، حيث يتم توصيل مكبرات صوت استريو خارجية، ومقبس الإدخال التناظري، حيث يمكن توصيل ميكروفون. نظرًا لأنه يشمل كلاً من الإخراج والإدخال، فإنه يتم وضع علامة عليه على أنه play/rec
. تم تعيينه أيضًا كجهاز الصوت default
. يتوافق pcm1
مع مقبس إدخال تناظري آخر للميكروفون الموجود على الجانب الأمامي ويتم تمييزه rec
. يتم توصيل سماعة رأس USB مزودة بميكروفون مدمج بمنفذ USB وقام النظام بإنشاء جهاز صوت pcm2
مزود بإمكانيات play/rec
له.
بشكل عام، يوجد لكل جهاز pcmX
جهاز صوت /dev/dspX
مطابق. في هذا المثال هناك /dev/dsp0
و /dev/dsp1
و /dev/dsp2
(يقوم النظام بإنشائها عند الحاجة، ولا يتم إدراجها عبر ls /dev
إذا لم تكن قيد الاستخدام حاليًا). يقوم النظام أيضًا بإنشاء /dev/dsp
ضمنيًا، والذي يعمل كرابط رمزي لجهاز الصوت default
، في هذا المثال إلى /dev/dsp0
.
الآن، من أجل تصور إدخال الميكروفون في 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 تثبيت virtual_oss $ doas virtual_oss -r44100 -b16 -c2 -s4ms -O /dev/dsp0 -R /dev/null -T /dev/sndstat -l dsp.cava $ cat /dev/sndstat الأجهزة المثبتة: pcm0: <Realtek ALC1220 (تناظري خلفي)> (تشغيل/تسجيل) افتراضي pcm1: <Realtek ALC1220 (الميكروفون التناظري الأمامي)> (تسجيل) pcm2: <صوت USB> (تشغيل/تسجيل) الأجهزة المثبتة من مساحة المستخدم: dsp.cava: <Virtual OSS> (تشغيل/تسجيل)
لقد أنشأ جهاز استرجاع افتراضي /dev/dsp.cava
من /dev/dsp0
. الآن يتم تصور الصوت في CAVA مع source = /dev/dsp.cava
في ملف التكوين. يجب أن يحتوي برنامج التشغيل على تكوين لاستخدام الجهاز /dev/dsp.cava
. بالنسبة للبرامج التي لا يكون ذلك ممكنًا فيها، على سبيل المثال التي تستخدم دائمًا /dev/dsp
، استبدل -l dsp.cava
بـ -l dsp
. يمكن تكوين Virtual OSS وبدء تشغيلها كخدمة على FreeBSD.
تعيين
method = jack
مجموعة توصيل الصوت JACK (JACK) عبارة عن واجهة برمجة تطبيقات احترافية لخادم الصوت وهي متاحة في العديد من أنظمة التشغيل، مثل FreeBSD وLinux.
CAVA هو عميل JACK باسم العميل الأساسي cava
ويلتزم بسلوك بدء وإيقاف الخادم القياسي، على سبيل المثال، يبدأ CAVA خادم JACK إذا لم يكن هناك أي شيء قيد التشغيل بالفعل وتم تعريف متغير البيئة JACK_START_SERVER
، وفي هذه الحالة يتوقف الخادم أيضًا عند الكل لقد خرج العملاء. يحدد source
الموجود في ملف تكوين CAVA اسم خادم JACK الذي يحاول CAVA الاتصال به. القيمة الافتراضية هي default
، وهو أيضًا اسم خادم JACK الافتراضي. يمكن أن تكون القيمة فارغة، وفي هذه الحالة تشير إلى default
. وبالتالي فإن الإدخالات الثلاثة التالية متكافئة:
; source = default source = default source =
الاستثناء الوحيد هو مزيج من إدخال source
فارغ ومتغير البيئة JACK_DEFAULT_SERVER
. إذا تم تعريف متغير البيئة، على سبيل المثال، export JACK_DEFAULT_SERVER=foo
، فإن الإدخالات التالية متكافئة:
source = foo source =
راجع jackd(1)
manpage للحصول على مزيد من المعلومات بخصوص التكوين وبدء تشغيل خادم JACK.
يقوم CAVA بإنشاء منافذ إدخال صوتية طرفية (لذلك لا يوجد دعم MIDI). يمكن لهذه المنافذ الاتصال بمنافذ الإخراج الخاصة بعملاء JACK الآخرين، على سبيل المثال، الاتصال بمنافذ الإخراج الخاصة بمشغل الموسيقى وسيقوم CAVA بتصور الموسيقى. يدعم CAVA حاليًا ما يصل إلى منفذي إدخال، أي أنه يدعم الأحادي والستيريو. يمكن التحكم في عدد منافذ الإدخال عبر خيار 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_lsp
و jack_connect
. هاتان الأداتان تكفيان لإدراج المنافذ وتوصيلها في سطر الأوامر. يوضح المثال التالي كيفية إعداد الاتصالات باستخدام هذه الأدوات:
$ jack_lsp النظام:capture_1 النظام:capture_2 النظام:playback_1 النظام:playback_2 الأجوف: ل موك:الإخراج0 موك:الإخراج1 الأجوف: ر
تعرض هذه القائمة كافة أسماء المنافذ الكاملة المتوفرة حاليًا. تتوافق هذه مع عميلي JACK خارجيين، cava
و moc
، system
عميل JACK داخلي واحد. يمكن إدراج الأنواع والاتصالات النشطة الحالية بين المنافذ باستخدام مفاتيح التبديل -p
و -c
لـ jack_lsp
. من أجل توصيل منافذ CAVA وMOC، يتم استخدام jack_connect
:
$ jack_connect cava:L moc:output0 $ jack_connect cava:R moc:output1
الآن تصور CAVA الصوت الصادر من MOC.
يعدعصر الضغط أحد برامج العملاء العديدة المتوفرة لخادم الوسائط Logitech. يستطيع Squeezelite تصدير بياناته الصوتية كذاكرة مشتركة، وهو ما تستخدمه وحدة الإدخال هذه. فقط قم بتكييف التكوين الخاص بك:
method = shmem source = /squeezelite-AA:BB:CC:DD:EE:FF
حيث AA:BB:CC:DD:EE:FF
هو عنوان MAC الخاص بـعصر الضغط (تحقق من واجهة المستخدم الرسومية للويب LMS (الإعدادات>المعلومات) إذا لم تكن متأكدًا). ملحوظة: يجب أن يبدأ Squeelite بالعلامة -v
لتمكين دعم المتخيل.
ملاحظة: لا يتم عرض Cava بشكل صحيح داخل محطة macOS الافتراضية. من أجل تحقيق العرض الأمثل، قم بتثبيت Kitty. احذر من أن تصادف المشكلة الموضحة في رقم 109؛ ومع ذلك، يمكن حلها مع هذا.
موسيقى الخلفية
قم بتثبيت موسيقى الخلفية التي توفر واجهة استرجاع تلقائيًا. بمجرد التثبيت والتشغيل، ما عليك سوى تحرير التكوين الخاص بك لاستخدام هذه الواجهة مع portaudio:
method = portaudio source = "Background Music"
زهرة الصوت
يعمل Soundflower أيضًا على إنشاء واجهة استرجاع. استخدم إعداد Audio 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 أفضل في محطة تعتمد على GPU مثل kitty أو alacritty. يمكنك أيضًا محاولة زيادة حجم الخط
إذا قمت بتشغيل cava في TTY (مثل ctrl+alt+F2) فسيقوم البرنامج بتغيير الخط إلى cava.psf
المضمن (في الواقع "unifont" معدل قليلاً).
في خطوط وحدة التحكم، يبدو أنه يتم دعم 256 حرف Unicode فقط، ربما لأنها خطوط نقطية. لم أتمكن من العثور على خط بأحرف Unicode 2581-2587 (الكتل 1/8 - 7/8 المستخدمة في الجزء العلوي من كل شريط لزيادة الدقة).
لذلك في cava.psf
، يتم استبدال الأحرف 1-7 فعليًا بأحرف Unicode 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 بشكل غير متوقع أو تم إيقافه بالقوة، فيجب تشغيل echo يدويًا باستخدام stty -echo
.
مفتاح | وصف |
---|---|
أعلى / أسفل | زيادة / تقليل الحساسية |
يسار / يمين | زيادة/تقليل عرض الشريط |
و / ب | تغيير لون المقدمة/الخلفية |
ص | إعادة تحميل التكوين |
ج | إعادة تحميل الألوان فقط |
ف أو CTRL-C | قم بإنهاء كافا |
اعتبارًا من الإصدار 0.4.0، يتم تنفيذ جميع الخيارات في ملف التكوين، ولا مزيد من وسائط سطر الأوامر!
افتراضيًا، يتم إنشاء ملف التكوين عند التشغيل لأول مرة في $XDG_CONFIG_HOME/cava/config
أو $HOME/.config/cava/config
، ولكن يمكن أيضًا جعل cava يستخدم ملفًا مختلفًا مع الخيار -p
.
سيؤدي إرسال إشارة SIGUSR1 إلى cava إلى إجبار cava على إعادة تحميل ملف التكوين الخاص به. وبالتالي، فإنه يتصرف كما لو أن المستخدم ضغط على r في الجهاز. يمكن للمرء إرسال إشارة SIGUSR1 باستخدام pkill
أو killall
. على سبيل المثال:
$ pkill -USR1 cava
وبالمثل، فإن إرسال إشارة SIGUSR2 إلى cava لن يؤدي إلا إلى إعادة تحميل الألوان من ملف التكوين، وهو نفس الضغط على 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 للحصول على التفاصيل.
يمكنك أيضًا استخدام مخرجات Cava لبرامج أخرى باستخدام وضع الإخراج الخام، والذي سيكتب بيانات الشريط إلى STDOUT
والتي يمكن توصيلها عبر الأنابيب إلى عمليات أخرى. تم توثيق المزيد من المعلومات حول هذا الخيار في ملف التكوين النموذجي.
يمكن العثور هنا على مثال مفيد لنص برمجي مكتوب بلغة بايثون يستهلك البيانات الأولية.
يرجى قراءة CONTRIBUTING.md قبل فتح طلب السحب.
شكرا ل:
الفظ السماوي
أنكو
com.livibetter
لمساهماته الكبيرة في التطوير المبكر لهذا المشروع.
شكرًا أيضًا لـ dpayne لمعرفة كيفية العثور على اسم الحوض الافتراضي لـpulseaudio.