Форумы Modlabs.net: Лучшие звуковые карты для DOS игр. Выбор, настройка, оптимизация. - Форумы Modlabs.net

Перейти к содержимому

  • (20 Страниц)
  • +
  • « Первая
  • 18
  • 19
  • 20
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Лучшие звуковые карты для DOS игр. Выбор, настройка, оптимизация.

#381 Пользователь офлайн   RUS 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Участник клуба Voodoo Masters
  • Сообщений: 896
  • Регистрация: 07 Декабрь 11

Отправлено 31 Май 2017 - 11:34

Появилась мысль: маппинг инструментов FM тот же, что и у GM? Во всяком случае, миди файлы в винде через FM звучат вроде бы правильно. Интересно бы найти способ рероутинга сигналов с адреса 388 на адрес с WT-синтезатором. Послушать, как оно будет на WT. Те же Prince of Persia, Mortal Kombat. Кстати, вот в этих двух играх мне звучание LA совершенно не нравится, FM лучше. Было бы очень интересно послушать, как оно в GM.
0

#382 Пользователь офлайн   White 

  • Белый человер
  • PipPipPipPipPipPipPip
  • Группа: Главный Администратор
  • Сообщений: 12 195
  • Регистрация: 16 Июль 05

Отправлено 31 Май 2017 - 12:03

RUS, а так разве в GUS не сделано?
0

#383 Пользователь офлайн   bristlehog 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 40
  • Регистрация: 15 Февраль 14

Отправлено 31 Май 2017 - 12:45

Просмотр сообщенияRUS (31 Май 2017 - 11:34) писал:

Появилась мысль: маппинг инструментов FM тот же, что и у GM? Во всяком случае, миди файлы в винде через FM звучат вроде бы правильно. Интересно бы найти способ рероутинга сигналов с адреса 388 на адрес с WT-синтезатором. Послушать, как оно будет на WT. Те же Prince of Persia, Mortal Kombat. Кстати, вот в этих двух играх мне звучание LA совершенно не нравится, FM лучше. Было бы очень интересно послушать, как оно в GM.


Это непросто реализовать. Adlib - это не MIDI-устройство, а OPL-синтезатор. А OPL-синтезатор понятия не имеет не только о GM-мэппинге, а и вообще о каких-либо инструментах. Он понимает входящие сигналы в духе "задать первому осциллятору форму пилы, второму - синуса, параметры LFO выставить так-то, играть такую-то ноту длительностью столько-то".

Для того, чтобы играть через него MIDI-файлы, используют специальный драйвер-транслятор, который получает GM MIDI-сообщения, например: проиграть такую-то ноту инструментом "фортепиано". Затем драйвер смотрит в специальную таблицу, где каждому инструменту соответствуют настройки осцилляторов, LFO и тому подобных вещей, которые понимает OPL-синтезатор. Ну и передает команды из таблицы в порт 388h.

С необходимостью трансляции MIDI-сообщений в OPL-сообщения сталкивался любой программист, решавший задачу проигрывания MIDI-файлов на Adlib-совместимых устройствах. Я не пишу "FM-совместимых устройствах", так как более продвинутые FM-синтезаторы, такие как IBM PC Music Feature card (IMFC), имели понятие об инструментах, хотя их мэппинг ничуть не совпадал с General MIDI по причине того, что GM появился намного позже IMFC. Так вот, для проигрывания MIDI на OPL2/3 необходим банк инструментов, каждая запись в котором представляет собой набор реалтайм-инструкций для OPL.

У всех наверное навязли в зубах странные файлы sample.ad или скажем fat.ad, валяющиеся в рабочей директории каждой второй игры.

Изображение

Так вот, это и есть пресловутые банки OPL2-инструкций для Adlib. A sample.opl/fat.opl - банк инструкций соответственно для OPL3. Так решил задачу John Miles, разработавший звуковую библиотеку Audio Interface Library; что до дефолтного банка, то его создала студия "Fat Man" откуда и названия fat.ad/fat.opl.

