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)

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
le moment où je l'utilise (t est le temps d'appel de la fonction sequence_temps_réel)
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.