Technoshamanism

As a person who grew up in a culture that has both Shamanic and Buddhist practices, I found the discussion of “Birdman” (2005) by Kim Jeong Han to be the most interesting. In his work, it questions and reflects some of the most prevalent ideas in Buddhism and Shamanism, which are the belief in Buddhism that “the self and other are the same,” and the Shamanic practice of experiencing others through the self, reflecting a similar idea. He describes the idea that the self and other are not separate. In this artwork, this idea allows people to feel and empathize with others more deeply, as he questions the life of a half-bird and half-human by realizing it is both at the same time.

Shanken’s idea at the end of the paper on Technoshamanism as an art for healing and a tool for sustaining life on Earth felt like a very compelling way to connect everything he discussed. I understand that technology, tools, and instruments are often rooted in hard science and mathematics, which can sometimes make them feel metallic or soulless. However, shamanic practice creates shared consciousness and connects indigenous knowledge with technoscience. To support his point, he also referenced Donna Haraway’s ecofeminist theories, where everything is seen as connected and originating from one. I think this strengthens his argument that shamanism shows we are all connected and part of one whole. It reminds us that we are spiritual human beings, rather than turning us into something like AI or abstract robots. In this way, he is saying that employing such tools (computers, AI) to create artistic experiences can help sustain life and support healing.

When the reading discussed the two very distinct views of Bailey and Deadmau5 on live performance, it made me realize that throughout this course I have been changing from Deadmau5’s approach to Bailey’s. I am not sure if this change comes from my major in computer science or my previous experience with coding, where I would always have a clear idea of what my code should do and expect it to follow a rigid structure of input and output even before writing it. I brought that same mentality into this class, where I had very specific ideas and a structured vision of how my sounds should be. This is very much how Deadmau5 approaches live performance. Sometimes, it made me frustrated that Hydra visuals turned out differently from what I had planned in my head, but looking unexpectedly cool, where even small changes created something interesting. The same applies to audio. Because of this, I have started to loosen up my approach in both solo coding practices and group work these days. Instead of always starting with a fixed idea, I now allow myself to write a few lines, observe what happens, and then experiment further to see if I like the result. I believe this has made me more like a Bailey-style live performer.

I also really like how the reading defines “liveness.” It says that computers are merely tools and do not inherently possess life or liveliness. Instead, true liveness comes from the “performer’s active role in generating sound, rather than their presence as a figurehead in a spectacle.” I believe that whether a performance is prerecorded or not, the real value of calling something “live coding” lies in allowing the audience to see the performer’s real-time interaction and decision-making through code, and how they engage with the computer in the moment. In that sense, I can still see the value in Deadmau5’s performances, where elements are pre-produced. However, I see more greater value in real-time exploration for being vulnerable, making mistakes, and creating something totally unexpected. Treating the instrument as a tool for discovery and valuing unpredictability is an approach I am now trying to adopt myself.

When I was working on my compositions with hydra and tidal, I found myself always leaning toward glitch sounds and the visual effects that matched them. Somehow, I found them to be clean and straightforward effects that everyone is familiar with. The reading was written in 2009-2010 by Rosa Menkman. I understand that at that time, people might have leaned toward “perfection” in technology by integrating sharper images, faster speeds, and invisible interfaces. However, since then, people have become more experimental with technology by playing around with glitches, noises, and colors. So, I believe that what she stated about bringing unfamiliarity and the unexpected through effects such as glitches is something we see very often today.

Menkman said that “The main subject of most glitch art is critical perception. Critical in this sense is twofold: either criticizing the way technology is conventionally perceived, or showing the medium in a critical state. Glitches release a critical potential that forces the viewer to actively reflect on the technology.” This made me realize that when I watch videos with glitches, they somehow make me concentrate more, as I start thinking about how and when the glitch is happening. I think this has a strong engagement effect on the audience. This solidifies that while watching glitch art, the audience perceives glitches without knowing how they came about, which gives them an opportunity to focus on their form to interpret their structures and learn more from what can actually be seen.

While reading, I also liked how the text was organized, with glitch effects added between sections and experiments with text indentation. This further reinforced what she is saying about breaking continuity and linearity. I also watched a video by the author where she experimented with glitch effects in many different ways. I realized that although I have used glitch effects before, I have never really explored them beyond simple techniques. This gave me new ideas on how I can use glitch effects in more creative ways.

Demo Video:

Composition structure: A + B + A + B(with slight modification)

I first started my composition in Tidal by gathering all the class examples and sample patterns that I liked. I experimented by changing the beats and playing around with different speeds. After settling on two parts, A and B, that I liked, I organized them into a composition with an A + B + A + B structure. Because I wanted a clear sense of beginning and ending, I kept both the opening and closing sections simple, with minimal beats and visuals, so the composition could build up and then gradually fade out.

