Представлен PulseJoin 2.2 (https://gitlab.com/mikhailnov/pulsejoin/) - графический интерфейс для объединения вывода на динамики и микрофона в виртуальный микрофон PulseAudio, что позволяет записать звук одновременно с динамиков и микрофона в программах, не умеющих захватывать с нескольких источников одновременно. Для установки подготовлены (https://gitlab.com/mikhailnov/pulsejoin/tags) пакеты RPM и DEB, а также PPA-репозиторий для Ubuntu и Debian (https://launchpad.net/~mikhailnov/+archive/ubuntu/pulsejoin). PulseJoin уже доступен в официальных репозиториях ROSA Fresh и ALT Linux.
PulseJoin представляет из себя bash-скрипт, в котором для формирования графического интерфейса пользователя применяется YAD (https://github.com/v1cont/yad) (Yet Another Dialog, форк Zenity). Для локализации интерфейса на разные языки применяется (https://gitlab.com/mikhailnov/pulsejoin/tree/master/po) gettext. Исходные тексты проекта распространяются под лицензией GPLv3. Работа скрипта проверена в GNU/Linux и FreeBSD, однако платформоспецифичными могут быть только синтаксис sed, mktemp и, возможно, некоторых других стандартных утилит.Скрипт выполняет следующие действия:
- Создание виртуального устройства PulseAudio;
- При необходимости запуск нужной программы с установленной переменной окружения PULSE_SOURCE, указывающей на созданный виртуальный микрофон (также можно вручную переключить любой поток захвата PulseAudio на этот виртуальный микрофон, например, через pavucontrol(-qt));
- Удаление внесенных изменений, в т.ч. графические кнопки для создания и удаления виртуального микрофона.
URL: https://gitlab.com/mikhailnov/pulsejoin/
Новость: https://www.opennet.me/opennews/art.shtml?num=50471
>для записи с динамиковЗвучит, как будто выход аудиокарты перенастроили в режим для входа и используют динамики не по назначению.
Как они умудряются это делать? Глубоко сомневаюсь, что на выходах динамиков стоят АЦП, а ЦАП в обратную сторону проворачивать фарш не могут.
Программно, стандартная фича PulseAudio — для каждого устройства вывода звука есть "микрофон" "Monitor of <имя устройства вывода>"
у реалтеков вроде как одной из фич была возможность переключения каналов https://www.opennet.me/opennews/art.shtml?num=48249
О да, "Monitor of <имя устройства вывода>" запомнился мне очень хорошо. В фурифоксе при записи с этого виртуального канала весь звук в системе начинает заикаться, а в том же фурифоксе с соседних вкладок звук вообще идет с секундными замираниями. Пыш пыш аудио, что здесь еще можно сказать, ничем от вяленого по качеству не отличается.
И вот знаете, чтобы отправить отрывок звука с видео ютуба допустим голосовым сообщением приходится по старинке, делать хардовый луп соединяя проводом вход и выход звуковухи, или скачивать видео и обрезать (что даже затратнее обходится)
> И вот знаете, чтобы отправить отрывок звука с видео ютуба допустим голосовым
> сообщением приходится по старинке, делать хардовый луп соединяя проводом вход и
> выход звуковухи, или скачивать видео и обрезать (что даже затратнее обходится)Это по виндузячьи.
По старинке - это вот так.
# virtual_oss \
-S -C 2 -c 2 -r 44100 -b 16 -s 1024 \
-f /dev/dsp1 -w dsp.rec.wav -l dsp.rec -d dsp
% dd if=/dev/dsp.rec.wav bs=1m | oggenc - -o my.ogg
http://i66.tinypic.com/5khmb5.jpg
см.
Create a device named dsp.virtual which mix the samples written by all
clients and outputs the result for further processing into
dsp.virtual_out:virtual_oss \
-S -Q 0 -b 16 -c 2 -r 96000 -s 100ms -i 20 \
-f /dev/null -d dsp.virtual -L dsp.virtual_out
Чем не устроил jack2 я честно вообще не понимаю до сир пор, идеально работает, реалтайм, возможность записи звука с каждого подключенного приложения другим приложением, минимум прослоек и прозрачная работа. Зачем было разрабатывать пыш аудио вообще не понятно.
Вы забываете, кто автор пшыаудио. На вашем месте, я бы радовался, что его функциональность до сих пор не в PID1.
Так у альсы драйвера вообще в ring 0
> Так у альсы драйвера вообще в ring 0А пульса научилась читать данные для микширования через libastral?
Или просто фанаты все так же не в курсе, как работает предмет их обожания и поклонения 🙄 ?
; Default profile definitions for the ALSA backend of PulseAudio. This
; is used as fallback for all cards that have no special mapping
; assigned (and should be good enough for the vast majority of
> Так у альсы драйвера вообще в ring 0Ну и что? А где должны быть?
Имелось в виду - чтобы объединить в один поток то, что слышно с микрофона и что подаётся на аудиовыход. А написано так, будто динамики служат микрофоном.
Динамики и без всяких PulseJoin могут служить микрофоном, стоит их лишь воткнуть в микрофонный вход.
>однако платформоспецифичными могут быть только синтаксис sed, mktemp и, возможно, некоторых других стандартных утилит.Если дистрибутивосоздаватели какают на POSIX — нужно использовать busybox.
Я когда-то добился того же самого, когда что-то тыкал в PavUControl. Но повторно мне это не удалось сделать. Так что прога нужная
прога нужная вообще то. когда писал гитару приходилось делать сначала готовый семпл с инструментами и уж потом писать второй линией гитару. а так можно проще разобраться. хотя тоже не сказать , что сильно облегчит. как было собирать трек наборами так и осталось. единственное эффект 2 микрофонов можно создать.
Для гитары лучше и проще jack2 использовать
это если в линию писать. а если играешь в лампу и снимаешь микрофоном? эта софтинка может позволить сделать двойное наложение гитары в линию и с микрофона. чес слово пробовал играть в линию с jack и всякими дисторшенами программными... задержка все же чувствуется. а так пишешь с чистого аналога лучше. все таки не имеет значения пишешь через пульсу или jack.
про jack любят рассуждать те, кто им никогда не пользовался
Нормальные люди для это DAW используют, Reaper например. Пшш-аудио - это вообще не про сведение и не про реалтаймовый звук
А можно как-то ALSA с dmix настроить так, чтобы, на default смешивалось (или, хотя бы, подставлялось) устройство захвата hw:0.0, как это делается с устройством воспроизведения?
Перерыл много чего из гугла, но решения толком не нащёл, кроме упоминания того, что dmix работает только с устройствами воспроизведения. :-(
альса по умолчанию имеет возможность работать только в приоритетном режиме. то есть полный захват. насчет dmix... тут не скажу, но если в описании дано , что работает только с устройствами воспроизведения, значит надо искать другой аналог.
А можно как-нибудь alias задать, чтобы приложение (firefox,chromium,telegram-desktop) ожидающие увидеть устройство захвата default, увидело этот alias и использовало hw:0.0, пусть даже в монопольном режиме, по имени default?
в системе пульсы нет? если нет надо искать старую тропу. раньше все через неё настраивалось. технически есть же alsamixer в консоли. попробовать выставить через него. но тут не уверен. не проверял. то что можно выключить каналы и выбрать главный там есть. но чес слово с момента появления пульсы как то и не интересовался. вообще через конфиг альсы наверно можно настроить. фокс же все равно должен видеть доступные устройства. технически можно написать два конфига к альсе . один пометить как .old и когда необходимо менять окончания к конфигам и перезапускать альсу. но если вам на постоянку. можно старый конфиг переименовать слегка, а новый положить и все должно сработать. куда проще чем писать свою прослойку для этого.
Не очень понял ваш вопрос (особенно конец), посему:
pcm.!default {
type asym
playback.pcm "linearize"
capture.pcm "hw:0,0" # так как hw:0,0 это устройство воспроизведения, то capture так работать не будет (насколько я понимаю)
hint.show on
hint.description "Default with dmix"
}+ убираем fallback (некоторые приложения сразу же используют sysdefault, вместо default)
pcm.!sysdefault defaultВот в mpv можно (для устройств воспроизведения):
audio-device="alsa/default"
Вот в wine можно:
WINEPREFIX="..." wine reg.exe ADD "HKEY_CURRENT_USER\Software\Wine\Drivers\winealsa.drv" /v "ALSAOutputDevices" /t "REG_MULTI_SZ" /d "for_wine" /f
и в winecfg выбрать for_wineА как в этих ваших приложениях, и можно ли там это вообще, я не знаю (это про alias'ы).
> Не очень понял ваш вопрос (особенно конец)В последнее время появляются приложения (firefox, chromium, skype, telegram), в которых нет возможности настроить устройства воспроизведения и захвата, которые думают, что у меня пульса и сразу стучаться в default. С воспроизведением проблем нет - а микрофон в них не работает.
В wine и прочих приложениях, где можно в настройках указать какое устройство использовать для захвата - таких проблем нет.
Я использую только ALSA, пульсу я сразу сношу ещё на этапе установки.> посему:
> pcm.!default {
> type asym
> playback.pcm "linearize"
> capture.pcm "hw:0,0" # так
> как hw:0,0 это устройство воспроизведения, то capture так работать не будет
> (насколько я понимаю)
> hint.show on
> hint.description "Default with dmix"
> }Благодарю!
"linearize" у меня приводило к отвалу default, но я его заменил на "plug:dmix".pcm.!default {
type asym
playback.pcm "plug:dmix"
capture.pcm "hw:0,0"
hint.show on
hint.description "Default with dmix"
}pcm.!sysdefault {
type asym
playback.pcm "plug:dmix"
capture.pcm "hw:0,0"
hint.show on
hint.description "Default with dmix"
}И, по крайней мере в audacity, микрофон с default и sysdefault заработал.
> + убираем fallback (некоторые приложения сразу же используют sysdefault, вместо default)
> pcm.!sysdefault defaultВы имели ввиду продублировать pcm.!sysdefault {...}, как я сделал выше или просто написать без фигурных скобок pcm.!sysdefault default ?
Телеграму всё же что-то не нравится.
AL lib: (EE) ALCcaptureAlsa_open: snd_pcm_hw_params_set_channels(self->pcmHandle, hp, ChannelsFromDevFmt(device->FmtChans, device->AmbiOrder)) failed: Недопустимый аргумент
E/tgvoip: pa_context_connect failed: Access denied
W/tgvoip: PulseAudio available but not working; trying ALSA
ALSA lib pcm.c:8507:(snd_pcm_set_params) Channels count (1) not available for CAPTURE: Недопустимый аргумент
E/tgvoip: snd_pcm_set_params failed: Недопустимый аргументНо с этим я уже буду дальше разбираться!
Главное audacity - я им проверяю работоспособность устройств захвата, работает с ними значит проблема уже не в них.P.S. А что означает ! перед default и sysdefault?
Без него audecity вообще никаких устройств не видеит, однакоctl.equal {
type equal;
}pcm.plugequal {
type equal;
slave.pcm "plug:dmix";
}pcm.equal {
type plug;
slave.pcm plugequal;
}указываются без ! и работают?
> "linearize"это то, что у меня в конфиге сделано (просто скопипастил из своего, не изменяя)
> или просто написать без фигурных скобок pcm.!sysdefault default ?
Да, это и есть alias
> А что означает ! перед default и sysdefault?
Это означает очистить предыдущие конфигурации с этими именами и использовать новые (которые и будут далее указаны)
> Без него audecity вообще никаких устройств не видеит
А без него, насколько я помню, если раньше такой конфигурации (не знаю как правильно называется, поэтому использую такое слово) не было, то создать, а если была - не перезаписывать, а использовать старую.
Благодарю! :-)
> В последнее время появляются приложения (firefox, chromium, skype, telegram), в которых нет возможности настроить устройства воспроизведения и захватам-м-м... да, тут на ум приходит только менять .asoundrc (или default в нём) перед запуском приложения на нужный, а потом вертать обратно.
> snd_pcm_hw_params_set_channels
гм, помню, у меня в wine'е тоже были проблемы с несоответствием количества каналов ("Проверить звук" в winecfg). Пришлось делать type route чтобы у меня всегда было 2 канала.
Но здесь captureAlsa_open, с этим я дел не имел. Предположу, что оно так же, как и с воспроизведением. Хотя зачем там больше 1 канала (или в чём именно ошибка)? Странно в общем что-то.у меня:
pcm.channel_change {
type route
slave {
pcm "rate_change" # как всегда, вместо этого должно быть то, что у вас там дальше
channels 2
}
ttable {
0.FL 1.0
1.FR 1.0
...
}
hint.show off
hint.description "to stereo -> rate converter"
}
Теоретически, type plug (https://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html) - сам делает необходимые преобразования, попробуйте перед "hw:0,0" использовать plug, что ли.
Огромная Вам благодарность! :-)
Вот он, конфиг моей мечты, который я искал несколько лет!
Теперь с ним микрофон в телеграм, наконец-то заработал. :-)pcm.!default {
type asym
playback.pcm "plug:dmix"
capture.pcm "plughw:0,0"
hint.description "Default with dmix"
hint.show on
}
pcm.!sysdefault default
> альса по умолчанию имеет возможность работать только в приоритетном режиме. то есть полный захватИмеет возможность, но как правило не пользуется этой возможностью.
От программы зависит, например рипер в монопольный доступ забирает карту
make install завезли, make uninstall не завезли. Отлично, я считаю. Напоминает времена винды 98 - тогда тоже половина разрабов не подозревала, что их софт кто-то захочет удалить
А мне вспоминается убунтофорум 2008 года. В том году впервые стало широко известно про PPA (а может, PPA именно тогда и появился). И на убунтофоруме стало популярно требовать от новоприбывших пользователей устанавливать всё только из пакетов! И никак иначе!Одним из аргументов было то, что если не устанавливать не из пакета, то и удалить потом нельзя. Про make uninstall никто там не слышал, в том числе и я. Даже у проприетарных драйверов, устанавливаемых из run-файла, есть uninstaller - а мы городили команду для apt-get, возвращавшую Месу...
Массовое просвящение о том, что такая команда есть, случилось в 2013 году после скандала с Bumblebee. Когда make uninstall там удалял /usr
>Про make uninstall никто там не слышал, в том числе и яПохоже о нем не слышали и разработчики новомодных систем сборки, которые так и не в состояние толком воспроизвести основные возможности autotools
> Когда make uninstall там удалял /usrТам при инсталляции это вроде тоже происходило:
https://github.com/MrMEEE/bumblebee-Old-and-abbandoned/issue...