Week 7 and reflections
Recap of final performance
This week was really fun, with lots of changes and lots of learning. The first struggle was trying to find the correct power for the Neo Pixel LED lights with the Arduino, I tried a few different things but it seems I needed a specific barrel connection to be able to go from the jumper-like cables to the Arduino which turned out to be the reason we needed to scrap the audio reactive lights even though we had done a lot of research on the coding end of things, but without the correct power supply, it proved to be very difficult to finish this additional part of the performance so we decided to scrap it.
Another reflection would be the number of laptops and making sure they all work with them worked correctly at the venue proved to be a timely issue even when prepping the laptops ahead of time, one of them would not connect to the network, which ate up a lot of the performance time.
I also noticed that I was not so aware of how much light these projectors emit and think having an even larger space to document the work would be needed or a really nice camera and lots of time, because of the high dynamic range of the dark areas and bright areas, this caused some issues with recording everything cleaning. I think in the future maybe even kept the house lights on so that it looks good on camera rather than just looking good in the room for people watching in real-time.
Lastly, I think the real success of this project was performing live, even after all the practice and feeling as if I have improved greatly with live coding the rush of knowing the performance has started and people are watching and the camera is rolling really makes each of these moments special and something you can never really repeat, they are moments in time.
We look forward to live coding more in the future and see big opportunities to do more room-scale projection, I loved the way you could turn and get different bits of information clearly as the performance carried one, I also loved that there is not one central focus point even though we performed from the center the attention is still very much away from the performers which allow for a level of comfort of not feeling as though eyes are looking directly at you.
We also discovered with the screens across from each other and using the cameras as a real-time in person feedback loop that could be manipulated through code was the biggest unexpected surprise of the performance, makes we want to work with mirrors and different types of reflective material or meshes to see what is possible when creating a space for those to immerse themselves with live coding.
Below are images and moments from our performance.
Snippets of the performance in 360. Use a headset or just mouse around.
// Bharat Code Sample
// written for Sonic Pi in Ruby
use_bpm 134
chords = [(chord :D, :minor7),
(chord :Bb, :major7), (chord :F, :major7),
(chord :C, "7")].ring
c = chords[0]
live_loop :drums do
16.times do
sample :bd_haus
sample :bd_boom
sleep 0.5
sample :drum_cymbal_closed, amp: 0.5
sample :bass_hit_c, amp: 0.6, release: 1
sleep 0.5
end
4.times do
sample :sn_dolf, amp: 0.3
sleep 0.125
end
sample :drum_splash_hard, amp: 0.2
end
live_loop :melody do
cue :drums
with_fx :slicer, amp: 0.4 do
use_synth :fm
16.times do
3.times do
play c[0]
sleep 0.5
end
play c[2]
sleep 0.25
play c[1]
sleep 0.25
c = chords.tick
end
end
end
// Darren Left Laptop Code Sample
// All Codes are for Hydra.xyz
// running on Atom + Live Server
a.show()
s0.initVideo
("insert live server address here")
src(s0).modulate(osc(10),.2).modulate(o0,2)
.mask(shape(4)).modulateRepeat(noise(2),fft0)
.scrollY(2,.2).out()
function setup1(){
fft0 = () => (a.fft[0]*1.2)
fft1 = () => (a.fft[1]*Math)
fft2 = () => (a.fft[3]*3.2)
fft3 = () => (a.fft[6]*1)
render0 = () => render(o0)
render1 = () => render(o1)
render2 = () => render(o2)
render3 = () => render(o3)
return
}
// Darren Center Laptop Code Sample
// written for Hydra.xyz using javascript
s0.initCam(3)
src(s0).out()
// Darren Right Laptop Code Sample
// written for Hydra.xyz using javascript
a.show()
osc(1,.2,30).rotate(fft0,2).mask(shape(3))
.modulate(o0,.2).rotate(30,.1).modulate(o0,2)
.scale(2.2).repeat(4).scrollX(3,.2).out(o0)
BTS Live Code Performance