Добавьте музыку в вашу игру

Дмитрий Литвиненко

В первую очередь эта статья предназначена для игроделов, то есть для тех, кто хочет использовать в своей программе качественную музыку.

Насколько я наблюдаю, сейчас существует несколько способов добавления музыки в коммерческие игры. Да впрочем вы и сами все это знаете, если играли в игры.

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

Но нам, как скромным программистам эти способы не подходят. Игры мы носим на дискетках, а на болванки записываем продукты нескольких лет творчества :) ...

Короче, все способы добавления музыки в низкокилобайтных играх сводились к применению небезызвестного формата MIDI (Musical Instrumnt Digital Interface). Он конечно не плох, когда вы делаете казино с музыкой в стиле зевнуть и уснуть, и когда у юзера звуковая карта с обалденным Wavetable'ом... Вобщем у большинства игроков ваш МИДИ будет звучать как на похоронах музыкального искусства. Несомненным преимуществом MIDI является только лишь его смешные размеры. Композицию длиной в десяток минут можно уложить мешьше, чем в сотню килобайт.

В общем, MIDI нам тоже не подходит. Тогда что же?

Если вы знаете, как устроен MIDI, то можете пропустить этот абзац.
Сам MIDI файл на самом деле представляет собой набор команд аудиокарте, и звука не содержит. В аудиокарте "зашито" 128 стандартных инструментов, которые она по возможности воспроизводит. Так вот, файл MIDI - это не что иное как ноты, по которым аудиокарта изображает симфонический оркестр и ирает музыку (?) В дешевых аудиокартах эти 128 инструментов синтезируются. В картах типа SoundBlaster32 записаны готовый 32 инструмента, в AWE64 - 64 инструмента и так далее.

Теперь представьте себе такой файл, в котором будут записаны такие-же МИДюшные ноты, а инструменты будут присандалены к этому же файлу. Ну и что мы получим? Получим MOD!
MOD проигрывает уже не чисто аудиокарта, а процессор. Он берет инструменты из MODа, а затем по нотам пробует представлять различные тональности звучания инструмента. Сам инструмент - это чаще всего WAV файл, в котором записано что-нибудь типа "блюм", похожее, например, на удар по клавише пианино. При этом инструмент, в зависимости от качества может занимать от 1 до много килобайт, а вся композиция может использовать всего 5-10 инструментов. В результате, файл с композицией занимает опять таки в зависимости от качества от 40 до 1000 кб. Конечно, можно и больше, но это уже для музыкантов, а не игроделов. И это еще не все! MOD может сжиматься WinZIPом почти в два раза! Он может использовать от 4-х до около 50 каналов. Делать независимый PAN на каждом канале, вобщем полный DolbySURROUND [where avialable]...

Ну как, вы уже поняли?

MOD'ы бывают разных форматов:

Самый рулезный (на мой взгляд, естественно) редактор MODов на сегодняшний день - ModPlug Tracker. Он работаете по Винды и поддерживает все форматы + SoundBank'и + Экспорт в Wav и MP3 + еще много чего. Обязательно зайдите на сайт его создателя - Olivier Lapicque (http://www.jps.net/oliverl)

Что надо, чтобы просто послушать MOD?
Возьмите Winamp (http://www.winamp.com) - это лучше всего. Нет Winamp'а, скачайте мою прогу в конце это статьи и слушайте свой первый MOD с ее помощью.

Где взять MODы?
Громадная... Просто огромная коллекция MODов на любой вкус и направление лежит на http://www.modarchive.com

Как добавить MOD к своей программе?
Вот тут мы и подошли к самому главному вопросу. Если вы слушали MODы через Winamp, то наверняка обращали внимание, как тормозит при этом комп. Естественно, для игры это никак не годится. Другой известный плеер, который я иногда юзаю - ModPlugPlayer. Качество ужасное, но процессор почти свободен. Отсюда напросились требования к проигрыванию MODов в нашей программе - качественно и не тормознуто.

В этом месте я хочу сказать спасибо всем тем, кто на разных конференциях подсказал мне места, где можно найти контролы - проигрыватели MODов.

Итак, после вечера поисков, на моем винчестере оказались несколько контролов и библиотека. Причем библиотека эта была от того самого ModPlugPlayer'а, и соответственно обладала огромным количеством функций работы с МОДами. Эта библиотека лежит на том же сайте http://www.jps.net/oliverl и туда я вынужден направить программирующих на Си, так как там есть ее описание для Си (на VB, однако ее тоже можно использовать).

Но как я уже сказал, качество звучания ModPlug, по крайней мере у меня на компе, просто отвратное (А ведь MOD должен звучать у всех примерно одинаково). Поэтому, после некоторого тестинга, я остановился на очень удобном, хотя и немного недоделанном контроле DMC2.

Эта приятная вещица, которую я взял на http://www.active-x.com, может качественно проигрывать не только MOD'ы, но еще MP3 и WAV'ы, что делает ее весьма полезной для создания игр. Кроме того, DMC2 использует DirectSound, а это - быстрота. Для работы, на компе у енд-юзера должны быть установлены два файла - dmc2.ocx и библиотека bass.dll, которая идет вместе с контролом.

Как пользоваться DMC2?
Легко! Создайте проект, поместите на форму контрол DMC2 и кнопку Command1.

Sub Form_Load ()
dmc1.InitBass Me.hWnd, 44100, false, false 'Инициализация контрола
dmc1.OpenModule "test.xm",false 'Открыть модуль
End Sub

Sub Command1_Click()
dmc1.PlayModule 'Играть
End Sub

И все! Контрол имеет несколько самых необходимых настроек для модуля, а также свойства текущей позиции проигрывания в модуле, его длину и т.п.

Контрол также имеет неплохую справку, понятную даже ребенку, так что вы не заблудитесь в его свойствах.

Я протестил контрол на DirectX игрухе, которую сейчас делаю - на максимальном качестве, контрол не затормозил игру ни на один FPS!

Вобщем, пробуйте! На мой взгляд, использование MODов в игре оправдывает себя на все 100%!

Удачи!

Anti's ModPlayer - исходники использования DMC2 и сам DMC2

Приятного программирования, Antiloop

Posted: 28.01.2k1
Autor: Antiloop
<anti_loop@mail.ru>