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 ()

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

Как минимум отвратительное качество звука и ужасный API

могу добавить конкретный пример

у меня есть встроенная звуковуха, ешь HDMI в встроенной видюхе, HDMI в дискретной видюхе, а пользуюсь я юсб звуковухой и чтобы нормально всё работало пришлось создать файл .asoundrc и прописывать туда дефольное звуковое устройство hw0.0, hw1.0 и т.д., но после каждой перезагрузки номер этого устройства меняется.... и ничего не поделаешь - только переписывать конфиг каждый раз достало!

anonymous ()

я думаю... ну и пусть делает, чо, лишним не будет

I-Love-Microsoft ★★★★★ ()

С таким названием, подумал сначала, что это что-то под KDE.

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

Ты давно не обновлял железо:)

Я свою флешку с арчем втыкаю во все компы, к которым меня подпускают. :-) Ноутбуки от дешёвых асеров до дорогих финкпадов, десктопы самых разных конфигураций. В основном, конечно, везде интеграшки, но, ведь, с ними-то и шанс поймать проблему выше. Везде всё просто_работает.

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

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

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

echo "options snd-hda-intel index=0" >> /etc/modprobe.d/alsa.conf

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

И, да, на моём компе программное микширование прекрасно работало на USB-ЦАПе, в котором по определению аппаратного микшера быть не может.

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

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

Другое дело, что в опенсорсе это последнее время - модный тренд.

Pinkbyte, вы безусловно правы. Но я бы сказал, что это скорее не модный тренд, а закономерное следствие. Не знаю слышали ли вы «брюзжание» многих преподавателей о том, что студент нынче пошёл не тот, школьники готовы всё хуже, работники кругом никудышные. А ведь всё это правда. Нет, речь, конечно, о среднестатистическом работнике, студенте, школьнике. Как человек, связанный со студентами, могу сказать, что в каждой группе есть 1-3 человека, что-то ценное из себя представляющие («звёзды»).

Вот то же происходит и в мире программирования. Изначально очень концентрированное сообщество специалистов разбавляется всё менее и менее квалифицированными кадрами. Звёзды-то остаются, а вот средняя температура по больнице снижается.

Ведь то, что легче написать с нуля, чем доработать говорит именно о плохой квалификации. И даже, возможно, не того кто решил переписывать, а того, кто писал исходный проект, который сложно дорабатывать. Ну и того кто переписывает тоже =) В этом я вижу корень NIH-синдрома в мире свободного ПО.

И ладно бы велосидели маленькие проекты - переписывают горы хреново работающего кода на такие же горы так же хреново работаюшего. А еще обиднее когда переписывает почти хорошо работающий код на хреновый и потом дооолго допиливают(привет KDE4!)

А мне всё равно. Я как сидел на KDE3, так на TDE и сижу =)

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

Везде всё просто_работает.

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

r ★★★★★ ()

JACK слишком сильно загружает ЦП.

Конечно. Ведь при мастеринге альбома надо обязательно держать открытыми стопицот окон либреофиса, эклипс и майкрософт аутлук, запущенный через wine. В идеале параллельно должен компилироваться Firefox.

AP ★★★★★ ()

Наконец-то у кого-то руки дошли!

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

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

Я последний раз видел ноут без хардварного микса в 2005-м году Сейчас все встроенные карты умеют в него

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

JACK у меня не взлетает Он просто не видит ничего, кроме MIDI-синтезатора у моей карточки.

да ну нафиг. что за железо? логи в студию!

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

JACK слишком сильно загружает ЦП.

Мой не шибко новый Атлон3000+ его даже не замечает.

А вот ЦП некоего разработчика загружается значительно сильнее. Вот поэтому и нужна новая аудиоподсистема в ядре. Чего же тут непонятного))?

UNiTE ★★★★★ ()

The first release of KLANG sources will happen, as soon as both the routing system are stable and a functional native driver for Intel HD-Audio chipsets has been finished.

Вот когда будут сорцы, тогда и поговорим. Пусть нихера не работает, но без сорцов...

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

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

Я давно предлагаю запихать в ядро все нужные конкретному пользователю прикладные программы, чтобы всё грузилось сразу. Будет операционная система для гиков на супермонолитном ядре индивидуального пошива. :)

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

написать с нуля

Ведь то, что легче написать с нуля, чем доработать говорит именно о плохой квалификации. И даже, возможно, не того кто решил переписывать, а того, кто писал исходный проект, который сложно дорабатывать. Ну и того кто переписывает тоже =)

ППКС.

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

ЦП некоего разработчика загружается значительно сильнее

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

bender ★★★★★ ()

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

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

ТАм где нет аппаратного микширования раньше надо было в алсе делать упражнения руками.

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

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

Как вариант, можно использовать уникальные имена, которые не меняются при перезагрузки. Для HDA это выглядит как «hw:Intel». Не помню, где это смотреть, где-то в /proc.

anonymous ()

Вся суть опенсорц-лицемерия на ЛОРе в этом треде.

Чуть что тебя не устраивает в работе/развитии любого софта - всегда посоветуют форкать/пилить своё. Тут же человек прямым текстом говорит: «Пилю своё, выйдет годнота - будет в ядре, не выйдет - не будет». Но нет воинствующие говн^Wретрограды всё равно кричат, что оно не нужно и свои уютные костыли гораздо лучше. Эх...

