Petit manuel du LedControl Toolkit

Petit manuel du LedControl Toolkit

VrõÔnsh 12 décembre 2020
Print Friendly, PDF & Email

C’est quoi LedControl Toolkit ?

J’ai commencé à penser à développer LedControl Toolkit après mes différents essais de customisation des flashers adressables (y’a des tutos qui trainent ici à ce sujet).

Comme je voulais approfondir le sujet, je me suis dit autant que ça serve à quelque chose et je me suis dit qu’il manquait un outil pour faciliter la création d’effets de leds adressables.

Et donc voila après quelques semaines de dev, une première version fonctionnelle de la chose.

Donc pour faire simple, LCTK (oui je fais comme Arnoz, je simplifie :)) est un outil qui permet d’éditer et de sauver des effets de leds adressable pour la plupart des sorties prévues du DofConfigTool.

Attention, LCTK ne traite que des effets de leds addressable (les fameux effets MX du DofConfigTool), vous ne pourrez pas éditer des effets Dof types contacteurs, flashers, gear… avec ce tool.

Il fonctionne avec sa DLL de Directoutput (légèrement modifiée, cf l’installation) et affiche donc exactement ce que sortirai le DOF de votre pincab. Il n’a pas besoin d’une installation hardware particulière, il a sa propre fenêtre de preview, je verrai plus tard pour permettre d’avoir l’effet en parallèle sur la Wemos en simultané (si ça se trouve ça marche déjà :P).

Il permet de parcourir les effets des tables existantes, de récupérer des effets de ces tables pour les modifier, d’en créer des nouveaux, de tout sauver et charger à volonté et de faire de l’import/export avec DofConfigTool.

En théorie vous pouvez préparer les effets adressables d’une table complète avec ce tool sans faire d’aller retour avec DofConfigTool.

Installation de LCTK

Pour installer LCTK vous pouvez soit récupérer la version sur le site

Téléchargement du ledcontroltoolkit.zip sur ce lien |ICI|

Vous pouvez aussi aller voir sur mon Git dans la page des releases de LCTK pour avoir les dernières versions a jour.

https://github.com/Vroonsh/DirectOutput/releases

L’installation est plutôt simple, vous dezippez le contenu de l’archive dans un répertoire.

Normalement vous avez LedControlToolkit.exe, DirectOutput.dll et un fichier lctk qui contient tous les effets Back/SideLeft/SideRight de la spreadsheet de TerryRed.

Il vaut mieux pour l’instant ne pas l’installer dans DirectOutput directement, j’ai une version modifiée de DirectOutput.dll fournie. Elle est a jour par rapport à la R3++ de mjrgh (même plus d’ailleurs, elle a les dernières modif pour la Wemos nouveau flash) et la plupart des modifs LTCK n’impactent pas le core system du dof. Donc en théorie elle fonctionne aussi pour le dof, si y’a des courageux qui veulent essayer :).

Voilà, l’installation faite plus qu’à lancer LedControlToolkit.exe.

Premier setup de LCTK

Au premier lancement de LCTK vous allez devoir fournir les fichiers nécessaires à son bon fonctionnement.

Ca va commencer par cette fenêtre :

Ici vous allez devoir indiquer ou se trouve le Global config qui pointe lui même sur votre fichier cabinet.xml

Vous allez aussi devoir indiquer le .ini généré par DofConfigTool qui contient les effets pour les leds adressables de toutes les tables, il servira, entre autre, à vous permettre de parcourir tousles effets existants pour pouvoir en copier certains dans votre fenêtre d’édition.

Attention : en fait non c’est pas si grave :), c’était juste pour prévenir que LCTK n’écrit jamais dans ces fichiers vous n’avez donc pas de crainte à avoir. LCTK utilise son propre format de fichier quand il s’agit de sauver/charger les effets édités.

Une fois les champs renseignés, cliquez sur OK.

Au premier lancement, et suivant ce qui aura été lu dans le cabinet.xml, LCTK vous prévient qu’il manque des ledstrips déclarées dans la zone de preview, cliquez sur Oui pour aller directement aux settings pour régler ça.

Vous voilà dans les Settings.

vous voyez dans la zone de preview le rappel des ledstrips qui ne sont pas déclarés pour être affiché ici.

Le premier truc à faire c’est de cliquer sur Create Missing Areas qui va automatiquement vous créer les zone de preview nécessaires.

Une fois crées vous allez devoir les régler comme vous voulez pour que l’affichage dans le preview ressemble a votre setup.

