LINUX.ORG.RU

KLANG — проект новой аудиоподсистемы для ядра Linux и FreeBSD

 ,


1

4

Некий разработчик объявил о запуске проекта KLANG по созданию новой аудиоподсистемы для ядра Linux и FreeBSD. KLANG должен предоставить пользователям профессиональное качество работы с аудиоматериалом, минимальные задержки и минимальную загрузку ЦП при обработке звука.

Архитектурно проект представляет собой прозрачную и эффективную систему маршрутизации звуковых данных, равноправными узлами которой являются звуковая карта и программные обработчики. Каждый узел является либо источником, либо приемником, при этом имеются широкие возможности для описания всевозможных топологий маршрутов.

Что не устраивает автора проекта в существующих аудиосистемах?

  • ALSA не имеет поддержки микшировавния, даже при использовании dmix.
  • JACK слишком сильно загружает ЦП.
  • PulseAudio все еще требует RealtimeKit для работы.
  • ESD — не для обычного домашнего использования.
  • OSS не поддерживает MIDI-синтезаторы, слишком быстро расходует батарею. Зато имеет прекрасный API.

Почему аудиосистема помещена внутрь ядра? Во-первых, это единственный благоразумный вариант. Для аудиопотока наиважнейшим параметром является время задержки. Даже при коротких на первый взгляд задержках восприятие такого звука ухом неприятно. Например, для видеосистемы задержки даже в 20 мс трудно различимы, а для звука уже 4 мс — это слишком много.

При низком времени задержки требуется работа с более коротким буфером данных, что усложняет процесс конфигурации планировщика процессов. Имеющиеся аудиосистемы, работающие на пользовательском уровне, запускаются с realtime-приоритетом. Если процессов-обработчиков аудиоданных немного, то все будет работать хорошо, но с увеличением их числа нагрузка на ЦП вырастет в разы. Помещение аудиоподсистемы в ядро во многом помогает в решении проблемы и позволяет реализовать собственный эффективный планировщик. К тому же ядро — прекрасный и удобный уровень абстракции над оборудованием, не нужно самому заботиться о деталях.

Существующая аудиоподсистема ALSA позволяет прямо воздействовать на аудиоустройство с пользовательского уровня. Представьте, что подсистема по работе с сетью передает на пользовательский уровень пакеты в сыром виде, которые обрабатывает либо демон, либо отдельный процесс, целиком и полностью обладающий правами на единоличное использование интерфейса. Нужна ли вам такая система?

API разрабатываемой аудиоподсистемы будет изначально подразумевать правильную работу со звуком:

  • open(2) — обращение к одной из конечных точек;
  • ioctl(2) — конфигурация работы с конечной точкой;
  • write(2) — запись аудиоданных;
  • read(2) — получение аудиоданных.

Очень сильно напоминает OSS. Да, подобный OSS-совместимый API будет предоставлен KLANG для пользовательского уровня. Данный API, конечно, ни для кого не станет открытием, но он достоин повторного использования и дальнейшего расширения.

На данный момент KLANG еще слишком нестабилен для внедрения и опробования. И разработчик не собирается выпускать его для всех на слишком ранней стадии. По адресу вскоре можно ожидать появления дополнительной информации и официального баг-трекера проекта.

>>> Подробности

★★★★★

Проверено: JB ()

Ответ на: комментарий от r

Вот только всё настроено автоматом.

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

С Jack проблемы начинаются, когда у вас много всего подключено, например rakarrack для гитары, quitarix для басухи, пара каналов с микрофонов, MIDI клава через какой-нить софтсинт, MIDI секвенсор какой-нить, и еще плюс ardour для записи всех этих дорожек.

Шива детектед.

И проблемы начинаются не с jack, а скорее всего с rakarrak-ом, так как он очень любит конволюшн фильтром жрать процессор.

11mc - максимум что можно выжать без xrun'ов

древний SB Live, 5ms, всё ок

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

А печать на сетевых принтерах совсем отменим?

Сетевой принтер специально настраивают для этого. Если вы подключили свой принтер к своему компьютеру, то вы не хотите, чтобы любой член домена мог на нём печатать. Именно поэтому по умолчанию такой возможности нет.

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

очевидная чем? есть два пользователя, нигде не написано, чьи это колонки, почему от того что кто-то захватил устройство (и возможно завис при этом) я не могу выводить на него?

Есть два человека, нигде на кухне не написано, чьи там тарелки. Почему от того, что кто-то уже ест из тарелки, я не могу наложить в неё свою еду и таскать оттуда?

в логи, например, почему-то чудесно все пользователи syslog одновременно выводят.

Потому что логи - вещь общесистемная, а звук от пользовательских приложений - нет.

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

Я специально добавил пользователей в группу audio, чтобы они могли пользоваться звуком, при этом проигрывать звук они одновременно не могут, а вот микшер крутить один пользователь, пока звук играет второй - может. Вы утверждаете что это специально так задумано? Не подскажете, как это отключить?

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

Я специально добавил пользователей в группу audio, чтобы они могли пользоваться звуком, при этом проигрывать звук они одновременно не могут, а вот микшер крутить один пользователь, пока звук играет второй - может. Вы утверждаете что это специально так задумано?

