This reading was my first time encountering the idea of Shamanism. Before reading ahead, I googled the definition, and it said the practitioner in this religious practice, the Shaman, enters a trance-like state to interact with the spirit world. I immediately went into the reading with the idea that this would correspond to live coding in the sense that our work is supposed us and the audience into ‘another dimension’. In the reading, there was also a lot of mention of the idea of consciousness, and Pauline Oliveros says, “This altered state of consciousness in performance is exhilarating and inspiring.” She also says, “The music comes through as if I have nothing to do with it but allow it to emerge through my instrument and voice.” I singled out these two quotes from the reading cause I found them to be one of the only ones I could relate to live coding. I may be misinterpreting what she means, but the way I took it was that as we perform in live coding, especially as we improvise, we reach this state in our minds where we are essentially having an adrenaline rush, you’re not sure what will work, how this might mess with your pre-existing sound and visuals but there’s a beauty in experiencing that along the audience. You’re in charge of putting your audience in a trance.

I feel like this reading put me in some sort of live coding crisis because I genuinely couldn’t pick which side I’m with more. I do my demos with Deadmau5 logic in mind, reliability over improvisation, but that doesn’t mean I actually agree with it. I think I just do it because it’s safe. But then that makes me feel like am I even really ‘live’ coding when I do that?

When we were doing the jam session in class, it felt completely different. A lot more improvisation was happening. I was very intimidated at first, but then I started playing around with Tidal. Worst case, you just mute the sound and move on. That felt way more ‘live’ to me. I’d much rather if I were the audience watch someone improvise rather than watch someone take the predictable route.

However, as the performer, I think I’m kind of stuck between both. I default to safe and reliable when I’m on my own, but I actually enjoy the improvisation side more when I put my nerves aside.

We know that live coding isn’t necessarily about the final result, but it’s a trial and error process, with a lot of experimentation and glitches. Some glitches end up making the work better, they can work like happy mistakes.


The idea of the black box being broken also applies to what we’re doing, while performing the code is being edited and evaluated in real-time and the audience is seeing exactly what the performer is, full transparency. So when a glitch happens (and perhaps throws an error), the performer may not be able to play it off as smoothly as they would be able to if a black box had been in place.


Given all this, I realize that I don’t let myself experiment with glitches, I usually play it safe in my demos, which while my final result may seem better to me, the reading made me acknowledge that I am probably limiting myself when I do that, and I can’t imagine its as fun for the audience to what me evaluate pre-written lines of code rather than watch me edit and figure out in real-time.

I originally had a very different idea in mind for my composition project, but after everything happening around us, I found myself lacking inspiration and creativity. To combat that, I decided to go through the dirt samples again. I went back to our class basics and ran lines on the class examples of week 2. This led me to combine sounds I liked and then figure out how to put them together into a nice beat. I was aiming for something groovy. A lot of my process involved trying to sound out a tune I like, then trying to translate that into Tidal.

I think a lot of the time in class we tend to shift towards more EDM or Tech music, but I found myself enjoying myself more with groovier beats as they sound more like songs I often listen to. After I had almost finalized my sounds, I needed to tackle visuals. For my visuals, I was thinking of contrasts, and one of the artists that I listen to, Kaytranada, tends to have album covers with a lot of contrast, so that was something I wanted to incorporate.

As for song structure, I would say I followed A-B-C-A, but I wouldn’t say I have a classic build or drop within my composition. I was kind of testing the different sounds until I found something I liked listening to, essentially playing it by ear, mostly. Every time I attempted the classic build, then drop structure, I felt like it was too generic, and I thought that might’ve been due to me not listening to a lot of EDM, so I decided to do a composition with a music style I am more familiar with, and would enjoy playing around with more.

Tidal Code:

--a 
d1 $ slow 3 $ sound "[bd sn sn][bd bd sn]" # gain 0.7 # room 0.5
d7 $ ccv "[0 20 64 127]" # ccn "0" # s "midi"

