Перейти к основному содержимому

Разработчик четыре года вручную разбирал формат нотного редактора Score Perfect

Нотный редактор Score Perfect остался без поддержки после смерти единственного разработчика в 2012 году, а все партитуры в его закрытом формате SPP оказались заперты в мёртвой программе. Энтузиаст Маартен Тромп потратил четыре…

Score Perfect написал Клаус Кляйнбрам, первая версия вышла для Atari в 1990 году. Программа продавалась в редакциях Education, Standard и Professional, а третья версия в 1995-м добралась до Windows. Пятая версия 2007 года была переписана с нуля на Visual Basic 6 уже только для Windows. Отец автора пользуется программой с первой версии и набрал в ней все свои партитуры, как и другие пользователи, столкнувшиеся с той же проблемой на форуме MuseScore.

Встроенный экспорт в MusicXML выгружает только ноты, теряя аккорды и текст песен, а экспорт в MIDI теряет ещё больше. Поэтому Тромп поставил цель написать конвертер, который читает SPP и выдаёт MusicXML. Сначала он пытался дизассемблировать саму программу, но версии на Visual Basic оказались скомпилированы в машинный код и очищены от символов, так что видны были почти только строки и вызовы методов из DLL.

Дизассемблирование 16-битной демоверсии SPP 4.0 под Wine дало неожиданный результат: в коде нашлись имена процедур в стиле GFA BASIC, что подтвердило — программа написана на этом языке. По дороге выяснилось, что Windows-версия SPP 4 тоже написана на GFA BASIC. В итоге автор сосредоточился на разборе сохранённых файлов, где разобраться оказалось проще, чем в дизассемблированном коде.

Отдельно Тромп разобрал историю формата: в 2001 году от SPP отпочковался PriMus, и обе программы читают файлы, созданные до разделения. В SPP 5 появился новый формат, который PriMus уже не мог прочитать. Ещё ему попался предшественник SPP 1.0 — Score Perfect 1.2-K 1988 года с отдельным форматом файлов.

Почему это важно

История показывает, чем оборачивается закрытый формат и отсутствие поддержки: данные пользователей остаются в программе, которую некому чинить. Для российского бизнеса и владельцев сайтов это напоминание, что стоит заранее продумывать экспорт данных в открытые форматы и не полагаться на единственного разработчика или вендора. Для разработчиков это ещё и пример того, что реверс-инжиниринг старых форматов — реальный способ спасти архивы, но требует месяцев работы и терпения.

Источник: Habr. Материал пересказан ИИ-агентом.

Похожие статьи по теме

Почему ИИ не спасает от плохого кода: разбор Habr
Новости IT • 2 мин чтения

Почему ИИ не спасает от плохого кода: разбор Habr

Rust-разработчик Никита разбирается, почему при всех возможностях ИИ-агентов команды продолжают выпускать некачественный софт. Причина — не в инструментах, а в том, как выстроены приоритеты.

Читать статью полностью →
Как я семь раз обманул себя метриками точности ИИ-проверки ЕГЭ
Новости IT • 3 мин чтения

Как я семь раз обманул себя метриками точности ИИ-проверки ЕГЭ

Автор бота для проверки второй части ЕГЭ по обществознанию рассказал, как за полгода сменил четыре модели и нашёл семь случаев, когда его метрики показывали…

Читать статью полностью →
Жизненный цикл обломков в Chaos Destruction: как разгрузить физику
Новости IT • 3 мин чтения

Жизненный цикл обломков в Chaos Destruction: как разгрузить физику

Разработчик рассказал, как на проекте с Chaos Destruction решил конфликт между требованием арта сохранять осколки и нагрузкой на CPU. Он описал управляемый жизненный цикл…

Читать статью полностью →