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
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.