Представлен (https://lists.freedesktop.org/archives/pulseaudio-discuss/20... релиз звукового сервера PulseAudio 9.0 (http://pulseaudio.org/), который выступает в роли посредника между приложениями и различными низкоуровневыми звуковыми подсистемами, абстрагируя работу с оборудованием. PulseAudio позволяет управлять громкостью и смешиванием звука на уровне отдельных приложений, организовывать поступление, смешивание и вывод звука при наличии нескольких входных и выходных каналов или звуковых карт, позволяет на лету менять формат звукового потока и использовать плагины (http://www.pulseaudio.org/wiki/Modules), дает возможность прозрачно перенаправлять звуковой поток на другую машину. Код PulseAudio распространяется в рамках лицензии LGPL 2.1+. Поддерживается работа в Linux, Solaris, FreeBSD, OpenBSD, DragonFlyBSD, NetBSD, macOS и Windows.
Ключевые улучшения (http://www.freedesktop.org/wiki/Software/PulseAudio/Notes/9.0/) PulseAudio 9.0:- Улучшение автоматической маршрутизации звука. В новой версии устранены побочные эффекты, всплывшие после включения в PulseAudio 8 новой системы автоматического переключения на другой профиль при отключении звукового устройства. Например, при отключении наушников PulseAudio может переключиться на S/PDIF и не вернуть звук обратно на наушники после их повторного подключения. Ещё одной проблемой является временное отключения HDMI при переходе монитора в спящий режим - в ответ на такое отключение PulseAudio может переключить вывод звука на другой порт HDMI и не вернуть его обратно после возобновления активности первого монитора. Подобные проблемы теперь устранены;
- Серия изменений в системе подавления эха WebRTC:
- Добавлен новый фильтр "beamforming (https://en.wikipedia.org/wiki/Beamforming#Beamforming_for_sp... учитывающий пространственное размещение микрофонов. Фильтр активируется через задание параметра "beamforming=true" при загрузке компонента module-echo-cancel и требует задания (https://www.freedesktop.org/wiki/Software/PulseAudio/Documen... данных о геометрии микрофонов и направлении источника звука, которые передаются через параметры "mic_geometry" и "target_direction".
- Реализован режим расширенного фильтра ("extended filter"), при котором система подавления эха менее чувствительна к поступающим от оборудования некорректным данным о задержках. По умолчанию режим отключен и включается после передачи опции "extended_filter=true".
- Обеспечена возможность отключения механизма определения голосовой активности (параметр "voice_detection=false");
- Добавлена возможность настройки начальной громкости при использовании AGC (automatic gain control) через указание опции "agc_start_volume=[0-255]".- Серия улучшения в работе модулей module-role-cork и module-role-ducking: добавлена поддержка потоков с установленным свойством "media.role", добавлена специальная роль "any_role" (позволяет выбрать все потоки, за исключением текущего), обеспечена возможность выбора разных уровней приглушения громкости для разных потоков;
- Отключён по умолчанию активированный в PulseAudio 7 новый метод синтеза LFE-канала (низкочастотные эффекты для сабвуфера) из обычного звукового контента, не имеющего отдельного LFE-канала. В PulseAudio 7.x и 8.x LFE-канал формировался на основе фильтрации низкочастотных гармоник в оригинальном контенте. В PulseAudio 9 возвращен старый метод усреднения имеющихся каналов c приглушением LFE, так как новый метод пока не работает корректно и LFE получался слишком тихим;
- Представлена начальная реализация нового транспорта memfd-backed, использующего разделяемую память для эффективной передачи данных между сервером и клиентом без промежуточной буферизации. Бэкенд базируется на использовании механизма Memfd (позволяет выделить память как через malloc, но обращаться к ней как с файлом, по файловому дескриптору), предложенного разработчиками systemd/kdbus и включённого в состав ядра Linux 3.17 (https://www.opennet.ru/opennews/art.shtml?num=40755);
- Допустимая частота дискретизации повышена со 192 kHz до 384 kHz;
- Система сборки переведена с использования по умолчанию стандарта C99 на C11. При сборке компилятор теперь вызывается с флагом "-std=gnu11", что позволяет использовать в коде новые возможности стандарата C11.
URL: https://lists.freedesktop.org/archives/pulseaudio-discuss/20...
Новость: http://www.opennet.ru/opennews/art.shtml?num=44649
Крутая вещь. Просто работает, а что ещё надо.
Всё ещё шипит. Не на каждый чих как раньше, при весьма специфических условиях, но таки пшшшшшшшшшш
Когда год назад на кедах пробовал, до того, как появился apulse, она ещё пукала при изменении глобальной громкости, это же, блин, так круто, наверно, пукать при изменении громкости!
А с mpd, при условии запуска сервера от mpd, а не от текущего пользователя, так и не хотела дружить.
Да и при запуске от пользователя тоже не сильно спасало.
это kmix у тебя пукал. вам лишь бы хаять.
> это kmix у тебя пукал. вам лишь бы хаять.Да какая разница? Хейтерам главное чтобы ключевое слово проскочило.
Это ещё что. Вот когда пульса словила одной ей ведомое событие и решила выставить мастер-канал на максимум, вот тогда я пожалел о том, что купил себе хорошие и громкие наушники. :)Про то, что mute-unmute с вероятностью процентов в десять глушат мастер канал навсегда, так что только через alsamixer можно включить обратно - это уже отдельная песня.
Что при настройке каналов через amixer считает нужным как-то реагировать - тоже интересный момент. У меня вот хоткеи были всегда: один включает колонки и выключает наушники, второй наоборот. При втором - пульса выключала дополнительно мастер.
Удивительная штука во всех отношениях.
Часть проблем с mute помог в своё время решить irinat, кстати. Оказывается, это отключаемо было. Золотой человек, кстати, спасибо ему большое за apulse. Но ор в ушах был последней каплей.
> Про то, что mute-unmute с вероятностью процентов в десять глушат мастер канал
> навсегда, так что только через alsamixer можно включить обратно - это
> уже отдельная песня.Удивительно, но в дебиане и убунте такого не наблюдается. Я конечно понимаю что ругать поттеринга ваш тренд, но может быть дело все-таки не в бобине? Впрочем, никто не заставляет этим пользоваться. Пользуйся хоть голой алсой наздоровье, только у нее по умолчанию нет вменяемого апи. А так все хорошо.
> Удивительно, но в дебиане и убунте такого не наблюдается.Удивительно! Я-то думал, что на дебиане сижу, а оказывается, я ошибался!
> Я конечно понимаю что ругать поттеринга ваш тренд, но...
...поттеринг уже много лет не имеет никакого отношения к сабжу.
> Пользуйся хоть голой алсой наздоровье, только у нее по умолчанию нет вменяемого апи.
Мне не нужен API. Мне нужно, чтобы оно работало. Альса работает, с пульсой - сплошное веселье.
> Всё ещё шипитПодарю тебе лайфхак, чтоб не раздражало.
Представляй, что это тебе, что-то приятное Леня на ушко шепчет.
Не следует представлять, что вы что-то умное в комментах пишете, когда туда, пардон, гадите.
> Представляй, что это тебе, что-то приятное Леня на ушко шепчет.Кто о чём, а макофилы об одно и том же...
Иди к доктору сходи, ушки проверь. У меня PulseAudio и не шипит, а звучит.
Попробуй подключить блютус-гарнитуру к компу. Я с год назад так развлекался, по ощущениям там каждая вторая строчка кода выглядит так: if ( rand() % 2 = 1 ) { ... }.
Из моего опыта работы с различными bluetooth-устройствами под линуксом, rand() в каждой второй строчке скорее в bluez.
И в каждой второй гарнитуре.
> Из моего опыта работы с различными bluetooth-устройствами под линуксом, rand() в каждой
> второй строчке скорее в bluez.Что ты хотел от чудаков, пишущих гуй на питоне? Нормального звука? Щаз.
> Крутая вещь. Просто работает, а что ещё надо.во, прямое доказательство, что когда-нибудь и о systemd такое напишут. только версия будет не 9, а 9000.
Для просто работающей системы она должна делать что-то полезное, чего обычная альса немогет и легко настраиваться юзером через гуй. В реале есть много непонятных консольных опция, 90% возможностей никогда не задействуется, т к в кедах нет крутилок нормализации громкости авто смены каналов и устройств и прочего. Хотел как-то заюзать действительно фичу па, т е передавать звук по сети, но оказалось, что под винды нормальных сборок нет. Ну и нафига оно такое?
> оказалось, что под винды нормальных сборок нет. Ну и нафига оно такое?Нафига что? венда или тупые вантузятники?
> Для просто работающей системы она должна делать что-то полезное, чего обычная альса немогетИменно этим оно и занимается.
1) Нормальное апи вида "хочу играть звук". Без траха мозга форматом сэмплов конкретно вот этой вот звуковухи. И еще 256 других моделей звуковух. Пульс сам разберется как перегнать то что ему дали в то что умеет железо. Достаточно быстро и качественно - большинство других программ делают сами еще хуже. Хоть libsdl, где с конвертацией сэмплов трэш и угар. Особенно через алсучку. Особенно в libsdl 1.x. Там заместо пшш возникает высокочастотный ringing и twinkling. Откуда, блин?!
2) Микшер - это не "опция". Многозадачность в многозадачной системе не может быть опциональной.
3) А когда какой-то му... занял эксклюзивно звуковуху это вообще позор и MSDOS.
4) Регулирование громкостей по потокам все-таки круто. И динамическая адаптация к разным конфигурациям, типа смены динамиков на наушники или подключения гарнитуры. Да, иногда может что-то сглючить, но остальные не умеют и так, зато ругаться лезет каждый.> и легко настраиваться юзером через гуй.
Для пульса есть простой, легкий гуй для как минимум GTK-based систем, позволяющий его настраивать. По возможностям ну уж как минимум не хуже виндового микшера и сотоварищей. А для алсы нет даже такого.
> В реале есть много непонятных консольных опция, 90% возможностей никогда не задействуется,
Посмотри что в Nokia N900 сделали. Они его правда допатчивали. Но остальные звуковые системы вообще не живут в конфигурациях где есть столько возможных источников звука и столько вариантов вывода, половина из которых к тому же динамические.
> т к в кедах нет крутилок нормализации громкости авто смены каналов и устройств и прочего.
В кедах нет, а виноват пульс. Логично.
> что под винды нормальных сборок нет
> Для просто работающей системы она должна делать что-то полезное, чего обычная альса немогетИменно этим оно и занимается.
1) Нормальное апи вида "хочу играть звук". Без траха мозга форматом сэмплов конкретно вот этой вот звуковухи. И еще 256 других моделей звуковух. Пульс сам разберется как перегнать то что ему дали в то что умеет железо. Достаточно быстро и качественно - большинство других программ делают сами еще хуже. Хоть libsdl, где с конвертацией сэмплов трэш и угар. Особенно через алсучку. Особенно в libsdl 1.x. Там заместо пшш возникает высокочастотный ringing и twinkling. Откуда, блин?!
2) Микшер - это не "опция". Многозадачность в многозадачной системе не может быть опциональной.
3) А когда какой-то му... занял эксклюзивно звуковуху это вообще позор и MSDOS.
4) Регулирование громкостей по потокам все-таки круто. И динамическая адаптация к разным конфигурациям, типа смены динамиков на наушники или подключения гарнитуры. Да, иногда может что-то сглючить, но остальные не умеют и так, зато ругаться лезет каждый.> и легко настраиваться юзером через гуй.
Для пульса есть простой, легкий гуй для как минимум GTK-based систем, позволяющий его настраивать. По возможностям ну уж как минимум не хуже виндового микшера и сотоварищей. А для алсы нет даже такого.
> В реале есть много непонятных консольных опция, 90% возможностей никогда не задействуется,
Посмотри что в Nokia N900 сделали. Они его правда допатчивали. Но остальные звуковые системы вообще не живут в конфигурациях где есть столько возможных источников звука и столько вариантов вывода, половина из которых к тому же динамические.
> т к в кедах нет крутилок нормализации громкости авто смены каналов и устройств и прочего.
В кедах нет, а виноват пульс. Логично.
> что под винды нормальных сборок нет
А майкрософту это надо? Изволь winapi кушать и не вякать.
> Нормальное апи вида "хочу играть звук". Без траха мозга форматом сэмпловТолько собираешься осчастливить мир очередным поделием типа плеера, как проблемы с трахом мозга форматами сэмплов сильно мешают?
Но с новым пульсаудио... >:-)
де Билл, please...
В контексте одной аудиокарты работает, да, но попробуй поюзать две, желательно одну usb с hot swap и другую pci или встроенную в мать. Нихт оно не работает, как и UAA в общем-то, которая в определенных ситуациях не может роутить звук между разными выходами, не говоря уже о разных картах. О даунстриме и апстриме я вообще молчу
Как в убунте обновить ?
А то сейчас с передним разъемом проблемы
Тут пофикшен http://kxstudio.linuxaudio.org/
IMHO, больше всего по репутации PulseAudio бъёт кривоватый плагин для ALSA, которым все ALSA-приложения заворачиваются в PulseAudio. У него какая-то странная буферизация, которой у простой ALSA не наблюдается.
Так пульса же вроде как монополизирует звуковую карту и чистую libalsa одновременно с пульсой использовать нельзя.
При настройках по умолчению демон PulseAudio открывает hw устройство (например, hw:0,0) После этого действительно другое приложение открыть его не сможет, ни напрямую, ни через автоматически вставленную цепочку с dmix/plug плагинами. Но обычно вместе с PulseAudio по зависимостям тянутся плагины к ALSA и конфиг, который заворачивает default устройство в плагин pulse.В результате, если приложение просто открывает ALSA устройство по умолчанию, без явного запроса hw:0,0, его данные отсылаются в сервер PulseAudio, который микширует потоки и через ту же libasound2 уже шлёт данные в hw устройство. Для приложения всё прозрачно.
Вот этот вот pulse плагин — кривоват. В одной программе я выводил звук через ALSA. У многих нормально работало с PulseAudio, но у некоторых глючило. Какие-то правки помогли в одних случаях, но никак не сработали в других. Решилось только отдельным кодом для вывода напрямую в PulseAudio.
Создавайте рабочую группу по новой аудио-системе.
> Создавайте рабочую группу по новой аудио-системе.XKCD 927 strikes back!
https://www.youtube.com/watch?v=ZTdUmlGxVo0
Еще не все программы с пульсой напрямую работают?
Очевидно, нет. Audacity, например, не имеет в настройках вывода через PulseAudio. Но вообще да, если сам пишешь программу, лучше сделать вывод через PulseAudio, чем сидеть с кучей однотипных багрепортов "звук не работает".
> Очевидно, нет. Audacity, например, не имеет в настройках вывода через PulseAudio. Но
> вообще да, если сам пишешь программу, лучше сделать вывод через PulseAudio,
> чем сидеть с кучей однотипных багрепортов "звук не работает".И вообще, с точки зрения того кто просто хочет проиграть звук очень неудобно гадать есть ли в той конфигурации dmix или нет, а также сношать себе мозг форматами аудио и какие умеет та или иная звуковуха. Если б альса умела более вменяемые апи и вещи типа dmix были не опцией а hardcoded default, так что на них можно реально надеяться в своей программе - тогда может ей и пользовались бы. А так это отдает выводом звука в DOS, когда надо самому детектить номер прерывания и грузить сэмплы в конкретном формате да еще и вовремя.
> вещи типа dmix были не опцией а hardcoded defaultdmix и есть hardcoded default. Много лет у меня не было конфига, звук работал, множество приложений спокойно выводили звук одновременно, хотя это встроенное аудио не умеет аппаратно микшировать. Просто неявно вставлялись plug, dmix и dsnoop. Более-менее осознавать формат конфига я начал только из-за багрепортов к apulse.
> есть ли в той конфигурации dmix или нет
Просто открываешь "default" и вперёд. В абсолютном большинстве случаев там будет plug+dmix. В особо отдельных случаях, когда пользователь замкнул default на hw, придётся передискретизацию сигнала делать, но для начала на это можно забить.
> dmix и есть hardcoded default.Так надо было делать с самого начала.
> аудио не умеет аппаратно микшировать. Просто неявно вставлялись plug, dmix и
> dsnoop. Более-менее осознавать формат конфига я начал только из-за багрепортов к apulse.Однако в обозримом прошлом была проблема с алсой и захватом устройств программами. Какого в многозадачной системе кто-то смеет монополизировать звуковой вывод? Давайте еще системный диск монопольно залочим, а остальные вклинятся при первом page fault!
>> есть ли в той конфигурации dmix или нет
> Просто открываешь "default" и вперёд.Все-равно слишком много прогрева мозга. Большинство разработчиков программ хочет просто проиграть звук. А не заниматься разбирательством какие форматы понимает та звуковуха и как сделать высококачественное ресэмплирование самому.
> В абсолютном большинстве случаев там будет plug+dmix. В особо отдельных случаях,
> когда пользователь замкнул default на hw, придётся передискретизацию сигнала делать,
> но для начала на это можно забить.Только эти креативные личности багрепортами потом заманают. Гораздо проще объявить им что они - unsupported. А дальше они могут сами писать под свою алсу код, если им не влом.
>> dmix и есть hardcoded default.
> Так надо было делать с самого начала.Так уже 10 (десять) лет. Где-то с 2005-го (версия 1.0.9, если не ошибаюсь).
> Все-равно слишком много прогрева мозга. Большинство разработчиков программ хочет просто проиграть звук.
Сложностей и в PulseAudio, и в ALSA, и в JACK хватает. Кстати размеры кода:
$ ls -Sl audio_thread_*.c | awk '{print $5 " " $9}'
18763 audio_thread_alsa.c
15904 audio_thread_jack.c
12109 audio_thread_pulseaudio.c
5826 audio_thread_noaudio.c$ ls -Sl audio_thread_*.o | awk '{print $5 " " $9}'
8416 audio_thread_alsa.c.o
6992 audio_thread_jack.c.o
4992 audio_thread_pulseaudio.c.o
2264 audio_thread_noaudio.c.oКроме проигрывания, записи, паузы и проверки доступности, там есть ещё и перечисление устройств записи. Эти части во всех вариантах, кроме варианта для ALSA, тривиальны — возвращают заранее известную строку. Так что код для ALSA немного больше и из-за этого тоже.
> Еще не все программы с пульсой напрямую работают?И слава Богу, что нет!
Скайп на этом поприще уже отличился.
Понимаю, "работать напрямую с" и "работать только с" - это разные вещи, но одно стимулирует другое.
Пульсе же не нужна libasound, она выводит звук напрямую через ядерное API.
> Пульсе же не нужна libasound, она выводит звук напрямую через ядерное API.Нет, это не так. Посмотри на модуль module-alsa-sink.so — он использует libasound.so.2.
> После этого действительно другое приложение открыть его не сможет, ни напрямую, ни...Может же, если карточка и драйвер поддерживают hwmix.
> Может же, если карточка и драйвер поддерживают hwmix.А вот это - булшит. Пишет програмер программу и у половины пользователей поддерживает, а у половины - нет. И чего?!
Спасибо тебе за apulse! :-)
Имею проблему с АЛСА плагином, но дело даже не в буферизации, похоже плагин тупо падает и перезапускается и снова падает.Происходит это далеко не во всех игрушках, но выглядит так: При запуске звук есть, через некоторое время начинается жуткий треск как бы с ускоренным воспроизведением, в списке синков видно это
https://www.youtube.com/watch?v=r9gEsDj1KRg
номер синка быстро меняется вверх, причем pavucontrol жутко тормозит и никак не мониторит тресковый звук, типа "да тихо у тебя сейчас", после минуты или двух это всё прекращается само собой, появляется синк с номером over9000 и продолжает играть звук пока опять не затрещит, через минуту, сразу-же или через час, для нормальной и комфортной игры помогает... нет ОЧЕНЬ помогает "chmod 000 'which pulseaudio' ; killall pulseaudio" и сразу наслаждаешься нормальным, чистым звуком и играми.
Писал на мэйллист разработчиков пульса, но от туда тишина, мертвецкая, будто кто-то там у них уже сделал киллалл..
Это больше похоже на модуль вывода в сервере PulseAudio, а не в плагине, который в клиента загружается. Если плагин падает, то вместе с ним падает программа, а у тебя такого нет.Хотя кто знает, может, как-то и связано.
> Это больше похоже на модуль вывода в сервере PulseAudio, а не в
> плагине, который в клиента загружается. Если плагин падает, то вместе с
> ним падает программа, а у тебя такого нет.
> Хотя кто знает, может, как-то и связано.Есть какие ни будь стандартные П.А. методы подебагать, отследить проблему?
Что-то я слишком часто сталкиваюсь с проблемами со звуком, то Openal(как долго я искал проблему! Это было до моей дружбы с пульсом), то теперь эта беда..
> Есть какие ни будь стандартные П.А. методы подебагать, отследить проблему?
> Что-то я слишком часто сталкиваюсь с проблемами со звуком, то Openal(как долго
> я искал проблему! Это было до моей дружбы с пульсом), то
> теперь эта беда..Я таких не знаю. В большинстве случаев отлаживаюсь printf'ами.
интересно, почему скайп при запуске заставляет пульсу нервничать?
> интересно, почему скайп при запуске заставляет пульсу нервничать?Подозреваете, что Пульса, как и Скайп, куда-то стучит? Резонно...
И что они раньше вместо memfd использовали?
shared memory на файлах.
Надеюсь что когда-нибудь и стабильная версия выйдет, которой можно будет пользоваться не только в качестве эксперимента.
> не только в качестве экспериментаВся суть linux на декстопе.
Оно хоть научилось использовать звуковые карты или по прежнему все на процесс?
Когда же ко всему этому поделию GUI сделают навроде Realtek'овского, чтобы те, кому оно действительно нужно, могли этим пользоваться ?
> GUI сделают навроде Realtek'овскогоФу, govno!
В 2007-г при переходе с FreeBSD на Linux на домашнем десктопе, возникло 3 условия для выбора дистра:
1. 64-бит поддержка Nvidia
2. Возможность выпилить pulseaudio стандартными средствами дистрибутива
3. Минимализировать установку ПО не из репы дистрибутиваВыбор пал на Gentoo.
За все 9 лет работы с этим дистром, я ни разу не пожалел о том что перешел на него.
Держите нас в курсе, это действительно очень важно.
Сабж предыдущих версий у меня не хочет упорно управлять наушниками и передними колонками раздельно: только вместе. В настройках pavucontrol вкладка Out devices, есть выпадающие меню "Analog" и "Headphones", позиции ползунковых регуляторов запоминаются для каждого меню свои, но регулируют они звук только вместе Front+Headphones... Можно ли правилами пульса разделить, так чтобы каждый регулировал только свой канал ?