LINUX.ORG.RU

kmixer-0.0.6 has been released.


0

0

kmixer - это kernel-level звуковой миксер, в чем-то схожий с esd или artsd. Но поскольку работает он на уровне ядра, то умеет возможность зарегестрировать символьное устройство, которое мы назовем /dev/dsp, а к настоящему /dev/dsp (допустим мы его передвинули в /dev/dsp0) будет обращатся сам kmixer. Что он умеет на данный момент: принимать и смешивать звуковые потоки от нескольких программ в следующих форматах: 44/22/11Khz, Stereo/Mono, 16/8 bit. По возможности эмулируются ioctl-ы разные (при нахождении неподдерживаемго clt-я он по возможности дописывается ;-).

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

Если у вас звуковая карта которая умеет все это делать аппаратно или на уровне драйвера, то kmixer не для вас, лишняя трата ресурсов получится ;-)

О нем нельзя сказать, что он будет безглючно работать на SMP, но на моей UP вроде не видно багов.

P.S. автор я ;-)

Взять можно тут (используйте последнюю версию! ;-)

>>> Взять можно тут (используйте последнюю версию! ;-)



Проверено: green

ИМХО, хорошая идея показать свое творение в LKML.

logIN
()

ИМХО ещё более лучшая идея включить это в ALSA!

anonymous
()

!

и почему ет досихпор такого нет в ядре иль в alsa - хотяб как доп фича?!?

кстати - кроме /dev/dsp - надо б еще /dev/mixer также эмулить ! (и вот тут были бы весьма хитрые проблемы!)

а так - очень хороша чтука !

ae
()

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

Особенно приятно, что сие находится в домене mipt.ru :)

Так держать. И, правда, в LKML показать сие творение было бы совсем неплохо.

ДВ

DmVo
()

Лучше наверно в алса показать - я думаю они к этому проше отнесутся. Да и помогут если что кучей:)

anonymous
()

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

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

все проги издающие звуки загружаються с либой (через LD_PRELOAD) перехватываюший поток в /dev/dsp и отправляющей его куда угодно.Конкретно у меня используетсья в качестетве пути $DISPLAY. Но никто не мешает и на localhost забиндить..

Вот и все.
Работает на всех соундах которые попадали мне в руки.




ifconfig
()

молодец. Будь добр, скопируй хотя-бы текст новости на ту страничку, которая в "Подробности".

bormotov ★★★☆
()

Так в алса давным давно есть софтварное микширование. Какой смысл было это писать?

anonymous
()

>Так в алса давным давно есть софтварное микширование. Какой смысл было это писать?

И как его включить например на "Ensoniq 1371" ?

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

> У меня не работает - kmixer warning: in function init_module: Can't register char device

возможно уже есть в системе зарегестрированное символьное устройство с тами MAJOR-ом? попробуй поправить в config.h это значение и пересобрать... (слава богу собирается он не очень долго ;-)

sseREGa
() автор топика

> Так в алса давным давно есть софтварное микширование. Какой смысл было это писать?

на кой хруй извращаться на низком уровне софтварно вместо того чтобы ядро это делало? тем кто пишет проги в расчете на микширование надобно еще следить чтобы на машине alsa или прочие arts стояли и фунциклировали... лучше когда ядро у всех это умеет...

> У меня не работает - kmixer warning: in function init_module: Can't register char device

cat /proc/devices и изучи кто занял. если не слишком важный драйвер - высади нафик, а еще лучше пересобрать kmixer с другим major number.

зы. kmixer плохое название, ассоциируется с kde вместо ядра. лучше k в конец добавлять, на манер printk

anonymous
()

Спасибо Nikita Shulga за критику кода, выяснилось что kmixer не smp-safe. Будет исправлено в ближайшее время. А пока я рекомендую не использовать его на smp системах.

2 anonymous (*) (2002-10-07 23:08:28.056)

>зы. kmixer плохое название, ассоциируется с kde вместо ядра. лучше k в конец добавлять, на манер printk

Но к примеру kjournald ни у кого не ассоциируется с kde ;-)) А если серьезно - то mixerk не так звучит, да и менять названия корабля, после того, как он отправился в плаванье...

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

> Молодец - работает правда у меня получилось только из под root

А ls -l /dev/dsp0 и chown/chmod у /dev/dsp на такие-же пермишены/владельца? ;-) (Хотя в README это не написано, исправим ;-)

sseREGa
() автор топика

а несчастным, сидящим на 2.2.х можно надеяться?

anonymous
()

> а несчастным, сидящим на 2.2.х можно надеяться?

Надеятся можно ;-) На самом деле нет особых причин, для того, что-бы не сделать kmixer работающим в 2.2.x ядрах. Просто началось все с версии для 2.4, и на данный момент так... Работы над ним еще много, и в 2.2.x его перенести тоже запланировано.

