C ross-platform udio V เป็น ไล เซอร์
โดย คาร์ล สเตฟสแตรนด์
วิดีโอสาธิต
มันคืออะไร
กำลังติดตั้ง
จากแหล่งที่มา
ผู้จัดการแพ็คเกจ
กำลังบันทึกเสียง
พัลส์ออดิโอ
ท่อลวด
อัลซ่า
MPD
สนิดิโอ
อสส
แจ็ค
สควีไลท์
ระบบปฏิบัติการ macOS
หน้าต่าง
ทำงานผ่าน ssh
การแก้ไขปัญหา
การใช้งาน
การควบคุม
การกำหนดค่า
การใช้ cava ในแอปพลิเคชันอื่น
คาวาคอร์
ผลผลิตดิบ
ผลงาน
Cava คือโปรแกรมสร้างภาพเสียงแบบสเปกตรัมบาร์สำหรับเทอร์มินัลหรือเดสก์ท็อป (SDL)
ทำงานบน:
ลินุกซ์
ฟรีBSD
ระบบปฏิบัติการ macOS
หน้าต่าง
โปรแกรมนี้ไม่ได้มีไว้สำหรับการใช้งานทางวิทยาศาสตร์ เขียนขึ้นเพื่อให้ดูตอบสนองและสวยงามเมื่อใช้เพื่อแสดงภาพเพลง
ส่วนประกอบที่จำเป็น:
FFTW
libtool
ออโตเมค
autoconf-archive (จำเป็นสำหรับการตั้งค่า OpenGL)
pkgconf
สิ่งจำเป็นสำหรับการสร้าง
iniparser
ส่วนประกอบที่แนะนำ:
lib การพัฒนาของหนึ่งในเฟรมเวิร์กเสียงเหล่านี้ ขึ้นอยู่กับ distro ของคุณ:
อัลซ่า
พัลส์ออดิโอ
ท่อลวด
ปอร์โตดิโอ
สนิดิโอ
แจ็ค
ส่วนประกอบเสริม:
ไฟล์ SDL2 dev
ไฟล์ ncursesw dev (รวมอยู่ใน ncurses ในส่วนโค้ง)
CAVA จำเป็นต้องใช้เฉพาะ FFTW, iniparser และเครื่องมือ build เท่านั้น แต่สิ่งนี้จะทำให้คุณสามารถอ่านจากไฟล์ fifo เท่านั้น ในการจับเสียงโดยตรงจากไปป์ไวร์ระบบของคุณ จำเป็นต้องมีไฟล์ Pulseaudio, alsa, sndio, jack หรือ portaudio dev (ขึ้นอยู่กับระบบเสียงที่คุณใช้)
Ncurses สามารถใช้เป็นวิธีเอาต์พุตทางเลือกได้ หากคุณมีปัญหากับวิธีเริ่มต้น แต่ก็ไม่จำเป็น
ข้อกำหนดทั้งหมดสามารถติดตั้งได้อย่างง่ายดายใน distros หลักทั้งหมด:
ฟรีBSD
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
openSUSE:
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
macOS:
ก่อนติดตั้ง 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 Macs เพื่อให้ ./configure สามารถค้นหาแพ็คเกจ Homebrew ได้:
export LDFLAGS="-L/opt/homebrew/lib" export CPPFLAGS="-I/opt/homebrew/include"
คำแนะนำของ Intel Mac ทดสอบบน macOS Big Sur
คำแนะนำของ Apple Silicon ทดสอบบน macOS Ventura
หน้าต่าง:
ดู readme แยกต่างหากในโฟลเดอร์ cava_win
ก่อนอื่นให้โคลน repo นี้และใส่ cd ลงไป จากนั้นรัน:
./autogen.sh ./configure make
หากคุณมีส่วนประกอบที่แนะนำติดตั้งไว้ แต่ไม่ต้องการใช้ส่วนประกอบนั้น (บางทีหากสร้างไบนารีบนเครื่องหนึ่งเพื่อใช้กับอีกเครื่องหนึ่ง) คุณสมบัติที่เกี่ยวข้องสามารถปิดใช้งานได้ในระหว่างการกำหนดค่า (ดูการกำหนดค่า --help สำหรับรายละเอียด)
สำหรับ windows จะมีไฟล์โซลูชัน VS ในโฟลเดอร์ cava_win
ติดตั้ง cava
เป็นค่าเริ่มต้น /usr/local
:
make install
หรือคุณสามารถเปลี่ยน PREFIX
ได้เช่น:
./configure --prefix=คำนำหน้า
make uninstall
แหล่งที่มาของการติดตั้งเฉพาะ distro ทั้งหมดอาจล้าสมัย โปรดตรวจสอบเวอร์ชันก่อนรายงานปัญหาใดๆ ที่นี่
pkg install cava
ผู้ใช้ Tumbleweed มี Cava อยู่ใน repo พวกเขาสามารถใช้:
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
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
ของคุณควรมีอินเทอร์เฟซแบบย้อนกลับ
หากต้องการให้คงอยู่ตลอดการบู๊ตให้เพิ่มบรรทัด 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 (ไมโครโฟนอะนาล็อกด้านหน้า)> (rec) pcm2: <เสียง USB> (เล่น/บันทึก) ไม่มีอุปกรณ์ติดตั้งจากพื้นที่ผู้ใช้
Sndio ทำงานบนตัวอธิบายอุปกรณ์ โดยทั่วไปสำหรับอุปกรณ์เสียง /dev/dspX
ทุกตัวจะมีตัวอธิบายอุปกรณ์ดิบ rsnd/X
sndio ที่สอดคล้องกัน ในตัวอย่างนี้ มี rsnd/0
, rsnd/1
และ rsnd/2
(ไม่อยู่ในรายการ /dev
, sndio ใช้คำอธิบายเหล่านี้เพื่อเข้าถึงอุปกรณ์เสียงที่เกี่ยวข้องภายใน) Sndio ยังจัดการตัวอธิบายอุปกรณ์ default
โดยนัย ซึ่งทำหน้าที่เหมือนลิงก์ไปยังตัวอธิบายอุปกรณ์ดิบที่สอดคล้องกับอุปกรณ์เสียงเริ่มต้น /dev/dsp
ในตัวอย่างนี้ มันทำหน้าที่เหมือนกับลิงก์สัญลักษณ์ไปยัง rsnd/0
เนื่องจากอุปกรณ์เสียงเริ่มต้น /dev/dsp
เชื่อมโยงไปยัง /dev/dsp0
Sndio ยังประเมินตัวแปรสภาพแวดล้อม AUDIODEVICE
และ AUDIORECDEVICE
หากมีการตั้งค่าอย่างใดอย่างหนึ่ง ( AUDIORECDEVICE
จะแทนที่ AUDIODEVICE
หากตั้งค่าทั้งคู่) และโปรแกรม sndio-aware พยายามเปิดตัวอธิบายอุปกรณ์ 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
เราสามารถสลับการแสดงภาพบน commandline โดยไม่ต้องเปลี่ยนไฟล์การกำหนดค่าอีกครั้ง:
$ AUDIODEVICE=rsnd/0 คาวา $ AUDIODEVICE=rsnd/1 คาวา $ AUDIODEVICE=rsnd/2 คาวา
Sndio ไม่สามารถบันทึกเสียงที่เล่นโดยใช้เพียงคำอธิบายอุปกรณ์ดิบ เช่น เสียงจากเครื่องเล่นเพลงหรือเบราว์เซอร์ที่เล่นบนลำโพงสเตอริโอภายนอกผ่าน rsnd/0
จะไม่ถูกมองเห็นใน CAVA เพื่อให้ทำงานได้ จะต้องเริ่มต้นเซิร์ฟเวอร์ sndio และต้องสร้างอุปกรณ์ย่อยการตรวจสอบ ตัวอย่างต่อไปนี้แสดงวิธีการสตาร์ทเซิร์ฟเวอร์และสร้างอุปกรณ์ย่อยการมอนิเตอร์ snd/0
จาก rsnd/0
จากนั้นสตาร์ท CAVA โดยที่ AUDIODEVICE
ชี้ไปยังอุปกรณ์ย่อยการมอนิเตอร์ใหม่:
$ sndiod -f rsnd/0 -m เล่นจันทร์ $ AUDIODEVICE=snd/0 คาวา
สลับระหว่างลำโพงและชุดหูฟัง USB:
$ sndiod -f rsnd/2 -m เล่น, mon -s usb -f rsnd/0 -m เล่น, mon -s ลำโพง $ AUDIODEVICE=snd/usb cava $ AUDIODEVICE=snd/ลำโพง
ปรึกษา manpage sndiod(8)
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าและการเริ่มต้นเซิร์ฟเวอร์ sndio
ชุด
method = oss
ระบบเสียงที่ใช้ใน FreeBSD คือ Open Sound System (OSS) ตัวอย่างต่อไปนี้สาธิตวิธีการตั้งค่า CAVA สำหรับ OSS บน FreeBSD:
$ cat /dev/sndstat อุปกรณ์ที่ติดตั้ง: pcm0: <Realtek ALC1220 (อนาล็อกด้านหลัง)> (เล่น/บันทึก) เป็นค่าเริ่มต้น pcm1: <Realtek ALC1220 (ไมโครโฟนอะนาล็อกด้านหน้า)> (rec) 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 (ไมโครโฟนอะนาล็อกด้านหน้า)> (rec) 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
OSS เสมือนสามารถกำหนดค่าและเริ่มเป็นบริการบน FreeBSD ได้
ชุด
method = jack
JACK Audio Connection Kit (JACK) เป็น API เซิร์ฟเวอร์เสียงระดับมืออาชีพซึ่งมีอยู่ในระบบปฏิบัติการหลายระบบ เช่น 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 =
ปรึกษา manpage jackd(1)
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าและการเริ่มต้นเซิร์ฟเวอร์ 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:เอาท์พุท1
ตอนนี้ CAVA จะแสดงภาพเสียงขาออกจาก MOC
squeezelite เป็นหนึ่งในซอฟต์แวร์ไคลเอนต์หลายตัวที่มีให้บริการสำหรับ Logitech Media Server Squeezelite สามารถส่งออกข้อมูลเสียงเป็นหน่วยความจำที่ใช้ร่วมกัน ซึ่งเป็นสิ่งที่โมดูลอินพุตนี้ใช้ เพียงปรับการกำหนดค่าของคุณ:
method = shmem source = /squeezelite-AA:BB:CC:DD:EE:FF
โดยที่ AA:BB:CC:DD:EE:FF
คือที่อยู่ MAC ของ squeezelite (ตรวจสอบ LMS Web GUI (การตั้งค่า>ข้อมูล) หากไม่แน่ใจ) หมายเหตุ: squeezelite ต้องเริ่มต้นด้วยแฟล็ก -v
เพื่อเปิดใช้งานการสนับสนุน Visualizer
หมายเหตุ: 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 จะดูดีที่สุดในเทอร์มินัลที่ใช้ GPU เช่น kitty หรือ alacritty คุณยังสามารถลองเพิ่มขนาดตัวอักษรได้อีกด้วย
หากคุณเรียกใช้ cava ใน TTY (เช่น ctrl+alt+F2) โปรแกรมจะเปลี่ยนแบบอักษรเป็น cava.psf
ที่รวมไว้ (จริงๆ แล้วเป็น "unifont" ที่ได้รับการแก้ไขเล็กน้อย)
ในแบบอักษรคอนโซล ดูเหมือนว่ารองรับอักขระ Unicode เพียง 256 ตัวเท่านั้น อาจเป็นเพราะเป็นแบบอักษรบิตแมป ฉันไม่พบแบบอักษรที่มีอักขระ Unicode 2581-2587 (บล็อก 1/8 - 7/8 ที่ใช้ที่ด้านบนของแต่ละแถบเพื่อเพิ่มความละเอียด)
ดังนั้นใน cava.psf
อักขระ 1-7 จะถูกแทนที่ด้วยอักขระ Unicode 2581-2587 เมื่อออกจาก cava ฟอนต์จะเปลี่ยนกลับ หาก cava ออกอย่างผิดปกติและคุณสังเกตเห็นว่า 1-7 ถูกแทนที่ด้วยบล็อกบางส่วน ให้เปลี่ยนแบบอักษรด้วย setfont
จริงๆ แล้ว setfont
ควรส่งคืนแบบอักษรเริ่มต้น แต่โดยปกติจะไม่ได้ตั้งค่าไว้ ฉันไม่พบวิธีอื่นในการรับแบบอักษรปัจจุบัน ดังนั้น cava จึงตั้งค่าแบบอักษรเป็น "Lat2-Fixed16" เมื่อถูกขัดจังหวะ distros ที่สำคัญทั้งหมดควรมี มันจะเปลี่ยนกลับเป็นแบบอักษรเริ่มต้นของคุณเมื่อรีบูต
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
สำคัญ | คำอธิบาย |
---|---|
ขึ้น / ลง | เพิ่ม/ลดความไว |
ซ้าย / ขวา | เพิ่ม/ลดความกว้างของแถบ |
ฉ / บี | เปลี่ยนสีพื้นหน้า/พื้นหลัง |
ร | โหลดการกำหนดค่าอีกครั้ง |
ค | โหลดสีใหม่เท่านั้น |
q หรือ CTRL-C | ออกจาก CAVA |
ในเวอร์ชัน 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 ก่อนที่จะเปิดคำขอดึง
ขอขอบคุณ:
สวรรค์วอลรัส
อังโกะ
มีชีวิตที่ดีขึ้น
สำหรับการมีส่วนร่วมสำคัญในการพัฒนาโครงการนี้ในช่วงแรก
ขอขอบคุณ dpayne สำหรับการหาวิธีค้นหาชื่อ sink เริ่มต้นของ pulseaudio