Мда, это уже фигня какая-то. Но я не думаю, что средствами альсы эта проблема нерешаема.

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

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

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

решить-то наверняка можно, только в звуковой подсистеме на десктопе не должно быть таких проблем в принципе, именно поэтому я поставил пульс и кроме решения подобных багов получил кучу плюшек в довесок.

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

Дык, работают, и именно искаропки. Просто одновременное использование десктопа двумя пользователями - это уже нестандартное поведение.

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

решить-то наверняка можно, только в звуковой подсистеме на десктопе не должно быть таких проблем в принципе

Тут не поспоришь.

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

Пофиксил FTGJ. ☺

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

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

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

Пофиксил FTGJ. ☺

баги есть в любом ПО. но в одних они вылезают постоянно и мешают пользоваться ПО по назначению, а в других их не видно, про такие ещё говорят, что они просто работают.

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

Не, если они сделают что-то более быстрое чем jack и более удобное для домохозяечного юзера чем pulseaudio, я буду всеми руками за.

Этот проект не замена Jack. Это замена backend с которым Jack общается. Чувак собирается кооперироваться с Jack.

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

про такие ещё говорят, что они просто работают.

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

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

баги есть в любом ПО. но в одних они вылезают постоянно и мешают пользоваться ПО по назначению, а в других их не видно, про такие ещё говорят, что они просто работают.

Спасибо, кэп. Очевидно, я, просто, указал на принадлежность пульсаудио к первой группе.

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

аналогично, мультисит нужен очень малому количеству людей

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

а теперь скажи, сколько лет пульсу пилили до состояния просто работает

Вы так говорите, будто уже допилили.

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

у тебя парсер на скобках ломается?

и то, до сих пор всплывают темы с проблемами

При чём тут парсер? Разницу между «иногда» и «постоянно» чувствуете?

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

убунту тут причем вообще? Да и ConsoleKit появился по-моему после того, как пользователи были добавлены в эту группу.

maloi ★★★★★ ()
Последнее исправление: maloi (всего исправлений: 2)
Ответ на: комментарий от maloi

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

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

не увидел там ни «иногда» ни «постоянно»

А я увидел неявное «иногда». Если его там не было, то и спорить не о чем.

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

хотя, вру, в ALSA бывают ещё проблемы с драйверами (фигле, зачастую спеки закрыты), в пульсе же таких проблем нет лишь потому, что она работает уровнем выше.

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

ну т.е. неработающий софтварный микшер - это от нежелания мной читать документацию?

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

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

KISS же.

Это ж ведь так просто, писать для своей программы декодер mp3 и отправлять звук прямо в альсу, сказать GStreamer «проиграй такой-то файл» неимоверно сложнее)

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

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

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

590 рублей и кроме того, SB Live! 5.1 у меня лежит на полочке. Но в материнке нет свободного PCI, надо брать звуковуху под PCI-X. А под PCI-X звуковухи уже дороже.

agentgoblin ()
Ответ на: комментарий от maloi

года четыре назад у меня на работе был системник, в котором альса из коробки не заработала

сейчас тоже не работает?

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

место работы с тех пор сменилось, предлагаешь съездить на старую работу, найти тот системник и проверить?

maloi ★★★★★ ()
Ответ на: комментарий от quantum-troll

А если понадобится внезапно на паузу поставить?

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

Realtek ALC892. Я лучше пока сам поковыряю, а если что, создам тред в нужном разделе. А то вдруг я мануалы не те или не так читаю, некрасиво будет.

agentgoblin ()
Ответ на: комментарий от lazyklimm

более того, в треде на форониксе он по полочкам раскладывает, в чём аффтар KLANG не прав (не без «ты кто такой», конечно, но в данном случае он имеет право так говорить).

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

ну ты смешной. последняя правка год назад всего.

вики убунты просто подразумевает, что у убунтуюзера есть consolekit, pulseaudio и возможно ещё куча всяких костылей. Если они есть, то действительно, звук работает из без группы audio, но с какого боку тогда alsa?

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

Lennart Poettering - немец

Разве не латинос?

Википедия говорит, что

Nationality : German

unfo ★★★★★ ()

Нужно

У меня чего-то на карте аудиофил под линем звук пропадает на джеке и портаудио (альса сама по себе как устройство вывода разных прог работает нормально). Еле нашел рабочую конфигурацию с planetccrma'шным rt ядром и альсовым hw:0,0 в портаудио (надо будет тщательнее погонять остальные конфигурации - вдруг еще какие есть рабочие). Надеюсь данное творение будет работать стабильно без танцев с бубном, а то уйду под офтопик с его вкусным асио (там 256 буффера и меньше без проблем). Или свои дрова запилю. Есть у меня с товарищем мысли по поводу снижения задержки отклика на миди почти до 0 путём наглого вмешательства в играемый в данный момент буффер.

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

За oss не знаю может и костыль, но джекоподобные роуты на уровне ядра позволят передискретизацию в пространстве пользователя отдельным процессом аля фильтром. Можно будет вообще любые обработчики делать, написано же в новости. Сейчас подобное делается и в пульсе и в джеке, но у обоих проблемы с планировщиком. Пульс раньше часто повисал, джек в игрушках хрипит.

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