Изображение

Таким же путем пошла и Human Machine Interfaces, разве что сделав отдельный банк для мелодических инструментов, и отдельный для ударных.

Изображение

Отмечу, что Sound Operating System могла проигрывать мелодические инструменты OPL-синтезатором, а ударные - сэмплами (!), в таком случае вместо drum.bnk в игровой директории находился банк drum32.dig.

Но я увлекся. В общем, задача перехвата потока OPL-команд на 388 порту и трансляции их в MIDI-команды представляется мне нерешаемой. Точно так же несложно превратить MIDI-файл в цифровой звук, используя например SF2-банки инструментов, но невозможно превратить цифровой звук обратно в MIDI, даже имея на руках нужный SF2-банк.

Что же до вопроса "маппинг инструментов FM тот же, что и у GM?" - он не имеет смысла, так как у OPL нет ни инструментов, ни их мэппинга. Можно говорить о мэппинге инструментов в MIDI-файле - это если для хранения OPL-музыки в конкретной игре вообще используется MIDI, а не какой-нибудь трекерообразный файл наподобие CMF.

Обычно в целях экономии сил композитора и места на диске для хранения музыки использовали один набор GM-совместимых MIDI-файлов, но бывали и исключения - например, Blizzard и Bullfrog в каждую игру совали по несколько наборов с разным мэппингом под разные устройства.

Что касается Mortal Kombat - там используется неизвестная мне звуковая подсистема, а Prince of Persia использует написанную самой Broderbund библиотеку, о которой я тоже ничего не знаю. Мне кажется более реальным другой способ послушать музыку из этих игр на GM-синтезаторе - это захватить MIDI-поток в файл, затем преобразовать этот файл из мэппинга MT-32 в GM.

Впрочем, есть и третий способ: хакнуть игровые ресурсы. Начнем с Принца.

Мы видим, что Prince of Persia использует два набора MIDI-файлов: один для MT-32, другой видимо для всего остального. Несколько нехитрых манипуляций - и оба набора MIDI-файлов в наших руках: http://geryon.ru/princemid.zip

Проиграв эти MIDI, тут же понимаем, что я ошибся в своем предположении насчет двух наборов музыки - музыка одна, а набор MIDI-файлов для MT-32 - это как раз звуковые эффекты. В любом случае, MIDI-файлы вытащены, играй - не хочу.

Mortal Kombat. Не знаю, как и подойти к этому чудищу - с ходу непонятно, где тут файлы с музыкой. Может, если будет желание, покопаюсь в этом позже.
0

#384 Пользователь офлайн   RUS 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Участник клуба Voodoo Masters
  • Сообщений: 896
  • Регистрация: 07 Декабрь 11

Отправлено 31 Май 2017 - 13:58

Спасибо за предельно чёткий ответ, не вызывающий дополнительных вопросов. Кроме одного: "Fat Man" - это те самые, которые написали музыку к "7 гостю"?

Просмотр сообщенияWhite (Сегодня, 12:03) писал:

а так разве в GUS не сделано?

Не знаю, допустим сделано. Тогда вопрос следующий: то, что играет гусь, отправляется на внешний миди-порт? Но, по результатам разъяснений bristlehog перевод команд OPL в команды MIDI технически невозможен.

Просмотр сообщенияbristlehog (Сегодня, 12:45) писал:

более реальным другой способ послушать музыку из этих игр на GM-синтезаторе - это захватить MIDI-поток в файл, затем преобразовать этот файл из мэппинга MT-32 в GM.

Вряд ли результат будет удобоваримым. Ведь LA очень близок к GM. Раз уж на MT-32 паршиво звучит, на GM ожидаемо то же.

Кстати, у GF1, вероятно, маппинг совпадает с GM? На AWE точно совпадает, иначе дочки на EMU8k не смогли бы работать корректно.
0

