Нет, это не совсем верно. Я прогнал анализ всех треков и самое большое число периодов — всего 234 ( у многих треков меньше). Поэтому вместо периода можно хранить его однобайтный номер, это сокращает каждый трек на треть. В новом формате все данные упаковались до 32кб (Exomizer).
Кстати, хочу заметить, что такой примитивный формат — байт ожидания и два байта периода — пока что оказывается самым эффективным конкретно для этих треков. Видимо в них настолько часто и далеко меняется период, что никакие статистические сокращения (типа тех, что я делал в Planet X3) не помогают. Т.е. введение раздельных тегов ожидания + слово, ожидания + только младший байт и т.п. только увеличивает объём данных. Обратные ссылки конечно помогут, но встаёт вопрос написания оптимального пакера (в PX3 было проще, там был доступ к исходным паттернам и данные шли строками), и опять же это наверняка помешает последующему LZ-сжатию. Это к вопросу по утрамбовке в 48K, чего конечно хотелось бы добиться.
Да, всё правильно. Занятно, как одна и та же квадратная волна и одна и та же аранжировка воспринимаются по разному при проигрывании на разных устройствах.
Фориат очень прост, т.к. даже на XT много ОЗУ, а усложнения формата сказываются на сжимаемости файлов, и неизвестно, будет ли в итоге выигрыш. Да, он почти как в примере на Бейсике, с парой мелочей.
Первый байт файла — частота кадров-обновлений в Гц, в альбоме всегда 120.
Далее по три байта — один байт количество кадров и два байта (lsb/msb) период, который будет звучать в течении этих кадров. Период измеряется в 1193180/Гц, 0 выключает звук.
Также вместо количества кадров может встретиться два вида маркера. В конце трека всегда 0. 255 кадров — это специальный маркер для указания точки начала цикла и точки конца цикла. Трек имеет структуру вступление-тело-концовка, тело повторяется выбранное пользователем количество раз. Когда 255 встречается первый раз — это точка начала цикла, второй — точка конца цикла. Если цикл включен пользователем, при втором появлении 255 происходит переход на запомненное при первом появлении место, иначе просто играет дальше, там концовка и заканчивается трек.
А такой вопрос: есть ли какое-то точное описание формата в котором хранится музыка? Я понимаю, что можно прочесть плейер x86, но прочесть просто формат было бы проще. Я так понимаю что формат не должен бы был далеко уйти от примера проигрывателя на бейсике? Но хочется полной уверенности, по возможности.
Я не задумывался о возможности релиза на ZX, кроме применимости самой техники к 16K для чистого звука. Но BEEP в ПЗУ не сильно гибкий для обновлений на 120 Гц без сброса фазы, видимо не вариант.
Вообще да, кому-то может быть интересно, так что, учитывая минимум трудозатрат, сделать стоило бы. Но в 48К без раздельной загрузки не влезет, самый большой трек 15K, все треки в MegaLZ 37.5K.
Спасибо за подробный рассказ! Меня удивил этот альбом; многие из твоих биперных треков даже для спектрума звучали намного интереснее и лучше и я не мог понять, зачем тебе потребовался шаг назад (в моём понимании). Теперь я вижу, что тебя интересовала немного другая задача и немного другой фронт работ.
Сделать спектрумовский плейер для этого альбома не представляет из себя никаких сложностей. Думаешь, это могло быть кому-то интересно?
Это правда. Но теперь они вот так измельчали, а я хотел, чтобы современная аудитория поняла, о чём вообще речь. Ну и вставил, что первым попалось из свободных фоток — у меня на руках всё равно только ноуты либо такие пищалки.
4-6 января dihalt lite
15-17 марта forever
6 апреля speccy.pl
25-27 октября cafe
Первый байт файла — частота кадров-обновлений в Гц, в альбоме всегда 120.
Далее по три байта — один байт количество кадров и два байта (lsb/msb) период, который будет звучать в течении этих кадров. Период измеряется в 1193180/Гц, 0 выключает звук.
Также вместо количества кадров может встретиться два вида маркера. В конце трека всегда 0. 255 кадров — это специальный маркер для указания точки начала цикла и точки конца цикла. Трек имеет структуру вступление-тело-концовка, тело повторяется выбранное пользователем количество раз. Когда 255 встречается первый раз — это точка начала цикла, второй — точка конца цикла. Если цикл включен пользователем, при втором появлении 255 происходит переход на запомненное при первом появлении место, иначе просто играет дальше, там концовка и заканчивается трек.
Вообще да, кому-то может быть интересно, так что, учитывая минимум трудозатрат, сделать стоило бы. Но в 48К без раздельной загрузки не влезет, самый большой трек 15K, все треки в MegaLZ 37.5K.
Сделать спектрумовский плейер для этого альбома не представляет из себя никаких сложностей. Думаешь, это могло быть кому-то интересно?
В тексте ссылка на Lotus III неправильная.
P.S.: Уже закинул вьвер на Еву :)
Долго смотрел на эту картинку и пытался понять, что это за версия третьего протрекера такая.