P.S. возможно что в ближайшее время так-же снимется жесткое ограничение по семпловой частоте...(44,22 или 11kHz) вроде как парочку функций для преобразования потока с произвольной частотой в 44kHz, которая является итоговой для всех...

P.P.S. Самая большая проблема для переноса его в 2.2.x - это моя нелюбовь к большому количесву #ifdef #endif -ов ;-)

sseREGa
() автор топика

А некоторые карты поддерживают 48КГц. А SB Audigy 2 поддерживает 96 и 192КГц. Так что с 44КГц в качестве финальной частоты можно встрять.

anonymous
()

А на хрена он тебе на audigy или sb life?
У них все аппаратное.
А это для недорогих карт.

jackill ★★★★★
()

>> Молодец - работает правда у меня получилось только из под root >А ls -l /dev/dsp0 и chown/chmod у /dev/dsp на такие-же пермишены/владельца? ;-) (Хотя в README это не написано, исправим ;-)

догадался уже - спасибо

еще в README исправь что алиас добавлять нужно в /etc/modules.conf а то я поначалу его в консоли набирал :)

anonymous
()

mipt какая ностальгия :)

Чтобы всем было известно

VIA SOUND работает ТОЛЬКО при 48 КГц :( -- постоянные грабли с битрейтом

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

Есть небольшое замечаение. kmixer не живёт с artsd (kde 3.1beta2 ) последний периодически вылетает, жалуясь на resouces overhead.

Infra
()

Re:

про битрейты: как дотестю две маленькие функции - downsample и upsample, которые могут перегонять из любого в любой -> можно будет сделать так, что-бы все это перегонялось опционально - в 44/48/другой рэйт..

Только imho проца это будет чуть больше хавать, потому-что например из 22 в 44 перегнать гораздо проше, чем в 48. (это я к тому, что в большинстве своем встречаются форматы 44/22/11). Хотя если прога будет писать в 48kHz, то тут наоборот будет выйгрыш в производительности... ;-)

2 Infra: а не можешь поподробнее узнать, что это за "resouces overhead" ? То есть при каких условиях он возникает и все такое..

P.S. А artsd отдельно от kde поставить можно? А то такого монстра как KDE3 моя тачка не потянет ;-)

P.P.S. баги известные на данный момент:

небольшие глюки при проигрывании 8bit 22/11Khz, которые проявляются в пошелкиваниях и подобных искажениях...

not smp-safe, пока времени свободного не появлялось, вечером когда освобожусь окончательно от института - исправлю... Хотя там править не особо много...

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

ну и artsd...

sseREGa
() автор топика

по поводу LKML - сначала исправлю все баги которые найдутся с помошью посетителей lor-а, а потом пойдем дальше ;-)

sseREGa
() автор топика

>>возможно уже есть в системе зарегестрированное символьное устройство с >>тами MAJOR-ом? попробуй поправить в config.h это значение и >>пересобрать... (слава богу собирается он не очень долго ;-) Пробовал. Не выходит.

А по поводу arsd. С AC95 звуком он у меня всегда вылетает.

SySAlex
()

А какие еще саунды аппаратно поддерживают микширование, кроме SB Lifa и Audigy-a ?

anonymous
()

Чтение с /dev/dsp не работает

pdima
()

Отличная вешь! Большое спасибо автору!

McGray ★★
()

> Чтение с /dev/dsp не работает

/* return number of readed bytes... Пока read из нашего девайса не * поддерживается... Но ругатся -EINVAL не хочется... */

static ssize_t kmixer_read(struct file *file, char *buffer, size_t length, loff_t *offset)

{

return 0;

}

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

to Author.

при возникновении 'конфликтной ситуации' =)), artsd перед выходом генерирует сообщение об ошибке: "Sound server fatal error: CPU overload, aborting."

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

