私は MIDI 解析の神秘的な領域を理解しようとしてきましたが、うまくいきません。私がやろうとしているのは、音価 ( 60
= C4、72
= C5 など) を発生順に取得することだけです。
私のコードは次のとおりです。ファイルをバイト配列として開き、すべてを 16 進数として読み取るだけです。
byte[] MIDI = File.ReadAllBytes("TestMIDI.mid");
foreach (var element in MIDI) {
string b = Convert.ToString(element,16);
Debug.WriteLine(b);
}
すべての TestMIDI.mid に含まれているのは、C5 の 1 つのノートです。 これが16進ダンプです。この情報を使用して、Note On (0x9
または単にダンプ内)の単純な 16 進値を見つけようとしています9
が、何もありません。私はいくつかの を見つけることができますが、私には72
意味をなさない 3 つがあります (ノートオン、ノートオフ、そして何?)。
これは、MIDI をファイルとして解析し、16 進ダンプを使用する最初の試みです (そう呼ばれているのでしょうか?)。完全に間違った方向に向かっている場合は申し訳ありません。 必要なのは、再生される音とその順序を取得することだけです。タイミングも凝ったものも何もいらない。 この背後にある理由は、重要であれば、beep
*nix のコマンドと非常によく似た、スピーカーから再生される別の言語で新しいコードを生成するためです。このため、1) プログラミングもせず、実際には何も学ばず、2) 必要以上のことを行い、フレームワークを実際のコードよりも重くするフレームワークは使用したくありません。 .