私はthis midiファイルで作業しています。そしてシンセサイザーは、ミディ・トラックのそれぞれに2つのレコーダー、2つのチェロ、1つのコントラバスをそれぞれ検出しますが、ミディ・ファイルには「instrument name」というメタ・イベントはありません。ファイルに機器名のメタイベントが含まれていない場合、Synthesiaは機器名をどのように検出しますか?
ここには何が起こっていますか?
私はthis midiファイルで作業しています。そしてシンセサイザーは、ミディ・トラックのそれぞれに2つのレコーダー、2つのチェロ、1つのコントラバスをそれぞれ検出しますが、ミディ・ファイルには「instrument name」というメタ・イベントはありません。ファイルに機器名のメタイベントが含まれていない場合、Synthesiaは機器名をどのように検出しますか?
ここには何が起こっていますか?
MIDI仕様自体は、プログラムチェンジメッセージがマップされる楽器を定義しません。 MIDIファイルには、希望する標準のシンセサイザーを初期化するSystem Exclusiveメッセージが含まれていると想定されます(General MIDIの場合は「GM System On」、XGの場合は「XG Reset」など)。
このファイルには、このような初期化は含まれていません。しかし、ほとんどのファイルはGeneral MIDI用です(ほとんどの標準はGMと互換性があります)ので、SynthesiaはMIDIファイルがGeneral MIDIをサポートするシンセサイザー用であるとみなし、GM instrument listから名前を取得します。
一般的なMIDI仕様では、実際の楽器を楽器番号に割り当てます。たとえば、楽器#44はコントラバスです。それ以外の場合、MIDIファイルには別のシステム間での移植性は全くありません。
ただし、コントラバスの場合は#44ですが、この例ではレコーダーの0x4Aですか?各ミディトラックの開始時のプログラムチェンジミディイベントで、私は知りました。 – Garmekain