LINUX.ORG.RU

Заставить работать VSXu с ALSA через apulse

 , ,


0

1

Есть такая программа VSXu (http://www.vsxu.com/) для визуализации музыки.

Она (сама программа и ее плеер) может получить сигнал только если в системе стоит PulseAudio. Я вычистил PulseAudio из системы, и пытаюсь запустить VSXu-плеер через apulse.

Собрал последнюю версию apulse, проинсталлил. Запускаю VSXu-плеер командой:

apulse /usr/bin/env LD_LIBRARY_PATH=/usr/lib /usr/bin/vsxu_player

Плеер должен щучить музыку на своем входе и генерить визуальные эффекты.

Запускаю музыку в QMMP, и вместо красивой визуализации получаю застывшую картинку. То есть, на вход VSXu ничего не подается.

В логе вижу:
$ apulse /usr/bin/env LD_LIBRARY_PATH=/usr/lib /usr/bin/vsxu_player
INFO: app_init
INFO: app_init done
INFO: app_draw first
INFO: app_draw first done
render first
initializing fader /usr/share/vsxu/visuals_faders/fade_zoomout.vsx
initializing fader /usr/share/vsxu/visuals_faders/fadeout.vsx
initializing fader /usr/share/vsxu/visuals_faders/slide_down_left.vsx
initializing fader /usr/share/vsxu/visuals_faders/slide_left.vsx
initializing fader /usr/share/vsxu/visuals_faders/slide_right.vsx
initializing fader /usr/share/vsxu/visuals_faders/slide_up_right.vsx
loading state: /usr/share/vsxu/visuals_player/Anemone by SafariMonkey and jaw.vsx

RtApiPulse::probeDeviceOpen: error connecting input to PulseAudio server.
loading state: /usr/share/vsxu/visuals_player/Bubble Galaxy by vovoid.vsx
...


Как заставить работать VSXu с apulse?

Кастую i-rinat.

★★★★★

LD_LIBRARY_PATH

Знаешь, что делает исполняемый файл apulse? Он устанавливает переменную среды LD_LIBRARY_PATH, добавляет туда свою директорию. Принудительно сбрасывая её, ты анулируешь работу исполняемого файла apulse.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Это стандартная команда запуска VSXu.

Проверил запуск VSXu без установки переменной - работает. Хотя /usr/lib в PATH нет. Потом запустил через apulse, и программа вылетела с ошибкой:

$ apulse /usr/bin/vsxu_player
INFO: app_init
INFO: app_init done
INFO: app_draw first
vsx_module_list init: Error: trying to load the plugin "/usr/lib/vsxu/plugins/sound.rtaudio.so"
                      Cause: dlopen returned error: /usr/lib/vsxu/plugins/sound.rtaudio.so: symbol pa_simple_flush, version PULSE_0 not defined in file libpulse-simple.so.0 with link time reference
INFO: app_draw first done
render first
initializing fader /usr/share/vsxu/visuals_faders/fade_zoomout.vsx
initializing fader /usr/share/vsxu/visuals_faders/fadeout.vsx
initializing fader /usr/share/vsxu/visuals_faders/slide_down_left.vsx
initializing fader /usr/share/vsxu/visuals_faders/slide_left.vsx
initializing fader /usr/share/vsxu/visuals_faders/slide_right.vsx
initializing fader /usr/share/vsxu/visuals_faders/slide_up_right.vsx
loading state: /usr/share/vsxu/visuals_player/Anemone by SafariMonkey and jaw.vsx
**************************************************
Notice: 
        VSX Engine could not load module: 'sound;input_visualization_listener'
        This prevented the project: 
                '/usr/share/vsxu/visuals_player/Anemone by SafariMonkey and jaw.vsx'
        from loading.
        This is most likely from your GPU/drivers do not support some feature needed.
        Please consider upgrading your hardware or drivers.
        If you are a developer, this might mean some modules didn't compile properly.
**************************************************


loading state: /usr/share/vsxu/visuals_player/Bubble Galaxy by vovoid.vsx
**************************************************
Notice: 
        VSX Engine could not load module: 'system;sound;vsx_listener'
        This prevented the project: 
                '/usr/share/vsxu/visuals_player/Bubble Galaxy by vovoid.vsx'
        from loading.
        This is most likely from your GPU/drivers do not support some feature needed.
        Please consider upgrading your hardware or drivers.
        If you are a developer, this might mean some modules didn't compile properly.
**************************************************


loading state: /usr/share/vsxu/visuals_player/Bubbles by vovoid.vsx
**************************************************
Notice: 
        VSX Engine could not load module: 'system;sound;vsx_listener'
        This prevented the project: 
                '/usr/share/vsxu/visuals_player/Bubbles by vovoid.vsx'
        from loading.
        This is most likely from your GPU/drivers do not support some feature needed.
        Please consider upgrading your hardware or drivers.
        If you are a developer, this might mean some modules didn't compile properly.
**************************************************


loading state: /usr/share/vsxu/visuals_player/Butterfly DNA 2 by asterix.vsx
**************************************************
Notice: 
        VSX Engine could not load module: 'system;sound;vsx_listener'
        This prevented the project: 
                '/usr/share/vsxu/visuals_player/Butterfly DNA 2 by asterix.vsx'
        from loading.
        This is most likely from your GPU/drivers do not support some feature needed.
        Please consider upgrading your hardware or drivers.
        If you are a developer, this might mean some modules didn't compile properly.
**************************************************


loading state: /usr/share/vsxu/visuals_player/Cicluoid Speakers Remox by asterix.vsx
**************************************************
Notice: 
        VSX Engine could not load module: 'sound;input_visualization_listener'
        This prevented the project: 
                '/usr/share/vsxu/visuals_player/Cicluoid Speakers Remox by asterix.vsx'
        from loading.
        This is most likely from your GPU/drivers do not support some feature needed.
        Please consider upgrading your hardware or drivers.
        If you are a developer, this might mean some modules didn't compile properly.
**************************************************


loading state: /usr/share/vsxu/visuals_player/Core by vovoid.vsx
**************************************************
Notice: 
        VSX Engine could not load module: 'system;sound;vsx_listener'
        This prevented the project: 
                '/usr/share/vsxu/visuals_player/Core by vovoid.vsx'
        from loading.
        This is most likely from your GPU/drivers do not support some feature needed.
        Please consider upgrading your hardware or drivers.
        If you are a developer, this might mean some modules didn't compile properly.
**************************************************


loading state: /usr/share/vsxu/visuals_player/Deformed Glow by vovoid.vsx
**************************************************
Notice: 
        VSX Engine could not load module: 'system;sound;vsx_listener'
        This prevented the project: 
                '/usr/share/vsxu/visuals_player/Deformed Glow by vovoid.vsx'
        from loading.
        This is most likely from your GPU/drivers do not support some feature needed.
        Please consider upgrading your hardware or drivers.
        If you are a developer, this might mean some modules didn't compile properly.
**************************************************


loading state: /usr/share/vsxu/visuals_player/Dragon Heart by asterix.vsx
**************************************************
Notice: 
        VSX Engine could not load module: 'system;sound;vsx_listener'
        This prevented the project: 
                '/usr/share/vsxu/visuals_player/Dragon Heart by asterix.vsx'
        from loading.
        This is most likely from your GPU/drivers do not support some feature needed.
        Please consider upgrading your hardware or drivers.
        If you are a developer, this might mean some modules didn't compile properly.
**************************************************
Исключение в операции с плавающей точкой

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

Хотя /usr/lib в PATH нет.

Её и не должно быть в PATH. Библиотеки по-другому грузятся, пути прописываются в /etc/ld.so.conf (обычно она включает другие файлы).

вылетела с ошибкой

Возможно, задело нереализованные части. Нужно apulse собрать с -DWITH_TRACE=1, он будет показывать вызовы нереализованных функций. Правда, это полезно, только если кто-то будет их реализовывать. Я в ближайшее время вряд ли буду этим заниматься.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Пересобрал apulse, проинсталлировал заново:

cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DWITH_TRACE=1
make
make install

Результат тот же:
$ /usr/bin/apulse /usr/bin/vsxu_player
INFO: app_init
INFO: app_init done
INFO: app_draw first
vsx_module_list init: Error: trying to load the plugin "/usr/lib/vsxu/plugins/sound.rtaudio.so"
                      Cause: dlopen returned error: /usr/lib/vsxu/plugins/sound.rtaudio.so: symbol pa_simple_flush, version PULSE_0 not defined in file libpulse-simple.so.0 with link time reference
INFO: app_draw first done
render first
initializing fader /usr/share/vsxu/visuals_faders/fade_zoomout.vsx
initializing fader /usr/share/vsxu/visuals_faders/fadeout.vsx
initializing fader /usr/share/vsxu/visuals_faders/slide_down_left.vsx
initializing fader /usr/share/vsxu/visuals_faders/slide_left.vsx
initializing fader /usr/share/vsxu/visuals_faders/slide_right.vsx
initializing fader /usr/share/vsxu/visuals_faders/slide_up_right.vsx
loading state: /usr/share/vsxu/visuals_player/Anemone by SafariMonkey and jaw.vsx
**************************************************
Notice: 
        VSX Engine could not load module: 'sound;input_visualization_listener'
        This prevented the project: 
                '/usr/share/vsxu/visuals_player/Anemone by SafariMonkey and jaw.vsx'
        from loading.
        This is most likely from your GPU/drivers do not support some feature needed.
        Please consider upgrading your hardware or drivers.
        If you are a developer, this might mean some modules didn't compile properly.
**************************************************
...
Исключение в операции с плавающей точкой

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

Пиши функцию pa_simple_flush Потом смотри что ещё захочет.

Проще посмотреть каким-нибудь objdump какие функции от пшаудио хочет эта софтина и её модули, чтоб их сразу все дописать.

Stanson ★★★★★ ()
Ответ на: комментарий от Xintrea

Видать, API снова расширили, а софт это новое API использует.

i-rinat ★★★★★ ()

для визуализации музыки

Что-то этот момент я пропустил сначала. С захватом звука у ALSA туговато. Из коробки это не работает, нужно править .asoundrc, добавлять туда loopback устройство через что-то типа разветвителя. Муторное занятие.

rtaudio

А вот эта штука по названию похожа на библиотеку-обёртку. И, похоже, она умеет как-то работать с ALSA: https://github.com/vovoid/vsxu/blob/98bf097d7514e4719fe4e6df7e91fe1523296fc6/.... Видимо, нужно при сборке включить.

i-rinat ★★★★★ ()

У тебя так ничего не выйдет. Сам по себе apulse только делает обёртку для pulse программы и направляет потоки на прямую в alsa, как-то так. Для перехвата звука визуализатором нужно совершать действия на стороне pulse сервера, которого у тебя нету.

Сам плеер этот умеет работать с alsa?

С учётом вот этого поста можно написать конфиг, который будет раздваивать поток на Loopback для визуализатора и на softvol, и дальше уже на колонки.

А нужно ли это вообще?

xndr ()
Ответ на: комментарий от i-rinat

Тема про апульс (где ты про два года упомянул) перемещена в архив. Куда писать теперь (я сделал линейный вход как капчур, обещал же поделиться с остальными)?

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

Куда писать теперь (я сделал линейный вход как капчур, обещал же поделиться с остальными)?

Куда хочешь, туда и пиши, хоть отдельной темой. Отдельной темой будет даже лучше. Если только под предлогом ЖЖ не потрут.

i-rinat ★★★★★ ()
Ответ на: комментарий от deep-purple

Ты бы создал новую, в продолжение

Не-е, это плохая идея. Новая тема от меня как бы говорит: «пишите сюда, я буду решать вопросы». Не хочу давать такие обещания, пусть и неявно.

Если есть какой-то вопрос, лучше создать новую тему. Если мне будет, что сказать, я напишу.

i-rinat ★★★★★ ()
Ответ на: комментарий от Xintrea

Показываю:

#!/bin/sh
APULSE_CAPTURE_DEVICE=plughw:0,0
export APULSE_CAPTURE_DEVICE
apulse /path/do/skype-4.3.0.37/skype
Т.е. никаких .asounrc не понадобилось. И даже не понадобилось перебором тыкаться, я сразу попал в нужный девайс.

Зачем это было нужно? У меня в линейный вход подключен микшер. В микшер воткнут микрофон. Настроены эквалайзер и компрессия. Я с этим часто работаю и оно стационарно установлено и подключено. И я подумал а почему бы и нет, можно же говорить в скайп качественным звуком. Так и получилось, качество сравнимо с тестовым звонком где «хеллоу, вэлкам ту скайп» балакает девка.

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

А вот это plughw:0,0 ты откуда для своей карточки берешь? То есть, откуда ты знаешь, что для твоей карточки надо писать именно так?

Xintrea ★★★★★ ()
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Кстати, skype-4.3.0.75 для Linux с apulse не работает.

При старте слышен стандартный скайпешный «блымк», но потом в консоли появляется [apulse][error], после чего звука нет. Кнопка тестового звука звук не издает. О тестовом звонке можно и не говорить - не работает.

Вот что в логе:

$ ./skype-apulse.sh
1474744922.414 [apulse  5464] Z pa_context_set_subscribe_callback c=0x9a2be3e8, cb=0xb6bfbf40, userdata=0x9a2a59f0
1474744922.414 [apulse  5464] Z pa_context_subscribe c=0x9a2be3e8, m=0x000a, cb=(nil), userdata=(nil)
1474744922.418 [apulse  5464] Z pa_stream_set_underflow_callback
1474744925.469 [apulse  5464] Z pa_stream_set_underflow_callback
ALSA lib pcm_hw.c:1667:(_snd_pcm_hw_open) Invalid value for card
[apulse] [error] do_connect_pcm, snd_pcm_open, Нет такого файла или каталога
[apulse] [error] do_connect_pcm, snd_pcm_open, Нет такого файла или каталога

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

откуда

arecord -L

4.3.0.75 для Linux с apulse не работает, Вот что в логе

У меня тоже кнопка звука не активна (системные звуки скайпа), но звонок слышно и меня слышно. А ошибки в твоем логе это ошибки апульсы, а не скайпа, ибо ему вообще срать куда там апульс ломицца. Это значит ты указал не правильный девайс.

Еще, возможно нужно в альсамиксере поставить (пробелом, сделать красным,т.е. включить) капчур у капчур фейдера. Сам фейдер стоит на 50%.

deep-purple ★★★★★ ()
Ответ на: комментарий от Xintrea

skype-4.3.0.75

Это ты ошибся в номере (публично доступная версия: 4.3.0.37) или достал какой-то внутренний билд?

ALSA lib pcm_hw.c:1667:(_snd_pcm_hw_open) Invalid value for card

Тут проблема в том, что ALSA не даёт открыть устройство. Наиболее вероятный сценарий: у тебя default устройство подключено к hw, без мультиплексора, а железо не поддерживает аппаратное смешивание. Apulse открывает по соединению на каждый поток PulseAudio, поэтому без dmix толком работать не будет.

Попробуй установить переменную среды APULSE_CAPTURE_DEVICE=dmix перед запуском. (Не забудь её экспортировать через export). Или настроить dmix для default устройства ALSA.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

С заказчиками что ли работаешь? Такого многозвёздного клоуна терпеть.

anonymous ()
Ответ на: комментарий от i-rinat

Это ты ошибся в номере (публично доступная версия: 4.3.0.37)

Да, ошибся. Сделал каталог с неправильной версией, и написал про нее. Правильно будет 4.3.0.37.

Xintrea ★★★★★ ()
Ответ на: комментарий от deep-purple

arecord -L

И какая строка в моем случае будет правильной?

$ arecord -L
null
    Discard all samples (playback) or generate zero samples (capture)
softvol
default
sysdefault:CARD=USB
    E-MU Tracker Pre
    Default Audio Device
front:CARD=USB,DEV=0
    E-MU Tracker Pre
    Front speakers
surround21:CARD=USB,DEV=0
    E-MU Tracker Pre
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=USB,DEV=0
    E-MU Tracker Pre
    4.0 Surround output to Front and Rear speakers
surround41:CARD=USB,DEV=0
    E-MU Tracker Pre
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=USB,DEV=0
    E-MU Tracker Pre
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=USB,DEV=0
    E-MU Tracker Pre
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=USB,DEV=0
    E-MU Tracker Pre
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=USB,DEV=0
    E-MU Tracker Pre
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=USB,DEV=0
    E-MU Tracker Pre
    Direct sample mixing device
dsnoop:CARD=USB,DEV=0
    E-MU Tracker Pre
    Direct sample snooping device
hw:CARD=USB,DEV=0
    E-MU Tracker Pre
    Direct hardware device without any conversions
plughw:CARD=USB,DEV=0
    E-MU Tracker Pre
    Hardware device with all software conversions



У меня тоже кнопка звука не активна (системные звуки скайпа), но звонок слышно и меня слышно.

Я говорю про кнопку Настройки - Устройства - Проиграть тестовый звук. Никакого текстового звука не слышно.

Xintrea ★★★★★ ()
Ответ на: комментарий от deep-purple

Это значит ты указал не правильный девайс.

Почему же при старте скайпа звук есть?

Xintrea ★★★★★ ()
Ответ на: комментарий от i-rinat

тебя default устройство подключено к hw, без мультиплексора, а железо не поддерживает аппаратное смешивание. Apulse открывает по соединению на каждый поток PulseAudio, поэтому без dmix толком работать не будет.

Я эти термины не понимаю. Что есть hw? Какой мультиплексор имеется в виду - программный или аппаратный на карточке? Между чем и чем открывает соединение Apulse? Что есть dmix, и можно ли его использовать с ALSA?

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

Я эти термины не понимаю.

А погуглить?

Чтобы убедиться, я сейчас сделал пару запросов, про hw и dmix. И получил ответ по первой ссылке.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Ты думаешь, я не гуглил? Мне пишут какой-то бред.

«linux звук что такое hw» - все ссылки англоязычные, везде пишется как конфигурять неведомую жуйню, а что она из себя представляет - не пишут.


«linux звук что такое dmix» - более-менее вменяемтехт вот этот:

https://www.opennet.ru/base/X/dmix_setup.txt.html

Но неясно, что это за хрень такая dmix. Это кусок ALSA? Это отдельный модуль ядра? Тогда почему его конфигурят в конфиге ALSA? Что настраивают в первом куске кода? Что настраивают во втором куске кода? Почему именно так? Откуда они берут все эти опции?

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

«linux звук что такое hw»

Надо было искать «alsa hw» и «alsa dmix». Гугли не вопрос, гугли ответ. (Каждый раз удивляюсь, как сталкиваюсь с теми, для кого это не очевидно.)

все ссылки англоязычные

Люди веб-новеллы с японского переводят с помощью google translate и общего понимания языка на уровне «это глагол, а это существительное». А ты ленишься. Уж какое-то понимание английского нужно получить. На английском раз в 10 больше информации, чем на русском, и она более свежая.

Но неясно, что это за хрень такая dmix. Это кусок ALSA? Это отдельный модуль ядра? Тогда почему его конфигурят в конфиге ALSA?

Вот, вопросы уже в правильном направлении. Осталось научиться на них ответы искать. Если это модуль ядра, почему его конфигурируют в asoundrc? Тут единственный вывод — это не модуль ядра.

У тебя даже в простынях текста, которые ты сам выкладывал, уже написано:

hw:CARD=USB,DEV=0
...
Direct hardware device without any conversions

plughw:CARD=USB,DEV=0
...
Hardware device with all software conversions

dmix:CARD=USB,DEV=0
...
Direct sample mixing device

Почему именно так?

У ALSA не очень внятная документация, но она есть. Доступна online.

Откуда они берут все эти опции?

Гуглят, берут готовые варианты как заготовки, правят под себя, сверяясь с документацией.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

А ты ленишься. Уж какое-то понимание английского нужно получить. На английском раз в 10 больше информации, чем на русском, и она более свежая.

Ничо я не ленюсь. На англицком такое впечатление, что люди вообще разучились писать документацию и объяснять что к чему. Одни только рецепты «делайте так», и все.

Вот это не документация, а кусок говна:

http://www.alsa-project.org/main/index.php/Documentation
http://alsa.opensrc.org/

Будем считать, что ее просто нет.


Но ты не хочешь свои знания открывать, отправляешь гуглить, дело твое. Только ничего от того что ты промолчишь не изменится. Я бы на твоем месте сам бы написал документацию, чтобы твои знания не пропали. Систематизировал все и написал. Но я еще не видел ни одного человека, который бы это сделал. Поэтому у нас нет вменяемой документации по iptools, ALSA, nginx, .htaccess. Ну нет, значит нет.

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

Я бы на твоем месте сам бы написал документацию, чтобы твои знания не пропали.

Мои знания — это, в основном, умение гуглить. Советов о том, как гуглить, в интернете уже полно.

Поэтому у нас нет вменяемой документации по ...

Я не считаю себя специалистом по C++, но от вопросов, которые ты задаёшь, у меня волосы дыбом встают. А ведь документации по C++ много. Так что тут дело не в отсутствии документации, а в нежелании её читать.

Это подтверждается и запросами, которые ты в поисковые системы делал. Ты не ищешь. Ты задаёшь вопрос и ждёшь на него ответа. Это работает с людьми, но совершенно не работает с книгами или статьями.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Все просто

/usr/share/applications/skype.desktop открыть и записать Desktop Entry] Name=Skype Comment=Skype Internet Telephony Exec=apulse skype Icon=skype.png Terminal=false Type=Application Encoding=UTF-8 Categories=Network;Application; MimeType=x-scheme-handler/skype; X-KDE-Protocols=skype

только для встроенных карт норма а для выносных apulse и пульса вся это бред

stranik ()

Она (сама программа и ее плеер) может получить сигнал только если в системе стоит PulseAudio. Я вычистил PulseAudio из системы, и пытаюсь запустить VSXu-плеер через apulse.

А что, пользоваться PulseAudio — слишком просто, надо обязательно создать себе трудности?

dexpl ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.