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