如何把rmi转mid
如何把rmi转mid
rmi格式是在mid格式外套了一个riff信息
简单来说,就是把自 4d54 6864(MThd)
开头的部分到文件最后一个 00ff 2f00(轨道结束)
部分提取出来就是 mid了
已知 Awave Studio 可以提取 rmi 格式的 midi 文件
1 Like
在哪里下载,如何使用?
謝謝次較~~~~~~~~~~~~~~~~~~~
用 python3 写了一个简单的转换脚本
#!/usr/bin/env python3
import sys
RIFF_HEADER = b'RIFF'
MIDI_HEADER = b'MThd'
MIDI_TAIL = b'\x00\xff\x2f\x00'
class NoRIFFException(Exception):
pass
class NoMTrkException(Exception):
pass
class NoMThdException(Exception):
pass
try:
with open(sys.argv[1], 'rb') as fr:
rmi_dat = fr.read()
if rmi_dat[0:4] != RIFF_HEADER:
raise NoRIFFException
midi_head_index = rmi_dat.find(MIDI_HEADER)
if midi_head_index < 0:
raise NoMThdException
midi_tail_index = rmi_dat.rfind(MIDI_TAIL)
if midi_tail_index < 0:
raise NoMTrkException
midi_data = rmi_dat[midi_head_index:midi_tail_index + len(MIDI_TAIL)]
with open(sys.argv[2], 'wb') as fw:
fw.write(midi_data)
except NoRIFFException:
print('Bad RIFF Format!')
except NoMThdException:
print('SMF Header not found.')
except NoMTrkException:
print('SMF Tail "00ff 2f00" not found.')
except Exception:
print('Usage: {0} input_file.rmi output_file.mid'.format(sys.argv[0]))
使用方法:
python3 riff_to_midi.py <输入的rmi文件> <输出的midi文件>
谢谢大佬们的方法,感谢