Ici, pour chaque area, vous allez pouvoir indiquer les dimensions (en ratio 0->1 de la taille de la zone de preview) et certains settings :

  • ConfigToolOutput : cela va correspondre à la ligne DofCOnfigTool liée à cette area (ça servira pour les import/export)
  • Name : le nom de l’area, qui doit matcher avec celui du ledstrip déclaré dans le cabinet.xml, le bouton Create missing area nommera les areas comme il faut.
  • PreviewType : pour l’instant deux types de preview, Matrix ou Ring, ça change la façon d’afficher la preview (Ring ne marche que quand Width ou Height du ledstrip est à 1, comme les speakers ring)

Tant qu’on est dans les settings, on va passer sur les autres :

  • Display Ledstrip Grid : va afficher une séparation noire entre les leds dans les preview area, plus proche du rendu réel.
  • Display Preview Area : affiche les dimensions et le nom de l’area (en vert), pratique au moment du setup, pas forcément nécessaire par la suite.
  • Minimal Effect Duration et Minimal Matrix Effect Duration : ajoute par défaut une durée minimale sur les effets qui n’en ont pas, c’est un settings par défaut du générateur d’effet quand il lit les effet dans le .ini, autant pas y toucher.

Vous avez un autre settings qui se trouve coté fenêtre d’édition, c’est la Pulse Duration, il reviendra surement ici a terme. Il sert à timer le On/Off quand on appuie sur Pulse d’un effet.

Voilà si tout est réglé vous pouvez sauver vos réglages en appuyant sur le bouton Save Settings. Les settings sont aussi automatiquement sauvegardés en quittant LCTK.

On va pouvoir passer à l’étape edition.

Glossaire

Avant de commencer on va juste clarifier quelques termes qui vont revenir souvent dans la doc :

  • MX : c’est l’abréviation de Matrix, cela représente les effets adressables dans DofConfigTool.
  • Table : c’est votre table VPX/FP/PFX, elle est identifiée par le nom de sa rom, c’est le contenant de tout ce dont on a besoin pour l’edition des effets MX.
  • Table Element ou TE : c’est un élément de la table (sans blague !!) qui va servir de déclencheur d’effets Dof. Ce sont soit des éléments mécaniques de la table (Switch, Led, Lamp…) ou des event (les fameux E<numéro> utilisés par pas mal de tables sans roms, a l’origine ce sont des events pour les tables EM), voire même des element identifié par un nom. Ces elements se voient assignés une liste d’effets qui se déclencheront si cet élément est activé.
  • Assigned Effect ou AE : c’est l’effet assigné sur un Table Element, un effet pouvant avoir des sous effet, seul le premier est assigné.
  • Effect : les effets Dof sont constitués de plusieurs sous effets chainées les un après les autres pour obtenir un résultat final, une ligne de commande DofConfigTool va souvent créer plusieurs effets chainés. Exemple d’effet chainé: Duration, MinDuration, Blink, Fade… Exemple d’effet final (en bout de chaine) : Flicker, Shift, Plasma, Shape…

Fenêtre principale de LCTK

Cette fenêtre est disponible en sélectionnant l’onglet Effect Editor.

Voici les différentes zones de l’interface d’édition

Alors de gauche a droite et de haut en bas vous avez :

  • Zone d’edition : c’est la zone ou vous allez construire les effets de votre table (la notion de table veut pas dire grand chose, ça peut être une vrai table o juste un workspace pour faire vos essai).
  • Zone des tables existantes : ici vous pouvez parcourir les effets de toutes les tables qui ont été référencées dans DofConfigTool.
  • Zone Properties : suivant ce que vous avez sélectionné, cette zone affichera ce que vous pouvez paramétrer (on l’a déjà vu pour l’édition des preview area)
  • Zone de preview : c’est ici que vous allez voir le résultat de vos effets quand vous les déclenchez.

Zone des tables existantes

On va commencer par la zone des tables existantes, il faut savoir que pas mal de choses fonctionnent de la même façon dans la zone d’édition de table et dans la zone des tables existantes en terme de liste des elements et effets.

Cette zone a une combo RomName qui va vous permettre de choisir quelle table du DofConfigTool vous voulez regarder. A chaque changement, les table elements et leurs effets vont être listés automatiquement.

Il vous suffit d’avoir un .ini à jour de DofConfigtool pour pouvoir voir les derniers effets en date.

Voilà a quoi ressemble les table elements et les effets.

