YM
Данный формат файлов разработал Arnaud Carre (Leonard/OXYGENE) для своего эмулятора ST-Sound. Первоначально он задумывал его как эмулятор ATARI ST (YM2149 чип), но впоследствии он модернизировал свой формат, благодаря чему он стал Multi-Computer Sound Emulator.
В данный момент этот проект состоит из большого числа программ, начиная от plug-in к WinАmp, отдельной программы с неплохим интерфейсом, множества конвертеров и заканчивая собственно огромным архивом музыки с Atari и Amstrad. Архивы музыки со Speccy находятся в плачевном состоянии, видимо благодаря ужасным конвертерам со Speccy в YM.
Прослушивая музыку с Atari и Amstrad, не забывайте установить частоту сопроцессора в 2 000 000 и 1 000 000 Гц соответственно, т.к. в YM2, YM3 и YM3b файлах нет информации об этом параметре.
Итак, любой YM файл представляет собой архив LHA типа 5, созданный программой LHA.EXE v2.00 и выше с ключом –h0 (заголовок типа "ноль") by Haruyasu Yoshizaki.
Внутри этого архива находится один файл с любым именем, поддерживаемые форматы которого описаны ниже.
YM2
Первые четыре байта являются ASCII строкой "YM2!". В целом формат не отличается от YM3, за исключением того, что в неиспользуемых битах некоторых регистров зашифрована информация о цифровых сэмплах. Количество сэмплов и их содержимое жестко прошиты в плеер (эти сэмплы использовал Mad Max на Atari ST).
YM3
Первые четыре байта являются ASCII строкой "YM3!". Далее следует блок данных, который состоит из значений, отправляемых в YM-регистры. Регистры обновляются один раз за прерывание компьютера. Предположим, песня состоит из N квантов (прерываний). Тогда блок будет содержать N байтов – значений, отправляемых в регистр 0, за которыми следуют ещё N байтов – значений, отправляемых в регистр 1 и т.д., всего N*14 байтов. Если в текущем кванте не было записи в регистр 13, то байт в блоке данных, относящийся к этому кванту и к этому регистру равен 255.
YM3b
Первые четыре байта являются ASCII строкой "YM3b". Затем идёт такой же блок, как и в YM3. После блока находится значение DWORD, указывающее номер кванта для зацикливания мелодии.
YM5
Данный формат содержит расширенную информацию о музыке, как то: частота прерываний, частота чипа, название, автор, комментарий, а также специфическую информацию, позволяющую воспроизводить эффекты, названные автором ST-Sound Digi-Drum и SID-Sound (некоторые программы на Atari используют эти эффекты).
Выдержка из YMFORMAT.TXT
---------------------------cut here-------------------
Offset Size Type Comment 0 4 DWORD ID of YM5 format. ('YM5!') 4 8 string[8] Check String ('LeOnArD!') 12 4 DWORD Nb of valid VBL of the file. 16 4 DWORD Song attributes (see bellow) 20 2 WORD Nb of digi-drum sample (can be 0) 22 4 DWORD YM2149 External frequency in Hz (ex:2000000 for ATARI-ST version, 1000000 for AMSTRAD CPC) 26 2 WORD Player frequency in Hz (Ex: 50Hz for almost player) 28 4 DWORD Vbl number to loop the song. (0 is default) 32 2 WORD Size (in bytes) of future additional data. (must be 0 for the moment) For each digidrum sample: { .. 4 DWORD sample size .. ? BYTES sample data (8bits per sample) } .. ? NT-String Name of the song. .. ? NT-String Name of the author. .. ? NT-String Comments (YM file converter ?!) .. ? All YM2149 registers. .. 4 DWORD End-File check. ('End!')
---------------------------cut here-------------------
Замечания.
1) VBL – Vertical Blank time (квант).
2) Все числовые данные (WORD и DWORD) представлены в порядке, принятом на процессорах MOTOROLA (от старшего байта к младшему).
3) Введены так называемые виртуальные регистры – 14-й и 15-й.
4) All YM2149 registers – такой же блок данных, как и в YM3 (но 16 регистров!), если установлен бит 0 в поле Song Attributes, если он сброшен, то блок данных представляет собой последовательность N блоков по 16 байт (для каждого из регистров YM, включая виртуальные).
YM6
Данный формат отличается от YM5 только наличием возможности записи ещё двух специальных эффектов – Sinus-SID и Sync Buzzer, а так же тем, что любые два эффекта могут исполняться одновременно.
Эмулятор поддерживает все специальные эффекты описанных выше форматов.
Более подробную информацию можно получить из официального архива ST-Sound или на страничке проекта ST-Sound http://leonard.oxg.free.fr. Также недавно опубликованы авторские исходники библиотеки на основе ST-Sound.