Es gibt verschiedene Möglichkeiten wie man Parameterwerte kopiert, einfügt und referenzieren. Ob per Drag & Drop oder Kontextmenü dabei ist folgendes zu beachten.
1. Operator auf Parameter-Feld ziehen (Viewer Active: An vs. Aus)
Ob der Viewer Active-Modus des Operators aktiviert ist (das kleine Plus-Symbol unten rechts am Operator oder Taste A), entscheidet darüber, was du genau ziehst:
Zustand
Aktion
Ergebnis & Verwendung
Viewer Active: AUS (Normaler Operator-Knoten)
Klicke auf den Operator selbst und ziehe ihn in ein Parameter-Feld.
Fügt den Operator-Namen / Pfad ein (z. B. null1 oder /project1/geo1). Ideal für Parameter, die einen Operator-Pfad erwarten (z. B. "TOP", "CHOP" oder "SOP" Parameter).
Viewer Active: AN (Aktivierte Interaktion im Knoten)
Ziehe einen spezifischen Kanal (CHOP) oder Zell-Inhalt (DAT) aus dem Inhalt der Anzeige.
Es öffnet sich das Zuweisungs-Menü:
Export CHOP: Direct Export (Grün). Ideal für Live-Signale.
CHOP Reference: Python-Referenz op('null1')['chan1'] (Blau).
2. Parameter-zu-Parameter Drag & Drop
Ziehe den Namen/Beschriftung eines Parameters direkt auf einen anderen Parameter in einem (anderen) Parameter-Fenster:
Option im Popup-Menü
Ergebnis
Anwendungsfall
Export CHOP
Direkter CHOP-Export (Grün).
High-Performance Animationen / Signale.
Python Reference
Python-Referenz z. B. op('geo1').par.tx (Blau).
Standard-Weg für dynamische Verknüpfungen.
Bind
Zweiseitige Synchronisation (Violett). A ändert B und B ändert A.
Custom UI Controls, Schieberegler-Sync.
Constant
Kopiert nur den statischen Wert als Zahl/Text (Grau).
Einmaliges Duplizieren ohne Verknüpfung.
3. Kontextmenü (Rechtsklick auf Parameter)
Menü-Funktion
Ablauf / Funktion
Copy Parameter
Kopiert den Parameter und seinen Pfad in die Zwischenablage.
Paste Value
Fügt nur den statischen Wert ein (Constant Mode).
Paste Expression / Reference
Fügt den kopierten Parameter als Python-Referenz ein (Blau).
Paste Bind
Erstellt eine zweiseitige Bindung (Violett).
4. Channel als Ausgang anlegen
Verbinde einen Operator, der mehrere Channels hat mit mehreren Select Operatoren. Wähle in jedem Select Operator unter Channel Names nur einen Channel aus DropDown Liste (Down Arrow) aus. Nun kannst du jeden Channel mit einem Operator verbinden.
Will man mehrere Channels irgendwo in einem Eingabe/Auswahlfeld haben, gibt man die Namen mit Leerzeichen getrennt ein.
Snippets tox & Komponenten
Tox, Snippets
Um einzelne Operatoren mit bestimmten eingestellten Parametern, oder ein kleines Netzwerk aus Operatoren zu speichern, erzeuge ein Base Comp, füge dort das Netzwerk ein und wähle aus dem Kontextmenü des BaseSave Komponent tox
Du kannst es per drag&drop aus dem Explorer in Touch Designer auf die Bühne ziehen.
Komponenten
Hast du fertige Komponenten / Bausteine erstellt, die du immer wieder verwenden willst, erzeuge ein Base am Besten mit einem in und einem out und füge es in die Paletten ein.
Publish for Player
Über die COMP Fenster wird eine Hierachie aufgebaut, man kann man mit mittlerem Mausrad in der Hierachie rein und rausscrollen. Siehe auch die Pfadleiste oben. Auf der root Ebene befindet sich das Projekt Fenster. Dort gibt man unter Parameter: Look an, welches Fenster angzeigt werden soll, wenn man F1 klickt oder wenn man den Touch Designer Player aufruft. (mit Esc geht es zurück)
Wenn im Player sofort etwas angezeigt werden soll, gehe folgendermaßen vor:
Automation beim Programmstart aktivieren:
Hauptmenü: Dialogs → Window Placement öffnen (oder Tastenkombination Alt + W drücken).
Option ganz oben Start in Perform Mode aktivieren.
Im TouchPlayer ausführen:
TouchDesigner Player starten.
Die gespeicherte .toe-Datei auswählen oder per Drag-and-Drop auf das Player-Icon ziehen.
TOP
TOP Texture Operator
Alles was mit Pixeln und Bildverarbeitung zu tun hat. Bilder, Videos, Vektor, Text einfügen, erstellen, ändern und exportieren. 3D Geometrie rendern oder zweidimensional darstellen. All das läuft auf der GPU Grafikkarte. youtube Video
MoviefileIn ist für Bild und Filmdateien gedacht. Im Parameterfenster kann man den Pfad zur Datei ändern. Drag & Drop geht auch.
Will man die Größe aus dem Projectfenster einsetzen, Scrolle mit mittlerem Mauswheel zurück auf root. Im Projektfenster Parameter: Layout sieht man die Größe. Um darauf zu referenzieren, folgendes Python Script:
me.parent().width
me.parent().height
Circle Kreis mit vielen Einsellungen
Rectangle mit vielen Einstellungen
Ramp Farbverlauf
Displace Photoshop Filter Displacement Map. 2 Bilder werden übereinander gelegt die Tiefenwerte des einen Bildes werden verwendet, um die Pixel des anderen Bildes zu verschieben (siehe Doku) Beispiel 02-feedback
Transform Drehen, Größe ändern Tile -> Repeat dann Transform -> Scale verkleinern für Kachelung
Hintergrundfarbe anstatt Transparenz Transform->Background Color 0,0,0,1 dann Comp Over Background Color : On
Text Hier kann man Text darstellen mit den üblichen Schrifformatierungen
Noise erzeugt ein Bild in dem jeder Pixel mit einem Algorythmus erzeugt wird. Die Methoden: Perlin Noise 3D, etc. Bei Random bekommt jeder Pixel eine Zufallsfarbe, bei den anderen Methoden, beziehen sich die Werte der benachbarten Pixel aufeinander. Siehe dazu auch den Noise CHOP und ändere die Methode auf Random um zu sehen, dass dort bei jedem Sample die Pixel ganz unterschiedlich sind, während bei Sparse, die nächsten Werte nicht sehr weit vom vorigen entfernt sind.
Ein bewegliches Noise entsteht wenn man einen oder mehrere der Werte Parameter transform-> translate-> tx ty tz mittels Python Script verändert absTime.seconds * 0.1
Am besten man nimmt Perlin3D und verändert tz.
Ebenen / Mischen / Layermethoden
Ähnlich wie man in Photoshop oder anderen Programmen mehrere Bilder in Ebenen anlegt und Pixelverrechnungen wie add, multiply, difference anwendet, kann man in Touch Designer dazu mehrere Operatoren verwenden oder gleich den Composite wählen, der all die Methoden vereint.
Add ziehe 2 Moviefilein oder andere Pixeldaten auf das Add. Die Pixel werden mit der Methode add gemischt, Es gibt auch den Mulitply, Subtract, Differnce, Over, Inside, Outside etc, besser ist Composite, hier kann man die Methoden auswählen, die es auch als einzelne TOPs gibt, wie in der Ebenenpalette in Photoshop und auch mehr als 2 Eingänge nutzen
Die einzelnen Eingänge im Composite erscheinen im Parameter. Dort kann man deren Reihenfolge ändern und sie dekativieren. Will man ein Element mit Transparenz mit Farbe/Verlauf füllen wählt man inside oder umgekehrt outside, dann wird die Transparenz mit der Farbe gefüllt. Es funktioniert wie Masken. Over berücksichtigt nur die Alphawerte. Die Bilder liegen wie bei einer Collage übereinander
Verlaufsumsetzung
Ramp & LookUp TOP
Graustufenwerte eines Bildes z.B: Noise (TOP) mit Farben versehen.
Verbinde ein Noise und ein Ramp mit einem Lookup RampInterpolation Linear
Das Prinzip einer Feedback-Schleife mit einem Noise TOP funktioniert so: Ein initiales Bild (Noise) wird kontinuierlich über ein Frame leicht transformiert (z. B. verschoben, skaliert oder verzerrt), mit dem ursprünglichen Bild verrechnet und wieder an den Anfang zurückgespeist. Dadurch entstehen organische, flüssige Muster, die wie Wolken, Rauch oder flüssige Kristalle wirken.
CHOP
CHOP Channel Operators
Channel-Operators , sind eine leistungsstarke Technologie, die die Verarbeitung von Bewegung, Audio, Mathematik, Logik, MIDI-Daten, numerischen Informationen und Daten ermöglicht, die von/zu Geräten und Protokollen gestreamt werden.
Mit CHOPs können Kreative Bewegungen auf einer kreativeren Ebene betrachten und mehr mit ihnen experimentieren als mit jeder anderen Animationstechnologie.
Ein CHOP enthält einen oder mehrere benannte Kanäle . Die Kanäle eines CHOP bestehen aus einer Sequenz von einem oder mehreren „ Samples “. Ein Sample ist eine Gleitkommazahl pro Kanal.
Ein CHOP hat eine Abtastrate , d. h. die Anzahl der Abtastungen pro Sekunde, die nur dann relevant ist, wenn ein CHOP Animationen oder Audio über die Zeit darstellt.
Die Länge eines CHOPs wird in Samples angegeben. Wenn der CHOP eine Animation oder Audio darstellt, kann die Länge auch in Sekunden oder Frames angegeben werden. Ein Frame ist eine Zeiteinheit der Timeline, typischerweise 1/60 Sekunde.
Constant hat einen oder mehrere Channels mit jeweils einem statischen Wert
LFO Sinuskurve, Sägezahn (Ramp), Pulse, etc.
Setze mehrere Channels im Eingabefenster mit Leerzeichen getrennt
Trail zeigt die Samples als Kurve, setzte es hinter ein LFO
Noise erzeugt zufällige Werte, die je nach Algotyhtmus nicht komplett wirr sind, sondern sich auf die vorigen Werte beziehen und somit eine geschwungene Kurve bilden. Auf der horizontalen Achse sieht man die Anzahl der Samples und auf der vertikalen die Werte der Punkte. Die Punkte werden mit einer AbtastrateChannel -> SampleRate nacheinander abgespielt. Unter Channel kann man die Anzahl (Samples) mittels Start und End einstellen. Die Channel->Sample Rate ist standardmäßig 60 pro Sekunde. Bei 600 Samples sind das 10 Sekunden lang unterschiedliche Werte, dann wiederholen sich die Werte.
Common->Timeslice on verändert die Ansicht. Man sieht nur den aktuellen Punkt der gerade abgespielt wird. Im Graphmode sieht man die komplette Kurve
Es sind auch mehrere Channels möglich, sie liefern verschiedene Werte, gemäß den Einstellungen.600. Das bedeutet es sind 600 Werte
Fenster Kontext Dots per Sample, zeigt die Punkte an.
Im Viewer Active kann man die Ansicht der Kurve hin und her schieben,
mittlere Maustaste kleiner größer, H Taste zentriert die Ansicht. Stattdessen kann man auch Parameter: Transform nutzen
Möchte man ständig neue Werte, die die sich nicht nach der Gesamtanzahl der Samples wiederholen, kann man unter Transform für Rx folgendes Script einfügen
absTime.frame * .5
Wenn man ein noise TOP einfügt und diesem eine Common->Resolution -> Höhe von 1 zuweist, und dann ein Top to (CHOP) hinten anfügt verhält es sich wie noise CHOP
Wave kann man nicht in Common->TimeSlice Mode umschalten
Keyboard Parameter: Keys->Keys kannst du Tasten aussuchen, die du abfragen willst. Dort kann man auch mit Leerzeichen getrennt mehrere Tasten eintragen z.B. 1 2 3 a d.
Man kann den Wert einer gedrückten Taste beispielsweise für den Alpha Wert eines Kreises nutzen. Das bewirkt dass der Kreis nur zu sehen ist, wenn die Taste gedrückt ist.
Filter CHOP ermöglicht einen weichen Übergang eines Signals (z.B.:Keyboard) Filter Width definiert die Übergangsgeschwindigkeit. Hänge einen Trail an den Filter, um zu sehen, wie die On-Off-Kurve abgerundet wird
MouseIn liefert die Mauswerte X- und Y-Position
Midi in Gehe vorher im Menü oben auf Dialog - Midi Device- Mapper Wähle Create New Mapping und wähle dann aus der Liste 1 das Midi Gerät aus, z.B.: ModX1
Nachdem du das Midi In erstellt hast, sollten dort 3 Channels erscheinen, Sense, Clock, BMP Klicke nur eine Taste und es erscheinen 2 neue Kanäle, eine für Anschlag eine für Losgelassen. Drehe am Rad, in neuer Kanal erscheint.
Verdbinde Midi in mit mehreren Select unter Channel Names kannst du den gewünschten Channel eintragen oder über den Pfeil ein Dropdown Menü aufrufen und dann auswählen. siehe auch Channel als Output
Pattern CHOP – Die wichtigsten Parameter
Der Pattern CHOP erzeugt ein statisches, array-basiertes Signal über eine feste Sample-Anzahl (ohne eigene Zeitachse).
Type (wavetype)
Bestimmt die mathematische Grundform des Signals (z. B. Sine, Cosine, Ramp, Constant oder Random).
Length (length)
Legt die exakte Anzahl der Samples (Datenpunkte/Array-Größe) für den CHOP fest – ideal zur Steuerung von Instanz-Anzahlen.
Number of Cycles (numcycles)
Gibt an, wie oft die gewählte Wellenform über die gesamte Length hinweg wiederholt wird (z. B. 0.5 für nur eine halbe Welle).
Phase (phase)
Verschiebt den Startpunkt der Welle horizontal. Kann mit Time-Expressions wie absTime.seconds animiert werden.
Phase Step (phasestep)
Versetzt die Phase schrittweise von Kanal zu Kanal. Ein Versatz von 0.25 bei zwei Kanälen ergibt z. B. eine Kreisbahn.
From Range (fromrange)
Der zu erwartende Eingangswertebereich der Welle (z. B. -1 bis 1 beim Sinus) für die mathematische Umrechnung.
To Range (torange)
Der gewünschte Zielwertebereich, auf den die Werte skaliert werden sollen (entspricht der map()-Funktion aus Arduino/Processing).
Amplitude / Offset (amp / offset)
Manuelle Skalierung der Signalhöhe (Amplitude) und vertikale Verschiebung der Grundlinie (Offset) nach oben/unten.
Limit CHOP
Mit Limit kann man Werte klammern. Nehmen wir eine Sinus-Welle von -1 zu 1. Mit LimitType: Clamp, Minimum 0, würden man nur den Anstieg über 0 sehen, der zweite Teil der Sinuskurve, das Tal unter 0, würde zu einer geraden Linie auf der 0 ergeben.
Ziel
Richtige Einstellung im Limit CHOP
Negative Werte ins Positive spiegeln ($-x \to +x$)
Positive Only = On
Alles unter 0 knallhart bei 0 abschneiden (flach deckeln)
Limit Type = Clamp mit Minimum = 0
Signal automatisch auf z. B. 0 bis 1 strecken
Normalize = On mit Normalize Range = 0 1
Der Unterschied zu einer normalen From Range / To Range (wie im Math oder Pattern CHOP) ist:
Automatisches Scaling: Du musst keinen Eingangsbereich (From Range) angeben. Der Limit CHOP analysiert dein Signal, sucht selbstständig den aktuell tiefsten und höchsten Wert deines Signals und dehnt/staucht diesen Bereich exakt auf deine eingegebene Normalize Range (z. B. 0 ... 1).
Dynamisch vs. Statisch:
Wenn sich dein Signal verändert (z. B. Amplitude schrumpft), passt der Limit CHOP die Skalierung dynamisch an, sodass der Höchstwert immer 1 und der Tiefstwert immer 0 erreicht.
Die Funktionsmodi (Type) im Limit CHOP
Um die folgenden Einstellungen zu sehen, erzeuge ein Pattern, Ramp mit 2 Cycles und hänge das Limit daran.
Modus
Funktionsweise
Beispiel
Clamp (Standard)
Hartes Abrasieren des Signals. Der Wert bleibt starr beim Maximum stehen.
Max = 1.5. Eingang = 2.3 → Ausgang = 1.5.
Loop
Fängt beim Überschreiten des Maximums wieder unten beim Minimum an (Schleife).
Bereich 0–1. Eingang = 1.2 → Ausgang = 0.2.
Zigzag
Kehrt die Richtung um, sobald das Maximum erreicht wird (Pendel).
Läuft bis 1.0 und federt dann wieder zurück Richtung 0.0.
resample CHOP rechnet die Anzahl von Samples um. Man hängt es beispielsweise an ein Audiospectrum mit FFT 16000. Das liefert pro Frame 8000 Werte. Das Resample CHOP rundet die Werte nicht einfach ab, sondern führt eine mathematische Interpolation (Gleitwertberechnung) durch.
Sample Rate Herunterrechnen (Downsampling): Wenn du Resample so einstellst, dass am Ende nur 60 Samples übrig bleiben, nimmt der Operator den Verlauf der 8.192 Punkte und berechnet 60 neue, gleichmäßig verteilte Punkte entlang dieser Kurve.
Interpolation / Glättung: Je nach eingestellter Interpolationsmethode im Resample CHOP (Linear oder Cubic) werden extreme, einzelne Ausschläge sanft in die 60 Punkte eingerechnet, damit die Visualisierung nicht jittert oder flackert.
Das Ergebnis
Aus einem unhandlichen, rechenintensiven Array aus tausenden Frequenz-Punkten wird eine schlanke Datenreihe von genau 60 Werten pro Frame.
Diese 60 Werte genügen perfekt, um z. B. eine geschmeidige Linie aus 60 Instanzen zu steuern, ohne deine Grafikkarte (GPU) oder CPU zu überlasten.
Über den Parameter Interpolation (unter der Registerkarte Resample) legst du fest, nach welchem mathematischen Verfahren TouchDesigner die neuen Datenpunkte berechnet:
Method
Wie es rechnet
Visualisierung
Linear (Standard)
Zieht gerade Linien zwischen den ursprünglichen Datenpunkten und liest die neuen Werte auf dieser Geraden ab.
Zackig / Direkt. Schnell und knackig, kann bei abrupten Pegeländerungen etwas kantig wirken.
Cubic
Berechnet eine geschwungene, abgerundete Kurve (Spline) durch die ursprünglichen Punkte.
Weich / Fließend. Die erzeugte Linie oder Instanz-Beobachtung bewegt sich organisch und sanft.
Maximum
Nimmt aus dem jeweiligen Frequenzabschnitt immer den höchsten gemessenen Wert.
Aktiv / Aggressiv. Verpasst keine transienten Ausschläge (wie Kicks oder Snares), selbst wenn auf 60 Samples heruntergerechnet wird.
Ein Envelope (Hüllkurve) beschreibt in der Audiotechnik den vertikalen Verlauf des Lautstärke-Prustens bzw. der Gesamtenergie eines Signals über die Zeit, losgelöst von den schnellen Schwingungen der eigentlichen Tonhöhe.
Das Tonsignal schwingt tausendfach pro Sekunde zwischen positiven und negativen Werten hin und her. Der Envelope zieht eine glatte Linie über die Spitzen dieser Schwingungen und zeigt, wie laut das Signal in jedem Moment insgesamt ist.
Daher auch der Name Envelope (Umschlag) oder Hüllkurve, wie eine Hülle oder ein Sack, der sich um das Signal legt.
Der Algorithmus Schritt für Schritt
Die Logik beruht auf einem mathematischen Prinzip: Wenn man einen schwankenden Wert durch seinen eigenen Spitzenwert (seine Hüllkurve) teilt, erhält man ein Signal, das im Betrag nie größer als 1 wird (Signal / Maximum = 1).
1. audiodeviceIn CHOP
Was passiert: Ein Audiosignal kommt an
Wertebereich: Schnelle Schwingungen zwischen z. B. -0.3 und +0.3 (bei leiser Musik) oder -0.9 und +0.9 (bei lauter Musik).
2. envelope (Envelope Width = 10)
Was tut er? Er nimmt das Signal und berechnet kontinuierlich die aktuelle Spitzen-Lautstärke.
Was bedeutet Width = 10? Das Fenster, über das die durchschnittliche Spitzen-Lautstärke gemessen wird. Bei 10 Frames schmiegt sich die Hüllkurve sehr träge an Lautstärkeänderungen an.
Ergebnis: Ein rein positiver, langsam verlaufender Wert (z. B. dauerhaft um 0.4$, wenn die Passage leise ist, oder 1.6, wenn sie laut ist).
3.) math (Combine Chops = Divide)
Warum Dividieren? math bekommt zwei Eingänge:
Obener Eingang: Das original Signal aus audiospectrum (schnell schwingend, schwankende Lautstärke).
Unterer Eingang: Das Envelope-Signal (langsam, stellt die aktuelle Höchstgrenze dar).
Der Effekt: Durch die Einstellung Combine CHOPs = Divide rechnet math für jedes Frame:
Ausgangssignal =
Original Signal
Envelope Signal
Ist die Musik leise (z. B. Ausschlag 0.3, Envelope 0.3), ergibt 0.3 / 0.3 = 1.0.
Ist die Musik laut (z. B. Ausschlag 1.5, Envelope 1.5), ergibt 1.5 / 1.5 = 1.0.
Zusammenfassung
Durch das Teilen der Amplitudenausschläge durch ihre eigene Hüllkurve werden leise Abschnitte verstärkt und laute Abschnitte abgesenkt. Das Ausgangssignal wird dynamisch geglättet und nutzt durchgehend die maximale Spanne von -1 bis +1, unabhängig davon, wie laut die ursprüngliche Audiodatei oder das Mikrofonsignal eingestellt war.
Audio
Vorab etwas Theorie. Was ist ein Audiosignal/ Waveform und was ist ein Audiospectrum?
Audiosignal / Waveform & Audio Spectrum
Ton ist nichts anderes als Druckschwankung der Luft (Schwingung).
Ein tiefer Ton (z. B. Bass): Die Schwingung ist langsam und lang gezogen. Der Wert steigt langsam an, fällt langsam ab. Die Strecke zwischen zwei Bergspitzen (die Wellenlänge) ist lang.
Ein hoher Ton (z. B. eine Pfeife): Die Schwingung ist extrem schnell. Der Wert zischte tausendmal pro Sekunde rauf und runter. Die Bergspitzen liegen sehr nah beieinander.
Wie werden beide Töne zu einem
Stell dir vor, du spielst den tiefen Bass und den hohen Ton gleichzeitig.
Was macht das Audio-System? Es führt an jedem einzelnen Zeitpunkt einfach eine Grundschul-Addition durch:
Gesamtwert = Wert des Basses + Wert des hohen Tons
Stell dir eine große Meereswelle vor (das ist der tiefe Bass). Die ganze Wasserfläche hebt und senkt sich langsam. Auf dieser großen Welle reiten aber gleichzeitig viele kleine, zackige Kräuselwellen (der hohe Ton).
Die große Welle trägt die kleinen Töne oben auf ihrem Rücken mit!
Audio Spektrum
Hier kommt die Magie des Audio Spectrum CHOP: Es macht eine mathematische Verwandlung (die sogenannte Fast Fourier-Transformation oder FFT).
Wenn du dir die Welle ansiehst, die der Audio Spectrum CHOP ausgibt, verändert sich die X-Achse komplett:
Links auf der Welle (Tiefe Frequenzen, ~20 bis 250 Hz): Das ist der Bass (Kick-Drum, Bassgitarre). Wenn die Drum schlägt, schlägt hier die Welle hoch aus.
In der Mitte (Mittlere Frequenzen, ~500 bis 4000 Hz): Das sind Stimmen, Gitarren und Synths.
Rechts auf der Welle (Hohe Frequenzen, ~6000 bis 20.000 Hz): Das sind die Höhen (Hi-Hats, Zischen, Becken vom Schlagzeug).
Der Audio Spectrum CHOP schneidet sich also in Echtzeit ein winziges Stückchen der Audio-Datei ab (z. B. die letzten 50 Millisekunden) und rechnet für dich aus: Welche Tonhöhen stecken gerade in diesem Moment wie laut darin?
AudiofileIn -> AudioSpectrum zeigt die Frequenzen an Höhe, Mitten Tiefen. Ein kleiner Wert von FFT Size macht es schneller und logischerweise ungenauer weil hier nur ein kleinerer Millisekundenbereich analysiert wird. Audiospectrum macht das Signal auch ein bisschen weicher.
Audiosignal dynamisch verarbeiten Audiodynamics CHOP
Audiodynamics verarbeitet Audiosignale mit Gain und Kompressor
Gain
Gain ist der Eingangs-Verstärkungsfaktor eines Signals. Er bestimmt, wie stark ein eingehendes Signal (z. B. von einem Mikrofon oder Synthesizer) vor der eigentlichen Verarbeitung verstärkt wird.
Zweck: Ein schwaches Signal auf einen optimalen Arbeitspegel (Line-Level) zu bringen.
Unterschied zu Volume/Fader: Gain stellt die Eingangsintensität ein (beeinflusst den Rauschabstand und die Übersteuerung/Sättigung). Der Volume-Regler steuert lediglich die Ausgangslautstärke für den Mix oder Monitor.
Gain Staging: Das richtige Einstellen des Gains sorgt für maximalen Rauschabstand (Signal-to-Noise Ratio), ohne Clipping oder ungewollte Verzerrung zu erzeugen.
Kompressor
Ein Kompressor ist ein dynamisches Regelwerkzeug. Seine Hauptaufgabe ist die Reduktion der Dynamikspanne (Dynamic Range) eines Audiosignals. Er schlägt an, wenn das Signal zu laut wird, und drückt diese Spitzen herunter. Dadurch wird der Unterschied zwischen den leisesten und lautesten Stellen geringer.
Die wichtigsten Parameter eines Kompressors:
Threshold (Schwellenwert): Der Pegel in dB, ab dem der Kompressor anfängt zu arbeiten. Alles, was darunter liegt, bleibt unberührt.
Ratio (Kompressionsverhältnis): Gibt an, wie stark das Signal oberhalb des Thresholds abgesenkt wird (z. B. 4:1 bedeutet: Überschreitet das Signal den Schwellenwert um 4 dB, treten am Ausgang nur 1 dB aus). Als Fließkommazahl wäre es 4. Ein Wert unter 0 würde das Signal über dem Schwellenwert verstärken (Upward Expander)
Attack: Wie schnell (in ms) der Kompressor nach Überschreiten des Thresholds reagiert.
Release: Wie schnell (in ms) der Kompressor wieder aufhört zu regeln, wenn das Signal unter den Threshold fällt.
Makeup Gain (Output Gain): Da das Signal durch das Herunterregeln der Lautstärkespitzen insgesamt leiser wird, hebt man mit dem Makeup Gain das Gesamtsignal wieder an. Das Resultat: Leise Passagen treten deutlicher hervor, ohne dass die lauten Spitzen übersteuern.
Audiosignal erfassen
Normalerweise gibt es mindestens drei Möglichkeiten ein Audiosignal zu erfassen
Audio Osccillatorverbinde mit AudioDeviceOut und änderen die Parameter oder weise die Parameter mit einen Motiondetektor zu.
audioDeviceIn Beispielsweise ein Keyboard oder Mikrophon.
Hier wird das Keyboard in und out eingerichtet
Windows Yamaha Steinberg Control, AudioBuffer auf 128 audio device in CHOP Driver default, Device Line (MODX) audio dev out Asio Treiber device: Yamaha STeinberg Asio
siehe auch KI Gemini: TD Audio MODX setup
Das Audio Signal hat angeblich keine Latenzzeit, aber wenn das Keyboard über den PC/Steinberg Lautsprecher hört, hört man vielleicht eine ganz kleine Latenzzeit
Am Besten man hört das keyboard über die Lautsprecher oder Kopfhörer und nicht über den PC oder die SteinbergKarte
audiofilein
Mono
Es gibt 2 Möglichkeiten kein Stereo sondern nur einen Kanal zu bekommen. AudioFileInMono = On
oder ein Math anhängen und Combine Channels = Average
Playmode locked to Timeline, gut für Animationen Die Samples der Audio Datei laufen parallel zur Timeline, stoppt die Timeline stoppt auch das Audio. specify Index. Hier kann man die samples selbst ansteuern oder mit irgendeinem anderen Operator verbinden sequential, Hier laufen die Samples nacheinander ab, so wie sie in der Audiodatei definiert sind. speed Einstelung möglich
AudiofileIn -> AudioDeviceOut um den Sound zu hören
Audio Filter Hiermit kann man Frequenzen abschneiden. Um das zu sehen macht es Sinn, es mit einem AudioSpectrum zu verbinden.
Mit Audiofilter kann man die Tiefen oder Höhen rausfiltern.
Wähle cutoffunits : Fequency Low Pass die Tiefen High Pass die Höhen abgeschnitten bandPass ein bestimmeter Bereich wird druchgelassen bandReject Bereich der entfernt wird filtercutof definiert den Bereich der durchgelassen bzw. abgeschnitten wird
man sieht es wenn man ein audiospec anschließt
man hört es wenn man ein audiodeviceout anschließt
analyze macht aus den vielen Samples einen. Die Methode function: RMS Power. Diesen Wert kann man für Audio Visuals nutzen, beispielsweise den Radius eines Circles per Audio zu definieren
AudioSpec vor dem Analyze erzeugt ein weicheres Signal.
Ein Trail zeigt genau den Bereich der Werte an, damit man sie mit Math auf den Bereich umrechnen kann, der benötigt wird, beispielsweise für den Radius eines Kreises. audioFileIn - audioFilter - audioSpect - analyze - math - null - Werte von bis
Setze vor das math noch ein filterfilter width: 0.2 um das Signal weicher zu machen
AudioFileIn
AudioFilter
AudioSpectrum
Analyse
Filter
Math
Null
Circle
Audio Signal
Tiefen-Höhen filtern
FFO weiches Signal
ein Wert
Signal weicher
Umrechnen
Wert weitergeben
visuelle Parameter
Audiospectrum als Linie
HIer ein Beispiel wie man die Audiospectral Samples als visuelle Linie darstellt.
1. Kette für AudioDeviceIn optimieren
Wenn du von einer Datei (AudioFileIn) auf ein Live-Signal (AudioDeviceIn) wechselst, möchtest du meistens zwei Dinge erreichen: Latenz minimieren und das unberechenbare Live-Signal zähmen (damit der Kreis nicht dauerhaft flackert oder bei Nebengeräuschen voll ausschlägt).
Optimaler Signalfluss
AudioDeviceIn -> AudioFilter -> Analyze -> Lag -> Math -> Limit -> Null
Die Operatoren und ihre Aufgaben
1. AudioDeviceIn CHOP
Buffer Length:0.014 (sehr geringer Puffer für minimalste Latenz).
Driver Type: Am besten auf WASAPI (Exclusive) oder ASIO stellen (wenn möglich), um Aussetzer bei kleiner Puffergröße zu vermeiden
2. AudioFilter CHOP(optional, aber bei Live-Mikros ratsam)
Filter: Setze den Typ auf High Pass und die Cutoff-Frequenz auf ca. 80 Hz bis 100 Hz.
Zweck: Ein Webcam-Mikrofon nimmt stark Trittschall, Tischrumpeln oder Lüfterbrummen auf. Der High Pass filtert diesen Tiefton-Müll raus, sodass dein Kreis wirklich nur auf Sprache, Musik oder Klatschen reagiert.
3. Analyze CHOP
Function:RMS Power (reagiert organischer als Peak).
RMS Window Size:0.01 bis 0.02 (kurzes Fenster für sofortige Reaktion).
4. Lag CHOP(ersetzt die Trägheit des Spectrums)
Lag Up:0.005 bis 0.01 (Impulse schlagen ohne Verzögerung sofort aus).
Lag Down:0.15 bis 0.25 (der Kreis gleitet sanft und "weich" wieder zusammen).
5. Math CHOP
Range: Live-Mikrofone liefern nach dem Analyze oft recht kleine Werte (z. B. 0.0 bis 0.08).
Passe From Range (0.0 bis 0.08) auf deine gewünschte Zielgröße im To Range an (z. B. 0.2 bis 1.5 für den Radius).
6. Limit CHOP
Type: Clamp.
Setze Maximum fest (z. B. 2.0). Das verhindert, dass bei einem lauten Geräusch oder Schreien der Kreis über den Bildschirmrand hinaus explodiert.
Audio Visual für Drums
Ein Audiovisual, welches die Positon eines Kreises anhand eines Kurzen Ausschlag im Audiosignal ändert. Siehe hierzu die Erklärung.
AudioMovie
Ein MovieFileIn TOP zeigt nur den Film an, aber gibt keinen Sound aus. Schiebe den MovieFileIn auf den AudioMovie, um den Sound zu bekommen
SOP sind 3D Objekte, Particlesysteme, Rendering. Diese Sachen werden auf der GPU berechnet.
3D
Basic Shapes/ Primitives: Circle, Rectangle, Grid, Sphere, Box, Cube, Torus
Mit Viewer Active kann man mit allen 3 Maustasten die Ansicht verändern. H-Taste zentriert die Ansicht. W-Taste Wireframe Ansicht Rechte-MaustasteDisplay Options zeigt (Punkte, Achsen etc.)
Mit dem Merge Operator werden 3D Objekte verbunden
Rendering Network
Zum Rendern werden benötigt: Geometry, Camera, Light (COMP) und ein Render (TOP).
Das Verbinden von 3D Operator und Geometry ist etwas tricky, denn nicht alles wird verbunden. Aus dem Out des 3D Opertors oder Merge ziehe eine Verbindung auf die Bühne und wähle dann das Geometry COMP. Dadurch bekommt es ein in und ein Out. Allerdings bleibt das Out leer. Man zieht das Render TOP auf die Bühne und verbindet es mit Null TOP
Die Camera und Light werden nicht verbunden. Man kann mehrere Lights verwenden.
Camera ausrichten mit 2 Fenstern
Generell wird nur die Ansicht in der Camera (Active View) mit den Maustasten verändert. Camera Parameter: Xform->Translate etc. bietet weitere Einstellmöglichkeiten
Teile die Ansicht auf 2 Fenster und wähle im zweiten Fenster mit dem Pfeil oben links Geometry. (Das übliche Fenster ist Network Viewer)
Hier sieht man nun die Objekte, Kamera, Licht und das ausgewählte ist hervorgehoben.
Man kann die Ansicht mit dem Maustasten ändern. Ändere im Network Viewer die Positionen von Kamera Licht etc. und überprüfe in der Geometrie Ansicht.
Die aktuelle Ansicht als Kameransicht macht man mit: Save View to cam1.
Camera
Kamera auf eine Position fixieren.
Erstelle ein COMP Null Operator. Es ist ein Nullpunkt im Raum. Wähle die Camera aus. Ziehe Null auf den Parameter "Look at". Wenn man nun unter Camera, Transform die Werte ändert, sieht man, dass die Kamera sich immer in Richtung Nullpunkt dreht. Selbstverständlich kann man im Null Operator die Werte ändern.
Zoom Camera Parameter: View / FOV Angle
Geometry
Im Geometry Opertor lässt sich die Ansicht drehen und animieren absTime.seconds * 20
Performance
Bei komplexen 3D Projekten sollten aus Performance-Gründen die Viewer der SOP Operatoren deaktiviert werden. Alle SOP auswählen und den oberen, linken Viewer Button anklicken. Umschalten auf Viewer Active (unten rechts) funktioniert dennoch.
Sphere SOP -> Particle SOP -> Geo COMP
Außerdem Render TOP-> null TOP
Außerdem Camera COMP, evt. Light COMP
Es werden nicht lauter Spheres als Particleelemente erzeugt, sondern die 3D-Punkte des Sphere bilden die Positionen an denen Particles positioniert werden, wenn sie entstehen. Diese Positionen lassen sich mit Particle- Forces- Turbulence verwackeln. Außerdem kann man die Reihenfolge der einzelnen Particlegeburten von gleichmäßig auf zufällig umschalten, indem man zwischen Sphere und Particles ein Sort dazwischenschaltet und auf Point- random stellt.
Particle -> Sort ermöglicht die Veränderung der Reihenfolge der Geburt von Particles
Pointsprite MAT
Erstelle ein Pointsprite MAT, gehe auf Geo- Render- Material gebe dort den Namen des Pointsprite ein oder ziehe das Pointsprite auf das Eingabefeld. Es enstehen lauter Rechtecke, die zur Kamera ausgerichtet sind. GrößePointspriteConstant Pointsize: Wert einstellen
Diese Elemente lassen sich einstellen und mit Material versehen, aber dann reagieren sie nicht auf eine externe Lichtquelle. Ohne Pointsprite kann man mit einem Licht die Particles als Ganzes anstrahlen.
So weist du Particle eine Color Map und Farbeffekte zu
Textur erstellen (z. B. weicher Licht-Punkt):
Erstelle ein Ramp TOP
Parameter Type - Circular und Extend Left - Hold , Extend Right - Hold
Richte die Farb-Stopps so ein, dass die Mitte weiß und der äußere Rand transparent/schwarz ist (weicher Verlauf).
Im Material zuweisen:
Wähle dein Point Sprite MAT aus.
Parameter Reiter Color .
Ziehe das Ramp TOP per Drag & Drop in das Feld Color Map (oder tippe z. B. ramp1 ein).
Common:
Blending Transparency: On,
Write Depth Values: Off
Depth Test: On
Discard Pixels based on Alpha : Off
Additives Blending erzeugt Lichteffekte, da die Farben addiert werden
PointSprite Common: wie unter Punkt 2 Destination Color: On (das ist der Schlüssel)
Hierbei ist keine Transparenz im Ramp nötig, schwarz wäre auch okay, da die Farben ja additiv dargestellt werden, da sieht man kein schwarz.
Farbe nach Alter
Füge nach dem Particle -> Point
Klappe Color auf und ersetze das Script me.inputColor[1] für eine der Farben: me.inputPoint.life[0] * 0.5
life[0] = Das normalisierte Alter des Partikels.
Das ist ein prozentualer Wert zwischen 0.0 (gerade geboren) und 1.0 (kurz vor dem Sterben). Deshalb lässt er sich so genial für Farbübergänge, Transparenzen oder Größenänderungen nutzen.
life[1] = Die gesamte Lebensdauer (Variance / Life Expectancy) des Partikels in Sekunden (z. B. 3.5 für 3,5 Sekunden).
Erzeuge ein Rendering Network Sphere SOP -> Geometry COMP
Außerdem Render TOP -> Null TOP
Außerdem Camera COMP, evt. Light COMP
Constant MAT -> Null MAT
Verknüpfe Null mit Geometry per Fenster drag&Drop Parm: Material oder
wähle Geometrie / Render / Material (Eingabefenster)
Durch Constant bekommen alle Objekte die gleiche Farbe ohne Lichtreflexion und Schatten. TransparenzConstant / Constant / Alpha: <1 funktioniert nur, wenn man Constant / Common / Blending (Transparency): auf ON stellt. Das gilt auch für die anderen Materials.
Wireframe MAT
Wie die Ansicht in Viewer ActiveW-Taste. Die Linienstärke, Farbe, Alpha einstellbar. Man kann aber auch bei anderen Materialien unter Common Wireframe aktivieren.
Besser ist das nächste Material:
Line MAT
Diese Wireframe-Ansicht bietet viele Darstellungsmöglichkeiten:
Die Linienstärke anhand der Entfernung zu definieren, zB: Je weiter desto dünner. Alpha einstellen: ACHTUNG auch hier wähle Common / Blending (Transparency).
Points: die Darstellung in Punkten
Vectors: Vectorrichtung
wie Strahlen
Phong MAT
Farbe der Oberfläche, Reflexionslichtfarbe,
Alpha -> Alpha Front und Common -> Blending Transparency : On
Rim-light ist ein oder mehrereLichter von hinten
Maps im Phong Parameter: RGB-> Color Map oder Normal Map, Diffuse Map, Specular Map
Erstelle noise Top -> null und ziehe es beispielsweise auf RGB-Color Map
noise -> normal -> null und ziehe es auf RGB-Normal Map (Bum Map) Es erscheint eine Warnmeldung. Füge zwischen Sphere und Geometry ein Attribute Create SOP und aktiviere Compute Tangents
PhongRGB: Enable Height Map es wird ein schwarz-weiß Bild erwartet beispielsweise Noise
PhongRGB: Displays Vertices ermöglicht eine extreme Höhe wie Spitzen, Stalganiten. Die Anzahl der Reihen und Spalten der Sphere ist für den Details verantwortlich.
PBR MAT
Substance Painter Materialien lassen sich hier zuweisen. Es muss ein Enviroment Light COMP eingefügt sein. Dieses erwartet ein Enviroment Map. Das wird erzeugt durch ein MovieFileIn TOP -> null eingefügt sein. Füge im MovieFileIn ein Bild (Landschaft) ein und verbinde die MovieFileIn->null mit Enviroment LightLight-> Enviroment Map
Gehe auf PBRRGB->Metallic und RGB->Roughness um die Spiegelung der Envirment Map zu sehen
Alternativ kann man einem PBR ein Substance TOP Material zuweisen Download Substance TOPGraph->Concrete und Common -> Resolution erhöhen Substance auf PBR ziehen Instance Substance TOP
oder im PBRMaps->Substance Top zuweisen
Um auf die einzelnen Eigenschaften des Substance Material zuzugreifen, verbinde Substance mit Substance Select und wähle beispielsweise im Substance SelectOutput Channel -> Height
Im PBRMaps-> Enable Height Map dann Maps -> Display Vertices - on dann Maps-> Height Map, das Substance Select zuweisen, dann Maps->Display Scale
DAT
DAT Data
Datenoperatoren (oder DATs ) dienen der Speicherung von Textdaten wie Zeichenketten, Skripten und XML-Dateien. DATs enthalten entweder mehrere Textzeilen wie in einem Skript oder eine Tabelle mit Zeilen und Spalten, wobei jede Zelle eine Zeichenkette enthält. Sie können den Inhalt des DATs direkt im DAT-Viewer bearbeiten .
Greife auf eine DAT-Datei mit normalem Text über die entsprechende Methode zu op('text1').text. Greife auf eine Zelle in einer DAT-Datei mit einer Tabelle über die entsprechende Methode op('table1')[1,2] oder über Zeilen-/Spaltennamen zu op('table1')['rowname', 'colname'].
Text Hier kann man Kommentare einfügen oder auch Scripte. Kontextmenü Script ausführen.
Kontextmenü save Content Texte als .txt speichern und auch laden über Parameterfenster, Load. Nach dem Laden "Pulse" im Parameterfenster klicken.
Edit Content in Textport über Kontextmenü ist ein interner, komfortabler Editor
Edit Contents VSC oder anderer zugewiesener Editor öffnet sich, oder Edit (Parameter) zugewiesener Editor
Zuweisung durch Edit / Preferences / DATs / Texteditor
Script im Text DAT
Schreibe Python-Script im Text DAT, (Viewer Active) Kontextmenü Run Script
Hat man Fehler im Script sieht man diese wie immer mit mittlerer Maustaste im Fenster. Fehler im Script kann man aber auch über das Error DAT erfassen, oder man erstellt sich ein 2 geteiltes Fenster und wählt im zweiten Fenster Textport und Dats
Ausführung stoppen bei Fehlern im Script. Strg C eventuell mehrmals klicken oder Strg Shift Esc
oder in der Timeline Pausensymbol. Außerdem gibt es im Parameterfenster noch den Active Schalter
Execute DAT bringt fertige Funktionen und Events mit, die man mit Script füllen kann. Im Parameterfenster klicke auf start, create, exit...etc., um die Anweisung auszuführen.
Chop Execute DAT bezieht sich auf einen COP beispielsweise ein Slider->null oder button->null, Man verweist im Parameterfenster CHOP Execute, Chops, auf das null (oder zieht es darauf)
Im Chop Execute erscheinen Funktionen und Events für das verbundene Element mit nützlichen Kommentaren und man kann dort direkt Anweisungen einfügen. ACHTUNG Chop Execute, Active On
Table liefert eine Tabelle mit Reihen und Spalten,
Anzahl definieren über Karteireiter Fill / Fill Type: Set Size. Anzahl von rows und cols zuweisen. Dann kann man mit Viewer Active die Werte in die Reihen und Spalten eintragen.
Abfrage des Wertes aus erster Reihe, zweite Spalte mit folgendem Script.
op('table1')[0,1]
Folder ist eine Table, welche Dateipfade anzeigt. Zugriff siehe vorige Zeile. Man gibt einen root-folder an.
convert verbunden nach einem Textfeld ist auch eine Tabelle. Es erzeugt eine Tabelle aus Text. Unter Parameter / split Cells definiere ein Dollarzeichen gefolgt vom Trennzeichen: $, um nach jedem Komma im Text eine Spalte in der Tabelle erzeugen. Reihen werden durch neue Zeilen im Text erzeugt.
keyboard in zeigt jede gedrückte und losgelassene Taste in einer Tabelle an, mit weiteren Infos wie: Alt, Strg Shift, time
midi in zeigt Midi Daten eines verbundenen Midi Gerätes an. Schließe ein Midi-Gerät (zb. Synthesizer) per USB an. Gehe in Dialogs / Midi Device Mapper / Create new Mapping, Wähle oben unter Device das Gerät aus. Dann kann man unter midi in DAT jeden Tastenanschlag jeden Reglerwert sehen. Das funktioniert aber nicht zusammen mit keyboard in. Alternativ gehe auf midi in CHOP
GLSL findet man unter TOP. Es werden automatisch 2 DAT Fenster hinzugefügt. Hierbei geht es um Shader Programmierung Ein Fenster dient zum Schreiben des Codes das andere ist eine Art Konsole für Erromeldungen etc.
Noise CHOP und Chop to Dat DAT verbinden oder Noise auf Chop to Dat ziehen. Es werden alle Samples in einer Tabelle angezeigt.
COMPs enhalten eigene Netzwerke. Komponentennetzwerke können Operatoren und/oder zusätzliche Subnetzwerke (zusätzliche Komponenten) enthalten. Subnetzwerke bilden eine Netzwerkhierarchie, die über den Netzwerkpfad navigiert werden kann und die Gesamtstruktur der .toe/ .tox-Dateien bestimmt.
Ein Base COMP ist im Grunde eine visuelle Klasse, die Daten empfängt, verarbeitet und über definierte Schnittstellen wieder ausgibt.
Typischer Einsatzzweck:
Kapseln von komplexen Logiken (z. B. ein eigenes Partikelsystem oder ein Audio-Analyse-Modul).
Erstellen eigener wiederverwendbarer Operatoren (Tox-Dateien / Components). Kontextmenü: Save component as tox. Oder man zieht es in den eigenen Component Ordner
Customize Component (Kontexmenü) bietet weitere Möglichkeiten
Aufräumen des Hauptnetzwerks ("Clean Code").
Siehe Video erstellen eines Base mit Input und Output ähnlich einer Klasse mit Default Werten.
Erstelle ein null zwischen noise und null und aktiviere es. Klicke irgendwo rechts wähle Collapse selected. Es entsteht ein base mit Ein- und Ausgang
Eine andere Möglichkeit etwas in einem Base einzufügen ist. Wähle alle Operatoren deines Netzwerks durch Umrahmen mit linker Maustaste aus, Kopiere oder Ausschneide. Erstelle ein Base, Scrolle in das Base und füge das zuvor kopierte Netzwerk ein. Möchtest du in dem Base Ein und Ausgänge haben, füge innerhalb des Base ein oder mehrere In (SOP, TOP, CHOP, DAT) und ein Out ein, Diese sind dann die Ein- und Ausgänge des Base. Gehr folgendermaßem vor: Wenn du beispielsweise ein MovieFileIn TOP hast, welches später mittels In Eingang im Base ausgetauscht werden soll. Füge hinter das MovieFileIn innerhalb des Base ein In ein. Die Base bekommt dann einen Eingang, welcher das MovieFileIn ersetzt, wenn man dem Base Eingang etwas zuweist. Es ist wie eine Prototype-Eigenschaft einer Klasse mit Standartwert. Man kann auch mehrere Eingänge auf die Art definieren. Die Reihenfolge richtet sich nach den Namen der In-Operatoren (in1, in2, oder Bild_in, Verlauf_in)
Ein Container COMP gehört zur Familie der Panel COMPs (wie z. B. Button, Slider, Field).
Funktion: Dient als visuelles Layout-Element für Benutzeroberflächen oder Bildschirm-Ausgaben.
Visuelles Verhalten: Besitzt feste Parameter für Breite/Höhe (Widt
h/Height), Farben, Rahmen, Ausrichtung (Align/Layout) und kann Interaktionen wie Mausklicks, Drag & Drop und Hover-Events verarbeiten.
Typischer Einsatzzweck:
Bauen von Steuerungspanels / Control Dashboards (Buttons, Regler und Anzeigen gruppieren).
Zusammenstellen von Multi-Window-Layouts oder UI-Overlays.
Anordnen von mehreren Video-Feeds/TOPs nebeneinander für eine Ausgabefläche.
Replicator COMP vervielfältigt eine Komponente siehe Video (11-repeat)
Nehmen wir ein MovieFileIn TOP und möchten, es vervielfältigen, aber der Pfad zum Bild sollte in jeder Instanz auf ein anderes Bild verweisen. Dazu verwenden wir ein Folder DAT. Ein Folder verweist auf einen Ordner, in dem sich Dateien befinden. In diesem Fall die Bilder, die in den Duplikate angezeigt werden soll.
Das MovieFileIn bekommt den Namen item1 Ganz wichtig ist die Zahl am Ende.
Das moviefilein hat den Paramter file
Dort gibt man eigentlich den Pfad zum Bild ein. Hier wird stattdessen ein Pythonscript eingefügt, welches sich auf einen Folder bezieht.
wenn der Folder sich im gleichen Ordner wie das movieFileIn befindet op('folder1')[me.digits, 'path') path ist einfach die Spalte in der Foldertabelle, welche den Pfad des Bildes anzeigt. digits ist eine eingebaute Python Eigenschaft von Knoten. Sie schaut sich den Namen des Operators an, filtert alle Zahlen am Ende des Namens heraus und gibt sie dir als reine Zahl (Integer) zurück. Gibt es keine Zahl im Namen wäre der Wert none
Nun erzeugt man einen Replicator DAT
Der Replicator repliziert den Container item1, dann repliziert er das replizierte Element etc. Im Replicator gibt man als Master item1 an, was repliziert wird, und den Prefix für die Namen der Elemente die erzeugt werden item. Es ist wichtig, dass das moviefilein die Zahl am Ende des Namen hat, sonst gäbe es probleme, dann würde das erste Bild doppelt angezeigt.
das ist schon irgendwie kompliziert. Der Pfad zum Bild kommt aus dem Folder, spalte "path". Welche Reihe genommen wird, wird aus dem Namen des Elterncontainers entnommen, indem man die Zahl mit digits generiert. Wenn der Elterncontainer in dem das Bild liegt, repliziert wird und die zahl im Namen sich ändert, ändert sich somit auch der Pfad zum Bild, weil eine andere Reihe des folder Tabelle genommen wird.
Nehmen wir an das moviefileIn liegt in einem Container und der Folder und Replicator auf gleicher Ebene wie der Container, dann sollte der Pfad im movieFileIn lauten: op('../folder1')[me.parent().digits or 1, 'path'
das or 1 kann man einsetzen wenn der Container keine Zahl am Ende des Namens hat. Das ist jedoch trotzdem nicht zu empfehlen.
Element im Visual Active umbenennen z.B.: item1.
Replicator Replication Method: By Number
Operator Prefix: item
Master Operator: item1
Number of Replicants
Animation Comp
Parameter Einstellungen Parameter Edit es öffnet sich das Animation Fenster.
Alternative: Teile die Ansicht in 2 horizontale Bereiche, wähle im unteren Fenster, über den kleinen Pfeil oben, Animation Editor. Hier lassen sich ähnlich wie Flash für alle möglichen Eigenschaften Kurven definieren. Man erzeugt eine neue Eigenschaft erzeugt die Kurve und zieht die Eigenschaft auf die Eigenschaft im Parameterfenster des Operators.
Man kann unter Names die Namen der Channels eintragen, die später irgendwelche Parameter Eigenschaften von irgendwas definieren. Durch Add Channel werden sie dann der Timeline hinzugefügt. Dort kann man Kurven erzeugen, verändern, bearbeiten, welche die Werte definieren. Wählt man einen Punkt aus, sieht man oben F, ist der Frame, V ist Value. Die Vektoranfasser kann man nur drehen nicht vergrößern.
Mittlere Maustaste skaliert die Ansicht H-Taste zentriert die Ansicht Alt Taste erzeugt einen KeyframePunkt
Ganz unten Time Fenster End und REndFFPs Tempo einstellen
Animation Parameter PlayMode: locked to keyframes, sequential, ermöglicht eine Speed Eingabe unabhängig von Framerate und Länge use input index verbinde ein lfo beispielsweise mit dem animation input
Der eingebene Wert definiert den Abshnitt in der Timline von frame bis frame oder besser gesagt definiert die Frames die angezeigt werden.
ACHTUNG lass dich nicht von der Abspiel-Linie irritieren, der zeigt nicht immer die richtige Animation an, orientiere dich an der Anzeige der Eigenschaft die du animierst.
Animation / Timeline
Unten ist die Timline, das Fenster lässt sich nicht vergrößern. Dort kann man die Werte direkt eingeben. ACHTUNG ein REnd (Range End) kann nicht größer sein als End. Die Range stellt man beim Entwickeln ein, um einen Teilbereich der Animation zu sehen.
Button, Select, Slider, Widget COMP
Instancing
Es geht darum viele Elemente von einem Operator zu erzeugen. Das kann man mit copy SOP machen, doch sobald man Insanzen nicht nur in einer Reihe sondern in Reihen und Spalten oder auf den Positionen der Punkte eines 3D Objekts positionieren will, ist instance SOP der bessere Weg. Außerdem ist es performanter GPU.
Wollte man mit Copy arbeiten würde man ein Copy zwischen Box und Geometry ziehen number of copies: 20, translate : 2 etc. Ein weiteres Copy könnte das kopierte nochmal kopieren, aber beide arbeiten auf der CPU. Blöd!
3D Objekte definieren die Instanzen
Auch der Geometry gibt es Karteireiter Instance aktiviere Inctancing: On Die Parameter Translate, Rotate etc. können mit verschiedenen Operatoren versehen werden mit SOP, TOP, CHOP, DAT.
Wir wollen mehrere Instancen von Box erzeugen. Die Positionen der einzelnen Instanzen sollen auf den Punkten eines 3D Objekts liegen, beispielsweise eines Grid, oder Sphere.
Erstelle ein Grid hänge ein null an, nenne es InstancesSop und ziehe es auf Geometry Karteireiter Instance: Default Instance OP. Dort steht dann InstancesSop. Nun könnten wir in Geometry Karteireiter Instance in den Feldern Positionen und Normals auswählen. Da wir nur das zweidimensionale Grid als Positons-Bestimmer haben, verwenden wir Translate x: P(0) und Translate y : P(1)
Erstelle zwischen Box und Geometry ein Transform um die Größe zu verkleinern.Uniform Scale: 0.02
Wenn man eine andere Anzahl von Instanzen braucht, ändert man einfach die Rows und Columns des Grid.
Ein Noise zwischen grid und null erzeugt eine Animation, sofern man im Geo auch Translate Z: P(2) einträgt
Pattern definieren die Instanzen
Anstatt ein SOP 3D Objekt zu nutzen, welches die Positionen bestimmt, könne auch andere Operatoren eingesetzt werden, beispielsweise ein CHOP pattern oder anderes CHOP.
pattern CHOP, Type: Ramp (Grade Linie) Length Anzahl der Samples, Karteireiter Channel: Channel = tx
Kopiere pattern Kopiere Parameter Length aus dem vorigen und füge eine Referenz in diese length ein, Channel: Channel = ty Auf die Art haben wir die Werte für tx ty selber erzeugt, stattdessen könnten ein oder beide Channel Werte aus einem anderen Operator stammen beispielsweise einem AudioIn CHOP.
Erzeuge in Merge und füge beide pattern ein und hänge ein null an, nenne es instanceChop und füge es im Geo Karteireiter Instance: Default Instance OP ein (instanceChop) ändere im Geo Instance: translate x = tx und translate Y = ty, translate Z löschen
Ändere im zweiten PatternType = Sine Man sieht eine Sinuskurve und kommt sofort auf die Idee irgend ein Audiosignal hier zu verwenden.
Hänge ein Math hinter das erste Pattern und stelle die Range: toRange auf -1 1 um es zu zentrieren. Andere die im ersten pattern die Length
Im zweiten patternAmplitude = 0.5 ändert man die Höhe der Sinuskurve. phase = absTime.seconds animiert die Sinuskurve. Man kann im Geo die Sinuskurve ty für Scale einsetzen. Scale OP könnte mit einem ganz anderen Operator belegt werden
Audiosamples definieren die Instanzen
Nun soll die zuvor erstellte Sinuskurve aus Pattern mit einem Audio - Signal versehen werden.
AudioFileIn - Math - AudioSpect
Es gibt 2 Möglichkeiten kein Stereo sondern nur einen Kanal zu bekommen. AudioFileIn Mono = On oder Math Combine Channels = Average
AudioSpect
Das erste Pattern bestimmt die Anzahl der Kugeln/Objekt. Wir brauchen im AudioSpect die gleiche Anzahl an Samples. Wir brauchen ja die gleiche Anzahl an tx und ty Werten für die Instanzen.
AudioSpect - Rename rename to = ty
AudioSpect - Rename - ResampleCommon: Timeslice = Off, Resample: Method = New Rate new Interval
Nun kann man vom ersten Pattern den Ausgang mit dem Eingang von Resample verbinden.
Um die Höhe, der Boxen zu ändern aber mit einem anderen umgerechneten Wert, mache folgendes
von ... Resample - Rename - Math - Null
Rename sizeY
Mathto Range = 0.2 50
Verbinde null mit GeoScale OP und lösche Translate Y
Gebe in der Box beim Center ty eine 0 ein, dann schlagt es nach beiden Seiten aus.
Pixel definieren die Instanzen
Ein Ramp TOPCommon: Resolution 50 50, Common: Pixel Format = 32 Bit float (RGBA) (minus Werte möglich) Ramp copy paste, Type: vertical (verticaler Verlauf) ramp1 und ramp2 mit add verbinden ramp1 schwarz nach rot, ramp2 schwarz nach grün ramp(1 und2) -> add -> null benenne es in instancesTop
Ziehe in GeoInstance, Default Instance OP =instancesTop
Nun kann man RGBA Werte auswählen und zuweisen. GeometryInstance: Translate X = R und Translate = Y
Erzeugt ein Raster, weil die Werte von schwarz nach Rot horizontal verlaufen und die Grünwerte vertikal.
Stattdessen kann man jedes andere Bild nehmen oder ein Noise Noise TOPCommon: Resolution = 50 50, Pixel Format 32 Bit float (RGBA), Noise: Monochrome = Off
Ziehe diese Noise oder das angehängte null in GeoInstance, Default Instance OP und weise die RGB Werte bei Translate zu
Animiere Noise
NoiseNoise: Period = 10 Transform: Translate - tz =
absTime.secondes * 0.02 NoiseCommon: Resolution = 200 erhöht die Anzahl der Kugeln
Ändere im NoiseHarmonics und Harmonic Spread benutze 2 Lights und vielleicht noch einige Noise Werte für GeometrieInstance2: Color OP Diese wehende Kugelmatte sieht einfach toll aus.
Vektorgrafiken definieren die Instanzen
Erstelle einen circle SOP, Radius =b10 Divisions = 5 Anzahl der Insanzen Arc
Type = Open Arc
Instanzen einzeln ansprechen und Paramter zuweisen
In diesem Beispiel werden Instanzen eines Circles (Polygon) erzeugt, die werden auf einem weiteren Circle (Polygon) angeordnet.
Da alle Instanzen einen anderen Drehwinkel haben sollen, muss man genausoviele Variablen wie Instanzen erstellen und denen jeweils einen Wert zuweisen. Das geschieht hier über ein Pattern CHOP.
(Pfeil oben links öffnet die Palette mit Ordnern und Komponenten
Will man etwas in die eigene Palette einfügen erstellt man ein Base mit eine Netzwerk wie oben beschrieben. Mit rechter Maustaste kann man in der Palette im Ordner MyPalette Unterordner einfügen. Schiebe ein Base mit sinnvollem Namen auf den gewünschten Ordner oder in das Fenster unten rechts. Sie werden unter: C:\Users\<DeinName>\Documents\Derivative\Palette standardmäßig gespeichert. Beim Neustart von Touch Designer sollten die neuen Paletten erscheinen.
Man kann ein Base auch mit rechter Maustaste speichern Save as
UI, Basic Widgets Buttons, Slider etc.
Tools, Probe zeigt für jedes Element die Prozessorleistung an
# Schnell-Inspektion im Textport:
dir(op('moviefilein1')) # Zeigt alle verfügbaren Parameter/Attribute
help(op('moviefilein1')) # Zeigt die integrierte Python-Dokumentation
Konsole Dialogs / Konsole
Einzeilige Kommentare# Mehrzeilige Kommentare werden in jeweils 3 Anführungszeichen (doppelt oder einfach) eingeschlossen