Музыка в кряках [Delphi&KOL].
Часть вторая.
В одной из предыдущих
статей я уже рассказывал о том, как
играть трекерную музыку в программах
на Delphi (в том числе и с заменой
стандартной VCL на KOL). Для
воспроизведения треков мы
использовали библиотеку MiniFMOD.
Сейчас мы рассмотрим
способ проигрывания модулей
средствами языка Pascal. Для этого будем
использовать движок TMiniMOD от BeRo (http://www.bero.0ok.de).
Нам не потребуются никакие внешние
библиотеки! Этим способом можно
играть музыкальные модули (файлы .mod)
как с диска, так и из самого
исполнимого файла без
промежуточного сохранения на диск! В
последнем случае мы получим
исполнимый файл примерно на 10 КБ
меньше, по сравнению со случаем
использования библиотеки MiniFMOD. Все необходимые для эксперимента
файлы можно скачать с моего сайта: www.biocyborg.narod.ru/rev/MiniMOD.zip.
Итак, в архиве MiniMOD.zip мы
найдем следующие файлы: - minimod.pas -
сам движок, - mod2pas.exe - небольшая
программка для преобразования
трекерного модуля .mod в программный
код на паскале, - скомпилированные
примеры, их исходники, - track.mod -
трекерный модуль для экспериментов.
А теперь посмотрим, как
можно использовать все это хозяйство
в наших целях ;). Так как
воспроизведение .mod файлов с диска
хорошо проиллюстрировано в одном из
демонстрационных примеров (MinIModApp.dpr),
я опишу процесс запихивания музыки в
исполнимый файл и воспроизведения ее
оттуда:
1. Берем какой-нибудь
трекерный модуль (.mod),
переименовываем его в track.mod и помещаем
в один каталог с программой
mod2pas.exe. 2. Запускаем программу
mod2pas.exe, после чего в этом же каталоге
появится файл trackfile.pas (его размер
будет раз в 5 больше файла .mod). 3. Создаем
новый проект в Delphi (здесь не важно,
используете ли вы VCL или KOL - принципиальных
отличий не будет). 4. В uses добавляем MiniMod,
trackfile (файлы MiniMod.pas и trackfile.pas должны
находиться в каталоге проекта). 5.
При старте нашей программы должен
выполняться такой код:
procedure TForm1.KOLForm1FormCreate(Sender:
PObj);
var MiniMODClass:TMiniMOD;
begin
MiniMODClass:=TMiniMOD.Create(44100,TRUE,TRUE);
MiniMODClass.Load(@TrackData,TrackSize);
MiniMODClass.Play;
end;
Как видите, все
очень просто! Конечно, качество звука
немного ухудшается, но это заметно не
на всех модулях и только в том случае,
если вы знаете, как должна звучать
мелодия в оригинале.
Я написал небольшой
пример с использованием библиотеки
KOL. Размер исполнимого файла получился 24
кБ (сжат FSG 2.0) - отличный результат для
программ на Delphi (музыкальный файл в
несжатом виде весил 20 кБ). Исходники
примера можно скачать здесь: www.biocyborg.narod.ru/rev/dm2.zip
P.S. Не забывайте, что с
помощью MiniMod можно проигрывать еще и .wow
- файлы. Если у вас музыка в другом
формате, её можно конвертировать в .mod
с помощью трекерного редактора MODPLUG TRACKER v1.16.
О том, как оптимизировать размер
трекерного модуля можно прочитать на
сайте SofT
MANiAC'a.
Greetings&Credits: Benjamin
Rosseaux, SofT MANiAC [tPORt] and all tPORt members, AlexZ/CRC
© BioCyborG, 2005
|