For the visuals, I initially used a blob slowly flowing on the screen. When I synced it with my sound by adding a glitch effect to match the glitch sound, it felt too boring, and there were no significant differences between parts A and B. Therefore, I added a new section where more chaotic and unexpected visuals appear in part B.

Code Snippets:

shape(200, 0.4, 0.02)
  .repeat(() => cc[3] + 1, () => cc[3] + 1)
  .modulate(osc(6, 0.1, 1.5), 0.2)
  .modulateScale(osc(3,0.5),-0.6)
  .modulate(noise(() => cc[1], 0.2), 0.3)
  .color(
    () => Math.sin(time) * 0.5 + 0.5,
    0.4,
    1
  )
  .modulate(
    noise(50, 0.5),
    () => cc[0] + cc[0] * Math.sin(time*8)
  )
  .add(o0, () => cc[3])
  .scale(0.9)
  .out()
start = do
  d1 $ slow 2 $ s "house(4,8)" # gain 0.9
  d2 $ ccv "0 127" # ccn 1 # s "midi"
  d3 $ s "chin"   <| n (run 4) # gain 2
  d4 $ s "click"  <| n (run 4)
  d5 $ s "bubble" <| n (run 8)
  d12 $ ccv "0" # ccn 3 # s "midi"

start

back_drop_with_glitch = do
  d6 $
    s "supersnare(9,16)?"
      # cps (range 0.45 0.5 $ fast 2 tri)
      # sustain (range 0.05 0.25 $ slow 0.2 sine)
      # djf (range 0.4 0.9 $ slow 32 tri)
      # pan (range 0.2 0.8 $ slow 0.3 sine)
      # gain (range 0.3 0.7 $ fast 9.2 sine)
      # amp 0.9
  d7 $
    every 8 rev $
      s "bd*8 sn*8"
        # n "[1 ~ ~ ~ 1 ~ ~ ~] [[2 0?] ~ ~ [~ 0?]]"
        # amp "0.02 0.02"
        # shape "0.4 0.5"
  d8 $
    every 4 rev $
      s "[sostoms? ~ ~ sostoms?]*2"
        # sustain (range 0.02 0.1 $ slow 0.2 sine)
        # freq 420
        # shape (range 0.25 0.7 $ slow 0.43 sine)
        # voice (range 0.25 0.5 $ slow 0.3 sine)
        # delay 0.1
        # delayt 0.4
        # delayfb 0.5
        # amp 0.2
  d9 $
    s "[~ superhat]*4"
      # accelerate 1.5
      # nudge 0.02
      # amp 0.1
  d10 $ s "glitch" <| n (run 8)
  d11 $ ccv "0 0 0 0 0 0 0 10" # ccn 0 # s "midi"

back_drop_with_glitch

another_beat = do
  -- d1 $ s "ul" # n (run 16)
  d5 $ s "supersnare(9,16)?" # cps (range 0.5 0.45 $ fast 2 tri ) # sustain (range 0.05 0.25 $ slow 0.2 sine )  # djf (range 0.4 0.9 $ slow 32 tri )  # pan (range 0.2 0.8 $ slow 0.3 sine )
  d7 $ fast 2 $ every 8 rev $ s "bd*8 sn*8" # n "[1 ~ ~ ~ 1 ~ ~ ~] [[2 0?] ~ ~ [~ 0?]]" # amp "0.02 0.02" # shape "0.4 0.5"
  d7 $ fast 2 $ every 4 rev $ s "[sostoms? ~ ~ sostoms?]*2" # sustain (range 0.1 0.02 $ slow 0.2 sine ) # freq 420 # shape (range 00.7 0.25 $ slow 0.43 sine ) # voice (range 00.5 0.25 $ slow 0.3 sine ) # delay 0.1 # delayt 0.4 # delayfb 0.5
  d8 $ s "[~ superhat]*4" # accelerate 1.5 # nudge 0.02
  d9 $ sound "bd:13 [~ bd] sd:2 bd:13" # krush "4"
  d12 $ slow 2 $ s "arpy" <| up "c'maj(3,8) f'maj(3,8) ef'maj(3,8,1) bf4'maj(3,8)"
  d1 $ ccv "0 0 0 0 0 127" # ccn 3 # s "midi"
  d4 $ fast 2 $ s "kurt" <| n (run 1)
  
another_beat

do
  start
  back_drop_with_glitch

beat_silence = do
  start
  d6 silence
  d7 silence
  d8 silence
  d9 silence
  d10 silence

beat_silence

hush