ST0play для БК 0011м
Скачать

История трекерной музыки на советских компьютерах БК 0010 и БК 0011м изложена в журнале Downgrade 28 (страница 34) и Downgrade 29 (страница 28). Strogino Sound Tracker 1995-го года воспроизводил 3-канальную музыку (форматы файлов SST и SPC/INS) с частой микширования 12,5 КГц и работал не только на БК 0011м, но и на слабой БК 0010. Omega Tracker 1998-го года воспроизводил 4-канальную музыку (формат файлов OMS/INS) с частой микширования 10,9 КГц и работал на БК 0011м. Оба трекера имели два полноценных канала, остальные каналы предназначались для ударных и эффектов - они могли воспроизводить сэмплы только с фиксированной частотой.
В 2018-ом году Manwe разработал формат ST0. Нумерация "ноль" призвана подчеркнуть, что формат не является расширением возможностей SST, а наоборот в чём-то более ограничен. Зачем же нужен такой формат? На самом деле, ограничение по сравнению с SST только одно: новый проигрыватель ST0play использует вдвое больше памяти, чем старые проигрыватели SSTplay и SPCplay. Это сильно осложняет работу музыканта, ведь теперь ему приходится использовать меньше инструментов или делать их короче. Во всём остальном ST0 превосходит по возможностям SST.
Основное преимущество ST0play - микширование 3-канальной музыки с частотой 25 КГц (вдвое выше, чем SST и в 2,3 раза выше, чем Omega Tracker). Это преимущество достигается двойным расходом памяти. При желании можно написать проигрыватель формата ST0, который будет микшировать с низким качеством на частоте 12,5 КГц, тем самым экономя память.
Диапазон нот - от C2 до C5. 37 клавиш, стандарт для MIDI-клавиатур среднего размера. Крайняя правая клавиша (C5) соответствует исходной частоте дискретизации 12,5 КГц для обычных музыкальных сэмплов и 25 КГц для барабанов. Чем левее нота, тем ниже частота сэмпла и качество его звучания в музыке.

Максимально допустимое количество сэмплов - 63. На практике вряд ли хватит памяти для двух десятков. 63 паттерна. Максимальная длина списка паттернов - 127.
Как и в SST, первые два канала предназначены для тональных инструментов, третий канал для барабанов. В одной музыкальной композиции можно использовать не более 4-х барабанов, под каждый из них целиком отводится своя страница памяти (отсюда ограничение на размер сэмпла барабана: 16 килобайт). Ещё по одной странице памяти уходит на нотный текст и экран, две страницы под тональные сэмплы. В один сэмпл барабана можно объединить несколько звуков и воспроизводить их с помощью команды sample offset, увеличив таким образом количество барабанов.
Подробное описание формата дано в текстовом файле sst0format.txt.
Вместо музыкального редактора на БК предлагается использовать стандартные трекеры на современных платформах. Windows: Open ModPlug Tracker, MacOS и Linux: Schism Tracker, DOS: Impulse Tracker, DOSbox: Scream Tracker 3. Все они позволяют сохранять музыку в формате S3M. Когда музыка готова, нужно переписать её на БК и запустить конвертер S3M-ST0.

При написании музыки в формате S3M нужно соблюдать следующие ограничения:
- Использовать только первые 3 канала
- Помещать тональные инструменты в первых двух каналах
- Барабаны ставить только на третьем канале
- Использовать ноты в диапазоне c C2 по C5 (С1-С4 для ST3)*
- Использовать барабаны только на ноте C5 (С4 в ST3)*
- Не использовать громкость и трекерные эффекты
- Частота дискретизации барабанов должна быть 25000 Гц
- Частота тональных сэмплов должна быть 12500 Гц
- Параметры инструментов игнорируются (громкость, цикл, огибающие)
* В старом редакторе Scream Tracker 3 номера октав уменьшены на 1.
Допускается использование следующих команд:
- Pattern break - прервать паттерн раньше 64-ой строки
- Note cut - прервать звучание ноты на данной строке
- Sample offset - играть ноту с отступом от начала сэмпла
Число 0 в параметре sample offset не даёт никакого результата. Любое другое число N означает, что для данной ноты нужно проигрывать сэмпл с отступом N*256 байт от его начала. Каждое использование эффекта sample offset увеличивает размер выходного файла на 4 байта.
Можно использовать параметр глобальной громкости всей композиции. Он нужен для того, чтобы при микшировании на БК не возникало переполнения и треска. Темп (BPM) также устанавливается в параметрах композиции и не может изменятся по ходу проигрывания музыки.
Пример корректного S3M-файла можно скачать здесь: TEST.S3M.