Les Table element vont indiquer leur type et leur identifiant (ici le Switch W45) ainsi que le nombre d’effets affectés à leur déclenchement.

Les effets vont indiquer sur quel Toy ils sont utilisés et la ligne DofConfigTool qui a servi à les créer (avec le trigger de déclenchement, on voit bien le W45 en début de ligne).

Vous avez en dessous les boutons Activate/Deactivate et Pulse qui servent à déclencher soit un effet soit un table element entier avec tous ses effects.

A chaque fois que vous sélectionnez soit un element soit un effet, la property grid vous affichera ce que vous pouvez voir/modifier. Dans le cas de la zone des tables existante, vous ne pourrez rien modifier, il faudra faire une copie vers la zone d’édition pour pouvoir modifier un effet ou un element.

Quand vous faites un clic droit sur un effet dans cette zone vous aurez droit à un menu contextuel qui va vous permettre de copier cet effet soit vers un nouvel element soit dans un element existant de la zone d’édition.

Pareil pour un clic droit sur un table element, vous allez pouvoir l’ajouter comme nouvel element de la table d’edition ou copier ses effets dans un element déjà existant. Vous pourrez aussi inserer cet element avant un autre de la table d’edition.

Zone d’édition

C’est dans cette zone que vous allez pouvoir construire vos propres effets.

Elle ressemble beaucoup à la zone des tables existantes à la différence que vous avez cette fois un item supplémentaire dans la liste qui va vous permettre d’identifier la table elle même.

Comme je l’ai dit avant, cela peut être une vrai table dont vous voulez faire les effets mais aussi une table de travail complètement fictive.

Quand vous sélectionnez l’item de la table vous aurez des propriétés éditables également.

Vous pouvez indiquer le nom de votre table ainsi que son romname (c’est son identifiant dans le fichier .ini pour les table existantes). Le nom de la table est assez libre, le romname servira par contre à allez chercher la Bitmap dans le repertoire ou se trouve le .ini pour les effet de type Bitmap (pas encore supportés en édition).

Zone Property Grid

Dans cette zone seront affichées toutes les propriétés éditables de l’objet qui a été sélectionné en dernier.

Cela peut être un effet, un table element, la table éditée ou une preview area dans les settings.

La property grid affichera automatiquement les propriétés dont vous avez besoin suivant le type de l’objet que vous êtes en train d’éditer (notamment les table elements et les effets).

J’ai fait ce système de cacher les paramètres inutiles pour éviter que l’utilisateur soit perdu sous la masse des paramètres (surtout pour les effets !!)

Un zone en bas de la property grid vous donne des explications sur la propriété que vous êtes en train d’éditer.

Zone de Preview

Bon ben la zone de preview c’est la plus sympa puisque c’est celle ou vous allez voir le résultats de vos bidouilles 🙂

Pas grand chose a dire de plus à part que ca clignotte 😀

Il y a une coche en bas qui permettra d’afficher une fenêtre de debug avec le statut des toys et des effets, bon c’est pas prêt.

Editer les elements ou les effets

Edition des table elements

Quand vous sélectionnez un table element vous allez avoir ces propriétés éditables.

Ici un Table element nommé

Ici un Table element numéroté

Suivant le TableElementType vous aurez à définir soit un nom soit un numéro.

Voici les Type possibles :

Si vous optez pour un TE nommé, il faudra que le nom ne contienne que des lettres, des chiffres et le caractère “_”. De toute façon si vous avez mis d’autres caractères ou des espaces ça fera la correction automatiquement en remplaçant tous les caractères interdits par des “_”.

Edition des effets

Là on passe aux choses sérieuses, c’est ici que la magie va opérer 😀

Quand vous allez sélectionner un effet vous allez avoir à peu prêt ces propriétés :

Je dis à peu prêt, car suivant le EffectType que vous aurez choisi, vous aurez de légère différences.

On va d’abord s’occuper des paramètres communs à tous les effets, section par section.

D’abord, et c’est valable pour tous les paramètres, quand la valeur est affichée en gras c’est que vous avez changé cette valeur par rapport a celle par défaut. Je rajouterais à terme un moyen de reset une valeur par défaut.

