1 of 44

[03] Glitches, Noises, Errors

NYU Shanghai ~ Fall 2025

♡ ⁺˚⋆。° ✩ °˚⋆⁺ ♡

♡ ⁺˚⋆。° ✩ °˚⋆⁺ ♡

2 of 44

Today’s Agenda

  • Link to Notebook
  • Reading Discussion
  • What’s in a glitch
  • Intro to video synthesis

~ Intermission ~

  • Sketch share-out
  • Try out Hydra https://hydra.ojack.xyz

3 of 44

What is glitch?

“To err is human and to glitch is machine”

~ Phillip Stearns, Error, Noise, Glitch – The Art of the Algorithmic Unconscious (2011)

4 of 44

From Failure to Aesthetics

"It is from the 'failure' of digital technology that this new work has emerged: glitches, bugs, application errors, system crashes, clipping, aliasing, distortion, quantization noise..."

Result-oriented → Process/Systems-orientent

Hiding technical limitations → Exposing and celebrating them

5 of 44

♡ ⁺˚⋆。° ✩ °˚⋆⁺ ♡

♡ ⁺˚⋆。° ✩ °˚⋆⁺ ♡

6 of 44

“The existence of glitch-based representation depends upon the inability of software to treat a wrong bit of data in anything other than the right way. … the result of improper data being coded properly. … it is a given program’s failure to fully fail upon encountering bad data that allows a glitch to appear” ~ Hugh Manon, Daniel Temkin, Notes on Glitch (2011)

“A glitch is a mess that is a moment. … Although a glitch does not reveal the true functionality of the computer, it shows the ghostly conventionality of the forms by which digital spaces are organized” ~ Olga Goriunova and Alexei Shulgin, Glitch (2008)

7 of 44

Glitch Art in many Mediums

Anni Albers

John Cage

8 of 44

Glitch Art in many Mediums

9 of 44

Glitch Art in many Mediums

Nam June Paik

Max Headroom

10 of 44

Glitch Art in many Mediums

11 of 44

“It’s a feature not an error”

♡ ⁺˚⋆。° ✩ °˚⋆⁺ ♡

♡ ⁺˚⋆。° ✩ °˚⋆⁺ ♡

12 of 44

Critical Glitches

“Glitches, feedback, whitenoise, interference, static—although these may not be the final frontier, they are demonstrably—for now—the edge”

~ Legacy Russell, Glitch Feminism

“Whichever way noise is defined, the negative definition also has a positive consequence: it helps by (re)defining its opposite (the world of meaning, the norm, regulation, goodness, beauty and so on). Noise thus exists as a paradox; while it is often negatively defined, it is also a positive, generative quality (that is present in any communication medium).”

~ Rosa Menkman, Glitch Studies Manifesto

13 of 44

Intro to Video Synthesis

♡ ⁺˚⋆。° ✩ °˚⋆⁺ ♡

♡ ⁺˚⋆。° ✩ °˚⋆⁺ ♡

14 of 44

Video Synths

Video synths have a long history of hardware and software stretching dating back to the 60s.

They have been used in everything from movies and music videos to live VJ sets

15 of 44

Nam June Paik

N018_Paik-Abe Video Synthesizer, Nam June Paik (1972)

Paik wanted to move beyond manipulating a television so that two-way feedback is enabled, towards creating a machine that everyone ultimately can play with as if playing the piano.

16 of 44

Sandin Image Processor

17 of 44

Digital Video Synthesis!

Analog video synthesizers typically involve patching inputs to outputs with cables and adjusting knobs.

What does it mean to replicate this process with code?

18 of 44

Hydra!

Hydra is a tool that is modelled after analog video synthesis systems, built for live coding.

It’s a free and open source Javascript API that is a way of stitching together fragment shaders (GLSL) that runs in OpenGL for the browser (WebGL).

Sketch #3 - Andy Ye

19 of 44

Hydra!

There are five types of functions in hydra: source, geometry, color, blend, and modulate.

Sources are shapes and patterns that act as building blocks.

Geometry, color, blend, and modulate are various different types of manipulations you can do to and with these building blocks

20 of 44

21 of 44

add some music to the class playlist!

✧✹✴︎INTERMISSION✦✧✸

22 of 44

Hydra Workshop

23 of 44

Sources

Pick a source

osc(), noise(), solid() or external sources - initCam(),initVideo()

out()

24 of 44

Sources

25 of 44

Modifications

Do transformations

rotate(), pixelate(), kaleid()

Pick a source

osc(), noise(), solid() or external sources - initCam(),initVideo()

out()

26 of 44

Modifications

27 of 44

Modifications

Modify colors

color(), colorama(), brightness()

Pick a source

osc(), noise(), solid() or external sources - initCam(),initVideo()

out()

28 of 44

Modifications

29 of 44

Chaining Operations

Do transformations

rotate(), pixelate(), kaleid()

Pick a source

osc(), noise(), solid() or external sources - initCam(),initVideo()

Modify colors

color(), colorama(), brightness()

out()

30 of 44

Chaining Operations: ordering matters!

31 of 44

Chaining Operations: ordering matters!

32 of 44

External Sources: Webcam as Source!

33 of 44

What’s up with out()

Default out() is called o0

You can create as many as 4 outputs: o0, o1, o2, o3

Output could come from the same source, with different modifications

You can refer to other outputs to use as a texture or source, or the same output you’re working on (feedback)

34 of 44

Use render()

You can use render(o#) to quickly pick outputs to render

When no specific output is selected, render() returns all outputs

35 of 44

36 of 44

37 of 44

38 of 44

Bonus: External Video

39 of 44

Modulation: Use one signal to affect another

source

modulation texture

src(o1).modulate(o2)

out(o1)

out(o2)

40 of 44

Modulation: Use one signal to affect another

41 of 44

Just Enough JavaScript

The JavaScript you need to know to be fairly proficient in Hydra are these:

  • osc(1,2,3) is describing something called “osc” and providing 3 settings that can be adjusted.
  • osc(1,2,3).rotate() is taking the “osc” node and applying some manipulation on it, “rotate”. Note the empty “()”. You don’t always need to provide settings.
  • let var = 1�osc(var, 2, 3).out() �Here var represents a variable that can be used in place of a number (or anything else)

42 of 44

Feedback: Feeding a signal back to itself

.out() default is o0

Refer to o0 in a previous function!

src(s0).modulate(o0).out()

43 of 44

Arrow functions

// basic JavaScript arrow function

() => expression

// use it to call something EVERY FRAME,

// so that you can create animations

.scrollX(() => time*0.1)

.color(() => Math.sin(time*0.2))

44 of 44

For next week

Play around hydra and make a sketch: think about sources, modifications, and the “generative” nature of visual programming.

  • What was your creative intention?
  • What was one technical challenge that was particularly fun or difficult, how did you approach or explore it?

Read Read Casey Reas on the History of Generative Art Part I & Part II, and write a reflection

Submit Week 3 blog post via the homework form