#385 Пользователь офлайн   bristlehog 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 40
  • Регистрация: 15 Февраль 14

Отправлено 31 Май 2017 - 15:04

Просмотр сообщенияRUS (31 Май 2017 - 13:58) писал:

"Fat Man" - это те самые, которые написали музыку к "7 гостю"?


Да, это они.

Просмотр сообщенияRUS (31 Май 2017 - 13:58) писал:

Но, по результатам разъяснений bristlehog перевод команд OPL в команды MIDI технически невозможен.


Я отменяю эти свои слова - когда писал, забыл об имплементациях OPL у GUS и таких поздних карт, как Aureal Vortex 2. Каким-то образом разработчики этих железок дешифруют OPL-команды и преобразуют если и не в MIDI, то во что-то похожее. Каким именно образом - даже представить не могу.

Просмотр сообщенияRUS (31 Май 2017 - 13:58) писал:

Вряд ли результат будет удобоваримым. Ведь LA очень близок к GM. Раз уж на MT-32 паршиво звучит, на GM ожидаемо то же.


Я бы не спешил с выводами, ведь у MT-32 один банк, а для GM их сотни. Не первый, так десятый или пятидесятый банк будет звучать приемлемо или даже замечательно.

Просмотр сообщенияRUS (31 Май 2017 - 13:58) писал:

Кстати, у GF1, вероятно, маппинг совпадает с GM? На AWE точно совпадает, иначе дочки на EMU8k не смогли бы работать корректно.


Опять не имеющий смысла вопрос, видимо вызванный к жизни незнанием принципиальных отличий в архитектуре разных звуковых карт. Хотя на каком-то уровне можно сказать, что у GUS-карт мэппинг совпадает с GM, но на деле всё сложнее.

Можно разбить звуковые карты, использующие сэмплы для проигрывания музыки, на три категории:

1. синтезатор-на-ISA-карте

Было такое решение - взять хорошо зарекомендовавший себя MIDI-синтезатор и сделать из него ISA-карту. Эту группу можно разбить на две подгруппы:

1.1. синтезатор, управляемый MIDI-командами через MPU-401

Это например Roland LAPC-I (с известными оговорками), Roland SCC-1, Yamaha SW60XG и многочисленные дочерние карты. Эти карты могут иметь как GM-совместимые (SCC-1), так и GM-несовместимые ROM-банки (LAPC-I).

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

Тут нужно пояснить, что оригинальные синтезаторы как раз управлялись MIDI-командами (чем же им еще управляться), но разработчики ISA-карт поступили иначе, и взаимодействие с синтезатором на карте происходило путем записи не имеющих отношения к MIDI команд в порты.

Это Turtle Beach Multisound Classic (синтезатор E-Mu Proteus 1/XR), семейство Sound Blaster AWE32/64 (синтезатор E-Mu 8000), семейство карт на базе синтезатора Sierra Semiconductor ARIA (например, Prometheus ARIA16 и Diamond Sonic Pro). И эти карты тоже могли иметь как GM-совместимые ROM-банки (SB AWE32), так и GM-несовместимые (TB Multisound), а в отношении ARIA я даже не знаю, является ли его ROM-банк GM-совместимым или нет, так как без загрузки файла с мэппингом карты на его базе не работают.

Чтобы проигрывать на GM-несовместимых синтезаторах MIDI файлы с GM-мэппингом, использовались разные сложные и не очень трюки. Хорошо, если синтезатор позволял свободно менять мэппинг, как ARIA - загрузил себе GM-мэппинг, и радуйся. А вот E-Mu Proteus не позволял сменить мэппинг, поэтому использовался обходной путь на уровне промежуточного драйвера: приходит в такой драйвер MIDI-сообщение, и он на лету подменяет номер инструмента согласно имеющейся таблице соответствия мэппинга Proteus мэппингу GM, а затем уже отправляет команду Proteus на проигрывание. Малоизвестный факт: именно после визита в Turtle Beach Systems и ознакомления с исходным кодом этого драйвера А.С. Пушкин и сочинил известные строки:

