yurza это пищалка, с ней работать я умею. Меня интересует именно звук через колонки, то есть работа со звуковой картой.
Посоветовали разобраться с OpenAL. Скачал SDK. Начал, попытался одну из функций прикрутить к драйверу, поключил headers, либу в sources прикрутил. Все вроде собирается, но при запуске драйвера KmdManager пишется ошибка "не удается найти указанный файл". Кто то имел опыт прикручивания OpenAl к драйверам? или может подсказать в чем ошибка?
drem1lin Ошибка в том, что все что вы прикрутили - юзает совсем не кернельмодные библиотеки. А вообще вам будет ой как не просто. Могу посоветовать поизучать более кернельное: WinDDK\src\audio\ac97\ Да и вообще весь раздел audio посмотрите.
читал что под виста и выше, что то можно запустить из openAL, все что в разделе audio это немножко не то, мне не нужен драйвер аудио карты, мне нужен способ проиграть wav file.
Кто знает, как запустить миди файл в приложении под MS-DOS, как настроить аудикарту и всё такое? Программа на ассемблере.
Intro, ну как сказать есть плееры на olddos.ru есть сайт демосцена там демки. http://old-dos.ru/files/file_458.html http://www.demoscene.ru/english/demo/demo1a.php3?1995 вот тут по годам скачайте не помню какие с звуком. вот гимн СССР 260байт в kgb архиве но этот в зип поэтому больше
Нет, мне надо для игры, нужен код, который запускает миди файлы, настраивает и всё такое. Плейеры я сам догадался скачать.
@Intro,тут два варианта самому разбираться если есть время имея шаблон или искать специально обученого человека например на ехе лабе в поиске специалистов ,но это никому не надо даже за деньги,готового кода нет есть игра larry в выходном костюме готовая там всё уже придумали есть другие игры blood и тд в них есть настройщики под карту и прочее ,можно посмотреть как они реализовали проигрывание звуков ,можно сходить на гитхаб поискать код под дос плееров midi других вариантов нет.
Да вообще то можно разобрать в IDA Pro тот же GIMN.com, только вроде там просто через динамик. А мне надо доступ к портам SoundBlaster, чтобы процессор в обработки звука почти не как не был задействован.
Intro, надо курить формат MIDI-файлов (там не так всё сложно), описание стандарта MIDI (ссылки ниже) и далее надо смотреть в сторону портов 330h, 331h (параметр P переменной окружения BLASTER - под DOSBox работает, под реальное железо не на чем тестить, но там сложнее). На AWE32, вероятно, будет 620h (параметр E), но по этому поводу могу соврать. http://www.muzoborudovanie.ru/articles/midi/midi1.php http://www.muzoborudovanie.ru/articles/midi/midi2.php http://www.muzoborudovanie.ru/articles/midi/midi3.php http://www.muzoborudovanie.ru/articles/midi/midi4.php http://www.muzoborudovanie.ru/articles/midi/midi5.php http://www.muzoborudovanie.ru/articles/midi/midi6.php http://www.muzoborudovanie.ru/articles/midi/midi71.php http://www.muzoborudovanie.ru/articles/midi/midi72.php Возможно, вот это пригодится, но я сие не читал: http://hackipedia.org/browse.cgi/Co...l Reference Manual by Roland (1985-05-31).pdf Вот код вроде как правильного воспроизведения ноты: Спойлер: Исходник Код (ASM): include 'macro\proc16.inc' MIDIPORT_DATA = $0330 MIDIPORT_COMMAND = $0331 org 100h Start: stdcall MIDI.Initialize ; Отправка MIDI-сообщения ; Нота = $60, сила_нажатия = 127 stdcall MIDI._WriteData, $90 stdcall MIDI._WriteData, $60 stdcall MIDI._WriteData, $7F ; Ожидание нажатия клавиши xor ax, ax int 16h ret proc MIDI._WriteCommand\ bValue mov dx, MIDIPORT_COMMAND @@: in al, dx test al, $40 jnz @B mov ax, [bValue] out dx, al ret endp proc MIDI._WriteData\ bValue mov dx, MIDIPORT_COMMAND @@: in al, dx test al, $40 jnz @B mov dx, MIDIPORT_DATA mov ax, [bValue] out dx, al ret endp proc MIDI.Initialize stdcall MIDI._WriteCommand, $FF .WaitAck: mov dx, MIDIPORT_COMMAND @@: in al, dx test al, $80 jnz @B mov dx, MIDIPORT_DATA in al, dx cmp al, $FE jne .WaitAck stdcall MIDI._WriteCommand, $3F .WaitAck2: mov dx, MIDIPORT_COMMAND @@: in al, dx test al, $80 jnz @B mov dx, MIDIPORT_DATA in al, dx cmp al, $FE jne .WaitAck2 ret endp --- Сообщение объединено, 16 июн 2020 --- Для воспроизведения нужно садиться на таймер (частота которого может меняться в зависимости от темпа, например) и выдавать в нужные моменты команды в порты MIDI.