Bonjour à tous,
Je programme actuellement un "sequencer" à 8 pistes en pyhton. En fait c'est tout simplement un tableau booleen qui est lu avec un tempo(fréquence) précise.
exemple : on lit la une case du tableau tous les 5ms puis on incrémente la position du tableau etc ...
D'où l'utilisation d'un threading !
Cependant, j'ai le souhait de modifier "le tempo en temps réel" qui a pour conséquence de modifier le temps d'appel de la fonction "lecture du tableau".
et là je dois dire je ne sais pas faire, j'ai regardé plusieurs documents sur les threading en python mais aucun ne parle de modifier le temps d'appel de la fonction.
D'une manière plus détaillée voici ce que j'aimerais :
Tout d'abord voici la class que j'utilise (je l'ai prise quelque part sur le web)
le moment où je l'utilise (t est le temps d'appel de la fonction sequence_temps_réel)
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 import threading import time class Intervallometre(threading.Thread): def __init__(self, duree, fonction, args=[], kwargs={}): threading.Thread.__init__(self) self.duree = duree self.fonction = fonction self.args = args self.kwargs = kwargs self.encore = True # pour permettre l'arret a la demande def run(self): while self.encore: self.timer = threading.Timer(self.duree, self.fonction, self.args, self.kwargs) self.timer.setDaemon(True) self.timer.start() self.timer.join() def stop(self): self.encore = False # pour empecher un nouveau lancement de Timer et terminer le thread if self.timer.isAlive(): self.timer.cancel() # pour terminer une eventuelle attente en cours de Timer
t= 60*1.0/(tempo*2)
jouer = Intervallometre(t,sequence_temps_reel)
jouer.setDaemon(True)
jouer.start()
En fait le tempo peut être modifié en temps réel, et là le t sera donc modifié et j'aimerais que cela modifie aussi la "jouer" sur la fréquence d'appel l
Est ce possible ?
Si oui comment ? Si non puis je utiliser autre chose pour le faire ?
Merci d'avance à tous pour votre réponse.
Partager