python_midi.py
1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#! /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")