Формат ST0 содержит только нотный текст. Сэмплы должны храниться на том же диске, что и мелодия, в стандартном формате WAV 8 бит моно. При подготовке файла в формате S3M следите, чтобы у каждого сэмпла было прописано верное имя файла. Иначе после конвертации в формат ST0 проигрыватель ST0play не найдёт нужные звуки.
В первые 4 инструмента можно прописать параметры композиции: имя автора, название группы, год, комментарий. Название композиции берётся из поля "Song" S3M-файла.
Чтобы конвертер S3M-ST0 мог отличить тональные сэмплы от барабанов, они должны быть загружены в S3M в следующем порядке: все тональные сэмплы, затем пустой сэмпл, затем все барабаны.
Следите, чтобы суммарный размер тональных инструментов не превышал 14,3 килобайт. На самом деле, превышение возможно, но каждый лишний байт отнимает место у барабанов. Схема использования памяти БК 0011м проигрывателем ST0play:
Проигрыватель ST0play работает на БК 0011м с контроллером жёсткого диска СМК (64 или 512) и написан под операционную систему MKDOS. Обращение к WAV-файлам осуществляется по номеру начального блока на диске, а поиск файла в каталоге и вычисление номера блока возложены на системные функции MKDOS. После составления таблицы блоков оперативная память БК освобождается от операционной системы, чтобы предоставить место сэмплам. Обращение к функциям системы с этого момента невозможно. Поддержка другой популярной системы ANDOS не реализована, поскольку ANDOS хранит файлы в фрагменированном виде, так что чтение файлов без участия системы сильно затруднено.
После загрузки файла ST0 проигрыватель считывает длины используемых в мелодии WAV-файлов. Если файлы не найдены, появляется сообщение об ошибке. Если объём сэмплов слишком велик и не удаётся разместить их в памяти, также выдаётся ошибка.
Затем нотный текст преобразуется в список адресов и частот. С этого момента операционная система недоступна, чтение с диска осуществляют процедуры контроллера жёсткого диска, выдача стандартных ошибок невозможна. В случае возникновения какой-либо ошибки (не читается диск или WAV-файл оказался неверного формата) на экране появляется иконка грустного компьютера.
Если всё прошло успешно, после конвертации нотного текста и сэмплов (это длится 4-5 секунд) надпись "Loading" меняется на "Playing" и начинает звучать музыка. Воспроизведение ведётся через Covox. Приобрести высококачественный Covox можно здесь: hardware.thesands.ru.
Конвертер работает на БК 0010 и БК 0011м в операционной системе MKDOS. Он не загружет S3M-файл целиком, а берёт только его начальную часть с нотным текстом. Это достигается чтением по номеру начального блока и, соответственно, не работает в ANDOS.

Если S3M-файл повреждён и не соответствует ожидаемому формату, конвертер выдаёт сообщение об ошибке.
S3M-ST0 не сохраняет сэмплы из S3M-файла. Предполагается, что музыкант самостоятельно запишет на диск соответствующие WAV-файлы. Конвертер не проверяет расход памяти, так как не учитывает размер сэмплов. Сообщение о нехватке памяти выдаст проигрыватель ST0play. Музыкант может изменять WAV-файлы (например, сокращать их длительность, чтобы уместить в память БК), при этом не требуется повторная конвертация S3M-файла. Нотный текст - отдельно, сэмплы - отдельно.
После успешной конвертации сообщается minimal recommended sample size - размер сэмпла в байтах (в десятичной системе счисления), ниже которого лучше не опускаться. Причина в том, что проверка окончания сэмпла идёт не постоянно, а только при переходе на следующую строку паттерна. Поэтому при проигрывании высоких нот слишком коротким сэмплом прозвучит также и часть следующего сэмпла. Рассчитать минимальный размер сэмпла можно самостоятельно по формуле 187500/BPM.
Кроме того, конвертер напоминает имена файлов, записанные в S3M. Сэмплы на диске должны называться в точности так же.
Помните, что при сохранении WAV из современных редакторов нужно отключать мета-данные - они занимают лишнее место.
