Согласно моему комментарию, вы, вероятно, хотите добавить эти файлы, а не объединить их. Предполагая, что это так, вы не можете просто добавить данные из второго файла в конец первого. Поскольку протокол MIDI оптимизирован по полосе пропускания, он делает ряд предположений относительно потоковой передачи событий. Такое поведение означает, что вы должны соблюдать особую осторожность при добавлении данных MIDI.
MIDI-файлы могут (и обычно) использовать текущее состояние, что означает, что четное число может пропускать байт состояния, и в этом случае событие должно использовать байт состояния предыдущего события. Это может не быть причиной ваших проблем, но вы абсолютно уверены, что вы анализируете только необработанные MIDI-данные, а не заголовки файлов и тому подобное? Если бы это было так, все виды странных данных были бы ошибочно интерпретированы как действительные события MIDI.
События в файлах MIDI используют относительные смещения относительно предыдущего события в последовательности. Способ, которым это вычисляется, немного сложен, но он включает в себя несколько свойств (таких как темп, количество импульсов в секунду и т. Д.), Которые определены в заголовке файла MIDI. Если вы удалили эти события, а свойства второго файла отличаются, то время этих событий будет неправильным.
По сути, единственный безопасный способ добавить два MIDI-файла - это воспроизвести их через секвенсор и перезаписать их в новый поток. Добавление байтовых массивов, вероятно, станет причиной многих загадочных ошибок.