Разбор формата файла SID

Хочу написать парсер для .sid файлов (музыка для чиптюнов C64) для извлечения некоторых паттернов в ноты. Я ищу формат и нашел это: http://cpansearch.perl.org/src/LALA/Audio-SID-3.11/SID_file_format.txt

Я могу прочитать заголовок, как в том документе, но я не понимаю, как извлекать отдельные заметки и выводить их.

Я ищу готовые преобразователи и нашел эти:

То есть я нашел еще несколько, но StackOverflow говорит, что я не могу размещать более 2 ссылок.

Пожалуйста помоги. Извините за мой плохой английский. Спасибо за внимание!


person Bahgu Kiitar    schedule 12.03.2016    source источник
comment
Вы не можете разобрать файл SID на заметки. Файлы SID - это, по сути, программа в сборке 6510, напрямую обращающаяся к чипу MOS6581 (иногда очень странным образом). Лучше всего запустить его в эмуляторе (например, libsid) и сбросить все, что происходит с эмулируемым MOS6581.   -  person GreyCat    schedule 12.03.2016


Ответы (2)


Помимо заголовка, содержащего различные метаданные, остальная часть файла .sid состоит из кода (программа проигрывателя) и данных (инструменты и данные нот).

Формат данных заметок зависит от кода проигрывателя, и существует множество различных проигрывателей, каждый из которых может иметь несколько версий с вариациями кода и форматов данных. Есть даже много мелодий, код и форматы данных которых разработаны специально для этой одной мелодии.

Это означает, что единственный способ определить формат данных заметки — это изучить код проигрывателя (в мониторе машинного кода или в отдельном дизассемблерном инструменте), чтобы увидеть, что он делает и как организованы данные, что может быть довольно сложно. задача, даже если вы уже знакомы с машинным кодом 6510 и чипом SID.

person Lars Haugseth    schedule 26.04.2016
comment
Разве он не мог просто запустить проигрыватель на виртуальной машине 6510 и записать то, что записывается в регистры SID? - person Cactus; 13.05.2016

Если я правильно понимаю это, если вас интересует только ноты (т. е. шаг), вы сможете обойтись, просто посмотрев, что записывается в $d400/$d401 для канала 1 и так далее.

person Cactus    schedule 16.03.2016