pastagang blog

pastagang lore: characters

over time, pastagang came up with a bunch of characters that keep evolving, often recurring in different forms and shapes. here’s an attempt to document them

cawcaw

todo: characterization of cawcaw(s). i think they like to cause trouble, and they’re into heavy bass music to bang their beaks

cawcaw

example code caution: to keep the cawcaw spirit alive, it is recommended you come up with your own version of cawcaw
// little cawcaw
const bangTo = "bass";
//head base
shape(99, 0.15)
  // beaks
  .add(
    shape(3, 0.1)
      .rotate(Math.PI + 3 / 2)
      .scale(0.3, 3, 1)
      .scroll(-0.1, 0)
      .rotate(() => fft(0, 1, "caw") * 0.25)
  )
  .add(
    shape(3, 0.1)
      .rotate(Math.PI + 3 / 2)
      .scale(0.3, 3, 1)
      .scroll(-0.1, 0)
      .rotate(() => fft(0, 1, "caw") * -0.15)
  )

  // eye
  .mask(
    shape(99, 0.07)
      .scale(0.3)
      .scale(1, 1, P("<1!64 .3>*16"))
      .scroll(-0.02, 0.02)
      .scrollX(() => Math.sin(time / 4) * 0.02)
      .invert()
  )

  //head banging
  .rotate(() => fft(0, 1, bangTo) * 1.5)
  .rotate([-0.2, 0.2].ease("easeInOutQuad").fast(1 / 4))
  .scroll(0.01, [0.04, 0].ease("easeInOutQuad").fast(1 / 23))
  // body
  .add(shape(99, 0.2).scale(1, 2).rotate(-0.8).scroll(0.14, -0.14))
  // tail
  .add(
    shape(4, 0.1)
      .scale(0.2, 7, 1)
      .rotate((Math.PI * 2) / 3)
      .rotate(0)
      .scroll(0.3, -0.25)
      .add(
        shape(99, 0.2)
          .scale(0.2, 7, 1)
          .rotate((Math.PI * 2) / 3)
          .rotate(0.1)
          .scroll(0.324, -0.27)
      )
      .add(
        shape(99, 0.3)
          .scale(0.2, 4, 1)
          .rotate((Math.PI * 2) / 3)
          .rotate([-0.12, 0.12].ease("easeInOutQuad").fast(1 / 22))
          .scroll(0.29, -0.25)
      )
      // tail bang
      .scroll(-0.2, 0.2)
      .rotate(() => fft(0, 1, bangTo) * 0.4)
      .scroll(0.2, -0.2)
  )

  // banging
  .scroll(-0.2, 0.2)
  .rotate(() => fft(0, 1, bangTo) / 1.4)
  .scroll(0.2, -0.2)

  // legs
  .add(
    shape(2, 0.001)
      .mask(shape(4, 0.2))
      .rotate(Math.PI / 2)
      .scroll(0.15, -0.3)
  )
  .add(
    shape(2, 0.001)
      .mask(shape(4, 0.2))
      .rotate(Math.PI / 2)
      .scroll(0.16, -0.31)
  )
  .mask(shape(4, 1))

  // positioning
  .scale(0.7)
  .scroll(0.16, -0.16)
  .out(o3);


of course, cawcaw can come in many colors and shapes:

cawcaw2


cawcaw is often paired with s("crow") and or other types of extreme bird glorification

cawnames

little guy

todo

whaly

// in basil
// "whale"
s 3
rot .75
scale .24 2
rot .35
y .05
+ (s 99 .2 # y .1 # rot <:() => fft() * -.2 + Math.cos(time) * -.08:> # x .04
)
+ (s 99 # scale .4 2 # x -.07
// tail
+ (s 7 # scale .16 2 # rot -.7
+ (s 3 # scale .15 1.7 # rot .3 # x -.034 # y .047
mask (s 3 .022 # scale .8 8 # rot .3 # x -.034 # y .064 # inv)
rot <: () => fft() * .3 + Math.sin(time) * .3:>
)
rot .1 # scale 1.2 1.2  # y -.01
rot <: () => Math.sin(time) * .4 :> # x -.16 # y .025
)
)
mask ( s 99 .3 # - (s 99 .31 # y (> fft # * .1 # + .01)) # scale .6 # x .13 # y .13 # + (s 99 .02  # x .1 # y .12) # inv)
// c 0 0 1 

more

what else?


blog post by pastagang