проверено вне KDE. ( запущен голый xterm в иксах, затем artsd (/usr/local/kde/bin/artsd -F 10 -S 4096 &) по прошествии ~минуты - artsd вылетал.

О системе: p4/384mb, 2.4.19 звук: 00:1f.5 Multimedia audio controller: Intel Corp. 82801BA/BAM AC'97 Audio (i810_audio.o)

p.s. Собирается и работает artsd отдельно. дистр его лежит на ftp.kde.org/pub/kde/unstable/kde-3.1-beta2/

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

to SysAlex:

>А по поводу arsd. С AC95 звуком он у меня всегда вылетает.

На моём интеле artsd в чистом виде (без kmix'a ) копыта не отбрасывал =). Держался молодцом.

Infra
()

Догоним и перегоним Virtual Mixer из OSS ;-) я вот только из-за него на oss остаюсь.

Alant
()

Появилась bug-fix версия 0.0.7.

Исправлены баги которые возникают на smp системах.

sseREGa
() автор топика

У меня почему-то компилися с кучей варнингов и потом после depmod "Unresolved symbols in /lib/modules/2.4.19/kernel/drivers/sound/kmix.o" Что не так?

Vidopliassov
()

Скорее всего карты на чипах vortex, vortex2 и mediaforte
(если их поддержка реализована по человечески).
YMF724/740/744/754, FM801AS/AU должны, но поскольку чипы в них
HSP, то поддержка полностью может быть и не реализована.

jackill ★★★★★
()

Да, какие-то unresolved symbols проскакивают....

svu ★★★★★
()

У меня звуковая карта c-media 8738. Поставил я этот kmixer . XMMS действительно с ICQ работает ,но не больше. MPlayer при проигрывании 4-х мпегов замедляет и изображение и звук раз в 10 (при этом всё синхронно...картинка весёленькая :)),хотя процессор занят на пару процентов.( 1000 атлон). При этом всё отлично на чистом OSS и на ESD тоже ничего . Плюс ко всему при запуске Q3 - она говорит : your soundcard can't do it ..хотя на OSS всё отлично . ..так что надо ещё поработать . GL !

anonymous
()

по поводу unresolved символов это небольшой глючок который щас проскакивает... Самое прикольное что modprobe не выдает никаких unresolved символов. И kmixer вроде как после этого работает, в силу своей завершенности...

про q3: пока еще не готова поддержка mmap-а, а q3 требует от драйвера поддержки mmap-а с trigger-ом.

2 anonymous (*) (2002-10-09 13:20:29.796):

про mplayer - возможно это особенность твоего билда. То есть это действительно недоработка в kmixer-е, но вопрос в том, каким образом mplayer будет проверять факт того, усыпят ли его если он щас сделает write(dsp, buffer, size). У себя я тестил, он использует ioctl(dsp, SNDCTL_DSP_GETOSPACE, ...), который возвращает информацию о внутреннем буфере/дма канале: размер и сколько свободно.

P.S. если бы этих проблем никаких не наблюдалось, то был бы он уже 0.1.0 или 1.0.0 вообще ;-)

sseREGa
() автор топика

P.P.S. я для чего на данном этапе рассказал вообще народу, про то что он есть: что-бы как раз найти все проблемы которые возникают при его работе, и постаратся все исправить. Поскольку одних моих beta-тестерских способностей на все не хватит ;-)

sseREGa
() автор топика

И еще вопрос по поводу mplayer-а (2 anonymous (*) (2002-10-09 13:20:29.796)):

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

sseREGa
() автор топика

Если этот тред еще кто-то почитывает:

глюк с unresolved символами вот по какой причине: в kmixer.c и kio.c - вместо

#ifdef CONFIG_MODVERSION

должнл быть

#ifdef CONFIG_MODVERSIONS

Прогнал я, бывает ;-)

sseREGa
() автор топика

Замечательно! По двум причинам: во-первых, рад за отечественных linux-девелоперов, а во-вторых, вопреки устоявшейся на ЛОРе традиции вместо флейма и поливания грязью получилась вполне конструктивная дискуссия.

Rolex ★★
()

А с этим как быть?

modprobe kmix
/lib/modules/2.4.7-10/kernel/drivers/char/kmix.o: unresolved symbol reparent_to_init
/lib/modules/2.4.7-10/kernel/drivers/char/kmix.o: insmod /lib/modules/2.4.7-10/kernel/drivers/char/kmix.o failed
/lib/modules/2.4.7-10/kernel/drivers/char/kmix.o: insmod kmix failed


shtas
()

> А с этим как быть?

> modprobe kmix

>/lib/modules/2.4.7-10/kernel/drivers/char/kmix.o: unresolved symbol reparent_to_init

>/lib/modules/2.4.7-10/kernel/drivers/char/kmix.o: insmod

>/lib/modules/2.4.7-10/kernel/drivers/char/kmix.o failed

>/lib/modules/2.4.7-10/kernel/drivers/char/kmix.o: insmod kmix failed

попробуй посмотреть что выдаст ksyms -a | grep reparent_to_init, если ничего - то тут я это.. затрудняюсь ответить... Может стоит попробовать 2.4 более последнее ? ;-)

sseREGa
() автор топика

Еще вспомнил про mplayer

возможно что звук который mplayer пытается воспроизводить не является ни 44 ни 22 ни 11 kHz, что пока еще не поддерживается...

sseREGa
() автор топика

про mplayer

Я посмотрел - у меня 90 % фильмов со звуком 48000 Hz ,поэтому и проблемы . ...буду рад ,если выйдет версия ,которая поддерживает такой звук и m-map ЖДУУУ :)

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

Исправил MODVERSIONS, но всё равно вылезают unresolved symbols.

Ядро 2.4.18.

С/у, Ден.

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