THP 494 & 598 | Generative Media for Live Performance

Today’s live performance technologies increasingly rely on the use of inter/re-active and generative tools. This approach to creating visual content by controlling lighting, video, or physical systems requires that the artist cultivate a deep understanding of the computational principles and methods used to manipulate data as a primary substance in the creative process. As both practitioners and pioneers, the artist must endeavor to both understand the approach of other engineers and programmers, while also engaging the practice of developing software for general and specific use cases. It is not enough to rely solely on existing frameworks and architectures when developing new work; especially if the approach is unconventional. In this course, students will cultivate an approach for modular programming, complete tool development, and generative process focused aesthetics.

Student Learning Outcomes:

Upon successful completion of this course, students will be able to:

  • compose inter/re-active and generative media systems.
  • perform basic and intermediary scripting tasks with Python 3.
  • identify opportunities for programming efficiently, with an emphasis on purposefully assigning tasks to either GPU or CPU.
  • communicate with other programs or computers over a network.


Learning Resources & In Class Examples

  • Image Selector – Container Method
    • Interface Building
    • Table Referencing
    • Replicators
    • Clones
    • CHOP Execute DATs
    • Scripting
    • Parameter Assignment
  • Image Selector – Instance Method
    • Rendering Real Time Geometry
    • Instancing Geometry
    • Texture Instancing
    • Interface Building
    • Table Referencing
    • Replicators
    • Clones
    • Render Picking
    • DAT Execute DATs
    • Scripting
    • Logical Testing – If Else Statements
    • Parameter Assignment
  • Playing with Feedback
    • The Composite TOP
    • The Feedback TOP
    • Scaling CHOP values
    • Encapsulation
    • Storage
    • Panel Execute DATs
    • Importing Python Libraries
  • Instancing  – A Closer Look
    • Realtime Rendering networks
    • Instancing – Geometry
    • Instancing – RGBA replacement
    • Pixel Sampling with Python
    • SOP to DAT
    • TOP to CHOP
    • CHOP to DAT
    • DAT organization
    • Render Pass TOP
  • Make it with Data
    • Part 1
      • Component Building
      • Real time rendering
      • TOP Networks
      • Feedback TOPs
      • Ramp TOP
      • Ramp Keys
      • Eval DAT
      • Python scripts to sample pixel values
    • Part 2
      • Controls for Components
      • Horizontal Sliders
      • Tables to hold slider parameters
      • Clones
      • me.digits / me.parent().digits
      • Scaling slider values to drive parameters
    • Part 3
      • Using Data to drive parameters
      • Rule based art making
      • Replication
      • Execute DAT
      • Keeping 60 FPS with multiple complex containers
      • Scripting the Lock Flag
    • Part 4
      • The Select COMP
      • The Table COMP
      • The Panel Execute DAT
      • The Table COMP to load presets
      • The DAT Execute DAT
  • Data Experiments
    • Part 1
      • Using Table Data
      • Table Data to drive parameters
      • Prototype to component process
      • The Eval DAT
      • Replication
      • Meaning Making in programming
    • Part 2
      • Adaptation – re-using conceptual ideas and prototypes
      • Animating table data – hold samples in a CHOP
      • The Panel Execute DAT
      • The Table COMP to load presets
      • Speed and Lookup CHOPs
      • The importance of re-use, and why / how we make more abstract components
      • Your programming is a representation of how you see the world.
  • A little about Modules, Local Variables, and Storage
    • Local Variables
    • Modules
    • Storage
  • Generative Design | Noise and Shape
    • Shape
      • Drawing with pseudo random numbers (Noise)
      • moving between data types – SOP to CHOP, CHOP to SOP
      • Noise CHOP and SOP
      • Rendering
      • Feedback Networks
      • Sampling images for pixel values – ex: op(‘noise1′).sample(x=0 , y=0)[0]
    • Noise
      • Instancing (with Psychedelic Jamboree colors – or with a Ramp)
      • Noise CHOP
      • Cross CHOP
      • Orthographic Camera
      • Feedback
  • Python Lists
    • List structure
    • Building Lists
    • For Loops and list Making
    • Storage
    • Putting Lists into storage
  • Python Dictionaries
    • Dictionary structure
    • Building Dictionaries
    • For Loops and Dictionary Making
    • Storage
    • Putting Dictionaries into storage
  • Replicators – Replicating Text TOPs
    • Basic Replicator Networks
    • Convert DAT
    • Transpose DAT
    • me.digits when replicating
  • Simple Instancing
    • Basic Networks for Instancing Geometry
    • Moving between data types – SOP to CHOP, CHOP to SOP
    • Noise CHOP and SOP
    • Rendering
  • Texture Instancing
    • Combining Replicating and Instancing
    • Pattern Matching
    • Creating Data dependent networks with expressions – aka stop hard coding every parameter
    • Render Pass
    • Feedback
  • The Table COMP
    • How to feed the Table COMP
    • Table COMP structure and principles
    • Evaluate DAT
    • Panel Execute DAT
    • Table COMP customization
    • Getting values / actions out of the Table COMP
  • Network Communications – Basics
    • Touch In and Touch Out – TOPs, CHOPs, DATs
    • OSC In and Out – CHOPs, DATs
    • Sending Messages via OSC
  • Interprocess Communication
    • UI Colors
    • Touch In and Touch Out between processes or machines – TOPs, CHOPs, DATs
    • OSC In and Out between processes or machines – CHOPs, DATs
    • Sending Messages via OSC between processes or machines
  • TouchOSC – A Case Study
    • Hexler’s Touch OSC
    • Simple Network Communication with Open Sound Control
    • Sending Floats from TouchOSC to TouchDesigner
    • Sending Floats from TouchDesigner to TouchOSC
    • Sending Messages from TouchDesiger to TouchOSC
  • The Window COMP
    • Creating Floating Windows
    • Windows in Relationship to Windows Display Settings
    • How the Window COMP relates to perform mode
    • Controlling the Window COMP
  • Simple Live Set-Up
    • Display Arrangement
    • Building Control Panels with Hierarchy
    • Principles for sketching out interface design
  • The Select COMP
    • The Select COMP
    • Building Interfaces
    • Control Selection
    • Efficient Use of Limited Control Space
    • Simple conditional tests
  • Large Display Arrangement
    • Signal Flow and Limitations of Transmission Bandwidth
    • Building modules to automate signal distribution and division
    • Containers for Display Arrangements
    • The Crop TOP
    • Modular approaches large playback networks
  • Audio Part 1 – Building a Backend
    • Folder / application organization
    • Modules
    • CHOP Execute
    • The Info CHOP
    • Simple Playlist concepts
  • Audio Part 2 – Interface Building
    • Interface elements
    • Organization
    • Modules
    • Operation Planning
  • Audio Part 3 – Audio Analysis
    • Audio Analysis
    • Audio Spectrum CHOP
    • Audio Pass Filter CHOP
    • Modular programming
  • Audio Part 4 – Simple Metering
    • Using Audio Analysis
    • Simple Metering Visualization
  • Audio Part 5 – Oscilloscope
    • CHOP to SOP operations
    • Rendering Audio as Geometry
  • Audio Part 6 – Topography 1
    • CHOP to SOP Concepts
    • Rendering Audio as Geometry
    • Feedback systems as stored time information
    • Multi-Angle Lighting
  • Audio Part 7 – Topography 2
    • CHOP to SOP Concepts
    • Rendering Audio as Geometry
    • Feedback systems as stored time information
    • Multi-Angle Lighting
  • Audio Reactive Particles
    • CHOP to SOP rendering
    • Particle Systems
    • Normals as Vectors and Velocity
    • Rendering Particle Point Sprites
  • Particles and the Animation COMP
    • The Animation COMP
    • Particle Forces
    • Triggering Events
  • The Timer CHOP
    • Time Based Events
    • The Timer CHOP
    • Callback Scripting
    • Multiple Timers
    • Segmented Timers

Download the Course Code pack from GitHub