faited x errorbesque hydra set at third harvest

imo the best hydra set i’ve ever done.

i don’t have a recording since this was a last-minute idea (about an hour before, f. asked me to do visuals), but i followed my constraints well (monochrome, minimal, all visuals would be derived from the fft spectrum, an emphasis on linearity), showed restraint in letting ideas play out rather than shift too jarringly, clearly demonstrated the idea to the audience, and felt embodied enough with the music that i really enjoyed myself. i was really happy with the result.

i got positive feedback from attendees midset all night <3 it helped that f. was doing a slower, half-timey set, which i think i’m more able to naturally match aesthetically.

// faitset - improvisation

// contour oscilloscope
y = (q=5) => { // oscilloscope implementation by ojack
 a.setBins(q)
 x = shape(2,.20) // 
 for(i=0;i<q;i++) {
    x = x.modulateScrollY(osc(1+i*2,0.2),  ((i) => () => a.fft[i])(i))
 }
 return x
}
y(5)
  .mult(
  // color palette
	solid([.4,.6,.55].smooth().fast(.1),0,[.5,.6].smooth()).modulateHue(gradient(0))
  )
  .out(o0)

render(o0)

a.setBins(5)
a.show()
a.setScale(1)
a.setCutoff(.2)
a.setSmooth(.9)


// slice of tree bark 
src(o0)
  .repeat(1,()=>a.fft[0]*2+2)
//  .pixelate(4,10)
  .mask(shape(2,()=>a.fft[0]*.2+.5))
  .out(o1)
render(o1)

src(o1).modulate(src(o2).scrollX(.1)).out(o1)

// vibrating line block
src(o1).modulate(o3)
  //.modulate(noise(3,.2))
//  .pixelate([40,70],10)
  .modulate(voronoi(()=>a.fft[0]+1))
  .out(o2)
render(o2)


// nope
// jittery stained glass; a fracture
src(o1).modulate(noise(10).pixelate(10,()=>a.fft[0]*10))
  .mult(voronoi(10))
  .mask(shape(4).scale(()=>a.fft[0]+.5,[5,.5].smooth().fast(2)).scrollY(()=>Math.sin(time/2)))
  .scrollX([.3,.7])
  .out(o2)
render(o2)

render(o2)

hush()

src(o0).repeat(1,()=>a.fft[0]*5)
  .modulate(osc(10+a.fft[0]*5,.3))
.scrollY(()=>time/5)

//  .kaleid(100)
  .out(o3)
render(o3)

src(o2)
  //.modulate(osc(1,.5))
//  .scale([1,2,.5,3].smooth())
 // .pixelate(20,1000)
//  .rotate(()=>Math.sin(time))
  .kaleid(100)
  //.rotate([Math.PI/2, 0, -Math.PI/2,0].smooth().fast(.2))
 // .pixelate(3,1000)
//  .pixelate([2,1000].smooth().fast(.1),[1,500].smooth().fast(.1))
  .out(o3)
render(o3)

render(o3)

src(o2)
  .modulate(osc(()=>a.fft[0]*.01+10,.1))
  .scale([1,2,3,4,4,4].smooth().fast(.5))
//  .kaleid(1)
 // .rotate(()=>(time))
 // .pixelate([30,55],[50,50])
 // .scrollX([0,.5,1].smooth().fast(.5))
 // .scrollY([.25,0,.75].smooth().fast(.3))
  .mask(shape(4).scale(()=>a.fft[1]*2,4))
  .out(o3)
render(o3)

speed=0.5
video i took during my set when i realized it was 6am and maybe no one would take video :0
i found out later L took some video, yayyy.


set design: there were multiple layout options and i argued for using this space, whose symmetry felt good and whose proportions felt cathedral-like, setting the stage distance so that dancers could enter and immediately see a long corridor of increasing intensity. projection on the roll-up door between the two windows attempted to integrate the visuals as harmoniously as possible into the space, though i wished we could have projected the full length of the door. lighting on the sides was not my design (designed by A.L. and W.) but added a lot imo, demonstrating to the dancer the height of the space which otherwise would have been obscured by the darkness.