python_midi.py 1.79 KB
#! /usr/bin/python

import sys
import os
import re
import dico_notes

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
	resolution = 0
	nn = 0
	dd = 0
	key = 0
	m = 0
	ntimc = 0
	while (i < len(midi_frame)-1):
		if ("midi.TimeSignatureEvent" in midi_frame[i]):
			resolution=midi_frame[i][34:37]
			i+=1
		elif ("midi.KeySignatureEvent" in midi_frame[i]):
			key = midi_frame[i][41:42]
			m = midi_frame[i][44:45]
			i+=1
		elif (("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] = str(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

	frequency = []
	k = 0
	while(k<len(pitches)-1):
		frequency.append(dico_notes.midi_note[pitches[k]])
		k+=1

	print resolution
	if (key == '0'):
		print "Cle de DO"
	if (m == '0'):
		print "MAJEUR"

	return (pitches,velocity,ticks,frequency,resolution)

(p,v,t,f,r) = midi_treatment_file("/home/pi/python-midi/mary.mid")