LINUX.ORG.RU

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

 , klang


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 ()
Последнее исправление: Silent (всего исправлений: 4)

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

shimon> А почему в 2012 году программы все еще не могут не глючить/не жрать ресурсы по умолчанию, без требования тонкой настройки или правки кода?

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

Quasar ★★★★★
()

Некий разработчик объявил о запуске проекта KLANG

Пусть пишет. Главное чтобы коньяк по утрам не пил и жену не бил.

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

Projects * KLANG

More Linux - less bloat

Да он издевается!

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

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

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

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

автор немец и даже уже пересекался с поттерингом...

Думаешь, это некие флюиды, которыми последний инфецирует людей?

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

Есть мнение, FUSE в данном случае неполохой вариант.

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

Правильно, давайте в него еще чего-нибудь запихаем

Графику например.

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

Нужно больше веспен-газа.

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

Yustas ★★★★
()

А я рад, но название... soundd куда лучше :D

Будем ждать и молиться Сатане.

Hackeridze
()

Меня больше всего радуют объёмы попоболи у населения. То орут что-то не нравится, запили своё. Начинает кто-то пилить, орут убейтесь лузеры, не нужно, етц. И на фоне всего этого собачьего лая караван как шёл, так и идёт. Но каждый жирный троль считает себя самым умным, главным и правым... и пыжится, и пыжится, и пыжится... :D

erfea ★★★★★
()

ALSA не имеет поддержки микшировавния, даже при использовании dmix. JACK слишком сильно загружает ЦП.

PulseAudio все еще требует RealtimeKit для работы.

ESD — не для обычного домашнего использования.

OSS не поддерживает MIDI-синтезаторы, слишком быстро расходует батарею. Зато имеет прекрасный API.

И у всех большой минус они не переписаны Поцтерингом

Freiheits-Sender ★★
()
Ответ на: комментарий от Legioner

Ну я использую. Но для большинства случаев хватает голой ALSA. Потому запускаю Jack тогда, когда мне это нужно.

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

я б тоже сидел, если б в генте была нормальная поддержка :-(. В оверлей kde-sunset TDE ЕМНИП пока еще не взяли, а найденные мной ебилды были бажными.

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

Realtek ALC861VD 6-Channel HD Audio разве похожа на AC97? А аппаратное микширование там не работало. Если запускал YouTube - не работал Skype, если Skype - обламывался звук в OpenArena и т.п. При этом в документации на Realtek ALC861VD говорится что там присутвует аппаратное микширование. Но оно не работало, и это факт. Многие пользователи материнских плат с данным чипом должны были выбирать, чего им хочется - музыку послушать или в Unreal Tournament 2004 сгонять, а может skype врубить? Какая-то однозадачная система получалась. А PulseAudio решил эту проблему.

lucentcode ★★★★★
()
Ответ на: комментарий от Freiheits-Sender

>PulseAudio
>не переписаны Поцтерингом
>PulseAudio developers: Lennart Poettering […]

(?_?)

Deleted
()
Ответ на: комментарий от lucentcode

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

достаточно удалить ВСЕ конфиги Alsa, и дефолтный конфиг врубит dmix если аппаратного микшера не будет. По крайней мере в Gentoo именно так...

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

alsa + jack и alsa + esd ещё

На их счёт я догадывался, но указывать не стал, так как сам не проверял.

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

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

Чтоб ты знал, номер устройства зависит от порядка загрузки драйверов. У меня тоже время от времени тв-тюнер со звуковой картой меняются местами и происходит nosound. Делаю rmmod saa7134_alsa; rmmod snd_hda_inter; modprobe snd_hda_intel; modprobe saa7134_alsa, и все в порядке. Костыль можно запихнуть в rc.local: всего-то прогрепать /proc/asound/cards, а затем либо ничего не делать, либо выполнить означенную выше магию.

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

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

На USB он зависит и от фазы лун Марса.

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

и он явно не разделяет мнения Леннарта

A few people may remember my response to Lennart Poettering: Do you know about shell scripts?

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

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

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

Имхо, проще один раз написать udev правило для имени устройства по аналогии с /etc/udev/rules.d/*-persistent-*.rules

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

пользователю на это как-то пофиг

Напоминаю, что в ранние 2000-е многие приложения, использующие ALSA API работали хуже, чем при использовании OSS API, даже если эмуляця OSS производилась силами alsa-lib. Пользователь-то будет хавать то, что разработчик надевелопит поверх антигуманоидного альсового API.

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

Имхо, проще один раз написать udev правило для имени устройства по аналогии с /etc/udev/rules.d/*-persistent-*.rules

Моя не может осилить udev.

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

номер устройства зависит от порядка загрузки драйверов

index в опции загрузки модуля - и ничего не зависит

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

тебе просто везет, что ты не используешь конфигурацию, в которой все перестает работать.

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

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

Вообще-то, невозможность вывести звук в колонки другого пользователя - это очевидная фича. Да, иногда это может понадобиться, но требовать дополнительные действия для обеспечения такой возможности - естественно и логично. А то давайте ещё позволим рисовать на экране других пользователей, выводить в их STDOUT...

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

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

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

maloi ★★★★★
()
Последнее исправление: maloi (всего исправлений: 1)

Некий разработчик объявил о запуске проекта

сначала пусть добьется, потом будем обсуждать

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

я б тоже сидел, если б в генте была нормальная поддержка :-(. В оверлей kde-sunset TDE ЕМНИП пока еще не взяли, а найденные мной ебилды были бажными.

Debian рулит и педалит =)

ssvda
()

Давно пора, без этого удобная профессиональная работа в линуксе со звуком невозможна. Сейчас минимальные задержки обеспечивает только jack, но он начинает щёлкать если процессор чем-то загружен, при том, что качественный реалтаймовый звуковой софт очень прожорлив. И само использование jack не очень удобно, особенно при необходимости частой смене звуковых карт (разный функционал, ничего не поделаешь)

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

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

параметры ipc_* для dmix крутил? Они как раз и сделаны, чтобы разрулить проблему.

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

jack, но он начинает щёлкать если процессор чем-то загружен

что за железо? У меня проблемы с xrun в jack проявлялись только на нетбуке с атомом вместо процессора и дерьмовой интеграшкой.

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

Дух называется alsa-lib, можешь прошерстить входящие в неё конфиги, и открыть много нового.

Именно про ее настройку я и говорю. Или ты думал я предлагаю настраивать паяльником?

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

вроде бы уже достаточно давно так, пару лет или типа того

Ну вот да - пару лет.

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