bonjour,
J'ai un programme dans lequel j'ai fait un thread consacré à la gestion des fonctions midi input.
Pour le midi j'utilise le module pypm (pyportmidi).
Mon code est le suivant
Mon problème est que lorsque je lance ce code seul dans une console par exemple, il s'éxécute correctement, mais lorsque je veux fermer la console la console ne se ferme pas et m'affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 import pypm import array import time from threading import Thread class Midi(Thread): def __init__(self,midion): Thread.__init__(self) pypm.Initialize() self.midion = midion self.MidiIn = None try : self.MidiIn = pypm.Input(1) except: self.exit() def run(self): while not self.MidiIn.Poll(): time.sleep(.01) while self.midion: try: self.MidiData = self.MidiIn.Read(1) # read only 1 message at a time print self.MidiData[0][0][1]," ",self.MidiData[0][0][2], self.MidiData[0][0][3] except: pass if __name__ == '__main__': m = Midi(1) m.start()
pn_winmm_term called
begin closing open devices...
et la fermeture des interfaces ouvertes ne se fait pas et la fenêtre console finit par me dire que "ce programme n'a pas pu se terminer normalement, voulez vous le terminer maintenant, ..."
Bref une sortie assez désastreuse.
D'autre part, lorsque j'utilise ce code dans un programme, mon programme s'arrête à la ligne M.start() et ne va pas plus loin. Comme si il attendait quelque chose pour continuer.
Une idée ?
Partager