Едет с грамотой гонец,
И приехал наконец.
А ткачиха с поварихой,
С сватьей бабой Бабарихой,
Обобрать его велят;
Допьяна гонца поят
И в суму его пустую
Суют грамоту другую.

Я полагаю, что другого выхода у Turtle Beach и не было: несмотря на высочайшее по тем временам качество Proteus, писать MIDI-файлы под него решительно никто не хотел, в то время как под General MIDI треки писались тысячами. Поэтому и напрограммировали такой ремэппинговый костыль, чтобы продлить жизнь появившейся до введения стандарта GM карте.

Ну а для AWE32 есть программа Aweutil, которая слушает 330-й порт, перехватывает MIDI-сообщения и преобразовывает их в понятные AWE32 команды. В защищенном режиме она не работает, поэтому применимость ее ограничена.

2. сэмплер-на-ISA-карте

Эти карты не имели никакого ROM-банка, но зато имели память, куда можно было загружать сэмплы. В первую очередь это вышедшие в 1992 году друг за другом карты Omni Labs Audio Master (384 кб памяти для сэмплов) и Gravis UltraSound (512 кб). MIDI-команды эти карты не понимали, и схема работы была такая - сперва загрузить в память карты нужные сэмплы, затем их проигрывать, отдавая карте команды, не имеющие насколько я знаю отношения к MIDI.

Для Gravis UltraSound есть также программа UltraMid, которая грузит в память карты файлы сэмплов в соответствии с GM-мэппингом, а затем остается резидентной и слушает 330-й порт, перехватывая MIDI-сообщения и преобразовывая их в понятные для GUS команды. Опять же в защищенном режиме она не работает.

Есть и карты, которые комбинируют в себе типы 1.2 и 2 - это например GUS PnP, да и AWE32, строго говоря, тоже комбинированного типа, и несколько игр даже действительно используют AWE32 как сэмплер - например, Dungeon Keeper и Eradicator.

Чтобы весь этот жуткий зоопарк работал в играх, производители сотрудничали как напрямую с игровыми девелоперами, так и с авторами промежуточных звуковых библиотек. Последнее было наиболее удобно - разработчику игры было достаточно отправить промежуточному драйверу команду "проиграть вот этот миди-файл", а дальнейшее было уже не его заботой (хотя и с некоторыми оговорками).

Все вышеперечисленные карты поддерживались библиотекой Audio Interface Library, в чем можно убедиться, взглянув на часть списка приложенных к ней драйверов:

MPU-несовместимые:

ariaxmid.adv - для карт на базе Sierra Semiconductor ARIA
gf1midi.adv - для Gravis UltraSound
mmsynth.adv - для Omni Labs Audio Master
multisnd.adv - для Turtle Beach Multisound Classic
sbawe32.adv - для Sound Blaster AWE32

MPU-совместимые:

mt32mpu.adv - для LAPC-I
sc32mpu.adv - для Roland SCC-1
wave.adv - для Creative Wave Blaster
genmidi.adv - для прочих совместимых с GM карт, управляемых по MPU-401


Из всего этого несовместимого с MPU-401 многообразия, зародившегося в 91-92 годах, до середины 90-х дожили только AWE32 и GUS (OPL-карты я сейчас не рассматриваю). Остальные по разным причинам канули в Лету, и в системе Miles Sound System, ставшей наследницей Audio Interface Library в конце 1994 года, уже не поддерживались.

Расклад у MSS таков:

MPU-несовместимые:

iwave.mdi - для семейства Gravis UltraSound PnP
sbawe32.mdi - для SB 32/AWE32/AWE64
ultra.mdi - для семейства Gravis UltraSound

