「ノートオン」、「ノートオフ」、「テンポチェンジ」など、さまざまな種類の音楽イベントのシーケンスである midi ファイルを操作しようとしています。全部で、おそらく 30 種類のこれらのイベントがあります。それぞれが異なる数、サイズ、およびフィールドのタイプを持っています。それらの中には、任意の長さの文字列全体をフィールドとして持つものさえあります。すべてのイベントに共通する 1 つのフィールドは、前のイベントから現在のイベントが発生するまでの時間を指定する時間フィールドです。
プログラムで midi ファイルを保存して操作する方法がわかりません。時間フィールドがどのように機能するかを考えると、これらすべてのイベントを順番に格納することは非常に重要ですが、複数の種類のオブジェクトを格納できるコンテナーについては知りません。すべてのイベント タイプのすべてのフィールドを含むメガ オブジェクトを 1 つだけ作成し、特定のイベントごとに必要なフィールドのみを使用することもできますが、それはかなり非効率的です。30 の異なるベクトルを作成し、すべての順序を追跡する 1 つのマスター ベクトルを作成することもできますが、それは悪夢のように聞こえます。これについて最善の方法は何ですか?