sophus_solus ()

KLANG

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

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

Если он сделает лучше, чем OSS4 — будет здорово.

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

Мало. Лучше сразу иксы и кеды четвертые. И все существующие игры.

Антивирус Попова не забудьте.

Bagrov ★★★★★ ()

Ну пусть пишет, может и чего-нибудь годное выйдет. Главное не забыли что:
1) Аудиоустройства это не только стерео, но 5.1. А еще 7.1, 2.1 и еще черти-сколько вариантов.
2) Аудиокарта 5.1 это не три стерео-аудиокарты в одном корпусе. Пусть даже внутри это так, использование её это таким образом это специальный юз-кейс. Не заставляйте каждый плеер делать open на устройство каждого канала.
3) А еще есть аудиоустройства без ЦАП, которые понимают не только pcm. Во всякие sp/dif и hdmi иногда нужно выкидывать сжатый поток с проигрывателя без преобразований. А иногда приходится декодировать его и микшировать под количество каналов пользователя.
4) HDA-звуковухи понимают обычно, сколько устройств к ним подключено. Ну ладно, так уж и быть - можно отдать это на откуп пользователю.
Ничего не забыла?

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

Главное не забыли что: 1) Аудиоустройства это не только стерео, но 5.1. А еще 7.1,

Ога. А ещё этих устройств может быть N штук, при этом три канала из 7.1 хочется выводить через одно, три через другое, два через третье, системные сообщения (типа «питание пропало, работаем на упсе, через 10 минут шатдаун» например) хотелось бы выводить на незанятые соски первого устройства и через микшер на активные каналы третьего, а так же транслировать по сети в общем потоке броадкастинга внутридомовой медиа-системы куда аудиосигнал от некоторых приложений тоже хочется бродкастить в некоторых условиях.

anonymous ()

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

JACK слишком сильно загружает ЦП.

Разработчик KLANG - криворукий дебил. У меня на атоме вместо процессора не особо грузил Jack систему с эффектами в реальном времени. Да и в ALSA у меня через dmix всё спокойно микшируется.

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

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

Более того - Jack эти задачи выполняет на отлично при сравнительно малой загрузке процессора.

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

spacemm> А зачем вообще брать каточку без микширования? Ведь это одна из основных ее функций.Да и фиг найдешь сейчас такую.

А тебя никто не спросит - тебе её всучат, и всё.

Quasar ★★★★★ ()

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

Чего?!

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

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

linux-v0id ()

Возможно мы наконец-то увидим нормальную звуковую подсистему. Удачи некому разработчику.

loz ★★★★★ ()

Ну наконец то прогресс ! Архитектура алса с монопольным доступом к звуковой карте в 2012 году это фрактальный фейл.

Есть, конечно, пульс, но с ним проблемы озвученные имеются.

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

у меня есть встроенная звуковуха, ешь HDMI в встроенной видюхе, HDMI в дискретной видюхе, а пользуюсь я юсб звуковухой и чтобы нормально всё работало пришлось создать файл .asoundrc и прописывать туда дефольное звуковое устройство hw0.0, hw1.0 и т.д., но после каждой перезагрузки номер этого устройства меняется.... и ничего не поделаешь - только переписывать конфиг каждый раз достало!

Глупый анонимус не слышал про имена карт? Про порядок загрузки модулей?

anonymous ()

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

А разве это возможно вне rt-ядра? А так-то начинание хорошее.

chelovek-bugurt ()

Только название странное. Как будто пакет локализации или переводчик для KDE. Мог бы назвать kaudio или ksound.

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

High Definition Audio сейчас все имеют встроенный аппаратный микшер.

Не имеют. Более того, не имеют его и современные нормальные карты. Фактически аппаратное микширование осталось в прошлом, и это правильно.

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

Вся суть опенсорц-лицемерия на ЛОРе в этом треде.

+1

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

Архитектура алса с монопольным доступом к звуковой карте

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

anonymous ()

Раньше было модно запилить очередной плеер под линукс. Теперь пилят очередные аудиоподсистемы.

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

Я сам давно над этим думал

лол. надеюсь всё же, что автор несколько другого калибра.

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

А что не костыль? Vmix в OSS? Ну так за его «ядерность» приходится расплачиваться убогостью и практически отсутствием выбора алгоритмов передискретизации, тогда как для dmix доступно всё лучшее.

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

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

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

alukin> 256 остчетов, 11mc - максимум что можно выжать без xrun'ов, и то не всегда. И не сильно оно упирается в проц. 4 коры на 2.4ГГц или 2 коры на 1.8ГГц - один хрен.

У меня на Jack выходило коло 5мс на AMD Zacate E350. И это с эффектами. Кое у кого руки не оттуда растут, либо использует он протухшие версии.

И если что - ежели тебе реалтайм нужен, используй реалтаймовое ядро и настрой jack подобающе.

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

Да не слишком, нормально он загружает. Для своих целей.

Играл в кваку под джеком, звук рвался, может конечно не в нагрузке на ЦП дело было.

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

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