ASTROFOX
Plugins

Référence des plugins

Référence des manifestes, commandes, données audio, uniforms et images des plugins Astrofox.

Tout plugin commence par un manifeste astrofox.plugin.json.

Champs du manifeste#

ChampTypeDescription
apinumberVersion de la spécification des plugins. Utilisez 1.
namestringIdentifiant avec espace de noms obligatoire, par exemple @author/plugin-name.
versionstringVersion publiée du plugin.
labelstringNom affiché dans les menus et dans le panneau Calques.
descriptionstringCourte explication affichée pendant l'installation.
authorstringAuteur ou organisation à l'origine du plugin.
typestringdisplay ou effect.
runtimestringshader ou worker. Les affichages peuvent utiliser l'un ou l'autre ; les effets exigent shader.
shaderstringChemin du fragment shader pour un environnement d'exécution shader.
entrystringChemin du module ES pour un environnement d'exécution worker.
iconstringChemin facultatif de l'icône affichée dans les menus.
permissionsstring[]Capacités demandées, dont actuellement network.
librariesstring[]Bibliothèques de l'hôte demandées par un worker ; actuellement three.
camerabooleanAjoute les commandes de caméra de l'hôte à un affichage worker.
audioobjectDonnées FFT et temporelles demandées par le plugin.
defaultPropertiesobjectValeurs initiales des propriétés pour chaque nouvelle instance.
controlsobjectSchéma déclaratif du panneau Commandes.
uniformsobjectCorrespondance entre propriétés et uniforms pour les environnements d'exécution shader.

Les chemins sont résolus par rapport à l'URL du manifeste. Les fichiers publiés doivent utiliser HTTPS ; http://localhost est autorisé pour le développement.

Données audio#

Déclarez uniquement les données audio dont le plugin a besoin :

ValeurPlage et signification
fft.binsDe 1 à 512 valeurs de fréquence normalisées
fft.minFrequency / maxFrequencyFenêtre de fréquences en hertz
fft.smoothingLissage exponentiel de 0 à 0,99
fft.minDecibels / maxDecibelsBornes de normalisation du niveau d'entrée
td.samplesNombre d'échantillons de forme d'onde dans le domaine temporel

Les valeurs FFT sont comprises entre 0 et 1. Les valeurs du domaine temporel sont également comprises entre 0 et 1, le silence étant centré sur 0,5. Les affichages worker peuvent demander à la fois des données FFT et des données temporelles. Les affichages shader ne reçoivent que les données FFT et le volume. Les effets shader reçoivent le volume, le temps, le delta et inputTexture, mais pas de tableaux FFT ni de données temporelles. Le même processus d'analyse est utilisé pendant la lecture et l'exportation vidéo.

Commandes#

Les types de commandes pris en charge sont text, number, toggle, checkbox, color, colorrange, range, select et time.

Les champs courants sont notamment :

ChampRôle
labelNom lisible de la commande
typeComposant de saisie à afficher
min, max, stepBornes et précision numériques
withRangeAffiche un curseur pour une saisie numérique
withReactorPermet à un réacteur de piloter cette propriété
itemsValeurs disponibles pour une liste de sélection
hiddenMasque la saisie de façon conditionnelle ou permanente

Un manifeste étant du JSON, les valeurs dynamiques utilisent des références :

Les références au plateau peuvent inclure scale ; par exemple, { "$stage": "width", "scale": -1 } correspond à la largeur du plateau en négatif.

Correspondance des uniforms#

Les environnements d'exécution shader associent les propriétés à des uniforms GLSL :

color convertit une couleur hexadécimale en vecteur à trois composantes. Les correspondances vectorielles lisent leurs composantes dans les propriétés listées.

Entrées de la fabrique worker#

Selon son manifeste, une fabrique worker reçoit :

EntréeDescription
propertiesValeurs initiales des propriétés du manifeste et de l'instance
seedGraine aléatoire stable propre à l'instance
sizeDimensions actuelles du plateau
librariesEspaces de noms des bibliothèques de l'hôte demandées
rendererMoteur de rendu Three.js partagé lorsque three est demandé

Données d'image#

render(frame) reçoit :

ChampDescription
idIdentifiant de l'image
timeTemps déterministe en secondes
deltaTemps écoulé depuis l'image précédente, en millisecondes
playingIndique si la ligne temporelle ou l'entrée en direct est active
exportingIndique si une exportation hors ligne est en cours de rendu
volumeNiveau audio global normalisé
seedGraine stable de l'instance du plugin
fftTableau FFT demandé, s'il est configuré
tdTableau de données temporelles demandé, s'il est configuré

Pendant l'exportation, delta est fixé à 1000 / fps. Utilisez time, delta et seed pour obtenir une animation reproductible.

Résultat du rendu#

La méthode render() d'un worker peut renvoyer :

La largeur et la hauteur définissent les limites du calque. Les valeurs d'origine facultatives définissent son point d'origine de transformation.