Page 1 of 3

Звук

Posted: Sun Sep 30, 2007 1:47 pm
by skina12
:oops: Народ, а VIA в колибри не ходит :?: :?: :?: :?: :| ?

Re: Звук

Posted: Sun Sep 30, 2007 3:46 pm
by Mario79
skina12
Пост мало информативен - нет даже полного названия звуковухи и материнской платы.

Re: Звук

Posted: Wed Oct 17, 2007 9:51 pm
by Hater
Основная проблема в том, что отсутствует промежуточное звено между драйверами и программами: программа>интерфейс>драйвер. Именно стандартный интерфейс (простой и удобный), может упростить написание драйверов.

Re: Звук

Posted: Thu Oct 18, 2007 2:33 am
by Serge
Hater
А что ты называешь "стандартным интерфейсом" ?
Есть вызов 68.17 который отправляет драйверу сообщения в виде struc IOCTL. Вот и весь интерфейс, примерно такой же как и в других системах. Есть статья diamond-a с примером создания драйвера, дополнительные комментарии к ней на форуме (ссылку не помню) и готовые драйверы для примера.

Re: Звук

Posted: Mon Oct 22, 2007 3:25 am
by dedsave
подскажите плиз !!!!
а как насчет дров для встроенного звука HD Realteck AC 97
где и как моно поставить дрова на звук ????

Re: Звук

Posted: Mon Oct 22, 2007 5:35 am
by Serge
dedsave

HD это наверное High Definition Audio (Azalia). Это не АС97, совсем другая система. Дров для неё нет.

Re: Звук

Posted: Mon Oct 22, 2007 6:53 am
by dedsave
ага она самая )))
а как нет ? :shock: а как мне тады быть (((

Re: Звук

Posted: Mon Oct 22, 2007 1:33 pm
by Ghost
Тады без звука тебе быть, ну или писать драйвер, всегда есть выбор...

Re: Звук

Posted: Mon Oct 22, 2007 9:25 pm
by Dragon
Есть ли возможность написать драйвер, выводящий музыку через PC-Speaker? Гдето я видел на паскале прогу, которая проигрывала на нём Wav-ики. Качество приемлемое, особенно, если не имеешь альтернатив. Как пример - игра RoketZ, умела проигрывать музыку через спикер, только для этого её надо было изпод доса запускать (там таймер нужен высокочастотный, который винда походу для переключения задач использовала), а мне было лень дос ставить, настраивать...

Re: Звук

Posted: Mon Oct 22, 2007 9:32 pm
by diamond
Для PC-Speaker'а драйверы не нужны, для проигрывания музыки на нём есть специальные системные функции. В качестве примера - приложение midamp и файл kuzkina.mid на рамдиске, который можно запустить (в midamp) в любом файловом менеджере. Только чтобы услышать звук, нужно разрешить обращение к спикеру (на панели есть такой рисунок, по умолчанию перечёркнутый).

Re: Звук

Posted: Mon Oct 22, 2007 9:36 pm
by Mario79
Dragon
Возможность есть всегда! Если ты желаешь и готов этим заняться - мы все будем только рады.
На текущий момент все программисты заняты "своей" работой и выполнять дополнительные "хотелки" ни у кого нет времени.

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

Re: Звук

Posted: Mon Oct 22, 2007 10:24 pm
by Dragon
Mario79 wrote: Возможность есть всегда! Если ты желаешь и готов этим заняться - мы все будем только рады.
На текущий момент все программисты заняты "своей" работой и выполнять дополнительные "хотелки" ни у кого нет времени.
Понимаю, у меня, к сожалению, тоже проблема со временем ;)

Re: Звук

Posted: Thu Aug 06, 2009 5:42 am
by staper
Возникла проблема при перехвате и обработке int 0x20. Ниже код (исполняется в драйвере). На Celeron, Celeron 2 никаких проблем не возникало, а вот на машинках поновее перехват выполняется, но при обращении к HDD, например, чтение ранее не открытого файла, система виснет. Всё это планируется для вывода звука через PCSpeaker (если проблема не решится, я и разоряться не стану).


proc hook
mov bx,-1
.waiting:
mov al,0 ;фиксация значения счетчика в канале 0
out 43h,al ;порт 43h: управляющий регистр таймера
in al,40h ;младший байт счетчика
mov ah,al ;в АН
in al,40h ;старший байт счетчика в AL
xchg ah,al ;поменять их местами
cmp ax,bx
mov bx,ax
jb .waiting

cli
sidt [idtreg]
mov eax,[idt]
lea ecx,[eax+32*8] ;0x8000B200+32*8
mov ax,[ecx+6] ;старший word смещения (биты 31-16 старшего dword-а шлюза)
shl eax, 16
mov ax,[ecx] ;младший word смещения(биты 15-0 младшего dword-а шлюза)
xor ebx,ebx
mov bx,[ecx+2] ;bx - селектор сегмента кода, где находится код обработчика
mov [oldselector],bx
mov [oldhandler],eax

mov eax,new_handler
mov [ecx],ax
shr eax,16
mov [ecx+6],ax
mov ax,cs
mov [ecx+2],ax

mov al,00110100b ;1193181/12000
out 43h,al
mov al,100 ;новая частота
out 40h,al
xor al,al
out 40h,al
sti
ret
endp

align 16
new_handler:
pushfd
cmp [ticker],120
je .jmp_old
push ax
mov al,0x20 ;EOI to PIC
out 0x20,al
pop ax
inc [ticker]
popfd
iretd
.jmp_old:
mov [ticker],0
popfd
jmp dword [oldhandler]


oldhandler rd 1
oldselector rw 1
idtreg:
rw 1
idt rd 1

Re: Звук

Posted: Thu Aug 06, 2009 8:26 am
by Serge
staper

А зачем так извращаться с подменой дескриптора если можно просто поправить обработчик ?

cmp [ticker],120 и т.п. могут дать непредсказуемый результат. Лучше загрузить ds или cmp [ss:ticker],120

В системе уже есть возможность выводить звук через спикер. ф.55 и код в sound/playnote.inc

Re: Звук

Posted: Fri Aug 07, 2009 5:41 am
by staper
Serge, спасибо за подсказку.
Исходник spksnd и драйвер в архиве (закинуть в папку с драйверами вместо sound.obj). Качество звука очень плохое (вполне ожидаемо), при каждом чтении файла раздаётся громкий писк, мышь тоже попискивает Ж). Любая попытка чтения с HDD (SATA) убивает файловый менеджер, так что я слушал MP3 с привода.