Преобразование музыки из midi в mikrotik script

Приветствую, хотел бы поделится своими наработками на тему создания/воспроизведения музыки на роутерах MikroTik.

Данная программа позволяет преобразовать практически любой SMF(standart midi file) в файл команд для роутера которые с помощью "бипера" воспроизводят музыку точно по нотам и временным паузам.

Стоит также оговорится что роутеры MikroTik имеют в наличии максимум один бипер, то и воспроизводить мы можем только один звук в определенный момент времени. Если у вас есть файл в котором несколько нот звучат одновременно(накладываются), на выходе скрипта вы скорее всего получите обрывы нот, по скольку новые ноты будут начинать звучать до того как старые прекратят свое звучание. Так что некоторые миди файлы необходимо будет предварительно подготавливать для работы с данной программой.

Также поддерживается работа с мульти-трековыми файлами. То есть для каждого трека/инструмента создается свой файл с командами, например барабаны играют в одном треке, лидирующий инструмент в другом, басовая линия в третьем и т.д. Фактически если у вас есть стойка с такими роутерами(хватит 16 штук поскольку миди стандарт поддерживает максимум 16 каналов) то вы можете разбить готовую миди композицию на треки и воспроизвести все 16 миди дорожек отдельно каждым роутером, на подобии музыки на флоппи дисках.

Зачем это все делалось? Наверно спросите вы. Во первых Just for fun. Во вторых для того что бы автоматизировать процесс создания музыки на данных роутерах для заинтересованных в этом людей людей. Имея га руках данную программу вам не придется подбирать тональность(частоту) и длительность звука, достаточно скачать готовую композицию, либо если вы немного музыкант или со слухом все хорошо, написать миди партию в любом секвенсоре(Ableton, FL Studio, ProTools, Cubase и т.д) и экспортировать в миди файл.

Ссылка на исходники с примерами:

GitHub

P.S. Проект делался в CodeBlocks так что если будете собирать руками, извините - макефайла нету