MPU-совместимые:

mdimaxi.mdi - для семейства Guillemot MaxiSound 64
nvmpu.mdi - для NVidia NV1
sndscape.mdi - для семейства Ensoniq SoundScape
mpu401.mdi - для прочих совместимых с GM карт, управляемых по MPU-401

Теперь наверное понятно, что, строго говоря, у карт на базе GF1 нет и не может быть никакого мэппинга, поскольку нет ROM. Но с другой стороны примем во внимание, что с 1992 года как раз и начинается расцвет GM в игростроении, поэтому GUS использовалась по большей части как GM-совместимый синтезатор - хотя это и выглядит кощунством с точки зрения возможностей GF1. То есть промежуточный драйвер грузил в GF1 GM-совместимый набор сэмплов, затем транслировал MIDI-сообщения в управляющие команды для GF1. Подавляющее большинство игр не имело отдельного набора MIDI-файлов для Ultrasound; редкие отдельные экземпляры имели - например Fade To Black содержит отдельный набор MIDI-файлов и патчей для GUS.

Премии за самый длинный пост дают? =)

P.S. Я прицепился к форме вопроса "Кстати, у GF1, вероятно, маппинг совпадает с GM?", и не задумался о цели этого вопроса. Если ты спрашиваешь, чтобы прикинуть возможность где-то перехватить поток команд, отправляемых эмулятором OPL для GUS, и перенаправить на MPU-401 совместимый синтезатор - то я на 99.9% уверен, что это невозможно, так как GUS управляется не MIDI-командами, а значит, даже перехватив поток, мы получим не MIDI-сообщения, а специфические команды для сэмплера Ensoniq, установленного на GUS.

Поэтому в развернутом виде я бы ответил так:

- Совместимы ли MIDI файлы, предназначенные для проигрывания на GUS, с General MIDI?
- Как правило да.
- Можно ли этим воспользоваться, чтобы с помощью GUS превратить поток OPL-команд в поток MIDI-команд для синтезатора, управляемого по MPU-401?
- Нет.
0

#386 Пользователь офлайн   RUS 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Участник клуба Voodoo Masters
  • Сообщений: 896
  • Регистрация: 07 Декабрь 11

Отправлено 01 Июнь 2017 - 09:59

Судя по беспроблемности проигрывания midi файлов на OPL синтезаторе (или его эмуляторе) любой звуковой карты, обратный процесс возможен. Я, конечно, мало что понял, но суть, кажется, дошла. В принципе, можно сделать конвертацию сигнала OPL->MIDI, но при этом не существует алгоритма, который бы задал выбор правильного инструмента из банка. В общем и целом верно?
0

#387 Пользователь офлайн   bristlehog 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 40
  • Регистрация: 15 Февраль 14

Отправлено 02 Июнь 2017 - 10:55

Просмотр сообщенияRUS (01 Июнь 2017 - 09:59) писал:

Судя по беспроблемности проигрывания midi файлов на OPL синтезаторе (или его эмуляторе) любой звуковой карты, обратный процесс возможен. Я, конечно, мало что понял, но суть, кажется, дошла. В принципе, можно сделать конвертацию сигнала OPL->MIDI, но при этом не существует алгоритма, который бы задал выбор правильного инструмента из банка. В общем и целом верно?


Да.
0

#388 Пользователь офлайн   gravisgravisgravis 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 2
  • Регистрация: 01 Август 22

Отправлено 01 Август 2022 - 05:22

какую нужно материнку под шину ИСА брать? Так же вопросы про звуковые карты ИСА есть, какие брать, чтобы на виндовс шли и с дровами норм? Сколько оперативы для карт нужно, чтобы грамотно работали?
0

Поделиться темой:


  • (20 Страниц)
  • +
  • « Первая
  • 18
  • 19
  • 20
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

7 человек читают эту тему
0 members, 7 guests, 0 anonymous users