d3 $ struct "t(3,8)" $ sound "hc*4" # gain 0.7 # room 0.4
d9 $ struct "t(3,8)" $ ccv "[0 64 127 64]" # ccn "1" # s "midi"

d2 $ slow 2 $ s "padlong" # gain 0.5


d4 $ s "pluck" <| n (run 8) # gain 0.8 # room 0.4
d8 $ ccv "[0 20 20 64 64 127]" # ccn "2" # s "midi"

--b
d1 $ fast 2 $ sound "bd*4" # gain 0.7  # room 0.4
d7 $ fast 2 $ ccv "[127 0 127 0]" # ccn "0" # s "midi"

d2 $ sound "sn*4" # gain 0.7 # room 0.7
d9 $ struct "t(3,8)" $ ccv "[127 127 0 127]" # ccn "1" # s "midi"

d3 $ struct "t(3,8)" $ sound "hc*8" # gain 0.7 # room 0.4
d9 $ struct "t(3,8)" $ ccv "[64 127 64 127]" # ccn "1" # s "midi"

d6 $ struct "t(3,8)" $ sound "bass3" <| n "[c2 c2 c2 c2]" # gain 0.7 # room 0.9
d11 $ struct "t(3,8)" $ ccv "[0 127 0 127]" # ccn "3" # s "midi"

d4 $ s "pluck" <| n (run 11) # gain 0.9 
d8 $ struct "t(3,8)" $ ccv (segment 8 (range 0 127 saw)) # ccn "2" # s "midi"

d5 $ s "msg" <| n (run 4) # gain 0.9 # room 0.4


-- c
d1 $ slow 3 $ sound "[bd sn sn][bd bd sn]" # gain 0.6 # room 0.5
d7 $ ccv "[0 20 0 20]" # ccn "0" # s "midi"

d2 $ struct "t(3,8)" $ sound "hc*4" # gain 0.6 # room 0.4
d9 $ struct "t(3,8)" $ ccv "[0 127 0 127]" # ccn "1" # s "midi"

-- a
d3 $ slow 2 $ s "padlong" # gain 0.5
d10 $ ccv "[64 127 64 0]" # ccn "3" # s "midi"

d4 $ s "pluck" <| n (run 8) # gain 0.8 
d8 $ ccv (segment 8 (range 0 127 saw)) # ccn "2" # s "midi"

d6 silence 
d5 silence


hush

Hydra Code:

osc(() => 150 + cc[0]*50, 0.05 + cc[3]*0.05, 1)
  .rotate(() => time*0.5 + cc[3]*0.2)      
  .scale(() => 1 + cc[1]*0.5)             
  .color(() => cc[0], () => cc[1], () => cc[2])
  .modulate(
    noise(() => cc[0]*10 + cc[2]*5 + cc[3]*5, 0.3)
  )  .layer(
    osc(() => 80 + cc[2]*40, 0.1, 1)
      .luma(() => cc[1]*0.8 + cc[3]*0.3, 0.05)
      .pixelate(() => 2 + cc[0]*15, () => 2 + cc[1]*15)
      .color(() => cc[0], 0.5, () => cc[1])
      .modulate(noise(() => (cc[0]+cc[1])*8 + cc[3]*3, 0.25))
  )
  .layer(
    noise(() => cc[1]*8 + cc[3]*5, 0.15)
      .pixelate(() => 3 + cc[2]*15, () => 3 + cc[0]*15)
      .color(() => cc[2], () => cc[0], () => cc[1])
      .modulate(
        osc(20, 0.1, 1).luma(() => cc[3]*0.8 + cc[2]*0.2, 0.05)
      )
  )
  .modulate(
    osc(10 + cc[3]*20, 0.02 + cc[3]*0.05, 1)
      .rotate(time*0.2 + cc[3]*0.2)
      .modulate(noise(time*0.2, 0.2 + cc[3]*0.1))
  )
  .contrast(1.8 + cc[3]*0.5)
  .saturate(1.6 + cc[3]*0.5)
  .blend(o0, 0.6 + cc[3]*0.3)
  .out(o0)


hush()

Demo: