python_midi.py~ 1.41 KB
import sys
import os
import re

def midi_treatment_file(midi_file):
	os.system("mididump.py " + midi_file + ">musique.txt")
	f = open("musique.txt","r")
	texte=f.read()
	midi_frame = texte.split("),")
	midi_note_events = []
	i = 0
	while (i < len(midi_frame)-1):
		if(("midi.NoteOn" in midi_frame[i]) or ("midi.NoteOff" in midi_frame[i])):
			midi_note_events.append(midi_frame[i])
			i+=1
		else:
			i+=1

	data = []
	ticks = []
	j = 0
	while (j < len(midi_note_events)):
		data.append(midi_note_events[j][45:70])
		ticks.append(midi_note_events[j][26:29])
		data[j] = data[j].replace('=','')
		data[j] = re.sub('[a-zA-Z]','',data[j])
		ticks[j] = ticks[j].replace(',','')
		j+=1

	a = 0
	while (a < len(ticks)):
		ticks[a] = int(ticks[a])
		a+=1

	pitches=[]
	velocity=[]
	k = 0
	while (k < len(data)):
		pitches.append(data[k][0:3])
		pitches[k] = pitches[k].replace('[','')
		pitches[k] = pitches[k].replace(',','')
		k+=1

	l = 0
	while (l < len(pitches)):
		pitches[l] = int(pitches[l])
		l+=1

	k = 0
	while (k < len(data)):
		velocity.append(data[k][4:len(data)-1])
		velocity[k] = velocity[k].replace(']','')
		k+=1

	l = 0
	while (l < len(pitches)):
		velocity[l] = int(velocity[l])
		l+=1

	return (pitches,velocity,ticks)

def main(args):
	(p,v,t) = midi_treatment_file("nom_fichier.mid")
	n = 0
	while (n < len(p)):
		print("Note : " + str(p[n]) + "Velocite : "+ str(v[n]) + "Tick : " + str(t[n]))
		n+=1
		print "\n"

main(sys.argv)