Как стать автором
Обновить

Комментарии 19

Планируется ли выложить утилиту/скрипт конвертер?
Да, в следующей статье выложу код скрипта. Возможно код консольной утилиты или отдельные его части тоже будут выложены. Проблема в том что это учебный проект и по сути прототип (хоть и решающий мои задачи), а не законченный инструмент — поэтому хвастаться качеством кода и элегантностью решений не получиться.
Чукча не всегда кодер. Главное, что чукча — реверсер, а это похвально!

С качеством кода поможет заливка на Github, где через Pull Requests вам помогут исправить ваш код.
Интересный разбор. Всегда почему-то все эти музыкальные форматы казались некоей чёрной магией (несмотря на то, что неплохо разбираюсь, скажем, в исполняемых файлах), а тут прямо разбирается как по нотам.
А чем обусловлен выбор инструмента? Почему бы не переиспользовать что-то более распространённое для этой цели, скажем тот же kaitai struct, там же сразу и парсер нагенерится.
Хотелось решить задачу с минимумом усилий и затратив наименьшее количество времени, особенно в сравнении с процессом ручного экспорта. Изначально я планировал вытащить только музыкальные данные и использовать встроенную скриптовую функциональность Synalaze It для конвертации их в midi. К сожалению этот подход сработал только частично и масштабировать его мне не удалось. Но тот код, который я успел написать, умещается на полтора экрана и выполняет 99% задуманного
Кстати, имеется конвертер из формата Synalyze It в формат kaitai struct
Похоже придется из любопытства им воспользоваться и посмотреть насколько эффективно данная задача будет решаться в kaitai struct. Многие его советуют
Реверс, это всегда интересно, спасибо!
есть такие специальные программы, общее название — DAW. Много их… Есть и бесплатные, и удобные…
Поверьте, разбираться, хранить миди, аудио и прочие файлы в них гораздо проще.
И, кстати, на чём вы хранили тысячи заготовок?
Подход в целом немного странный. Если прокололи колесо — неужели нужно изучать сопромат резины?..
Причины я описал. Они в основном организационные. Использовать DAW — означает включить компьютер, запустить DAW, создать проект, добавить трек, выбрать нужный плагин, включить запись с клавиатуры. Для записи следующей идеи нужно опять добавить дорожку, выбрать плагин, нажать запись. На это уходит время и к тому моменту я уже обычно не могу повторить то что хотел записать. Если нет выделенной машины и отдельного органзиованного рабочего места, то времени уходит еще больше. Плюс я очень чувствителен к звучанию пианино и найти плагин, который меня устраивает я долгое время не мог (да и сейчас с этим есть нюансы)
Я признаю что это спорный подход. Но я не профессиональный музыкант, думаю это простительно. На данный момент, я хочу перейти к более осознанному и организованному процессу, поэтому и занялся тем что описано в статье
Заготовки хранились на карте памяти с периодическим бэкапом на ПК. По размеру они побольше чем миди, но все равно занимают совсем немного места. Опять же, подчеркну — что это только наброски. Когда я дозревал до полноценной записи, конечно я использовал DAW.
Спасибо. Было интересно почитать. Сам, для подобного использую Kaitai Struct (вот тут статья на Хабре: habr.com/ru/post/281595)
Спасибо. Как-то пропустил эту статью

А существуют для него редакторы+визуализаторы в виде интегрированной среды? Не в виде веб.

Не знаю. Для моих скромных потребностей достаточно web версии.
Присоединяюсь к вопросу. Есть аналоги визуализатора Synalyze It! под винду?
Да, аналог — приложение hexinator hexinator.com

Хорошо всё-таки, что файл никак не упакован и не зашифрован, думаю, даже простейший xor сильно испортил жизнь

Интересный подход сразу шариться в готовых файлах и пытаться что-то оттуда извлечь.
Я бы декомпозировал. Записал бы файл из единственной ноты. Потом из другой ноты. Потом из ноты другой длительности — и т.д., и смотрел бы, что меняется в выходных байтиках.
Когда-то давно я примерно так написал PPD для печати из-под линукса на Ricoh Aficio 450 — перехватывал задания для печати из-под windows с разными параметрами-настройками входных лотков, дуплекса, степлера и т.д. — и делал аналогично под линуксом.
Не так важно, что именно записано в файле; важно, в чём внутреннее отличие от другого файла с заданным визуальным отличием.


Ну а редакторов с поддержкой темплейтов сейчас пруд пруди. Уже 10 лет назад попадался что-то вроде 010 editor, где тоже на встроенном с-подобном языке можно было внятно описать структуру файла

Я бы декомпозировал. Записал бы файл из единственной ноты. Потом из другой ноты. Потом из ноты другой длительности — и т.д., и смотрел бы, что меняется в выходных байтиках.


В продолжении я опишу этот подход. Проблема в том, что данный формат может содержать несколько фрагментов данных, т.е. несколько «песен». Каждая песня состоит из треков. Треки содержат такты. Во всей этой структуре также пришлось разобраться. Кроме непосредственно информации о нажатии нот в блоке данных хранятся метаданные, поэтому прямое сравнение ничего не давало. Даже два пустых трека без нот, но разной длительности будут значительно отличаться.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.