Менять инструменты в миди-кодировании? - PullRequest
2 голосов
/ 08 февраля 2011

Я пытаюсь написать функцию для динамического создания миди-файлов на 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

1 Ответ

0 голосов
/ 09 февраля 2011

Наконец-то разобрался. Это была простая вещь, но я забыл указать время отслеживания до смены программы. Как только я добавил 0 байт, это сработало.

...