PortMidiの仕様上16進数でメッセージを整形してもいいんだけど、引数としてはint型なので、トラックごとに加工が必要な場合は、一度int型で準備して、それをそのまま読み込ませる方が正常にメッセージを処理できるっぽい。
具体的には各トラックでフレーズを分ける場合。
16進数で計算しようとしても難しいし、そもそもトラック番号をどうやって16進数に変換するんだって話なので、まず全部10進数で計算することにした。
で、Pm_message関数はintで受け付けるので変換の必要なくそのまま読み込ませる形で対応できる。
これで問題なく複数パートの演奏ができた。前述のオーディオコールバックに組み込んだ状態でも遅延やノイズは認められず。