Звук

Drivers for sound cards
  • skina12
    Пост мало информативен - нет даже полного названия звуковухи и материнской платы.
  • Основная проблема в том, что отсутствует промежуточное звено между драйверами и программами: программа>интерфейс>драйвер. Именно стандартный интерфейс (простой и удобный), может упростить написание драйверов.
  • Hater
    А что ты называешь "стандартным интерфейсом" ?
    Есть вызов 68.17 который отправляет драйверу сообщения в виде struc IOCTL. Вот и весь интерфейс, примерно такой же как и в других системах. Есть статья diamond-a с примером создания драйвера, дополнительные комментарии к ней на форуме (ссылку не помню) и готовые драйверы для примера.
  • подскажите плиз !!!!
    а как насчет дров для встроенного звука HD Realteck AC 97
    где и как моно поставить дрова на звук ????
  • dedsave

    HD это наверное High Definition Audio (Azalia). Это не АС97, совсем другая система. Дров для неё нет.
  • ага она самая )))
    а как нет ? :shock: а как мне тады быть (((
  • Тады без звука тебе быть, ну или писать драйвер, всегда есть выбор...
  • Есть ли возможность написать драйвер, выводящий музыку через PC-Speaker? Гдето я видел на паскале прогу, которая проигрывала на нём Wav-ики. Качество приемлемое, особенно, если не имеешь альтернатив. Как пример - игра RoketZ, умела проигрывать музыку через спикер, только для этого её надо было изпод доса запускать (там таймер нужен высокочастотный, который винда походу для переключения задач использовала), а мне было лень дос ставить, настраивать...
  • Для PC-Speaker'а драйверы не нужны, для проигрывания музыки на нём есть специальные системные функции. В качестве примера - приложение midamp и файл kuzkina.mid на рамдиске, который можно запустить (в midamp) в любом файловом менеджере. Только чтобы услышать звук, нужно разрешить обращение к спикеру (на панели есть такой рисунок, по умолчанию перечёркнутый).
  • Dragon
    Возможность есть всегда! Если ты желаешь и готов этим заняться - мы все будем только рады.
    На текущий момент все программисты заняты "своей" работой и выполнять дополнительные "хотелки" ни у кого нет времени.

    diamond
    Как я понял, он имел в виду эмуляцию звуковой карты через спикер, с псевдополифонией. Такое в принципе возможно - я сам у знакомого видел и слышал запущенный проигрывать под DOS для MOD файлов. Даже голосовые включения в трекерную музыку звучали вполне прилично.
  • Mario79 wrote: Возможность есть всегда! Если ты желаешь и готов этим заняться - мы все будем только рады.
    На текущий момент все программисты заняты "своей" работой и выполнять дополнительные "хотелки" ни у кого нет времени.
    Понимаю, у меня, к сожалению, тоже проблема со временем ;)
  • Возникла проблема при перехвате и обработке 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
  • staper

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

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

    В системе уже есть возможность выводить звук через спикер. ф.55 и код в sound/playnote.inc
  • Serge, спасибо за подсказку.
    Исходник spksnd и драйвер в архиве (закинуть в папку с драйверами вместо sound.obj). Качество звука очень плохое (вполне ожидаемо), при каждом чтении файла раздаётся громкий писк, мышь тоже попискивает Ж). Любая попытка чтения с HDD (SATA) убивает файловый менеджер, так что я слушал MP3 с привода.
    Attachments
    spksnd.7z (3.39 KiB)
    Downloaded 560 times
  • Who is online

    Users browsing this forum: No registered users and 6 guests