Користувальницькькі налаштування

Налаштування сайту


pulseaudio

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Both sides previous revision Попередня ревізія
Наступна ревізія
Попередня ревізія
pulseaudio [2021/03/30 12:39]
wombat Запис з кількох входів одночасно
pulseaudio [2024/06/10 10:42] (поточний)
wombat [Запис з кількох входів одночасно] Фіксована петля
Рядок 1: Рядок 1:
 ====== Pulseaudio ====== ====== Pulseaudio ======
  
-===== Детектування входів =====+====== Детектування входів ​======
  
 Для вимкнення детектування входів потрібно передати відповідні параметри модулю ядра snd-hda-intel. Для цього потрібно:​ Для вимкнення детектування входів потрібно передати відповідні параметри модулю ядра snd-hda-intel. Для цього потрібно:​
Рядок 39: Рядок 39:
  
  
-===== Запис з кількох входів одночасно =====+====== Запис з кількох входів одночасно ​======
  
 Якщо в нас є кілька мікрофонів,​ і ми хочемо поєднати сигнал від них у єдиний запис, зробити це можна наступним чином ((Рішення взяте звідси:​ https://​askubuntu.com/​a/​870596/​298881 )). Якщо в нас є кілька мікрофонів,​ і ми хочемо поєднати сигнал від них у єдиний запис, зробити це можна наступним чином ((Рішення взяте звідси:​ https://​askubuntu.com/​a/​870596/​298881 )).
Рядок 45: Рядок 45:
 Спочатку потрібно створити віртуальний звуковий пристрій,​ до якого ми спрямуємо сигнали від усіх потрібних входів. Для цього виконуємо команду:​ Спочатку потрібно створити віртуальний звуковий пристрій,​ до якого ми спрямуємо сигнали від усіх потрібних входів. Для цього виконуємо команду:​
  
-  pactl load-module module-null-sink sink_name=MultipleInputs ​sink_properties=device.description="​JointMicrophones"+  pactl load-module module-null-sink sink_name=MixedOutput ​sink_properties=device.description="​MixedOutput"
  
 При успішному виконанні програма видасть у консоль число. Це число -- умовний номер завантаженого модуля,​ за яким цей модуль можна згодом вимкнути (див. примітку у кінці). При успішному виконанні програма видасть у консоль число. Це число -- умовний номер завантаженого модуля,​ за яким цей модуль можна згодом вимкнути (див. примітку у кінці).
  
-Тут параметр ''​sink_name=MultipleInputs''​ позначає умовне ім'​я цього віртуального пристрою,​ за яким ми зможемо до нього надалі звертатись,​ а параметр ''​sink_properties=device.description="​JointMicrophones"''​ задає текстовий опис пристрою,​ який буде показано у налаштуваннях гучності (''​pavucontrol''​).+Тут параметр ''​sink_name=MixedOutput''​ позначає умовне ім'​я цього віртуального пристрою,​ за яким ми зможемо до нього надалі звертатись,​ а параметр ''​sink_properties=device.description="​MixedOutput"''​ задає текстовий опис пристрою,​ який буде показано у налаштуваннях гучності (''​pavucontrol''​).
  
-Після цього у вікні налаштувань гучності (''​pavucontrol''​) на вкладці ''"​Пристрої відтворення"''​ з'​явиться пристрій ''"​JointMicrophones"''​((Якщо його не видно, то внизу цієї вкладки потрібно натиснути на спадному списку ''"​**Показати:​**"''​ та обрати зі списку пункт ''"​All Output Devices"''​))+Після цього у вікні налаштувань гучності (''​pavucontrol''​) на вкладці ''"​Пристрої відтворення"''​ з'​явиться пристрій ''"​MixedOutput"''​((Якщо його не видно, то внизу цієї вкладки потрібно натиснути на спадному списку ''"​**Показати:​**"''​ та обрати зі списку пункт ''"​All Output Devices"''​))
  
-Аналогічно,​ на сусідній вкладці ''"​Пристрої отримання"''​ з'​явиться віртуальний пристрій ''"​Monitor of JointMicrophones"''​.+Аналогічно,​ на сусідній вкладці ''"​Пристрої отримання"''​ з'​явиться віртуальний пристрій ''"​Monitor of MixedOutput"''​.
  
 Якщо все це так, можна переходити до наступного кроку. Якщо все це так, можна переходити до наступного кроку.
Рядок 59: Рядок 59:
 Далі потрібно **для кожного** з пристроїв,​ сигнали яких ми хочемо поєднати,​ виконати таку команду:​ Далі потрібно **для кожного** з пристроїв,​ сигнали яких ми хочемо поєднати,​ виконати таку команду:​
  
-  pactl load-module module-loopback sink=MultipleInputs ​latency_msec=5+  pactl load-module module-loopback sink=MixedOutput ​latency_msec=5
  
-Тут обов'​язково правильно вказати назву віртуального пристрою,​ до якого ми спрямуємо усі ці сигнали -- параметр ''​sink=MultipleInputs''​. Параметр ''​latency_msec=5''​ тут позначає затримку сигналу у цьому пристрої (число -- в мілісекундах;​ найменше значення -- 1мс).+Тут обов'​язково правильно вказати назву віртуального пристрою,​ до якого ми спрямуємо усі ці сигнали -- параметр ''​sink=MixedOutput''​. Параметр ''​latency_msec=5''​ тут позначає затримку сигналу у цьому пристрої (число -- в мілісекундах;​ найменше значення -- 1мс).
  
-Після виконання кожної такої команди у вікні налаштувань гучності на вкладці ''"​Запис"''​ має з'​явитися так званий Loopback-пристрій з назвою ''"​Loopback to JointMicrophones ​з"'',​ праворуч від якої буде кнопка вибору пристрою,​ сигнал від якого нам потрібно спрямувати до нашого поєднувального віртуального пристрою ''"​JointMicrophones"''​.+Після виконання кожної такої команди у вікні налаштувань гучності на вкладці ''"​Запис"''​ має з'​явитися так званий Loopback-пристрій з назвою ''"​Loopback to MixedOutput ​з"'',​ праворуч від якої буде кнопка вибору пристрою,​ сигнал від якого нам потрібно спрямувати до нашого поєднувального віртуального пристрою ''"​MixedOutput"''​.
  
-Якщо тут вибрати потрібний пристрій,​ то на сусідній вкладці ''"​Відтворення"''​ з'​явиться його назва у такому вигляді:​ ''"​Loopback from <​назва>​ на"'',​ і праворуч від цієї назви -- знову ж таки кнопка вибору пристрою,​ **до якого** потрібно спрямувати сигнал. В нашому випадку нам потрібно спрямувати усі сигнали на ''"​JointMicrophones"'',​ тому скрізь обираємо саме його. Зверніть увагу, що на початку ці пристрої можуть бути приглушені (праворуч від кожного -- кнопка ''"​Вимкнути звук"''​). Для того, щоб можна було записувати усі поєднані сигнали через один пристрій ''"​JointMicrophones"'',​ потрібно увімкнути звук на усіх цих пристроях.+Якщо тут вибрати потрібний пристрій,​ то на сусідній вкладці ''"​Відтворення"''​ з'​явиться його назва у такому вигляді:​ ''"​Loopback from <​назва>​ на"'',​ і праворуч від цієї назви -- знову ж таки кнопка вибору пристрою,​ **до якого** потрібно спрямувати сигнал. В нашому випадку нам потрібно спрямувати усі сигнали на ''"​MixedOutput"'',​ тому скрізь обираємо саме його. Зверніть увагу, що на початку ці пристрої можуть бути приглушені (праворуч від кожного -- кнопка ''"​Вимкнути звук"''​). Для того, щоб можна було записувати усі поєднані сигнали через один пристрій ''"​MixedOutput"'',​ потрібно увімкнути звук на усіх цих пристроях.
  
-Після усіх цих налаштувань можна у програмі запису або зв'​язку обрати пристрій ''"​Monitor of JointMicrophones"'',​ і туди спрямовуватимуться сигнали від усіх обраних нами пристроїв. При цьому у налаштуваннях гучності можна легко регулювати гучність кожного з цих сигналів окремо,​ що дає змогу їх "​вирівняти",​ якщо потрібно.+Після усіх цих налаштувань можна у програмі запису або зв'​язку обрати пристрій ''"​Monitor of MixedOutput"'',​ і туди спрямовуватимуться сигнали від усіх обраних нами пристроїв. При цьому у налаштуваннях гучності можна легко регулювати гучність кожного з цих сигналів окремо,​ що дає змогу їх "​вирівняти",​ якщо потрібно.
  
 **Примітка:​** Якщо всі ці налаштування більше не потрібні,​ і треба повернути все до початкового стану, усі завантажені модулі потрібно **//​ви//​**вантажити. Це можна зробити командою:​ **Примітка:​** Якщо всі ці налаштування більше не потрібні,​ і треба повернути все до початкового стану, усі завантажені модулі потрібно **//​ви//​**вантажити. Це можна зробити командою:​
Рядок 74: Рядок 74:
  
 Тут замість "''<​номер_модуля>''"​ потрібно вказати саме те число, яке було показане в консолі одразу після завантаження модуля. Тут замість "''<​номер_модуля>''"​ потрібно вказати саме те число, яке було показане в консолі одразу після завантаження модуля.
 +
 +===== Фіксована петля (loopback) =====
 +
 +Модуль ''​loopback''​ можна також завантажити одразу з фіксованим зв'​язком між входом та виходом. Тоді перемикати пристрої у налаштуваннях гучності буде неможливо,​ але водночас це й убезпечує від випадкової помилки.
 +
 +Спершу треба дізнатись назви потрібних нам пристроїв введення (наприклад,​ мікрофонів).
 +
 +    LANG=C pactl list sources | grep Name
 +
 +Назва реального мікрофона може бути на кшталт ''​alsa_input.pci-0000_00_1b.0.analog-stereo''​.
 +Тоді модуль ''​loopback''​ завантажуємо з параметрами:​
 +
 +  pactl load-module module-loopback source=alsa_input.pci-0000_00_1b.0.analog-stereo sink=MixedOutput source_dont_move=true sink_dont_move=true
 +
 +Тут параметри ''​source_dont_move=true''​ та ''​sink_dont_move=true''​ забороняють змінювати пристрої на кінцях цієї петлі.
 +
 +====== Розділення входів того самого пристрою ======
 +
 +FIXME
 +
 +<​code>​
 +$ aplay -l
 +**** List of PLAYBACK Hardware Devices ****
 +card 0: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
 +  Subdevices: 1/1
 +  Subdevice #0: subdevice #0
 +card 0: NVidia [HDA NVidia], device 7: HDMI 0 [HDMI 0]
 +  Subdevices: 1/1
 +  Subdevice #0: subdevice #0
 +card 0: NVidia [HDA NVidia], device 8: HDMI 0 [HDMI 0]
 +  Subdevices: 1/1
 +  Subdevice #0: subdevice #0
 +card 0: NVidia [HDA NVidia], device 9: HDMI 0 [HDMI 0]
 +  Subdevices: 1/1
 +  Subdevice #0: subdevice #0
 +card 1: Generic [HD-Audio Generic], device 0: ALC887-VD Analog [ALC887-VD Analog]
 +  Subdevices: 0/1
 +  Subdevice #0: subdevice #0
 +card 1: Generic [HD-Audio Generic], device 1: ALC887-VD Digital [ALC887-VD Digital]
 +  Subdevices: 1/1
 +  Subdevice #0: subdevice #0
 +</​code>​
 +
 +
 +
 +<​code>​
 +$ arecord -l
 +**** List of CAPTURE Hardware Devices ****
 +card 1: Generic [HD-Audio Generic], device 0: ALC887-VD Analog [ALC887-VD Analog]
 +  Subdevices: 0/1
 +  Subdevice #0: subdevice #0
 +card 1: Generic [HD-Audio Generic], device 2: ALC887-VD Alt Analog [ALC887-VD Alt Analog]
 +  Subdevices: 0/1
 +  Subdevice #0: subdevice #0
 +card 2: U0x46d0x8da [USB Device 0x46d:​0x8da],​ device 0: USB Audio [USB Audio]
 +  Subdevices: 1/1
 +  Subdevice #0: subdevice #0
 +</​code>​
 +
 +
 +
 +<file conf "​~/​.config/​pulse/​default.pa">​
 +### Load audio drivers statically
 +### (it's probably better to not load these drivers manually, but instead
 +### use module-udev-detect -- see below -- for doing this automatically)
 +#​load-module module-alsa-sink
 +#​load-module module-alsa-source device=hw:​1,​0
 +#​load-module module-oss device="/​dev/​dsp"​ sink_name=output source_name=input
 +#​load-module module-oss-mmap device="/​dev/​dsp"​ sink_name=output source_name=input
 +#​load-module module-null-sink
 +#​load-module module-pipe-sink
 +
 +load-module module-alsa-sink device=hw:​1,​0 name="​ALSAOutput"​
 +load-module module-alsa-source device=hw:​1,​0 name="​ALSASource1"​ source_properties=device.description="​ALSASource1"​
 +load-module module-alsa-source device=hw:​1,​2 name="​ALSASource2"​ source_properties=device.description="​ALSASource2"​
 +
 +
 +### Automatically load driver modules depending on the hardware available
 +#.ifexists module-udev-detect.so
 +#​load-module module-udev-detect
 +#.else
 +### Use the static hardware detection module (for systems that lack udev support)
 +#​load-module module-detect
 +#.endif
 +</​file>​
 +
 +  systemctl --user restart pulseaudio
 +
 +
  
  
pulseaudio.1617097145.txt.bz2 · В останнє змінено: 2021/03/30 12:39 by wombat