MODPlay


*Вывод программы
Внешний вид MOD партитуры
Пример из старой версии MODPlay
(Нота Инструмент Эффект)

Вступление

На данный момент последний, после сайта проект, датированный серединой июля. Забросив эмулятор в конце весны, поковыряв IDA Pro и написав универсальный кейген к тестовым программам, у меня в голове появилась новая идея: свой проигрыватель для трекерной музыки (MODPlay). Это занятие еще мудренее эмулятора старческого процессора, но немного приближает к другой, еще более несбыточной мечте: (ц/с)ветомузыке.

Трекерные файлы напоминает MIDI, т.е это именно партитура произведения, а не просто запись звуковых волн. Но, в отличие от MIDI, трекереные файлы содержат и звукозаписи инструментов. MIDI же использует звуки из внешнего файла, что приводит к принципиально разному звучанию в разных проигрывателях. Такая особенность трекерных файлов связана с их первоисточником, компьютером Amiga.

ПК Amiga и ранние трекеры

Amiga на свое время (1985) обладала революционными мультимедийными возможностями и технологиями. В ней впервые появились Plug-And-Play, графическая многозадачная ОС, блиттер, видеорежим HAM и многое другое. Некоторые из этих технологий существовали и раньше, но именно она смогла их популяризировать. Главным "чудом" являлся чип Paula, содержащий четырехканальный стереосемплер. До AdLib оставалось еще 2 года (И то, он будет способен только на MIDI весьма специфичного звучания (FM-синтез), напоминающего старые мобильные телефоны), саундбластер появится в 1989, и обретет популярность только через еще пару лет, а 98% IBM-PC оснащались исключительно однобитным спикером (И предназначенным в первую очередь для сообщений BIOS. Он и сейчас везде предустановлен, но уже как пьезопищалка, а не динамик). Спикер в сравнении с Paula это как велосипед "Украина" и Мерседес бизнес-класса, которому задаешь направление и он едет сам. В разное время разные люди пытались "приспособить" сие устройство к непрофессиональному использованию. Одной из таких попыток был Ultimate Soundtracker. Он был коммерческий, нестабильный и жутко неудобный, и, ожидаемо, спросом не пользовался. Потом его взломали и переписали в NoiseTracker, а немного позднее появился уже официально признанный ProTracker. Именно ProTracker ввел современный подвид .mod и стал де-факто стандартом в трекерной музыке.

Позже, с распространением нормальных звуковых карт в IBM-PC, развитие переместилось на них. Там микширование было уже программное, сильно грузящее процессор, и позволяющее использовать большее количество каналов, ограниченное только здравым смыслом и мощностью CPU (Обычно до 32х). Это уже трекеры второго поколения. Наиболее известными трекерами второго поколения являются ScreamTracker 3 (.s3m), FastTracker 2 (.xm) и ImpulseTracker (.it) (В хронологическом порядке).

Прогресс написания MOD-плеера

MODPlay предназначен именно для классических, четырехканальных MOD файлов ProTracker. Основная проблема заключается в том, что и ProTracker, и чип Paula были крайне специфичными, нелогичными и запутанными штуками, про которые найти подробную информацию практически невозможно. К примеру, если цикл семпла (Звука инструмента) начинается с нулевого слова, а заканчивается раньше его конца (В смысле раньше конца семпла) (А адресуется это оно по двухбайтным словам), то он сначала проигрывается до конца (За пределы цикла), а потом лишь нормально зацикливается. Большинство команд (Громкость, портаменто, вибрато, изменение темпа и т.д) начинают работать только на второй такт линии, но при этом не все. Таких приколов на самом деле гораздо больше, это просто те, которые проще всего было описать.

Послесловие

Скачать. Обожаю современные антивирусы. Жрут все, от кейгенов до самописных утилит, которые даже на диск не лезут. Все, кроме настоящих угроз. Вирусов там нет, перепроверил в IDA Pro, а +- нормальные антивирусы (MalwareBytes, DrWeb, Kaspersky, ESET-NOD32) ничего подозрительного и так там не видят. Очередной раз убеждаюсь, что MS Defender в первую очередь помогает от взломанных программ, во вторую от ваших собственных, а от вирусов только в последнюю.

Код достаточно грязный, посмотреть его можно тут. В вышеданном файле скомпилирована старая версия. Песня зашита в EXE, "occ_san_geen.mod". Воспроизведение начинается сразу после запуска. Вывод партитуры сделан максимально неправильно, и так (Пихать WriteConsole() в waveOutProc()) делать нельзя ни при каких условиях. Времени переписывать не было, кое как работает.

Трекерные файлы можно найти в моей коллекции (давно не обновлялась, сейчас в раза 3 больше), ModArchive и ModLand (Самый наполненный).