ASTROFOX
Plugins

Plugin-Referenz

Referenz für Astrofox-Plugin-Manifeste, Steuerelemente, Audiodaten, Uniforms und Frames.

Jedes Plugin beginnt mit einem astrofox.plugin.json-Manifest.

Manifest-Felder#

FeldTypBeschreibung
apinumberVersion der Plugin-Spezifikation. Verwende 1.
namestringErforderliche ID mit Namespace, etwa @author/plugin-name.
versionstringRelease-Version des Plugins.
labelstringName, der in Menüs und im Ebenen-Bedienfeld angezeigt wird.
descriptionstringKurze Erklärung, die bei der Installation angezeigt wird.
authorstringAutor oder Organisation des Plugins.
typestringdisplay oder effect.
runtimestringshader oder worker. Displays können beides verwenden; Effekte erfordern shader.
shaderstringPfad zum Fragment-Shader für die Shader-Laufzeitumgebung.
entrystringPfad zum ES-Modul für die Worker-Laufzeitumgebung.
iconstringOptionaler Pfad zu einem Symbol, das in Menüs angezeigt wird.
permissionsstring[]Angeforderte Fähigkeiten, derzeit unter anderem network.
librariesstring[]Von einem Worker angeforderte Host-Bibliotheken; derzeit three.
camerabooleanFügt einem Worker-Display die Kamerasteuerung des Hosts hinzu.
audioobjectVom Plugin angeforderte FFT- und Zeitbereichsdaten.
defaultPropertiesobjectAnfangswerte der Eigenschaften für jede neue Instanz.
controlsobjectDeklaratives Schema für das Steuerungs-Bedienfeld.
uniformsobjectZuordnung von Eigenschaften zu Uniforms für Shader-Laufzeitumgebungen.

Pfade werden relativ zur Manifest-URL aufgelöst. Veröffentlichte Dateien müssen HTTPS verwenden; http://localhost ist für die Entwicklung erlaubt.

Audiodaten#

Deklariere nur die Audiodaten, die das Plugin benötigt:

WertBereich und Bedeutung
fft.bins1–512 normalisierte Frequenzwerte
fft.minFrequency / maxFrequencyFrequenzfenster in Hertz
fft.smoothingExponentielle Glättung von 0–0,99
fft.minDecibels / maxDecibelsGrenzen für die Normalisierung des Eingangspegels
td.samplesAnzahl der Samples der Zeitbereichs-Wellenform

FFT-Werte liegen zwischen 0 und 1. Zeitbereichswerte liegen ebenfalls zwischen 0 und 1, wobei Stille bei 0,5 zentriert ist. Worker-Displays können sowohl FFT- als auch Zeitbereichsdaten anfordern. Shader-Displays erhalten nur FFT und Lautstärke. Shader-Effekte erhalten Lautstärke, Zeit, Delta und inputTexture – keine FFT- oder Zeitbereichs-Arrays. Bei der Wiedergabe und beim Videoexport wird derselbe Analyseweg verwendet.

Steuerelemente#

Unterstützte Steuerelementtypen sind text, number, toggle, checkbox, color, colorrange, range, select und time.

Häufige Felder sind:

FeldZweck
labelLesbarer Name des Steuerelements
typeZu rendernde Eingabekomponente
min, max, stepNumerische Grenzen und Genauigkeit
withRangeZeigt einen Schieberegler für eine numerische Eingabe an
withReactorErlaubt einem Reaktor, diese Eigenschaft zu steuern
itemsVerfügbare Werte für eine Auswahleingabe
hiddenBlendet die Eingabe bedingt oder dauerhaft aus

Da ein Manifest aus JSON besteht, verwenden dynamische Werte Verweise:

Verweise auf die Bühne können scale enthalten; zum Beispiel wird { "$stage": "width", "scale": -1 } zur negativen Bühnenbreite aufgelöst.

Uniform-Zuordnung#

Shader-Laufzeitumgebungen ordnen Eigenschaften GLSL-Uniforms zu:

color wandelt eine hexadezimale Farbe in einen Vektor mit drei Komponenten um. Vektor-Zuordnungen lesen ihre Komponenten aus den aufgeführten Eigenschaften.

Eingaben der Worker-Factory#

Je nach Manifest erhält eine Worker-Factory:

EingabeBeschreibung
propertiesAnfängliche Eigenschaftswerte aus Manifest und Instanz
seedStabiler Zufalls-Seed pro Instanz
sizeAktuelle Abmessungen der Bühne
librariesNamespaces der angeforderten Host-Bibliotheken
rendererGemeinsam genutzter Three.js-Renderer, wenn three angefordert wird

Frame-Daten#

render(frame) erhält:

FeldBeschreibung
idFrame-Kennung
timeDeterministische Zeit in Sekunden
deltaZeit seit dem vorherigen Frame in Millisekunden
playingOb die Zeitleiste oder die Live-Eingabe aktiv ist
exportingOb gerade ein Offline-Export gerendert wird
volumeNormalisierter Gesamtpegel des Audios
seedStabiler Seed der Plugin-Instanz
fftAngefordertes FFT-Array, sofern konfiguriert
tdAngefordertes Zeitbereichs-Array, sofern konfiguriert

Während des Exports ist delta fest auf 1000 / fps gesetzt. Verwende time, delta und seed für reproduzierbare Animationen.

Render-Ergebnis#

Eine Worker-Methode render() kann Folgendes zurückgeben:

Breite und Höhe legen die Grenzen der Ebene fest. Die optionalen Ursprungswerte legen ihren Transformationsursprung fest.