Я пытаюсь написать функцию для динамического создания миди-файлов на Android. Поскольку библиотеки javax.sound.midi нет, я просто записываю байты в файл самостоятельно. Я нашел несколько хороших руководств (см. Ниже), поэтому я смог создать несколько треков миди. Однако я не смог выяснить, как переключать инструменты для какой-либо из дорожек, поэтому каждый игрок просто использует инструмент по умолчанию.
Я думаю, что из документов, которые я прочитал, мне нужен код «изменение программы», за которым следует номер программы.
Пока я пытался записать в массив byteoutputstream следующее:
track.write((byte) 192); // 128 + 64
track.write((byte) x); // x is the instrument number between 1-128.
Я поставил это перед началом записи ноты о включении / выключении ноты, но, похоже, она ничего не делает, кроме как заставляет миди запускаться долго. Я на правильном пути, или я что-то упустил? Любая помощь приветствуется.
http://faydoc.tripod.com/formats/mid.htm
https://ccrma.stanford.edu/~craig/articles/linuxmidi/misc/essenmidi.html