Section Divers

  • Toy Name : c’est la que vous allez choisir sur quel toy va se jouer votre effet, une combo vous propose les ledstrip disponible suivant votre setup.
  • Invert : inversion du lancement de l’effet, il se déclenche quand la valeur du table element est a 0.
  • NoBool : cet effet accepte les valeurs variable, si c’est a false ca sera 0 ou 255, autant dire que ca sera souvent a true.
  • Layer : alors là on attaque une notion cruciale des effets MX, plus le numéro de layer sera élevé, plus l’effet sera devant. si vous ne renseignez rien un numéro de layer sera attribuer dans l’ordre de création des effets au loading du .ini donc les derniers devant. Vous pouvez les régler vous même mais ça sera à vous de gérer qui est devant et qui est derrière. Je pense que ça sera une des features du debugger de montrer les effets dans l’ordre de leur layer :).

Section Area

  • Effect Type : C’est ici qu’on va vraiment définir le type d’effet que l’on veux afficher, on reviendra plus tard sur les différents types.
  • Top, Left, Width, Height : ca va définir ou va s’afficher votre effet dans la matrice de votre ledstrip, tous ces chiffres sont en pourcentage puisque chaque ledstrip peut avoir des largeurs et des hauteurs différentes. Top et Left indiquent ou commence le cadre de votre effet, Width et Height vont indiquer la taille du cadre de votre effet.

Section Colors

  • Color : Ici vous pouvez indiquer la couleur de votre effet. Cette couleur est a choisir parmi les couleurs définies dans le .ini généré par le DofConfigTool. Il y aura aussi moyen de définir une couleur vraiment custom à terme.
  • Intensity : Au lieu d’un couleur vous pouvez définir une intensité qui sera une nuance de gris plus ou moins forte en fonction de la valeur. Je pense que c’est éventuellement utilisé pour les effets Bitmap mais je suis pas sur. Elle est à -1 si une couleur à été indiquée.

Section Timers

  • MinDuration : L’effet restera actif au moins pour cette durée, si ce n’est pas renseigné ça utilisera les default des Settings. Cela assure que votre effet sera vu avec la latence de déclenchement des ledstrips.
  • MaxDuration : L’effet ne durera pas plus que cette durée
  • Duration: L’effet à une durée fixe
  • ExtendedDuration : l’effet suivant aura la durée étendue et commencera après cet effet (???).
  • WaitDuration : temps d’attente avec de déclencher l’effet

Section Blink

  • Blink Numbers : Le nombre de flash que l’on veut, -1 va flasher pendant 1 seconde.
  • Blink Interval : l’intervalle de temps entre deux flash (si vous avez donné un nombre de flash, le blibnk va durer BlinkNumbers * BlinkInterval ms)
  • Blink Pulse Width : le pourcentage ou le flash reste allumé pendant cet intervalle.
  • Blink Low Intensity : donne l’intensité du flash quand il est “éteint”, permet de garde le flash légèrement allumé dans les phases basses.
  • Blink Interval Nested : indique un nouvel intervalle à l’intérieure de l’intervalle principal pour faire flasher encore plus vite suivant une autre période que l’intervalle principal.
  • Blink Pulse Width Nested : le pourcentage ou le flash est allumé dans l’intervalle secondaire.

Section Fade

  • Fading Down Duration : durée de disparition de l’effet de Color/Intensity vers alpha 0.
  • Fading Up Duration : durée d’apparition de l’effet de alpha 0 vers Color/Intensity

En choisissant l’Effect Type vous allez faire apparaitre des nouvelles sections suivant le type :

Section Shape

L’effect shape affiche l’une des shapes prédéfinies dans le fichier de DirectOutputShapes.xml et .png.

Je vous conseille ce super tuto si vous voulez aller faire les cons avec les shapes

https://montetoncab.fr/customisation-des-dof-shapes/

Sinon vous avez juste à choisir une Shape parmi la liste fournie.

Section Bitmap

L’effet Bitmap, comme le shape, va afficher une image mais il va cette fois aller la chercher dans le fichier <RomName>.png ou .gif dans le même répertoire que le .ini. c’est donc là que le nom de la rom prends tout son sens.

  • Top, Left, Width, Height : indique le cadre qui va servir à récupérer l’image (cette fois-ci en pixels)
  • Frame : récupérera la frame de l’image quand il s’agit d’un .gif. Plus très utilisé puisque l’on peut faire des animations autrement.
  • Animation Behaviour : Once -> une seule fois, Loop -> en boucle et restart , Current -> en boucle mais reprends là où l’anim en était si on relance le même effet.
  • Animation Direction : Frame -> dans les frame d’un gif, Down -> vers le bas, Right -> vers la droite
  • Animation Step Size : déplacement entre chaque frame d’animation (peut etre négatif pour aller vers le haut et la gauche)
  • Animation Step Count : nombre de frame d’animation
  • Animation Step Duration : délai entre deux frames en ms (33ms -> 30FPS, 16ms -> 60FPS…)

