我嘗試在java中編寫簡單的midi文件,但是我無法打開它。 我只是創建三個音符同時播放。在JAVA中編寫midi文件
這是我的代碼:
file_midi.write("MThd".getBytes());
file_midi.write(fourToBytes(length));
file_midi.write(formatType);
file_midi.write(nbreVoies);
file_midi.write(PPQN);
file_midi.write("MTrk".getBytes());
file_midi.write(fourToBytes(31));
temp = (char)choix_inst[0];
file_midi.write(zero);
file_midi.write(c);
file_midi.write(zero);
num_note_midi = 50;
velocity = 10;
file_midi.write(zero);
file_midi.write(non);
file_midi.write(num_note_midi); //numéro de la note
file_midi.write(velocity); //vélocité de la note
num_note_midi = 60;
file_midi.write(zero);
file_midi.write(non);
file_midi.write(num_note_midi); //numéro de la note
file_midi.write(velocity); //vélocité de la note
num_note_midi = 70;
file_midi.write(zero);
file_midi.write(non);
file_midi.write(num_note_midi); //numéro de la note
file_midi.write(velocity); //vélocité de la note
num_note_midi = 50;
t_note_midi = 160;
file_midi.write(WriteVarLen(t_note_midi));
file_midi.write(noff);
file_midi.write(num_note_midi); //numéro de la note
file_midi.write(velocity); //vélocité de la note
num_note_midi = 60;
file_midi.write(WriteVarLen(t_note_midi));
file_midi.write(noff);
file_midi.write(num_note_midi); //numéro de la note
file_midi.write(velocity); //vélocité de la note
num_note_midi = 70;
file_midi.write(WriteVarLen(t_note_midi));
file_midi.write(noff);
file_midi.write(num_note_midi); //numéro de la note
file_midi.write(velocity); //vélocité de la note
file_midi.write(zero);
file_midi.write(ff);
file_midi.write(a_2f);
file_midi.write(zero);
file_midi.close();
然後我得到十六進制格式顯示該MIDI文件,whitch似乎與正常的MIDI文件格式。
4D 54 68 64 00 00 00 06 00 01 00 01 00 A0 4D 54 72 6B 00 00 00 1F 00 C0 00 00 90 32 0A 00 90 3C 0A 00 90 46 0A A0 80 32 0A A0 80 3C 0A A0 80 46 0A 00 FF 2F 00
我的文件有什麼問題?
「不能打開它」是什麼意思?它不是在MIDI文件播放器中播放嗎? – SamTebbs33
這是不可能的,甚至用像MuseScore這樣的圖片編輯器打開它,顯然文件結尾有問題,確切的錯誤是意想不到的EOF。 –