Hi sorry I'm at NY at this time and I don't have a lot of time.
Here is some things about your work...
-'L' and 'M' means Layer and Master some module are per layer or for all layers.
'VS' seems to be a litle bit confuse in this case.
I propose to you, if you want to put 'VS', something like 'M_VS...' or 'VS_M...'
I continue In french sorry It's more easy for us...sorry for english people
-L'idée du BMP c'est qu'il est centralisé et qu'il est utilisé par tous les modules qui en aurais besoin, ainsi faire deux BMP ne semble pas une bonne idée et nous préferons que la version officiel reste la seule pour une meilleure coérence.
-Si l'on a pas affiché la position du beat c'est a cause d'un potentiel problème de performances qui pourrais ralentir modul8 si il y a beaucoup de mises à jours dans une fenêtre de modules.
Mais rien n'empeche de faire un module qui affiche le beat du BPM ainsi ceux qui on des machines puissantes pourrons l'utiliser sans penaliser ceux qui ont des machines moins performantes.
-Nous avons séparé les informations de quantisation (2/1 1/1 etc...) afin que chaque module puisse être basé sur le même beat et ainsi rester sychronisé tout en ayant la possibilité de ce placer differement dans le beat.
Les réunirs ne semble être donc pas une bonne idée.
-pour recuperer le BMP nous n'utilisons pas le 'direct_layer_modulesDict' qui est normalement un dictionnaire partagé par layer, ce qui posera des problème si par exemple tu détruit le layer, mais une nouvelle fonction (qui en plus est plus rapide) : getSharedDictionary()
Qui te retourne un dictionnaire partagé entre tout les module et la clef, 'BMP_POSITION' te retourne la position dans le beat (generé par le module BPM).
Ainsi avec le code suivant dans ton init,
tu a accès au dictionnaire et si la clef n'existe pas elle est créé (ça évite des erreur si le module BPM n'a pas étét lancé au moins une fois) :
Code: Select all
sharedDict = module.getSharedDictionary()
if not 'BMP_POSITION' in sharedDict :
sharedDict['BMP_POSITION'] = 0.0
Ensuite tu n'a plus qu'a utiliser : sharedDict['BMP_POSITION'] pour connaitre la position du beat.
-J'ai vu une petite erreur de design dans ton module sequencer, il n'est pas basé sur le temps (pour la partie qui n'utilise pas le BPM), ainsi si pour une raison ou une autre ta machine ralentie ou si tu utilise une autre machine plus rapide les resultat seront differents, voir irregulier.
Tu a pour cela dans le PeriodicalEvent une variable très utile qui s'appelle 'elapsed' qui est le temps passé depuis le dernier dernier appel de la fonction, ainsi en l'utilisant ton module sera basé sur le temps quoi qu'il arrive.
Voila j'èspere que ça va t'aider à ameliorer le module afin qu'il marche parfaitement dans modul8, bonne suite et merci...
Boris.