Section Plasma

L’effet Plasma affiche…..un plasma.

  • Color 2 : Une seconde couleur pour l’effet
  • Density : la densité du plasma
  • Speed : la vitesse de déplacement du plasma

oui je sais…..mais bon là c’est les goûts et les couleurs, je vais pas expliquer l’algo du plasma 🙂

Si ca vous intéresse https://www.bidouille.org/prog/plasma

Section Shift

L’effet shift fait un déplacement de l’area que vous avez défini, genre les lasers dans les side.

En gros suivant le sens il va faire parcourir une barre de 1 pixel de large dans le sens de la direction avec la vitesse/accélération qu’on lui a donné. combiné à du Fade ca donne des effets de trainées.

  • Direction : Sens de défilement Haut, Bas, Gauche, Droite
  • Speed : vitesse de parcours en pourcentage de la dimension dans le sens de la direction par seconde (oui je sais ca fait mal au crane, par exemple à 200 vers la droite il va mettre 0.5 seconde à parcourir le Width de la zone d’affichage de l’effet) , si c’est a 0 ca sera quand même à 1.
  • Acceleration : même chose que le speed mais pour l’acceleration, là franchement ca va être au jugé.

Section Flicker

Le Flicker c’est l’effet petites étoiles qu’on retrouve dans Harry Potter et Stranger Things entre autre.

  • Density : pourcentage de pixels dans la zone d’affichage qui seront allumés à un instant t.
  • Min, Max Duration : la durée minimale/maximale de chaque pixel indépendamment, la durée de chaque pixel sera tirée aléatoirement entre ces deux valeurs.
  • Fade duration : temps d’apparition/disparition de chaque pixel

Voilà normalement avec tout ça vous devriez pouvoir vous débrouiller !

On va maintenant parler des boutons disponible dans la fenêtre d’édition.

New Table, Load et Save

Ces troispremier boutons vont vous permettre de clear votre table d’édition, et de charger ou sauver vos edition en cours dans des fichiers .lctk.

Le fichier .lctk est un XML en fait, vous pouvez d’ailleurs aussi le sauver/charger avec l’extension Xml si vous préférez.

Import/Export DofConfigTool

LCTK, pour être vraiment intéressant, peut importer ou exporter les fameuses lignes DofConfigTool que personne ne comprends 🙂

En appuyant sur Import vous allez avoir cette fenêtre :

Si vous avez préalablement récupéré une ligne dans votre DofConfigTool, disons la PF Back Effects MX, il vous suffit de coller cette ligne dans le champs en haut et de choisir vers quel toy vous voulez l’importer.

Vous verrez instantanément tous les effets qui se trouvaient dans cette ligne, il peut y en avoir pas mal.

Avant de générer vous pouvez effacer tous les effets qui ne vous intéressent pas, par exemple ici si les E104 vous vous en fouttez, hop vous les sélectionnez et Delete.

Vous appuyez ensuite sur Generate Effects et vous récupérez tous les effets directement dans votre table d’edition avec les bons Table Element déjà configurés.

Dans l’autre sens, quand vous avez fini avec votre table et que vous voulez transférer tout ça soit dans votre .ini soit directement dans le DofConfigTool, vous n’avez qu’à appuyer sur Export Dof et vous aurez cette fenêtre :

Là aussi, c’est tout simple, vous choisissez dans quelle ligne Dof vous voulez exporter et ca vous sortira la ligne préformattée qui liste les effets sur le Toy que vous aviez désigné pour cet output dans les Settings (rappelez vous dans l’édition des Preview Area). Si vous avez désigné votre toy backboard comme étant lié à la sortie PFBackEffectsMX, ça vous préparera la ligne que pour la backboard en choisissant PFBackEffectsMX.

Vous n’avez plus qu’à sélectionner tout ce qui se trouve dans la fenêtre d’output et le copier/coller dans votre ligne DofConfigTool ou votre .ini (c’est plus tendu car sur la même ligne il y a tous les outputs séparés par une “,” y compris les effets Flashers MX ou Beacon MX qui sont autogénérés par DofConfigTool, en gros je vous le déconseille).

Bien sûr s’il y avait déjà des choses dans cette ligne DofConfigTool et que vous voulez en ajouter, vous devrez prendre ce qui est déjà là puis ajouter “/” et votre nouvelle ligne.

Laisser un commentaire



Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.