背景
一般来说,音频数据的保存格式有wav,mp3,midi等。当需要对音频数据进行比对时,显示为图片是一种比较直观的表示方式,可以将wav显示成波形,频谱,彩虹谱;也可以将midi文件转换为piano_roll,再以图片的形式显示。本文主要针对midi文件的显示。
实现方法
利用python模块pretty_midi读入midi文件内容,将将矩阵转换成piano-roll,使用以下方法,再显示成图片即可。
midi_data = pretty_midi.PrettyMIDI('test.mid')
print(midi_data.instruments)
a = midi_data.instruments[0].get_piano_roll()
# reshape 图片为3维,并将通道级联成3,即rgb
m = np.reshape(a,(a.shape[0],a.shape[1],1))
img = np.concatenate((m,m,m),axis=2)
# 图像显示与保存
plt.figure("Image",figsize=(12,8))
plt.imshow(img)
plt.axis('on') # 关掉坐标轴为 off
plt.title('image') # 图像题目
plt.savefig('show.png')# 图像保存
plt.show()