解决domino出现“一个音轨中包含多个通道停止读取”

今天下载了个midi,用domino打开提示:
image
上网查询资料得知这是作者为了防止被编辑而设计的
了解了相关的midi知识以后,我便写了以下Python程序:

import mido,sys #此程序需要mido库,安装请输入:pip install mido

print("作者:Minecraftku_hei")
infile=mido.MidiFile(input("输入:"))
outfile=mido.MidiFile()

print("正在检测是否在单个音轨中有多个通道")
i=0
multiChannel=False
for track in infile.tracks:
	channel=None
	for note in track:
		if hasattr(note,"channel"):
			if channel==None:
				channel=note.channel
			elif channel!=note.channel:
				print(f"轨道{i}有多个通道!")
				multiChannel=True
				break
			else:
				pass
	i+=1
	print(f"轨道{i}没有多个通道!")
if not multiChannel:
	print("该midi文件一切正常!")
	sys.exit(0)
tracks=[mido.MidiTrack() for i in range(17)]
for track in infile.tracks:
	for note in track:
		if hasattr(note,"channel"):
			tracks[note.channel+1].append(note)
		else:
			tracks[0].append(note)
outfile.tracks=tracks
outfile.save(input("输出:"))


成功解决!

3 Likes

?怎么整啊,不懂

沒看懂,是把紅字都修改就好了嗎?
大佬可以教一下嗎

这是一个程序,如果你没有python你可以试试看我打包的exe程序,下载地址:https://pan.baidu.com/s/1a1YCqI9FNBnb0SFqXB9zpQ 提取码: ncu6

2 Likes

同上,你可以试试

哈哈,我以前都是用PsmPlayer过一遍的:joy:

1 Like

到输出就卡住,不知道咋回事

让你指定输出文件啊

懂了,谢谢。。。。。。

感谢分享 有你的分享让我们轻松快乐

感谢你的分享,让我们一起加油