我想打开一个MIDI文件并分析每个字节。但我对handeling字节和位非常不熟悉。如果有任何不同,Midi是用十六进制编写的。
我想要做的是将每个字节放入一个列表中,然后创建一个for循环来检查每个字节。我该怎么做?
我到目前为止(这不是很远):
# Open MIDI file
mFile = open("test.mid", 'rb')
# Checks if file is MIDI
hChunk = mFile.read(4)
if hChunk != b'MThd':
raise ValueError('Not a MIDI file')
print(mFile.read())
如果有人有任何易于理解的MIDI格式解释链接,那将不胜感激! :)
答案 0 :(得分:1)
刚刚完成代码扫描前40个字节的数据。它使用类似C的%
格式和更多的pythonic format
方法打印十进制值和十六进制值,如果格式规范是十六进制的,这可能更容易理解。
midi文件已被下载docs并保存在脚本目录中(因此在测试时计算正确dir的奇怪__file__
内容)
import os
# Open MIDI file
mFile = open(os.path.join(os.path.dirname(__file__),"MIDI_sample.mid"), 'rb')
# Checks if file is MIDI
hChunk = mFile.read(4)
if hChunk != b'MThd':
raise ValueError('Not a MIDI file')
contents = mFile.read()
mFile.close()
total_len = len(contents)
for i in range(0,40):
print(contents[i],"x%02X"% contents[i],"x{:02X}".format(contents[i]))