Looptober 2021 (aka Voxtober)

Looptober 2021 (aka Voxtober)

In October, I participated in the looptober challenge: compose a loop-based composition every day for the month of October. This document has all the code used to generate these loops.

You can listen to these loops on soundcloud or funkwhale.

Each loop features vocal synthesis in some way. For this reason, I've also been referring to looptober as voxtober. This all ties back to my ongoing research in expressive singing synthesis.

I made an effort to try and cover a wide range of "conventional" musical styles, with a dab of computer music composition concepts here and there.

I decided to take on the challenge to explore some of the singing synthesizers I've been building (see: tract and glottis), controlled via my new gesture synthesizer. As a result, lots of features were added, and bugs squashed.

This wiki page is an HTMLized version of the org-mode document I was writing all my loops in. It consists of chunks of scheme code controlling my Homebrew Music Software Ecosystem.

For convenience, here's some jumplink navigation:

Day 1: Two Voices One Room.

Day 2: Gurglestep.

Day 3: Vinyl Disintegration.

Day 4: Risset Rhythm.

Day 5: Bohlen Pierce.

Day 6: 2000s pop.

Day 7: Gospel.

Day 8: hans zimmer mombasa.

Day 9: isorhythmic density.

Day 10: 7/8 nonlinear grooves.

Day 11: Imogen.

Day 12: Vaporwave.

Day 13: Mourning song.

Day 14: Bossa Nova.

Day 15: abrupt chaos. pockets of calm.

Day 16: arpy vocals. boss battle?

Day 17: isorhythmic ambience. Music for airports-ish.

Day 18: liquid drum-n-bass.

Day 19: the innsmouth look, throat singing, basso profondo.

Day 20: afro-cuban grooves.

Day 21: Lighthouses, ghost stories.

Day 22: articulation experiments, diphones.

Day 23: angelic suspension.

Day 24: Padsynth algorithm, articulation, diphones, more 12/8 grooves.

Day 25: Melody. Appalachian Spring. Transformation.

Day 26: Alto trio. Passing of the Elves from LOTR fellowship. Supernatural realms.

Day 27: Morphing FM pads. Goofy articulated vocals.

Day 28: Jazz vocal group.

Day 29: Gest Conductor experiment. Dies Irae

Day 30: doo-wop.

Day 31: spooooky ghosts!

Top

Playground for looptober. Going to try to make loops using Gest and Voc. All singing stuff.

(monolith:load "ugens.scm")
(monolith:load "gst.scm")

<<looptober.scm>>=
<<top>>

(monolith:start)
(load-the-shapes)

The run function, which will compile the top-level patch.

(define (run)
(bunholdall)
(regclr -1)
(loop31)
(out zz))

Utilities

Things that I write to save me time later. These have been accumulated over the days.

<<top>>=
(define (load-the-shapes)
  (load-shape "ah" (mkshapepath "shapes/ah.raw"))
  (load-shape "ee" (mkshapepath "shapes/eh.raw"))
  (load-shape "oo" (mkshapepath "shapes/oo.raw"))
  (load-shape "ih" (mkshapepath "shapes/ih.raw"))
  (load-shape "uh" (mkshapepath "shapes/uh.raw"))
  (load-shape "eh" (mkshapepath "shapes/eh.raw"))
  (load-shape "oh" (mkshapepath "shapes/oh.raw"))
  (load-shape "rr" (mkshapepath "shapes/rr.raw"))
  (load-shape "jul-ah" (mkshapepath "shapes/julia_ah.raw"))
  (load-shape "jul-oo" (mkshapepath "shapes/julia_oo.raw"))
  (load-shape "jul-oh" (mkshapepath "shapes/julia_oh.raw"))
  (load-shape "jul-ee" (mkshapepath "shapes/julia_ee.raw"))
  (load-shape "jul-eh" (mkshapepath "shapes/julia_eh.raw"))
  (load-shape "jul-ehmute" (mkshapepath "shapes/julia_ehmute.raw"))
  (load-shape "jul-la" (mkshapepath "shapes/julia_la.raw"))
  (load-shape "jul-ahmute" (mkshapepath "shapes/julia_ahmute.raw"))
  (load-shape "jul-uh" (mkshapepath "shapes/julia_uh.raw"))
  (load-shape "jul-uhmute" (mkshapepath "shapes/julia_uhmute.raw"))
  (load-shape "lowshape1" (mkshapepath "shapes/lowshape1.raw"))
  (load-shape "lowshape2" (mkshapepath "shapes/lowshape2.raw"))
  (load-shape "lowshape3" (mkshapepath "shapes/lowshape3.raw"))
)

<<top>>=
(define (mkshapepath path)
    (string-append "/home/paul/p/tudes/sing/" path))

<<top>>=
(define (monft name)
  (param name)
  (rvl "monft"))
(define (load-shape shape filename)
  (monolith:ftbl-create shape 44)
  (monft shape)
  (monolith:ftbl-pop-n-load filename))

<<top>>=
(define (vow-a g tk)
  (tract:target g "ah")
  tk)

(define (vow-o g tk)
  (tract:target g "oo")
  tk)

(define (vow-e g tk)
  (tract:target g "ee")
  tk)

(define (vow-rr g tk)
  (tract:target g "rr")
  tk)

(define (vow-uh g tk)
  (tract:target g "uh")
  tk)

(define (vow-ih g tk)
  (tract:target g "ih")
  tk)

(define (vow-eh g tk)
  (tract:target g "eh")
  tk)

(define (vow-oh g tk)
  (tract:target g "oh")
  tk)

(define (jul-ah g tk)
  (tract:target g "jul-ah")
  tk)

(define (jul-oo g tk)
  (tract:target g "jul-oo")
  tk)

(define (jul-oh g tk)
  (tract:target g "jul-oh")
  tk)

(define (jul-uh g tk)
  (tract:target g "jul-uh")
  tk)

(define (jul-ee g tk)
  (tract:target g "jul-ee")
  tk)

(define (jul-ahmute g tk)
  (tract:target g "jul-ahmute")
  tk)

(define (jul-eh g tk)
  (tract:target g "jul-la")
  tk)

(define (jul-la g tk)
  (tract:target g "jul-eh")
  tk)

(define (jul-ls1 g tk)
  (tract:target g "lowshape1")
  tk)

(define (jul-ls2 g tk)
  (tract:target g "lowshape2")
  tk)

(define (jul-ls3 g tk)
  (tract:target g "lowshape3")
  tk)

(define pitch-words
  '(("vow-a" vow-a)
    ("vow-e" vow-e)
    ("vow-o" vow-o)
    ("vow-rr" vow-rr)
    ("vow-uh" vow-uh)
    ("vow-ih" vow-ih)
    ("vow-eh" vow-eh)
    ("vow-oh" vow-oh)
    ("jul-ah" jul-ah)
    ("jul-oo" jul-oo)
    ("jul-oh" jul-oh)
    ("jul-uh" jul-uh)
    ("jul-ee" jul-ee)
    ("jul-la" jul-la)
    ("jul-eh" jul-eh)
    ("jul-ahmute" jul-ahmute)
    ("ls1" jul-ls1)
    ("ls2" jul-ls2)
    ("ls3" jul-ls3)
))

singer is a helpful little function that allows singing lines to be programmed with a little less typing.

<<top>>=
(define (singer g str)
   (gst:eval-addwords g pitch-words str))

<<top>>=
(define (singer-words g words str)
   (gst:eval-addwords g (append pitch-words words) str))

The vocal tract needs to be set up to be used with gest. This handles that. A good smooth time is about 0.01. Too small and things can occasionally glitch. Too large and things get slurry sounding and/or don't go anywhere.

<<top>>=
(define (configure-tract tr g smoothtime)
  (tract:gest-setup tr g)
  (tract:gest-smoothtime g smoothtime)
  (tract:use-diameters tr 0))

Useful functions made in Day 4 for percussion.

mkhit creates a target AND sets a scalar, and is ideal for percussive tracks.

mkhit2 only sets a scalar value, and is a good idea if you want to use values set by targets.

mkrest adds an explicit rest.


wordentry creates a tokenizer entry for things like gst:eval and singer-words.

<<top>>=
(define (mkhit scl)
  (lambda (g tk)
     (gest:target g 1)
     (gest:step g)
     (gest:setscalar g scl 1)
     tk))
(define (mkhit2 scl)
  (lambda (g tk)
     (gest:setscalar g scl 1)
     tk))
(define (mkrest)
  (lambda (g tk)
     (gest:target g 0)
     (gest:step g)
     tk))
(define (wordentry name fun) (list name fun))

<<top>>=
(define (mksetter scl)
  (lambda (g tk)
     (gest:setscalar g scl (string->number (car tk)))
     (cdr tk)))

The wavetable token for gest tok-wt was used in loop18, and is a generalized way to access wavetables from the monolith dictionary in a gesture.

<<top>>=
(define (tok-wt g tk)
  (gosc:target g (car tk))
    (cdr tk))

mksineft makes a sine ftable and pushes stores it in the next available free register.

<<top>>=
(define (mksineft)
  (let ((ft (monolith:nextfree 0)))
    (regset (gen_sine (ftnew 8192)) ft) ft))

<<top>>=
(define (mksineft-nxt nxt)
  (let ((ft (monolith:nextfree nxt)))
    (regset (gen_sine (ftnew 8192)) ft) ft))

Some functions initially from loop21 that made it even easier to generate gestures for things. Useful for more automation.

<<top>>=
(define (gexpr cnd score)
  (let ((g (gest:new)))
    (gst:eval g score)
    (cnd)
    (gest:iculate g) g))

<<top>>=
(define (gexpr-words cnd words score)
  (let ((g (gest:new)))
    (gst:eval-addwords g words score)
    (cnd)
    (gest:iculate g)))

<<top>>=
(define (gexprf cnd score)
  (lambda () (gexpr cnd score)))

Day 1

<<top>>=
(define (utter0 g cnd)
   (gst:eval g "
beg 5 5
t 0.1 mg

pr 5
t 0.9 mg
t 0.01 mg
t 0.9 mg
t 0.1 mg
t 0.3 gl

t 0.5

pr 2
t 0.9 gl
t 0.3

t 0.3
end
loop fin
")
  (cnd)
  (gest:iculate g)
)

<<top>>=
(define (sing0-lead tr g cnd)
  (tract:gest-setup tr g)
  (tract:gest-smoothtime g 0.01)
  (tract:use-diameters tr 0)
  (gst:eval-addwords
   g pitch-words "
beg 9 9
mr 3 t 10 mg vow-a

pr 3
t 9 mg vow-a
t 10 mg vow-a
t 9 mg vow-a

mr 2
t 7 gl vow-a
mr 2
mt 3
  t 0 mg vow-a
  t 12 lin vow-o
  t 17 gl vow-a
end

loop fin
")
  (cnd)
  (gest:iculate g))

<<top>>=
(define (sing0-vib g cnd)
  (gst:eval g "
  beg 9 9
    mr 4 t 0.1
    mr 5 t 1
  end
  loop fin
")
  (cnd)
  (gest:iculate g))

<<top>>=
(define (sing0 tr cnd)
    (sing0-lead tr (gest:new) cnd)
    (add zz (+ 32 12 7))

    (sine 6 0.2)
    (mul zz (sing0-vib (gest:new) cnd))
    (add zz zz)
    (mtof zz)
    (glottis zz 0.8)
    (tract:node tr)
    (mul zz 0.7)
    (buthp zz 300)
    (eqfil zz 3000 1000 2)

    (voc (mtof 32)
        (utter0 (gest:new) cnd)
        (randi 0.0 0.9 2) (param 0.9) (param 0.1))
    (butlp zz 3000)
    (mul zz 0.3)

    (eqfil zz (param (mtof 32)) (param 200) (param 5))

    (add zz zz))

<<top>>=
(define (loop0)

(phasor 1 0)
(bhold zz)
(cabset zz 0)

(sing0 (tract:new) (cabgetf 0))
(bdup)
(buthp zz 300)
(bdup)
(revsc zz zz 0.97 8000)
(bdrop)
(mul zz (ampdb -10))
(dcblock zz)

(add zz zz)
(bunhold (cabget 0)))

Day 2

Trying for more of a groove today. Ostinato bass with subbass doublings. I want percussive elements that feel organic. Not beatboxing, not necessarily vocal. Just gurgly. Gurglestep?

<<top>>=
(define (sing1 tr g cnd)
  (tract:gest-setup tr g)
  (tract:gest-smoothtime g 0.01)
  (tract:use-diameters tr 0)

  (singer g "
beg 4 16
mr 3 t 0 mg vow-a
mr 3 t 7 mg vow-e
mr 3 t 12 mg vow-a
mr 3 t 7 mg vow-e
t 10 mg vow-a
t 12 mg vow-o
t 10 mg vow-a
t 7 mg vow-o
end
beg 4 16
mr 3 t -2 mg vow-a
mr 3 t 5 mg vow-a
mr 3 t 10 mg vow-a
mr 3 t 5 gl vow-e
mr 4 t 13 exp 6 vow-o
end
loop fin
")

  (cnd)
  (gest:iculate g)
)

<<top>>=
(define (pad1a g cnd)
   (gst:eval g "
beg 32 4
t 4 mg
t 5 mg
t 7 mg
t 5 gl
end
loop fin
")
  (cnd)
  (gest:iculate g))

<<top>>=
(define (pad1b g cnd)
   (gst:eval g "
beg 32 4
t 0 gl
t 1 gl
t 3 gl
t 1 gl
end
loop fin
")
  (cnd)
  (gest:iculate g))

<<top>>=
(define (loop1)
  (phasor (/ 125 60) 0)
  (bhold zz)
  (cabset zz 0)

  (let ((tr (tract:new)))
    (sing1 tr (gest:new) (cabgetf 0))
    (bdup)

    (add zz 33)
    (mtof zz)

    (glottis zz 0.9)
    (tract:node tr)
    (buthp zz 100)
    (eqfil zz 1000 1000 1.3)
    (bswap)
    (add zz (- 33 12))
    (mtof zz)
    (blsaw zz 0.5)
    (butlp zz 300)
    (butlp zz 300)
    (add zz zz))

  (let ((clk (monolith:mkcab
    (lambda () (phsclk (cabget 0) 1)) 0)))

    ;; ducking
    (scale (tenvx (cabget clk) 0.01 0.1 0.1) 1 0.1)
    (mul zz zz)

    (fmpair (expon (cabget clk) 300 0.03 60)
       (param 1) (param 1)
       (expon (cabget clk) 2.1 0.04 0.001) (param 0.1)
       (lambda () (gen_sine (ftnew 8192))))
    (mul zz 0.9)
    (tenvx (cabget clk) 0.001 0.03 0.05)
    (mul zz zz)
    (cabclr clk))

  (add zz zz)

(let ((clk (monolith:mkcab
    (lambda () (phsclk (cabget 0) 4)) 0)))

    (cabget clk)
    (maygate zz 0.3 1)
    (tenvx zz 0.001 0.001 0.001)
    (sine (randi 1000 5000 3) 0.1)
    (mul zz zz)

    (bdup)
    (vdelay zz (param 0.9) (randi 0.01 0.05 10) (param 0.5))
    (add zz zz)

    (cabclr clk))

  (add zz zz)

(let ((clk (monolith:mkcab
    (lambda () (phsclk (cabget 0) 1)) 0)))

  (pad1a (gest:new) (cabgetf 0))
  (add zz (+ 33 12))
  (mtof zz)
  (blsaw zz 0.1)

  (pad1b (gest:new) (cabgetf 0))
  (add zz (+ 33 24))
  (mtof zz)
  (blsaw zz 0.1)

  (add zz zz)
  (butlp zz 2000)
  (buthp zz 300)

  (scale (tenvx (cabget clk) 0.02 0.1 0.1) 1 0.3)
  (mul zz zz)
  (add zz zz)
  (cabclr clk))

(let ((clk (monolith:mkcab
    (lambda () (phsclk (cabget 0) 1)) 0)))

  (tdiv (cabget clk) 16 0)
  (mode zz (mtof (+ 33 (* 12 4))) 60)

  (bdup)
  (bdup)
  (revsc zz zz 0.999 8000)
  (bdrop)
  (dcblock zz)
  (scale (tenvx (cabget clk) 0.01 0.1 0.01) 1 0.5)
  (mul zz zz)
  (mul zz 0.8)
  (add zz zz)
  (buthp zz 1000)

  (cabclr clk))

  (add zz zz)

  (cabget 0)
  (bunhold zz))

Day 3

Back to lyrical loops. This time an ensemble. Thinking about Basinksi's Disintegration loops. Also the Russian song played at the end of Chernobyl.


Calling this loop3. There is no loop2. Breaking the cycle of 0-based naming and 1-based day counting.

<<top>>=
(define (loop3)
  (phasor (mul (randi 72 89 0.3) (/ 1 60)) (param 0))
  (bhold zz)
  (cabset zz 0)

  (gen_sine (ftnew 8192))
  (regset zz 1)

  (sparse 30)
  (butlp zz 4000)
  (buthp zz 1000)
  (mul zz 0.4)

  (noise 0.06)
  (buthp zz 1300)
  (butlp zz 1300)
  (add zz zz)

  (let ((tr (tract:new)) (g (gest:new)))
    (sing3a tr g (cabgetf 0))
    (add zz 60)
    (oscf (randi 6 6.5 0.3) 0 (reggetf 1))
    (mul zz 0.2)
    (add zz zz)
    (mtof zz)
    (glottis zz 0.8)
    (tract:node tr))

  (let ((tr (tract:new)) (g (gest:new)))
    (sing3b tr g (cabgetf 0))
    (add zz 60)
    (oscf (randi 5 6 0.4) 0 (reggetf 1))
    (mul zz 0.1)
    (add zz zz)
    (mtof zz)
    (glottis zz 0.7)
    (tract:node tr))
  (add zz zz)

  (let ((tr (tract:new)) (g (gest:new)))
    (sing3c tr g (cabgetf 0))
    (add zz 60)
    (oscf (randi 5 6.1 0.43) 0 (reggetf 1))
    (mul zz 0.1)
    (add zz zz)
    (mtof zz)
    (glottis zz 0.7)
    (tract:node tr))
  (add zz zz)

  (let ((tr (tract:new)) (g (gest:new)))
    (sing3d tr g (cabgetf 0))
    (add zz 48)
    (oscf (randi 5 6 0.1) 0 (reggetf 1))
    (mul zz 0.05)
    (add zz zz)
    (mtof zz)
    (glottis zz 0.85)
    (tract:node tr))
  (add zz zz)

  (sing3gate (gest:new) (cabgetf 0))
  (port zz 0.3)
  (mul zz zz)
  (mul zz 0.6)

  (bdup)

  (vdelay zz (param 0.9) (randi 2.0 2.1 0.5) 3.0)
  (mul zz 0.08)
  (butlp zz 2000)
  (add zz zz)

  (bdup)
  (bdup)
  (verbity zz zz 0.99 0.99 0.0)
  (bdrop)
  (mul zz 0.1)
  (add zz zz)

  (butbp zz 1000 1300)

  (add zz zz)

  (cabget 0)
  (bunhold zz)
  (regclr 1))

<<top>>=
(define (sing3a tr g cnd)
    (configure-tract tr g 0.01)
    (singer g "
beg 16 16
  mr 2 t 0 mg vow-a
  t 2 mg vow-o
  mr 3 t 3 mg vow-a
  mr 3 t 2 mg vow-e
  mr 6 t 0 stp vow-a
end
loop fin
")
  (cnd)
  (gest:iculate g))

<<top>>=
(define (sing3b tr g cnd)
    (configure-tract tr g 0.02)
    (singer g "
beg 16 16
  mr 2 t -5 mg vow-a
  t -2 mg vow-o
  mr 3 t -2 mg vow-a
  mr 3 t -2 mg vow-e
  mr 6 t -5 stp vow-a
end
loop fin
")
  (cnd)
  (gest:iculate g))

<<top>>=
(define (sing3c tr g cnd)
    (configure-tract tr g 0.024)
    (singer g "
beg 16 16
  mr 2 t -9 mg vow-a
  t -7 mg vow-o
  mr 3 t -5 mg vow-a
  mr 3 t -7 mg vow-e
  mr 6 mt 2
    t -9 stp vow-a
    t -8 stp vow-a
end
loop fin
")
  (cnd)
  (gest:iculate g))

<<top>>=
(define (sing3d tr g cnd)
    (configure-tract tr g 0.012)
    (singer g "
beg 16 16
  mr 2 t 0 mg vow-a
  t -2 mg vow-o
  mr 3 t -9 mg vow-a
  mr 3 t -2 gl vow-e
  mr 6 t -12 stp vow-a
end
loop fin
")
  (cnd)
  (gest:iculate g))

<<top>>=
(define (sing3gate g cnd)
  (gst:eval g "
beg 16 16
  mr 11 t 1 stp
  mr 2 t 1 lin
  mr 3 t 0 stp
end
loop fin
")

  (cnd)
  (gest:iculate g)
)

Day 4

Something with non-linear (exponential) meters. And a beat.

Thinking about fold4,wrap5, hockets, pointalism, risset rhythms.

Wondering what percussive envelopes sound like on vocal synthesizers.

<<top>>=
(define (loop4-beat1 g scl cnd)
  (gst:eval-addwords g
  (list
    (wordentry "hit" (mkhit scl))
    (wordentry "rest" (mkrest))) "
beg 8 8
skwexp 1
hit hit hit pr 2 hit hit
hit hit hit pr 2 hit hit
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (bdrop)
  (gest:tick scl))

<<top>>=
(define (loop4-beat2 g scl cnd)
  (gst:eval-addwords g
  (list
    (wordentry "hit" (mkhit scl))
    (wordentry "rest" (mkrest))
) "
beg 8 32
skwexp 1
hit rest hit rest
hit rest hit rest
hit hit hit hit
hit hit hit hit

hit rest hit rest
hit rest hit rest
hit hit hit hit
hit hit hit hit
end

beg 8 32
skwexp 1
hit rest hit rest
hit rest hit rest
hit hit hit hit
hit hit pr 2 hit hit pr 3 hit hit hit

pr 3 hit hit hit pr 2 rest rest hit rest
hit rest hit rest
hit hit hit hit
hit hit hit hit
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (bdrop)
  (gest:tick scl))

<<top>>=
(define (loop4-beat3 g scl cnd)
  (gst:eval-addwords g
  (list
    (wordentry "hit" (mkhit scl))
    (wordentry "rest" (mkrest))
) "
beg 8 8
skwexp 1
rest rest rest hit
rest rest rest pr 2 hit hit
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (bdrop)
  (gest:tick scl))

<<top>>=
(define (modal-perc trig f1 q1 f2 q2)
  (param trig)
  (tgate zz 0.002)
  (noise 0.3)
  (mul zz zz)
  (mode zz f1 q1)
  (mode zz f2 q2)
  (dcblock zz))

<<top>>=
(define (loop4-vox g tr scl cnd base str)
  (configure-tract tr g 0.01)
  (singer-words g
    (list
      (wordentry "hit" (mkhit2 scl))
      (wordentry "rest" (mkhit2 scl)))
    str)
  (cnd)
  (gest:iculate g)
  (add zz base)
  (oscf (randi 4 7 1) 0 (reggetf 1))
  (mul zz 0.2)
  (add zz zz)
  (mtof zz)
  (glottis zz 0.8)
  (tract:node tr)

  (gest:tick scl)
  (tenvx zz 0.001 0.03 0.5)
  (mul zz zz))

<<top>>=
(define (loop4)
    (cabset (bhold (phasor 1.5 0)) 0)
    (regset (gen_sine (ftnew 8192)) 1)

    (loop4-beat1 (gest:new) (gest:newscalar) (cabgetf 0))
    (modal-perc zz 200 20 800 10)
    (buthp zz 200)
    (mul zz 0.1)

    (loop4-beat2 (gest:new) (gest:newscalar) (cabgetf 0))
    (modal-perc zz 2000 20 5000 20)
    (mul zz 0.5)
    (add zz zz)

    (loop4-beat3 (gest:new) (gest:newscalar) (cabgetf 0))
    (modal-perc zz 1000 10 500 3)
    (mul zz 0.3)
    (buthp zz 700)
    (eqfil zz 1300 1300 3)

    (add zz zz)

    (mul zz 0.3)


    (loop4-vox
      (gest:new) (tract:new) (gest:newscalar) (cabgetf 0) 48 "
beg 8 16
skwexp 1
mr 3 t 0 mg vow-a hit
mr 3 t -8 mg vow-a hit

mr 3 t -5 mg vow-a hit
mr 3 t -1 mg vow-a hit

mr 4 pr 8
mr 3 t 0 gl vow-a hit
mr 3 t -8 mg vow-a hit
mr 2 t -3 gl vow-a hit
end

beg 8 16
skwexp 1
mr 3 t -12 mg vow-a hit
mr 3 t -9 mg vow-a hit

mr 3 t -5 mg vow-a hit
mr 3 t -2 mg vow-a hit

mr 4 pr 8
mr 3 t 0 mg vow-a hit
mr 3 t -9 mg vow-a hit
mr 2 t -4 mg vow-a hit
end

beg 8 16
skwexp 1
mr 3 t -2 mg vow-a hit
mr 3 t -10 mg vow-a hit

mr 3 t -7 mg vow-a hit
mr 3 t -2 mg vow-a hit

mr 4 pr 8
mr 3 t -2 gl vow-a hit
mr 3 t -10 mg vow-a hit
mr 2 t -2 mg vow-a hit
end

beg 8 16
skwexp 1
mr 3 t -2 mg vow-a hit
mr 3 t -9 mg vow-a hit

mr 3 t -7 mg vow-a hit
mr 3 t -2 mg vow-a hit

mr 4 pr 8
mr 3 t -2 mg vow-a hit
mr 3 t -10 mg vow-a hit
mr 2 t -2 mg vow-a hit
end

loop fin
")

    (eqfil zz 100 60 3)
    (mul zz 0.2)

    (loop4-vox
      (gest:new) (tract:new) (gest:newscalar) (cabgetf 0) 60 "
beg 8 16
skwexp 1
t 0 mg vow-o
mr 3 t -1 mg vow-o hit

mr 3 t 0 gl vow-o hit
mr 3 t -8 mg vow-o hit

mr 2 t -5 gl vow-o hit

mr 4 pr 8
t 0 mg vow-o
mr 3 t -1 mg vow-o hit
mr 3 t 0 mg vow-o hit
t -1 mg vow-o hit
end

beg 8 16
skwexp 1
t 0 mg vow-o
mr 3 t -2 mg vow-o hit

mr 3 t 0 mg vow-o hit
mr 3 t -9 mg vow-o hit

mr 2 t -5 mg vow-o hit

mr 4 pr 8
t 0 mg vow-o
mr 3 t -2 mg vow-o hit
mr 3 t 0 mg vow-o hit
t -2 mg vow-o hit
end

beg 8 16
skwexp 1
t -2 mg vow-o
mr 3 t -3 mg vow-o hit

mr 3 t 0 mg vow-o hit
mr 2
t 2 mg vow-o hit
t -10 mg vow-o hit

mr 2 t -7 mg vow-o hit

mr 4 pr 8
t 0 mg vow-o
mr 3 t -3 mg vow-o hit
mr 3 t -2 mg vow-o hit
t -3 mg vow-o hit
end

beg 8 16
skwexp 1
t -2 mg vow-o
mr 3 t -5 mg vow-o hit

mr 3 t 0 mg vow-o hit
mr 3 t -9 mg vow-o hit

mr 2 t -7 mg vow-o hit

mr 4 pr 8
t -2 mg vow-o
mr 3 t -5 mg vow-o hit
mr 3 t -2 mg vow-o hit
t -5 mg vow-o hit
end

loop fin
")
    (mul zz 0.6)
    (butlp zz 2000)
    (eqfil zz 500 500 2)
    (add zz zz)

    (loop4-vox (gest:new) (tract:new) (gest:newscalar) (cabgetf 0) 72 "
beg 8 16
skwexp 1
t 0 mg vow-e
t -1 mg vow-e
mr 3 t -5 mg vow-e hit
mr 3 t -1 mg vow-e hit

mr 3 t 0 mg vow-e hit
t -8 mg vow-e hit

mr 4 pr 8
t 0 mg vow-o
t -1 mg vow-o
mr 3 t -5 mg vow-e hit
mr 3 t 4 mg vow-e hit
end

beg 8 16
skwexp 1
t 0 mg vow-e
t -2 mg vow-e
mr 3 t -5 mg vow-e hit
mr 3 t -2 mg vow-e hit

mr 3 t 0 mg vow-e hit
t -9 mg vow-e hit

mr 4 pr 8
t 0 mg vow-o
t -2 mg vow-o
mr 3 t -5 mg vow-e hit
mr 3 t 3 mg vow-e hit
end

beg 8 16
skwexp 1
t -2 mg vow-e
t -3 mg vow-e
mr 3 t -7 mg vow-e hit
mr 3 t -3 mg vow-e hit

mr 3 t 0 mg vow-e hit
t -10 mg vow-e hit

mr 4 pr 8
t -2 mg vow-o
t -3 mg vow-o
mr 3 t -7 mg vow-e hit
mr 3 t 3 mg vow-e hit
end

beg 8 16
skwexp 1
t -2 mg vow-e
t -5 mg vow-e
mr 3 t -7 mg vow-e hit
mr 3 t -5 mg vow-e hit

mr 3 t -2 mg vow-e hit
t -9 mg vow-e hit

mr 4 pr 8
t -2 mg vow-o
t -5 mg vow-o
mr 3 t -7 mg vow-e hit
mr 3 t -2 mg vow-e hit
end

loop fin
")
    (mul zz 0.4)
    (butlp zz 1000)

    (add zz zz)

    (mul zz 3)

    (add zz zz)

    (bdup)
    (bdup)
    (revsc zz zz 0.97 8000)
    (bdrop)
    (buthp zz 300)
    (mul zz 0.2)
    (add zz zz)
    (dcblock zz)

    (dcblock zz)
    (bunhold (cabget 0)))

Day 5

Thinking about: Bohlen Pierce and duophony.

I've tried working with microtonality (mostly Bohlen Pierce ET) several times, and it's never really stuck for me. In the past, I think I reached too quickly for things like multiplicity and polyphony, trying to make harmonies for tonal systems I didn't fully understand. Really, I should have been focusing on melodic lines. In this arrangement, I attempt to focus on just the melody with an underlying drone. The drone gives us a sense of "home base", that the melody can work on. And hopefully, it can help provide context for more complex harmonic structures in the future.

I'm also going to introduce some of the other shapes I made a few months back (I've only used 3 at this point). And try to make good use of the various metathings in Gest to give this loop today an improvisonational feel.

Retrospect: this reminds me of a bladerunner atmosphere. The new vowels have a very alto-y feel to it. I dialed down the tenseness in the glottis, which gave it a very breathy feel.

<<top>>=
(define loop5-base (/ 432 3)) ;; "nature"
(define (loop5)
  (let ((leadg (gest:new)))
  (gest:weight leadg)
  (mul zz 30)
  (add zz 55)
  (mul zz (/ 1 60))
  (phasor zz 0)
  (bhold zz)
  (cabset zz 0)

  (loop5-drone (gest:new) (tract:new) (cabgetf 0))
  (eqfil zz 100 200 2)
  (mul zz (ampdb -3))
  (loop5-melody leadg (tract:new) (cabgetf 0))
  (mul zz (ampdb -2))
  (dcblock zz)
  (add zz zz)

  (bdup)
  (buthp zz 300)
  (bdup)
  (revsc zz zz 0.97 10000)
  (dcblock zz)
  (bdrop)
  (mul zz (ampdb -10))
  (add zz zz)

  (bunhold (cabget 0))))

(define (loop5-drone g tr cnd)
  (configure-tract tr g 0.01)
  (singer g "
beg 8 2
rep 2
t 0 lin vow-eh
t 0 lin vow-o
end
beg 8 2
rep 2
t -5 lin vow-a
t -5 lin vow-o
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (et zz loop5-base 0 13 3)
  (mul zz 0.5)
  (glottis zz 0.99)
  (tract:node tr))

(define (loop5-melody g tr cnd)
  (configure-tract tr g 0.01)
  (singer g "
beg 8 8
t 8 lin vow-oh
inertia 0.01
mass 0
mr 2 t 8 gl vow-rr

mn 1 3
pr 5
mass 60
t 7 mg vow-a
t 6 gl vow-ih
t 5 sg vow-o
t 4 sg vow-ih
t 3 mg vow-a

pr 4
mass -30
t 10 gl vow-a
t 9 gl vow-a
t 8 gl vow-a
mass 40
t 5 gl vow-a

t 13 lin vow-e
mass -100

mr 4 t 2 gl vow-uh
mass -10
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (sine 6 0.2)
  (add zz zz)
  (et zz loop5-base 0 13 3)
  (glottis zz 0.5)
  (tract:node tr))

Day 6

Thinking about: 16th note shuffle. Electro-swing. Caravan Palace. Scat Singing. Glitch-hop. Max Martin.

<<top>>=
(define (loop6)
  (cabset (bhold (phasor (/ 89 60) 0)) 0)
  (loop6-hihat (cabgetf 0))
  (loop6-snare (cabgetf 0))
  (add zz zz)

  (let ((k (loop6-kik (cabgetf 0))))
  (cabget k)
  (scale (tenvx zz 0.001 0.1 0.1) 1 0.3)
  (cabclr k)
  (loop6-vox (cabgetf 0))
  (mul zz zz)
  (add zz zz)
  (add zz zz))

  (bunhold (cabget 0)))

Borrowing some drum instruments from my synthwave track.

<<top>>=
(define (loop6-kik-seq g phs tk)
  (lambda ()
    (gst:eval-addwords g (list (wordentry "hit" (mkhit tk))) "
beg 4 4
skwshf
hit hit hit hit
end
beg 4 4
skwshf
hit hit hit pr 4 hit mr 2 hit hit
end
loop fin
    ")
    (phs)
    (gest:iculate g)
    (bdrop)
    (gest:tick tk)))

<<top>>=
(define (loop6-kik phs)
(let* (
(tk (gest:newscalar))
(clk
(monolith:mkcab
(loop6-kik-seq (gest:new) phs tk)
0)))


(cabget clk)
(bdup)
(expon zz 1 0.1 0.001)
(scale zz 60 500)
(tphasor zz zz 0)
(pdhalf zz 0.2)
(trd zz (lambda () (gen_sine (ftnew 8192))))
(mul zz 0.3)

(cabget clk)
(tenvx zz 0.001 0.1 0.1)
(mul zz zz)

(cabget clk)
(mode zz 3000 3)
(add zz zz)

clk))

<<top>>=
(define (loop6-hh-seq g phs tk len)
  (lambda ()
    (gst:eval-addwords
     g (list
        (wordentry "hit" (mkhit tk))
        (wordentry "len" (mksetter len))
) "
beg 4 16
skwshf
hit len 0 hit hit hit
hit hit hit hit
hit hit hit hit
hit hit mr 2 hit len 1
end
loop fin
    ")
    (phs)
    (gest:iculate g)
    (bdrop)
    (gest:tick tk)))

<<top>>=
(define (loop6-hihat phs)
  (let*
      ((len (gest:newscalar))
       (clk (monolith:mkcab
             (loop6-hh-seq (gest:new) phs (gest:newscalar) len) 0))
       (lensig (monolith:cabnew (lambda () (gest:scalar len)) 0))
             )
  (cabget clk)
  (tenvx zz
         (param 0.001)
         (scale (cabget lensig) 0.01 0.1)
         (scale (cabget lensig) 0.01 0.2))
  (cabclr clk)
  (noise 0.3)
  (butlp zz (scale (cabget lensig) 4000 5000))
  (cabclr lensig)
  (buthp zz 8000)
  (mul zz zz)))

<<top>>=
(define (loop6-snare-seq g phs tk)
  (lambda ()
    (gst:eval-addwords
      g (list
          (wordentry "hit" (mkhit tk))
          (wordentry "rest" (mkrest))
) "
beg 4 4
rest hit rest hit
end
loop fin
")
    (phs)
    (gest:iculate g)
    (bdrop)
    (gest:tick tk)))

<<top>>=
(define (loop6-snare phs)
  (let* ((tk (gest:newscalar))
         (clk (monolith:cabnew (loop6-snare-seq (gest:new) phs tk) 0)))
    (cabget clk)
    (tenvx zz 0.001 0.07 0.03)
    (noise 0.1)
    (butlp zz 5000)
    (eqfil zz 3000 8000 2)
    (eqfil zz 200 1000 5)
    (buthp zz 200)
    (mul zz zz)

    (cabclr clk)))

Note: I'm using string-append here because the string literal ended up being too big for s9 and I had to break it up into smaller strings.

<<top>>=
(define (loop6-voxsynth g tr cnd gt vib)
  (configure-tract tr g 0.01)
  (singer-words
    g (list
    (wordentry "gt" (mksetter gt))
    (wordentry "vib" (mksetter vib))
) (string-append "
beg 4 4
skwshf
t 0 vow-a gt 1 mg vib 0

mn 2 3 rndn
  pr 2
  pr 4
  t 27 vow-a gt 1 mg
  t 26 vow-e gt 1 mg
  t 24 vow-a gt 1 mg
  t 26 vow-ih gt 1 mg

  t 24 vow-a gt 1 gl

  pr 2
  pr 4
  t 27 vow-a gt 1 mg
  mr 2
  t 24 vow-a gt 1 mg
  t 22 vow-ih gt 1 mg

  t 24 vow-a gt 1 gl

  pr 2
  pr 4
  t 24 vow-a gt 1 mg
  t 26 vow-e gt 1 mg
  t 27 vow-a gt 1 mg
  t 26 vow-ih gt 1 mg

  t 29 vow-a gt 1 gl vib 1


t 0 vow-o gt 0 stp vib 0
end
" "
beg 4 4
skwshf
t -2 vow-a gt 1 mg

mn 2 3 rndn
  pr 2
    pr 4
      t 26 vow-oh gt 1 mg
      mr 2 t 27 vow-e gt 1 mg
      t 29 vow-ih gt 1 mg vib 1
    t 31 vow-a gt 1 gl
  pr 2
    pr 4
      t 24 vow-oh gt 1 mg
      t 27 vow-e gt 1 mg
      t 29 vow-ih gt 1 mg vib 1
      t 27 vow-e gt 1 mg
    t 31 vow-a gt 1 gl
  pr 2
    pr 4
      t 27 vow-oh gt 1 mg
      mr 2 t 26 vow-e gt 1 mg
      t 31 vow-ih gt 1 mg vib 1
    t 29 vow-a gt 1 gl

t 3 t -2 vow-a gt 0 vib 0
end

beg 4 4
skwshf
t 3 vow-a gt 1 gl

mn 2 3 rndn
  pr 2
  pr 4
    t 31 vow-a mg
    t 27 vow-ih mg
    t 26 vow-rr mg
    t 22 vow-ih mg
  t 19 vow-e gl vib 1
  pr 2
  pr 4
    t 29 vow-a mg
    t 27 vow-ih mg
    t 19 vow-rr mg
    t 22 vow-ih mg
  t 26 vow-e gl
  pr 2
  pr 4
    t 31 vow-a mg
    t 29 vow-ih mg
    t 27 vow-rr mg
    t 24 vow-ih mg
  pr 2
    t 27 vow-rr mg vib 1
    t 29 vow-eh exp 4


t 3 vow-a gt 0 vib 0
end
""
beg 4 4
skwshf
t -4 vow-a gt 1 mg

mn 3 3 rndn
pr 3
  pr 2
    pr 3
      t 27 vow-e mg
      t 26 vow-oh mg
      t 24 vow-o mg
    pr 2
      t 27 vow-rr mg
      t 26 vow-ih mg
  t -5 vow-uh gl
  t 23 vow-a gl vib 1
pr 3
  pr 2
    pr 3
      t 27 vow-e mg
      t 26 vow-oh mg
      t 24 vow-o mg
    pr 3
      t 27 vow-e mg
      t 26 vow-oh mg
      t 24 vow-o mg
  t -5 vow-uh gl
  pr 4
  t 23 vow-rr mg vib 1
  t 25 vow-uh mg
  t 26 vow-a mg
  t 30 vow-o mg
pr 3
  t 27 vow-a gl vib 1
  t -4 vow-uh gl vib 0
  t -2 vow-a exp 4

end
loop fin
"))
  (cnd)
  (gest:iculate g)
  (bdup)
  (add zz 33)
  (sine (param 6) (port (scale (gest:scalar vib) 0 0.3) 0.01))
  (add zz zz)

  (mtof zz)
  (glottis zz 0.87)
  (tract:node tr)

  (bswap)
  (add zz (+ 33 24))
  (mtof zz)
  (blsaw zz 0.15)
  (butlp zz 800)
  (add zz zz)

  (gest:scalar gt)
  (port zz 0.001)
  (mul zz zz))

<<top>>=
(define (loop6-vox cnd)
  (loop6-voxsynth (gest:new) (tract:new) cnd (gest:newscalar) (gest:newscalar))
)

Day 7

Thinking about: gospel. 3-part harmony. The times they are a changin'. Minor 6th chords.

<<top>>=
(define (loop7)
  (let ((lg (gest:new)) (e (gest:new)))
    (param 48)
    (mul (gest:weight lg) 15)
    (add zz zz)
    (mul zz (/ 1 60))
    (phasor zz 0)
    (cabset (bhold zz) 0)

    (gst:eval e "
beg 4 4
mr 2 t 0 exp 3
mr 2 t 0.7 lin
end
beg 4 4
mr 3 t 0.3 exp 3
t 0.8 stp
end
beg 4 4
mr 3 t 0.3 exp 3
t 0.5 exp 3
end
beg 4 4
mr 3 t 1.0 exp 3
t 0.3 stp
end
loop fin
")
    (cabget 0)
    (gest:iculate e)
    (bhold zz)
    (cabset zz 1)

    (loop7-vox lg (tract:new) (cabgetf 0) (gest:newscalar)
(cabgetf 1) "
beg 4 12
mr 2 t -5 mg vow-a inertia 0.01 mass -30 gt 1
t -3 mg vow-o
mr 3 t 0 mg vow-a mass 0
mr 2 t 2 mg vow-a
t 4 mg vow-o
mr 3 t 4 mg vow-a
end

beg 4 12
mr 3 t 5 mg vow-a
t 4 mg vow-a mass 20
t 2 mg vow-a
t 0 mg vow-o
mr 4 mt 2
  t 2 mg vow-a mass -50
  t 2 gl vow-a mass -60
mr 2 t 2 mg vow-a gt 0
end

beg 4 12
mr 2 t -5 mg vow-a gt 1 mass 0
t -3 mg vow-o
mr 3 t 0 mg vow-a mass 0
mr 2 t 2 mg vow-a
t 4 mg vow-o
mr 3 t 4 mg vow-a mass -50
end

beg 4 12
mr 3 t 7 mg vow-a
t 5 mg vow-a mass 20
t 4 mg vow-a
t 2 mg vow-o
mr 4 t 0 mg vow-a mass -10
mr 2 t 0 mg vow-a gt 0
end

loop fin
  "))

  (mul zz 1.2)
  (loop7-vox (gest:new) (tract:new) (cabgetf 0) (gest:newscalar)
(cabgetf 1) "
beg 4 12
mr 2 t -8 mg vow-a inertia 0.01 mass -30 gt 1
t -7 mg vow-o
mr 3 t -5 mg vow-a mass 0
mr 2 t -3 mg vow-a
t 0 mg vow-o
mr 3 t 0 mg vow-a
end

beg 4 12
mr 3 t 0 mg vow-a
t 0 mg vow-a mass 20
t -3 mg vow-a
t -5 mg vow-o
mr 4 mt 2
  t -1 mg vow-a
  t 0 mg vow-a
mr 2 t -1 mg vow-a gt 0
end

beg 4 12
mr 2 t -8 mg vow-a mass -30 gt 1
t -7 mg vow-o
mr 3 t -5 mg vow-a mass 0
mr 2 t -3 mg vow-a
t 0 mg vow-o
mr 3 t 0 mg vow-a mass -50
end

beg 4 12
mr 3 t 2 mg vow-a
t 0 mg vow-a mass 20
t 0 mg vow-a
t -1 mg vow-o
mr 4 t -5 mg vow-a mass 0
mr 2 t -5 mg vow-a gt 0
end

loop fin
  ")

  (mul zz 0.75)
  (add zz zz)

  (loop7-vox (gest:new) (tract:new) (cabgetf 0) (gest:newscalar)
(cabgetf 1) "
beg 4 12
mr 2 t -12 mg vow-a inertia 0.01 mass -30 gt 1
t -10 mg vow-o
mr 3 t -8 mg vow-a mass 0
mr 2 t -7 mg vow-a
t -5 mg vow-o
mr 3 t -5 mg vow-a
end

beg 4 12
mr 3 t -3 mg vow-a
t -5 mg vow-a mass 20
t -7 mg vow-a
t -8 mg vow-o
mr 4 mt 2
  t -5 mg vow-a mass 0
  t -4 mg vow-a mass 0
mr 2 t -5 mg vow-a gt 0
end

beg 4 12
mr 2 t -12 mg vow-a mass -30 gt 1
t -10 mg vow-o
mr 3 t -8 mg vow-a mass 0
mr 2 t -7 mg vow-a
t -5 mg vow-o
mr 3 t -5 mg vow-a mass -50
end

beg 4 12
mr 3 t -1 mg vow-a
t -3 mg vow-a mass 20
t -5 mg vow-a
t -7 mg vow-o
mr 4 t -8 mg vow-a mass 0
mr 2 t -8 mg vow-a gt 0
end

loop fin
  ")

  (mul zz 0.7)
  (add zz zz)
  (eqfil zz 1000 800 1.5)

  (bdup)
  (bdup)
  (verbity zz zz 0.9 0.1 0.9)
  (bdrop)
  (mul zz (ampdb -15))
  (dcblock zz)
  (add zz zz)

  (mul zz (ampdb -9))
  (dcblock zz)

  (bunhold (cabget 1))
  (bunhold (cabget 0)))

<<top>>=
(define (loop7-vox g tr cnd gt expr score)
  (configure-tract tr g 0.01)
  (singer-words g (list (wordentry "gt" (mksetter gt))) score)
  (cnd)
  (gest:iculate g)
  (add zz 64)
  (sine (randi 5 6.1 2) (scale (expr) 0.01 0.5))
  (add zz zz)
  (mtof zz)
  (glottis zz 0.7)
  (gest:scalar gt)
  (adsr zz 0.08 0.01 1.0 0.08)
  (mul zz zz)
  (mul zz (scale (expr) 0.8 1.0))
  (tract:node tr))

Day 8

Thinking about: Mombasa from the Inception Soundtrack by Hans Zimmer. It's been lurking in my head for a while.

<<top>>=
(define (loop8)
  (phasor (/ 145 60) 0)
  (bhold zz)
  (cabset zz 0)

  (cabnew (const 0))
  (bhold zz)
  (cabset zz 1)

  (loop8-beat (gest:new) (gest:newscalar) (cabgetf 0))
  (bdup)
  (cthrow zz 0.8 (cabgetf 1))
  (loop8-riff
    (gest:new)
    (tract:new)
    (gest:newscalar)
    (gest:new)
    (cabgetf 0))
  (bdup)
  (cthrow zz 0.4 (cabgetf 1))
  (add zz zz)


  (loop8-strings (gest:new) (gest:newscalar) (cabgetf 0))
  (bdup)
  (cthrow zz 0.4 (cabgetf 1))
  (add zz zz)

  (loop8-kick (cabgetf 0))
  (bdup)
  (buthp zz 100)
  (cthrow zz 1.0 (cabgetf 1))
  (add zz zz)

  (cabget 1)
  (bdup)
  (revsc zz zz 0.92 8000)
  (bdrop)
  (mul zz (ampdb -9))
  (buthp zz 200)
  (simple-delay zz 0 0.03)
  (add zz zz)

  (mul zz 0.5)

  (cabget 0)
  (bunhold zz)
  (cabget 1)
  (bunhold zz))

<<top>>=
(define (loop8-beat g gt cnd)
  (cnd)
  (phsclk zz 4)
  (bdup)
  (mode zz 900 8)
  (dcblock zz)

  (bswap)
  (tenvx zz 0.001 0.002 0.02)
  (noise 0.3)
  (eqfil zz 1000 1000 2)
  (buthp zz 100)
  (butlp zz 8000)
  (mul zz zz)
  (add zz zz)

  (gst:eval-addwords g (list (wordentry "gt" (mksetter gt))) "
beg 4 16
t 0 gt 1 t 0 gt 0 t 0
t 0 gt 1 t 0 gt 0 t 0
t 0 gt 1 t 0 gt 0 t 0
t 0 gt 1 t 0 gt 0 t 0
t 0 gt 1 t 0 gt 0
t 0 gt 1 t 0 gt 0
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (bdrop)
  (gest:scalar gt)

  (scale zz 0.2 1)
  (mul zz zz)
)

<<top>>=
(define (loop8-kick cnd)
  (cnd)
  (phsclk zz 1)
  (tdiv zz 4 0)

;; ;; first, sidechain everything before it
;;   (bdup)
;;   (scale (tenvx zz 0.001 0.1 0.1) 0.1 1)
;;   (mul zz zz)

  (bdup)
  (bdup)
  (expon zz 1.0 1.9 0.0001)
  (bswap)
  (bdup)
  (expon zz 180 0.01 70)
  (tphasor zz zz 0)
  (trd zz (lambda () (gen_sine (ftnew 8192))))
  (mul zz 0.9)

  (mul zz zz)
  (bswap)
  (mode zz 4000 10)
  (add zz zz))

<<top>>=
(define (loop8-mkseq g gt cnd)
(gst:eval-addwords g
(list (wordentry "gt" (mksetter gt))) "
beg 16 8
t 0 gl gt 1
t -5 gl
t -2 gl
mt 2 t -7 gl t 5 gl
mr 4 t -7 stp gt 0
end
loop fin
")
(cnd)
(gest:iculate g))

<<top>>=
(define (loop8-riff g tr gt expr cnd)
  (configure-tract tr g 0.01)

  (let ((seq (monolith:cabnew (lambda ()
(loop8-mkseq (gest:new) gt cnd)

) 0)))

  (singer g  "
beg 16 8
mr 4 t 0 exp 3 vow-e
mr 4 t 0 stp vow-a
end
beg 16 8
mr 4 t 0 exp 3 vow-a
mr 4 t 0 stp vow-ih
end
beg 16 8
mr 4 t 0 exp 3 vow-o
mr 4 t 0 stp vow-uh
end
loop fin
")

  (cnd)
  (gest:iculate g)
  (bdrop)
  (cabget seq)
  (add zz (+ 33 12))
  (mtof zz)
  (glottis zz 0.9)
  (tract:node tr)

  (cabget seq)
  (add zz 33)
  (mtof zz)
  (blsaw zz 0.5)

  (cabget seq)
  (add zz (+ 33 0.1))
  (mtof zz)
  (blsaw zz 0.5)
  (add zz zz)

  (cabget seq)
  (add zz (+ 33 -0.2))
  (mtof zz)
  (blsaw zz 0.5)
  (add zz zz)
  (cabget seq)

  (add zz (+ 33 12 0.2))
  (sine 6 0.1)
  (add zz zz)
  (mtof zz)
  (blsaw zz 0.5)
  (add zz zz)

  (mul zz 0.8)

  (gst:eval expr "
beg 16 8
mr 3 t 0 exp 3
mr 1 t 1 sg
mr 4 t 0 stp
end
loop fin
")
  (cnd)
  (gest:iculate expr)
  (scale zz 300 2000)
  (butlp zz zz)
  (add zz zz)
  (eqfil zz 100 60 2)

  (gest:scalar gt)

  (adsr zz 0.01 0.01 0.9 0.2)
  (mul zz zz)
  (cabclr seq)
  (bdup)
  (buthp zz 100)

  ;;(param 1.0)
  (let ((r (gest:new)))
    (gst:eval r "
beg 16 8
mr 5 t 0.5 exp 3
mr 3 t 1.0 stp
end
loop fin
    ")
(cnd)
(gest:iculate r))
  (cthrow zz zz (cabgetf 1)))
)

<<top>>=
(define (loop8-strings g tk cnd)
  (gst:eval-addwords g (list (wordentry "tk" (mkhit2 tk))) "
beg 4 16
rep 2
mr 3 t 2 sg tk
mr 3 t 2 sg tk
mr 3 t 2 sg tk
mr 3 t 2 sg tk
mr 2 t 2 sg tk
mr 2 t 2 sg tk
end

beg 4 16
rep 2
mr 3 t 3 sg tk
mr 3 t 3 sg tk
mr 3 t 3 sg tk
mr 3 t 3 sg tk
mr 2 t 3 sg tk
mr 2 t 3 sg tk
end

beg 4 16
rep 2
mr 3 t 5 sg tk
mr 3 t 5 sg tk
mr 3 t 5 sg tk
mr 3 t 5 sg tk
mr 2 t 5 sg tk
mr 2 t 5 sg tk
end

beg 4 16
rep 2
mr 3 t 3 sg tk
mr 3 t 3 sg tk
mr 3 t 3 sg tk
mr 3 t 3 sg tk
mr 2 t 3 sg tk
mr 2 t 3 sg tk
end

loop fin
")
  (blsquare (mtof (+ 33 36)) 0.3 0.2)
  (cnd)
  (gest:iculate g)
  (add zz (+ 33 36))
  (mtof zz)
  (blsquare zz 0.3 0.25)
  (add zz zz)

  (tenvx (gest:tick tk) 0.001 0.1 0.3)
  (mul zz zz)
  (butlp zz 1000)
  (mul zz 0.5))

Day 9

Thinking about: isorhythms, riders of rohan apparently?, breathy altos

<<top>>=
(define (loop9)
  (let ((g1 (gest:new))
        (g2 (gest:new))
        (g3 (gest:new)))

    (gest:weight g1)
    (mul zz 30)

    (gest:weight g2)
    (mul zz 30)
    (add zz zz)

    (gest:weight g3)
    (mul zz 30)
    (add zz zz)

    (add zz 60)
    (mul zz (/ 1 60))
    (phasor zz 0)
    (bhold zz)
    (cabset zz 0)
    (loop9-vox1
     g1
     (tract:new)
     (gest:new)
     (gest:new)
     (gest:newscalar)
     (cabgetf 0))

    (loop9-vox2
     g2
     (tract:new)
     (gest:new)
     (gest:new)
     (gest:newscalar)
     (cabgetf 0))
    (mul zz (ampdb -3))
    (add zz zz)

    (loop9-vox3
     g3
     (tract:new)
     (gest:new)
     (gest:new)
     (gest:newscalar)
     (cabgetf 0))
    ;;(eqfil zz 100 100 2)
    ;;(mul zz (ampdb -3))


    (add zz zz)

    (dcblock zz)

    (mul zz (ampdb -3))
    (bunhold (cabget 0)))

  (bdup)
  (bdup)
  (revsc zz zz 0.8 8000)
  (bdrop)
  (mul zz (ampdb -10))
  (dcblock zz)

  (add zz zz))

<<top>>=
(define (loop9-mkvox g tr vow expr gt cnd off tense sn sv se)
  (configure-tract tr vow 0.01)

  (singer vow sv)
  (cnd)
  (gest:iculate vow)
  (bdrop)

  (gst:eval-addwords g (list (wordentry "gt" (mksetter gt))) sn)
  (cnd)
  (gest:iculate g)
  (add zz (- 69 12 off))

  (param 6)
  (gst:eval expr se)

  (cnd)
  (gest:iculate expr)
  (scale zz 0.02 0.18)
  (sine zz zz)
  (add zz zz)
  (mtof zz)
  (glottis zz tense)
  ;;(butlp zz 10000)
  (butlp zz 8000)
  (eqfil zz 8000 8000 0.001)
  (eqfil zz 5000 5000 0.1)
  (tract:node tr)
  (gest:scalar gt)
  (adsr zz 0.02 0.1 1.0 0.05)
  (mul zz zz))

<<top>>=
(define (loop9-vox1 g tr vow expr gt cnd)
(loop9-mkvox g tr vow expr gt cnd 0 0.5
"
beg 6 6
pr 4
  mr 3 t 0 mg mass 0 inertia 0.01 gt 1
  t 5 gl
  mr 2 pr 4
    mr 3 t 7 mg
    t 9 mg
mr 2 pr 4
  t 10 mg mass 10
  t 12 mg grow 0.5
  t 9 mg grow 0.5
  t 10 mg grow 0.5
pr 3
  t 9 mg grow 0.5
  t 7 mg shrink 0.9
  t 5 mg
end

beg 8 8
  t -2 mg mass -10
  mr 2 t 5 mg shrink 0.5
  t -2 mg shrink 0.5
  mr 2 t 0 mg shrink 0.5
  mr 2 t 0 mg gt 0
end

loop fin
"

"
beg 6 2
pr 2
t 0 vow-rr lin
t 0 vow-oh lin

t 0 vow-uh lin
end

beg 8 2
pr 2
t 0 vow-e lin
t 0 vow-uh lin

t 0 vow-oh lin
end

loop fin
"

"
beg 6 2
t 0
t 1
end
beg 8 2
t 0.5
t 0.3
end
loop fin
"
))

<<top>>=
(define (loop9-vox2 g tr vow expr gt cnd)
(loop9-mkvox g tr vow expr gt cnd 0 0.5
"
beg 6 6
t -5 mg gt 1 mass 0
mr 4 t 0 mg
t -2 mg
end

beg 10 10
pr 3
t 3 mg mass 20
t 2 mg grow 0.3
t 0 mg grow 0.3

t 3 mg mass -30
mr 2 t 2 mg
mr 4
pr 4
  t 7 mg shrink 0.4
  t 10 gl shrink 0.1
  mr 2 t 7 mg

mr 2 t -2 mg shrink 0.3
end

loop fin

"
"
beg 6 2
pr 2
t 0 vow-a lin
t 0 vow-oh lin

t 0 vow-e lin
end

beg 10 2
pr 2
t 0 vow-ih lin
t 0 vow-uh lin

t 0 vow-oh lin
end

loop fin
"

"
beg 6 2
t 1
t 0
end
beg 10 2
t 1
t 0.3
end
loop fin
"
))

<<top>>=
(define (loop9-vox3 g tr vow expr gt cnd)
(loop9-mkvox g tr vow expr gt cnd 12 0.7
"
beg 6 6
mr 2 t -12 stp gt 0 mass 0 inertia 0.01
t 0 mg gt 1 mass -10
t -2 mg shrink 0.1
t -9 mg shrink 0.1
t -7 mg shrink 0.1
end

beg 11 11
mr 4 t -2 mg mass 0
mr 3 t 0 mg
mr 4 t -12 stp
end

loop fin
"

"
beg 6 2
pr 2
t 0 vow-uh lin
t 0 vow-o lin

t 0 vow-uh lin
end

beg 11 2
pr 2
t 0 vow-a lin
t 0 vow-uh lin

t 0 vow-a lin
end

loop fin
"

"
beg 6 2
t 0
t 1
end
beg 11 2
t 0.5
t 0.3
end
loop fin
"
))

Day 10

Thinking about: revisiting sounds from day 6, and non-linear tempos from day 4. 7/8 meters.

<<top>>=
(define (loop10)
  (cabset (bhold (phasor (/ (* 190 2) 60) 0)) 0)
  (loop10-hihat (cabgetf 0))
  (loop10-snare (cabgetf 0))
  (add zz zz)

  (let ((k (loop10-kik (cabgetf 0))))
    (cabget k)
    (scale (tenvx zz 0.001 0.1 0.1) 1 0.3)
    (cabclr k)
    (loop10-vox (cabgetf 0))
    (mul zz zz)
    (add zz zz)
    (add zz zz))

  (loop10-rev (cabgetf 0))
  (bunhold (cabget 0)))

<<top>>=
(define (loop10-hihat phs)
  (let*
      ((len (gest:newscalar))
       (amp (gest:newscalar))
       (clk (monolith:mkcab
             (loop10-hh-seq (gest:new) phs (gest:newscalar) len amp) 0))
       (lensig (monolith:cabnew (lambda () (gest:scalar len)) 0))
             )
  (cabget clk)
  (tenvx zz
         (param 0.001)
         (scale (cabget lensig) 0.01 0.1)
         (scale (cabget lensig) 0.01 0.2))
  (cabclr clk)
  (noise (scale (gest:scalar amp) 0.1 0.3))
  (butlp zz (scale (cabget lensig) 4000 5000))
  (cabclr lensig)
  (buthp zz 8000)
  (mul zz zz)))

<<top>>=
(define (loop10-hh-seq g phs tk len amp)
  (lambda ()
    (gst:eval-addwords
     g (list
        (wordentry "hit" (mkhit tk))
        (wordentry "amp" (mksetter amp))
        (wordentry "len" (mksetter len))
) "
beg 21 21
hit len 0 amp 1 hit amp 0.3
hit amp 1 hit amp 0.3
hit amp 1 hit amp 0.3 hit amp 0.3
hit len 0 amp 1 hit amp 0.3
hit amp 1 hit amp 0.3
hit amp 1 hit amp 0.3 hit amp 0.3 len 1
hit len 0 amp 1 hit amp 0.3
hit amp 1 hit amp 0.3
hit amp 1 hit amp 0.3 hit amp 0.3
end

beg 7 7
skwexp 1
hit amp 1 len 0 hit amp 0.3 hit amp 0.3 len 1
hit len 0 amp 1 hit amp 0.3
hit amp 1 pr 2 hit amp 0.3 hit
end

beg 14 14
hit len 0 amp 1 hit amp 0.3
hit amp 1 hit amp 0.3
hit amp 1 hit amp 0.3 hit amp 0.3
hit len 0 amp 1 hit amp 0.3
hit amp 1 hit amp 0.3
hit amp 1 hit amp 0.3 hit amp 0.3 len 1
end

beg 14 14
skwexp 1
hit len 0 amp 1 hit amp 0.3
hit amp 1 hit amp 0.3
hit amp 1 hit amp 0.3 hit amp 0.3
hit amp 1 len 0 hit amp 0.3 hit amp 0.3 len 1
hit len 0 amp 1 hit amp 0.3
hit amp 1 pr 2 hit amp 0.3 hit
end

loop fin
    ")
    (phs)
    (gest:iculate g)
    (bdrop)
    (gest:tick tk)))

<<top>>=
(define (loop10-snare-seq g phs tk)
  (lambda ()
    (gst:eval-addwords
      g (list
          (wordentry "hit" (mkhit tk))
          (wordentry "rest" (mkrest))
) "
beg 21 21
mr 2 rest
mr 2 hit
mr 3 rest

mr 2 rest
mr 2 rest
mr 3 hit

mr 2 rest
mr 2 hit
mr 3 rest
end

beg 7 7
skwexp 1
mr 3 rest
mr 2 hit
mr 2 rest
end

beg 14 14
mr 2 rest
mr 2 hit
mr 3 rest

mr 2 rest
mr 2 rest
mr 3 hit
end

beg 14 14
skwexp 1
mr 2 rest
mr 2 hit
mr 3 rest
mr 3 rest
mr 2 hit
mr 2 rest
end
loop fin
")
    (phs)
    (gest:iculate g)
    (bdrop)
    (gest:tick tk)))

<<top>>=
(define (loop10-snare phs)
  (let* ((tk (gest:newscalar))
         (clk (monolith:cabnew (loop10-snare-seq (gest:new) phs tk) 0)))
    (cabget clk)
    (tenvx zz 0.001 0.07 0.03)
    (noise 0.1)
    (butlp zz 5000)
    (eqfil zz 3000 8000 2)
    (eqfil zz 200 1000 5)
    (buthp zz 200)
    (mul zz zz)

    (cabclr clk)))

<<top>>=
(define (loop10-kik-seq g phs tk)
  (lambda ()
    (gst:eval-addwords g (list (wordentry "hit" (mkhit tk))) "
beg 21 21
mr 2 hit mr 2 hit mr 3 hit
mr 2 hit mr 2 hit mr 3 hit
mr 2 hit mr 2 hit mr 3 hit
end

beg 7 7
skwexp 1
mr 3 hit mr 2 hit mr 2 hit
end

beg 14 14
mr 2 hit mr 2 hit mr 3 hit
mr 2 hit mr 2 hit mr 3 hit
end

beg 14 14
skwexp 1
mr 2 hit mr 2 hit mr 3 hit
mr 3 hit mr 2 hit mr 2 hit
end
loop fin
    ")
    (phs)
    (gest:iculate g)
    (bdrop)
    (gest:tick tk)))

<<top>>=
(define (loop10-kik phs)
(let* (
(tk (gest:newscalar))
(clk
(monolith:mkcab
(loop10-kik-seq (gest:new) phs tk)
0)))


(cabget clk)
(bdup)
(expon zz 1 0.1 0.001)
(scale zz 60 500)
(tphasor zz zz 0)
(pdhalf zz 0.2)
(trd zz (lambda () (gen_sine (ftnew 8192))))
(mul zz 0.3)

(cabget clk)
(tenvx zz 0.001 0.1 0.1)
(mul zz zz)

(cabget clk)
(mode zz 3000 3)
(add zz zz)

clk))

<<top>>=
(define (loop10-voxsynth g tr cnd gt vib)
  (configure-tract tr g 0.01)
  (singer-words
    g (list
    (wordentry "gt" (mksetter gt))
    (wordentry "vib" (mksetter vib))
) (string-append
"
beg 21 21
mr 2 t 0 vow-a gl gt 1 vib 0
mr 2 t 27 mg gt 1 vow-a
mr 2 t 24 mg gt 1 vow-a
t 12 mg gt 1 vow-a

mr 2 t -1 vow-a stp gt 1 vib 0
mr 2 t 26 mg gt 1 vow-a
mr 2 t 23 mg gt 1 vow-a
t 11 mg gt 1 vow-a

mr 2 t 2 vow-a stp gt 1 vib 0
mr 2 t 23 mg gt 1 vow-a
mr 2 t 26 mg gt 1 vow-a
t 11 mg gt 1 vow-a
end

beg 7 7
skwexp 1
mr 2 t 3 vow-a stp gt 1 mg vib 0
t 19 mg gt 1 vow-a
t 24 mg gt 1 vow-a vib 1
t 27 mg gt 1 vow-a
t 29 mg gt 1 vow-a
t 31 mg gt 1 vow-a
end
"
"
beg 14 14
mr 2 t 3 vow-a gl gt 1 vib 0
mr 2 t 31 mg gt 1 vow-a
mr 2 t 27 mg gt 1 vow-a
t 19 mg gt 1 vow-a

mr 2 t -2 vow-a stp gt 1 vib 0
mr 2 t 29 mg gt 1 vow-a
mr 2 t 26 mg gt 1 vow-a
t 17 mg gt 1 vow-a
end

beg 14 14
skwexp 1
mr 2 t -4 vow-a stp gt 1 vib 0
mr 2 t 27 mg gt 1 vow-a
mr 2 t 24 mg gt 1 vow-a
t 15 mg gt 1 vow-a
mr 3 t -5 vow-a gl gt 1 vib 0
mr 3 t 23 vow-a mg gt 1 vib 1
t 27 vow-a mg
end
loop fin
"))
  (cnd)
  (gest:iculate g)
  (bdup)
  (add zz 33)
  (sine (param 6) (port (scale (gest:scalar vib) 0 0.3) 0.01))
  (add zz zz)

  (mtof zz)
  (glottis zz 0.87)
  (tract:node tr)

  (bswap)
  (add zz (+ 33 24))
  (mtof zz)
  (blsaw zz 0.15)
  (butlp zz 800)
  (add zz zz)

  (gest:scalar gt)
  (port zz 0.001)
  (mul zz zz))

<<top>>=
(define (loop10-vox cnd)
  (loop10-voxsynth (gest:new) (tract:new) cnd (gest:newscalar) (gest:newscalar)))

<<top>>=
(define (loop10-rev cnd)
  (bdup)
  (bdup)
  (revsc zz zz 0.98 8000)
  (bdrop)
  (dcblock zz)
  (let ((expr (gest:new)))
    (gst:eval expr "
beg 28 1
t 0 stp
end
beg 28 3
mr 2 t 0 exp 1
t 1 stp
end
loop fin
")
    (cnd)
    (gest:iculate expr)
    (scale zz 0 0.05)
    (port zz 0.005)
    (mul zz zz))
  (bdup)
  (simple-delay zz 0.3 0.1)
  (add zz zz)
  (add zz zz))

Day 11

Thinking about: imogen heap, hide and seek, talkboxes, density.

<<top>>=
(define (loop11)
  (let* ((seq (gest:new)))
    (param 97)
    (gest:weight seq)
    (mul zz 20)
    (add zz zz)
    (mul zz (/ 1 60))
    (cabset (bhold (phasor zz 0)) 0)
    (loop11-vox seq (cabgetf 0))
    (bdup)
    (loop11-talkbox (cabgetf 0))
    (bswap)
    (mul zz 0.6)
    (add zz zz)
    (mul zz (ampdb -6))

    (bdup)
    (bdup)
    (revsc zz zz 0.95 10000)
    (bdrop)
    (mul zz (ampdb -20))
    (dcblock zz)
    (add zz zz)
    (bunhold (cabget 0))))

<<top>>=
(define loop11-base 64)

<<top>>=
(define (loop11-vox seq cnd)
  (let*
    ((tr (tract:new))
     (gt (gest:newscalar))
     (vib (gest:new))
)
    (configure-tract tr seq 0.02)

    (singer-words
      seq (list (wordentry "gt" (mksetter gt))) "
beg 6 6
mr 2 t 0 mg jul-ah gt 1 mass 0 inertia 0.01
t 2 mg jul-oo mass -80
mr 1 t -1 stp jul-ah mass -120
mr 2 t -1 stp jul-ah gt 0
end

beg 6 6
mr 2 t -3 mg jul-ah gt 1 mass 0
pr 2
  t -1 mg jul-oo mass -30
  t -3 mg jul-ah mass -30
mr 3 t -5 mg jul-oo mass -80
end

beg 6 6
t 5 mg jul-ah gt 1 mass 0 inertia 0.01
mr 2 pr 4
mr 3 t 4 mg jul-oo mass -30
t 2 mg jul-oo shrink 0.9
mr 2 t 7 mg jul-ah shrink 0.8
t 7 mg jul-ah gt 0
end

beg 6 6
mr 2 t -3 mg jul-ah gt 1 mass -30
pr 2
  t -1 mg jul-oo shrink 0.5
  t -3 mg jul-ah shrink 0.8
mr 3 t -5 gl jul-oo mass -80
end

loop fin
      ")
    (cnd)
    (gest:iculate seq)
    (add zz loop11-base)
    (sine 6 0.3)

    (gst:eval vib "
beg 6 2
t 0.01 exp 1
t 0.3
end
beg 6 2
t 0.01 exp 1
t 0.3
end
beg 6 2
t 0.01 exp 1
t 1.0
end
beg 6 2
t 0.01 exp 1
t 0.3
end
loop fin
")
    (cnd)
    (gest:iculate vib)
    (mul zz zz)

    (add zz zz)
    (mtof zz)
    (glottis zz 0.5)
    (tract:node tr)
    (gest:scalar gt)
    (adsr zz 0.03 0.1 1 0.08)
    (mul zz zz)
))

<<top>>=
(define (loop11-talkbox cnd)
  (let*
      ((v1 (gest:new))
       (v2 (gest:new))
       (v3 (gest:new))
       (v4 (gest:new)))
    (gst:eval v1 "
beg 6 6
mr 3 t -5 mg
mr 3 t -5 sg
end
beg 6 6
mr 3 t -5 mg
mr 3 t -5 mg
end

beg 6 6
mr 3 t -5 mg
mr 3 t -5 sg
end
beg 6 6
mr 3 t -5 mg
mr 3 t -5 mg
end
loop fin
")
    (cnd)
    (gest:iculate v1)
    (add zz loop11-base)
    (port zz 0.001)
    (mtof zz)
    (blsaw zz 0.1)
    (gst:eval v2 "
beg 6 6
mr 3 t -8 mg
mr 3 t -10 sg
end
beg 6 6
t -12 mg
mr 2 t -10 mg
mr 3 t -10 gl
end

beg 6 6
mr 3 t -8 mg
mr 3 t -10 sg
end
beg 6 6
t -12 mg
mr 2 t -10 mg
mr 3 t -10 gl
end
loop fin
")
    (cnd)
    (gest:iculate v2)
    (add zz loop11-base)
    (port zz 0.001)
    (mtof zz)
    (blsaw zz 0.1)
    (add zz zz)
    (gst:eval v3 "
beg 6 6
mr 2 t 2 mg
t 7 mg
mr 3 t -1 mg
end
beg 6 6
mr 2 t -1 mg
t 2 mg
t 0 mg
t -1 mg
t -3 mg
end

beg 6 6
mr 2 t 2 mg
t 7 mg
mr 3 t -1 mg
end
beg 6 6
mr 2 t -1 mg
t 2 mg
t 0 mg
t -1 mg
t -3 mg
end
loop fin
")
    (cnd)
    (gest:iculate v3)
    (add zz loop11-base)
    (port zz 0.001)
    (mtof zz)
    (blsaw zz 0.1)
    (add zz zz)
    (gst:eval v4 "
beg 6 6
mr 3 t 0 mg
mr 3 t -5 sg
end
beg 6 6
mr 3 t -3 mg
mr 3 t -5 mg
end

beg 6 6
mr 3 t -12 mg
mr 3 t -5 sg
end
beg 6 6
mr 3 t -3 mg
mr 3 t -5 mg
end
loop fin
")
    (cnd)
    (gest:iculate v4)
    (add zz (- loop11-base 12))
    (port zz 0.001)
    (mtof zz)
    (blsaw zz 0.1)
    (add zz zz)

    (mul zz 0.5)

    (butlp zz 5000)

    ;;(bswap) (mul zz 0)
    (talkbox zz zz 0.9)

    (butlp zz 8000)

    (dcblock zz)
))

Day 12

Thinking about: "betray" by hecanjog. Synthwave/vaporwave. Alison Moyet.

<<top>>=
(define (loop12)
  (let ((rev (monolith:cabnew (lambda () (const 0)) 1)))
    (cabset (bhold (phasor (/ 98 60) 0)) 0)
    (loop12-vox (cabgetf 0))
    (buthp zz 400)
    (mul zz (ampdb -3))
    (bdup)
    (cthrow zz 0.9 (cabgetf rev))

    (let ((k (loop12-kik (cabgetf 0))))
      (loop12-bass (cabgetf 0))
      (scale (tenvx (cabget k) 0.02 0.1 0.1) 1 0.01)
      (mul zz zz)
      (bdup)
      (buthp zz 100)
      (cthrow zz 0.3 (cabgetf rev))

      (add zz zz)
      (cabclr k))

    (add zz zz)

    (loop12-snare (cabgetf 0))
    (mul zz (ampdb -5))
    (add zz zz)

    (loop12-hh (cabgetf 0))
    (add zz zz)

    (loop12-arp (cabgetf 0))
    (bdup)
    (simple-delay zz 0.6 (* (/ 60 98) 0.75))
    (mul zz 0.3)
    (add zz zz)
    (buthp zz 500)
    (add zz zz)
    (bdup)
    (cthrow zz 0.3 (cabgetf rev))

    (cabget rev)
    (bdup)
    (revsc zz zz 0.97 10000)
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -13))
    (buthp zz 300)
    (add zz zz)

    (cabclr rev)
    (bunhold (cabget 0))))

<<top>>=
(define (loop12-vox cnd)
  (let ((g (gest:new)) (tr (tract:new)) (gt (gest:newscalar)))
    (configure-tract tr g 0.01)
    (singer-words g (list (wordentry "gt" (mksetter gt))) "
beg 8 16
mr 3 t 2 mg jul-ah gt 1
mr 2 t 4 mg jul-oh
mr 3 t 4 mg jul-ah
mr 6 t 4 stp jul-ah gt 0
mr 2 t 0 mg jul-oh gt 1
end
beg 8 16
mr 3 t 2 mg jul-ah gt 1
mr 2 t 4 mg jul-oh
mr 3 t 4 mg jul-ah
mr 6 t 4 stp jul-ah gt 0
t 7 mg jul-oo gt 1
t 0 stp jul-ah
end
beg 8 16
mr 6 t 0 mg jul-ah
t 7 mg jul-oo gt 1
mr 5 t 0 mg jul-ah
mr 4 t 0 mg jul-ah gt 0
end
beg 8 1
t 0 jul-ah stp gt 0
end
loop fin
")
    (cnd)
    (gest:iculate g)
    (add zz 60)
    (mtof zz)
    (glottis zz 0.5)
    (tract:node tr)
    (gest:scalar gt)
    (adsr zz 0.03 0.1 1 0.08)
    (mul zz zz)
    )
)

<<top>>=
(define (loop12-kik-seq g phs tk)
  (lambda ()
    (gst:eval-addwords g (list (wordentry "hit" (mkhit tk))) "
beg 4 4
hit hit hit hit
end
loop fin
    ")
    (phs)
    (gest:iculate g)
    (bdrop)
    (gest:tick tk)))

<<top>>=
(define (loop12-kik phs)
(let* (
(tk (gest:newscalar))
(clk
(monolith:mkcab
(loop12-kik-seq (gest:new) phs tk)
0)))


(cabget clk)
(bdup)
(expon zz 1 0.1 0.001)
(scale zz 60 500)
(tphasor zz zz 0)
(pdhalf zz 0.2)
(trd zz (lambda () (gen_sine (ftnew 8192))))
(mul zz 0.3)

(cabget clk)
(tenvx zz 0.001 0.1 0.1)
(mul zz zz)

(cabget clk)
(mode zz 3000 3)
(add zz zz)

clk))

<<top>>=
(define (loop12-snare-seq g phs tk)
  (lambda ()
    (gst:eval-addwords
      g (list
          (wordentry "hit" (mkhit tk))
          (wordentry "rest" (mkrest))
) "
beg 4 4
rest hit rest hit
end
loop fin
")
    (phs)
    (gest:iculate g)
    (bdrop)
    (gest:tick tk)))

<<top>>=
(define (loop12-snare phs)
  (let* ((tk (gest:newscalar))
         (clk (monolith:cabnew (loop12-snare-seq (gest:new) phs tk) 0)))
    (cabget clk)
    (tenvx zz 0.001 0.07 0.07)
    (noise 0.1)
    (butlp zz 5000)
    (eqfil zz 8000 8000 2)
    (eqfil zz 200 1000 5)
    (buthp zz 200)
    (mul zz zz)

    (bdup) (bdup)
    (verbity zz zz 0.9 0.9 0.2)
    (bdrop)

    (cabget clk)
    (tenvx zz 0.001 0.08 0.2)
    (mul zz zz)
    (mul zz 0.8)
    (add zz zz)
    (cabclr clk)))

<<top>>=
(define (loop12-bass-seq cnd)
 (lambda ()
  (let ((g (gest:new)))
    (gst:eval g
              "
beg 32 4
t 0 mg
t -3 mg
t -7 mg
t 0 mg
end
loop fin
")
    (cnd)
    (gest:iculate g))))

(define (loop12-bass cnd)
  (let
      ((seq (monolith:mkcab (loop12-bass-seq cnd) 0))
       (ft (mksineft)))
    (cabget seq)
    (add zz 36)
    (mtof zz)
    (fmpair zz 3 1.00 8 0.6 (reggetf ft))

    (cabget seq)
    (add zz 36.1)
    (mtof zz)
    (fmpair zz 5 1.001 8 0.3 (reggetf ft))
    (add zz zz)
    (mul zz 0.2)
    (buthp zz 300)

    (cabget seq)
    (add zz 36)
    (mtof zz)
    (fmpair zz 1 1.001 1.1 0.1 (reggetf ft))
    (add zz zz)
    (mul zz 0.3)

    (mul zz (ampdb -3))

    (cnd)
    (phsclk zz 4)
    (tenvx zz 0.001 0.1 0.01)
    (mul zz zz)
    (eqfil zz 1000 1000 0.9)

    (cabclr seq)
    (regclr ft)))

<<top>>=
(define (loop12-hh phs)
  (let*
      ((len (gest:newscalar))
       (amp (gest:newscalar))
       (clk (monolith:mkcab
             (loop12-hh-seq (gest:new) phs (gest:newscalar) len amp) 0))
       (lensig (monolith:cabnew (lambda () (gest:scalar len)) 0))
             )
  (cabget clk)
  (tenvx zz
         (param 0.001)
         (scale (cabget lensig) 0.01 0.1)
         (scale (cabget lensig) 0.01 0.2))
  (cabclr clk)
  (noise (scale (gest:scalar amp) 0.1 0.3))
  (butlp zz (scale (cabget lensig) 4000 5000))
  (cabclr lensig)
  (buthp zz 8000)
  (mul zz zz)))

<<top>>=
(define (loop12-hh-seq g phs tk len amp)
  (lambda ()
    (gst:eval-addwords
     g (list
        (wordentry "hit" (mkhit tk))
        (wordentry "amp" (mksetter amp))
        (wordentry "len" (mksetter len))
) "
beg 4 16
hit len 0 amp 1 hit hit hit
hit hit hit hit
hit hit hit hit
hit hit hit hit
end

beg 4 16
hit len 0 amp 1 hit hit hit
hit hit hit hit
hit hit hit hit
hit hit mr 2 hit len 1
end

loop fin
    ")
    (phs)
    (gest:iculate g)
    (bdrop)
    (gest:tick tk)))

<<top>>=
(define (loop12-arp cnd)
  (let* ((seq (gest:new)))
    (gst:eval seq "
beg 4 16
rep 2
t 0 mg t 4 mg t 7 mg t 11 mg
t 12 mg t 11 mg t 7 mg t 4 mg
t 0 mg t 4 mg t 7 mg t 11 mg
t 12 mg t 11 mg t 7 mg t 4 mg
end
beg 4 16
rep 2
t -3 mg t 0 mg t 7 mg t 11 mg
t 12 mg t 11 mg t 7 mg t 4 mg
t -3 mg t 0 mg t 7 mg t 11 mg
t 12 mg t 11 mg t 7 mg t 4 mg
end
beg 4 16
rep 2
t -3 mg t 0 mg t 7 mg t 12 mg
t 14 mg t 12 mg t 7 mg t 4 mg
t -3 mg t 0 mg t 7 mg t 12 mg
t 14 mg t 12 mg t 7 mg t 4 mg
end
beg 4 16
rep 2
t -5 mg t 0 mg t 7 mg t 12 mg
t 14 mg t 12 mg t 7 mg t 4 mg
t -5 mg t 0 mg t 7 mg t 12 mg
t 14 mg t 12 mg t 7 mg t 4 mg
end
loop fin
")
  (cnd)
  (gest:iculate seq)
  (add zz 60)
  (mtof zz)
  (blsaw zz 0.3)
  (butlp zz 800)
  (butlp zz 1000)))

Day 13

Not sure how this one is going to turn out. I don't have much of a plan.

Will be thinking about: breathy alto(s?) voices riffing to a drone, which might be a bowed string physical model I have lying around.

Ended up also thinking about ornamentation.

almost sounds like something you'd hear in the witcher soundtracks, except not as sharp.

<<top>>=
(define loop13-base 59)

<<top>>=
(define (loop13)
  (let ((g (gest:new)))
  (gest:weight g)
  (mul zz 30)
  (add zz 70)
  (mul zz (/ 1 60))
  (phasor zz 0)
  (bhold zz)
  (cabset zz 0)

  (loop13-vox g (cabgetf 0))
  (loop13-drone (cabgetf 0))

  (add zz zz)

  (mul zz (ampdb -3))

  (bdup)
  (bdup)

  (revsc zz zz 0.97 10000)
  (bdrop)
  (mul zz (ampdb -15))
  (dcblock zz)
  (add zz zz)

  (bunhold (cabget 0))
))

<<top>>=
(define (loop13-vox g cnd)
  (let*
      ((tr (tract:new))
       (gt (gest:newscalar))
       (expr (gest:new)))
    (configure-tract tr g 0.02)
    (singer-words
     g (list (wordentry "gt" (mksetter gt))) "
beg 4 4
pr 4
  mr 3 t 0 jul-ah mg gt 1 mass 0 inertia 0.01
  pr 2
    t 2 jul-oh gl
    t 0 jul-ah gl
mr 2 t -2 jul-ah mg mass -50
pr 2
  t 2 jul-ah mg shrink 0.8
  t 3 jul-oh mg shrink 0.8
end
beg 4 4
t 5 jul-ahmute lin mass -100
mr 3 t 7 jul-ah mg
end

beg 4 4
t 0 jul-ah mg mass 30
t 2 jul-ah mg grow 0.5
t -2 jul-ah mg grow 0.5
pr 2
  t 2 jul-ah mg grow 0.3
  t 3 jul-oh mg mass 0
end

beg 4 4
pr 4
  mr 3 t 5 jul-oo mg
  pr 3
    t 7 jul-oo sg
    t 9 jul-oo sg
    t 5 jul-oh mg

t 3 jul-ah mg
mr 2 t 2 jul-ah gl
end
loop fin
"
)
    (cnd)
    (gest:iculate g)
    (add zz loop13-base)
    (sine 5.5 0.5)
    (gst:eval expr "
beg 8 8
t 0 exp 2
t 0.5
mr 2 t 0.1
mr 2 t 0.5 exp 2
mr 2 t 1.0 exp 2
end
loop fin
")
    (cnd)
    (gest:iculate expr)
    (mul zz zz)
    (add zz zz)
    (mtof zz)
    (glottis zz 0.5)
    (tract:node tr)
    (gest:scalar gt)
    (adsr zz 0.02 0.1 1 0.08)
    (mul zz zz)
))

<<top>>=
(define (loop13-drone cnd)
  (let
      ((drone1 (gest:new))
      (drone2 (gest:new)))
  (gst:eval drone1 "
beg 16 2
t 0 sg
t -2 sg
end
loop fin
")
  (cnd)
  (gest:iculate drone1)
  (add zz (- loop13-base  12))
  (mtof zz)
  (violin zz 0.1 0.1 0.1)

  (gst:eval drone2 "
beg 16 2
t 7 sg
t 5 sg
end
loop fin
")
  (cnd)
  (gest:iculate drone2)
  (add zz (- loop13-base 12))
  (mtof zz)
  (violin zz 0.1 0.1 0.1)

  (add zz zz)

  (dcblock zz)
  (mul zz (ampdb -6))
))

Day 14

Thinking about: Hold Music, Corporate Bossa Nova, whispering, airy, raspy.

<<top>>=
(define (loop14)
  (let ((rev (monolith:cabnew (lambda () (const 0)) 1)))
        (cabset (bhold (phasor (/ 125 60) 0)) 0)
        (loop14-shaker (cabgetf 0))
        (mul zz (ampdb -5))
        (bdup)
        (cthrow zz 0.1 (cabgetf rev))
        (loop14-clavi (cabgetf 0))
        (mul zz (ampdb -3))
        (bdup)
        (cthrow zz 0.2 (cabgetf rev))
        (add zz zz)
        (loop14-voices (cabgetf 0))
        (mul zz 1.2)
        (bdup)
        (cthrow zz 0.3 (cabgetf rev))
        (add zz zz)
        (bunhold (cabget 0))

        (mul zz (ampdb -2))
        (cabget rev)
        (bdup)
        (revsc zz zz 0.9 8000)
        (bdrop)
        (mul zz (ampdb -10))
        (dcblock zz)
        (add zz zz)
        (cabclr rev)))

<<top>>=
(define (loop14-shaker cnd)
  (let
      ((g (gest:new))
       (hit (gest:newscalar))
       (amp (gest:newscalar)))
    (gst:eval-addwords
     g (list
        (wordentry "hit" (mkhit hit))
        (wordentry "amp" (mksetter amp))
) "
beg 4 8
hit amp 1 hit amp 0.3 hit
hit amp 1 hit amp 0.3 hit
hit amp 1 hit amp 0.3
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (bdrop)
  (gest:tick hit)
  (tenvx zz 0.001 0.05 0.01)
  (noise 0.4)
  (gest:scalar amp)
  (mul zz zz)
  (buthp zz 5000)
  (butlp zz 8000)
  (mul zz zz)))

<<top>>=
(define (loop14-clavi cnd)
  (let
      ((g (gest:new))
       (hit (gest:newscalar)))
    (gst:eval-addwords
     g (list
        (wordentry "hit" (mkhit hit))
        (wordentry "rest" (mkrest))
) "
beg 4 4
rest
hit
hit
rest
end
beg 4 8
mr 3 hit
mr 3 hit
mr 2 hit
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (bdrop)
  (gest:tick hit)
  (mode zz 1200 20)
  (bdup)
  (mode zz 2200 20)
  (bswap)
  (mode zz 5000 100)
  (add zz zz)
  (dcblock zz)

  (mul zz (ampdb -6))))

<<top>>=
(define loop14-base 58)

<<top>>=
(define (loop14-mkvoice cnd score tense off)
(let
      ((seq (gest:new))
       (tr (tract:new))
       (gt (gest:newscalar)))
    (configure-tract tr seq 0.01)
    (singer-words seq (list (wordentry "gt" (mksetter gt))) score)
    (cnd)
    (gest:iculate seq)
    (add zz (+ loop14-base off))
    (mtof zz)
    (glottis zz tense)
    (tract:node tr)
    (adsr (gest:scalar gt) 0.02 0.1 1 0.04)
    (mul zz zz)))

Playing around with delaying the voices a little bit. adds a bit of stagger, smears the transients.

<<top>>=
(define (loop14-voices cnd)
(loop14-mkvoice cnd "
beg 8 8
mr 4 t 11 mg jul-ah gt 1
t 11 mg jul-ah gt 0
t 4 mg jul-oo gt 1
mr 2 pr 3
t 11 mg jul-ah
t 7 mg jul-oh
t 4 mg jul-ah
end
beg 8 8
mr 4 t 10 mg jul-ah gt 1
mr 4 t 10 mg jul-ah gt 0
end
beg 8 8
mr 4 t 9 mg jul-ah gt 1
t 9 mg jul-ah gt 0
t 2 mg jul-oh gt 1
mr 2 pr 3
t 9 mg jul-ah
t 5 mg jul-uh
t 2 mg jul-ah
end
beg 8 8
mr 3 t 8 mg jul-ah gt 1
t 8 mg jul-ah gt 0
mr 2 t 8 mg jul-oo gt 1
mr 2 t 10 mg jul-ah
end
loop fin
" 0.1 0)

(loop14-mkvoice cnd "
beg 8 8
mr 4 t 7 mg jul-ah gt 1
t 7 mg jul-ah gt 0
t 0 mg jul-oo gt 1
mr 2 pr 3
t 7 mg jul-ah
t 4 mg jul-oh
t 0 mg jul-ah
end
beg 8 8
mr 4 t 7 mg jul-ah gt 1
mr 4 t 7 mg jul-ah gt 0
end
beg 8 8
mr 4 t 5 mg jul-ah gt 1
t 5 mg jul-ah gt 0
t -3 mg jul-oh gt 1
mr 2 pr 3
t 5 mg jul-ah
t 0 mg jul-uh
t -3 mg jul-ah
end
beg 8 8
mr 3 t 5 mg jul-ah gt 1
t 5 mg jul-ah gt 0
mr 2 t 5 mg jul-oo gt 1
mr 2 t 7 mg jul-ah
end
loop fin
" 0.1 0)
(simple-delay zz 0 0.02)
(add zz zz)
(loop14-mkvoice cnd "
beg 8 8
mr 4 t 4 mg vow-a gt 1
t 4 mg vow-a gt 0
t 0 mg vow-o gt 1
mr 2 pr 3
t 7 mg vow-a
t 4 mg vow-oh
t 0 mg vow-a
end
beg 8 8
mr 4 t 3 mg vow-a gt 1
mr 4 t 3 mg vow-a gt 0
end
beg 8 8
mr 4 t 2 mg vow-a gt 1
t 2 mg vow-a gt 0
t 2 mg vow-oh gt 1
mr 2 pr 3
t 9 mg vow-a
t 5 mg vow-uh
t 2 mg vow-a
end
beg 8 8
mr 3 t 1 mg vow-a gt 1
t 1 mg vow-a gt 0
mr 2 t 1 mg vow-o gt 1
mr 2 t 3 mg vow-a
end
loop fin
"
0.3 0)
(simple-delay zz 0 0.03)
(add zz zz)

(loop14-mkvoice cnd "
beg 8 8
mr 4 t 0 mg vow-a gt 1
t 0 mg vow-a gt 0
t -1 mg vow-o gt 1
mr 2 pr 3
t 0 mg vow-a
t -1 mg vow-oh
t -5 mg vow-a
end
beg 8 8
mr 4 t 0 mg vow-a gt 1
mr 4 t 0 mg vow-a gt 0
end
beg 8 8
mr 4 t -2 mg vow-a gt 1
t -2 mg vow-a gt 0
t -7 mg vow-oh gt 1
mr 2 pr 3
t -2 mg vow-a
t -3 mg vow-uh
t -7 mg vow-a
end
beg 8 8
mr 3 t -2 mg vow-a gt 1
t -2 mg vow-a gt 0
mr 2 t -2 mg vow-o gt 1
mr 2 t 1 mg vow-a
end
loop fin
" 0.3 0)
(simple-delay zz 0 0.04)
(add zz zz)
(mul zz (ampdb -5)))

Day 15

Thinking about: abrupt chaos. pockets of calm. using more of the vocal tract shapes I made, even the strange ones. Roomful of Teeth tumbles around in the back of my head. Also finally got around to making so you don't have to assign vowel shapes to every target.

<<top>>=
(define loop15-base 58)

<<top>>=
(define (loop15)
  (let ((g1 (gest:new)) (g2 (gest:new)) (g3 (gest:new)))
    (gest:weight g1)
    (mul zz 30)
    (gest:weight g2)
    (mul zz 30)
    (add zz zz)
    (gest:weight g3)
    (mul zz 30)
    (add zz zz)

    (add zz 120)
    (mul zz (/ 1 60))
    (phasor zz 0)
    (bhold zz)
    (cabset zz 0)

    (loop15-vox1 g1 (cabgetf 0))
    (loop15-vox2 g2 (cabgetf 0))
    (add zz zz)
    (loop15-vox3 g3 (cabgetf 0))
    (add zz zz)
    (dcblock zz)
    (mul zz (ampdb -3))
    (bunhold (cabget 0))))

<<top>>=
(define (loop15-mkvox g cnd sco)
  (let ((tr (tract:new)))
    (configure-tract tr g 0.04)
    (singer g sco)
    (cnd)
    (gest:iculate g)
    (add zz loop15-base)
    (mtof zz)
    (glottis zz 0.5)
    (tract:node tr)))

Vocals 1.

<<top>>=
(define (loop15-vox1 g cnd)
  (loop15-mkvox g cnd "
beg 4 1
mr 4 t 0 gl jul-ah mass 0 inertia 0.01
end
beg 4 4
t 1 lin jul-uh
t 3 lin jul-ah
t -12 lin vow-rr
t -10 exp 3 vow-e
end
beg 4 1
mr 4 t -2 gl jul-oo
end
beg 4 4
pr 4
t -1 sg jul-ah
t 2 sg jul-oh
t 1 sg jul-ah
t 0 sg jul-oh

pr 5
t -1 sg jul-ah
t 2 sg jul-oh
t 1 sg jul-ah
t 7 mg jul-ee
t 8 mg jul-ee

pr 5
t -1 sg jul-ah
t 2 sg jul-oh
t 1 sg jul-ah
t 0 sg jul-oh
t 1 sg jul-ah

t -1 lin jul-ah mass -120
end
beg 4 1
mr 4 t 3 mg jul-ah
end

beg 4 4
t 0 mg jul-oh
t -1 mg
t 1 mg
t -2 mg
end

beg 4 4
mr 4 t 5 mg jul-oo
end

beg 4 4
mr 4 t -8 exp 1 jul-ee mass -120
end
loop fin
"))

Vocals 2.

<<top>>=
(define (loop15-vox2 g cnd)
  (loop15-mkvox g cnd "
beg 4 1
mr 4 t 7 mg jul-ah mass 0 inertia 0.01
end

beg 4 5
t 11 lin jul-ah
t 12 lin jul-ee
t 9 lin jul-uh
t 13 lin jul-ee
end

beg 4 4
mr 4 t 5 gl jul-oo
end

beg 4 4
pr 6 mass 10
t 0 sg jul-oo
t 3 sg
t 7 sg
t 11 sg
t 13 sg
t 12 sg

pr 6 grow 0.8
t 0 sg jul-ee
t 3 sg
t 7 sg
t 11 sg
t 13 sg
t 12 sg

pr 6 grow 0.7
t 0 sg jul-uh
t 3 sg
t 7 sg
t 11 sg
t 13 sg
t 12 sg

pr 6 grow 0.7
t 0 sg jul-ah
t 3 sg
t 7 sg
mr 3 t 17 gl mass -120
end

beg 4 1
mr 4 t 10 gl jul-ah mass 0
end

beg 4 4
t 3 mg jul-oh mass -100
t 2 mg shrink 0.5
t 4 mg shrink 0.5
t 1 mg shrink 0.9
end

beg 4 4
mr 4 t 12 mg jul-oo mass 0
end

beg 4 4
mr 4 t -10 exp 2 vow-e
end
loop fin
"))

Vocals 3.

<<top>>=
(define (loop15-vox3 g cnd)
  (loop15-mkvox g cnd "
beg 4 1
mr 4 t 2 mg jul-ah mass 0
end

beg 4 6
skwexp 0
t 0 lin
t -14 lin vow-rr mass -60
t 12 lin vow-uh shrink 0.9
t 7 mg vow-oh shrink 0.9

pr 7
t 1 mg vow-rr
t 2 mg jul-oo
t 1 mg vow-rr
t 7 mg jul-ah
t 1 mg vow-rr

t -13 lin jul-ah shrink 0.5
end

beg 4 1
mr 4 t 3 gl jul-oo mass 0
end

beg 4 4
skwexp 1
pr 3
  mr 2 t 1 lin jul-oo
  t -23 lin vow-a
pr 3
  mr 2 t 1 lin jul-oo
  t -23 lin vow-o
pr 3
  mr 2 t 1 lin jul-la
  t -23 lin
pr 3
  mr 2 t 1 lin jul-oo mass -120
  t 18 lin vow-o
end

beg 4 1
mr 4 t 2 gl jul-ah mass 0
end

beg 4 4
pr 2
  t 6 mg jul-oh mass -50
  t 12 mg
pr 3
  t 5 mg shrink 0.3 vow-uh
  t 11 mg jul-ahmute
  t 14 gl jul-ah

pr 4
  t 7 mg shrink 0.3 jul-la
  t 10 mg shrink 0.3
  t 14 mg shrink 0.3 jul-ah
  t 17 gl jul-ee

pr 2
  t 4 mg shrink 0.9
  t 9 mg
end

beg 4 4
mr 4 t 4 mg jul-oo mass 0
end

beg 4 4
t -12 gl vow-e
mr 3 t -24 exp 3 vow-a
end
loop fin
"))

Day 16

Thinking about: arpy vocals. Just doing a vamp. Not really much time spent on this tbh.

<<top>>=
(define (loop16)
  (let ((rev (monolith:cabnew (lambda () (const 0)) 1)))
    (cabset (bhold (phasor (/ 110 60) 0)) 0)
    (loop16-arpvox (cabgetf 0))
    (eqfil zz 4500 4500 2)
    (mul zz (ampdb -4))

    (loop16-bassvox (cabgetf 0))
    (mul zz (ampdb -3))
    (loop16-tenorvox (cabgetf 0))
    (mul zz (ampdb -5))
    (add zz zz)
    (eqfil zz 60 60 2)

    (add zz zz)

    (bdup)
    (cthrow zz 0.3 (cabgetf rev))

    (loop16-leadvox (cabgetf 0))
    (mul zz (ampdb -5))
    (bdup)
    (simple-delay zz 0.6 (* (/ 60 110) 1.5))
    (mul zz (ampdb -8))
    (add zz zz)
    (buthp zz 300)
    (bdup)
    (cthrow zz 0.8 (cabgetf rev))
    (add zz zz)

    (mul zz (ampdb -3))

    (cabget rev)
    (bdup)
    (revsc zz zz 0.97 8000)
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -15))
    (add zz zz)
    (cabclr rev)
    (bunhold (cabget 0))))

<<top>>=
(define loop16-base 58)

<<top>>=
(define (loop16-arpvox cnd)
  (let ((g (gest:new)) (tr (tract:new)))
    (configure-tract tr g 0.01)
    (singer g "
beg 4 16
t 0 mg jul-ah
t 5 mg jul-oh
t 7 mg jul-oh
t 10 mg jul-ah

t 12 mg jul-oh
t 10 mg jul-oh
t 7 mg jul-ah
t 5 mg jul-oh

t 0 mg jul-oh
t 5 mg jul-ah
t 7 mg jul-oh
t 10 mg jul-oh

t 12 mg jul-ah
t 10 mg jul-oh
t 7 mg jul-ah
t 5 mg jul-oh
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (add zz loop16-base)
  (mtof zz)
  (glottis zz 0.3)
  (tract:node tr)))

<<top>>=
(define (loop16-bassvox cnd)
  (let ((g (gest:new)) (tr (tract:new)))
    (configure-tract tr g 0.01)
    (singer g "
beg 8 16
mr 3 t 0 mg vow-a
mr 3 t -4 mg vow-uh
mr 5 t -7 gl vow-a
mr 5 t -19 mg vow-uh
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (add zz (- loop16-base 12))
  (mtof zz)
  (glottis zz 0.8)
  (tract:node tr)))

<<top>>=
(define (loop16-tenorvox cnd)
  (let ((g (gest:new)) (tr (tract:new)))
    (configure-tract tr g 0.01)
    (singer g "
beg 8 16
mr 3 pr 3
  mr 2 t 7 mg vow-a
  t 10 mg vow-o
mr 3 pr 3
  mr 2 t 3 gl vow-uh
  t -2 mg vow-uh
mr 10 t 0 mg vow-a
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (add zz (- loop16-base 12))
  (mtof zz)
  (glottis zz 0.8)
  (tract:node tr)))

<<top>>=
(define (loop16-leadvox cnd)
  (let ((g (gest:new)) (tr (tract:new)))
    (configure-tract tr g 0.01)
    (singer g "
beg 8 1
t 7 mg jul-ah
end
beg 8 1
pr 2
  t 10 lin jul-oh
  t 10 lin jul-ah
end
beg 8 1
t 12 mg jul-ah
end
beg 8 8
mr 6 t 14 mg jul-oh
mr 2 t 15 gl jul-ah
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (add zz loop16-base)
  (sine 6 0.3)
  (add zz zz)
  (mtof zz)
  (glottis zz 0.7)
  (tract:node tr))
  (dcblock zz))

Day 17

Thinking about: music for airports. isorhythms again.

<<top>>=
(define (loop17)
  (let ()
    (regset (gen_sine (ftnew 8192)) 1)

    (phasor (biscale (oscf 0.1 0.5 (reggetf 1)) 0.8 1.5) 0)
    (bhold zz)
    (cabset zz 0)

    (loop17-vox1 (cabgetf 0))
    (loop17-vox2 (cabgetf 0))
    (add zz zz)
    (loop17-vox3 (cabgetf 0))
    (add zz zz)
    (loop17-vox4 (cabgetf 0))
    (add zz zz)

    (mul zz (ampdb -4))
    (eqfil zz 5000 1000 0.1)
    (bdup)
    (buthp zz 300)
    (bdup)
    (revsc zz zz 0.97 10000)
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -15))
    (bswap)
    (mul zz 0.9)
    (add zz zz)

    (bunhold (cabget 0)))
    (regclr 1))

<<top>>=
(define loop17-base 59)

<<top>>=
(define (loop17-mkvox cnd vsco esco)
  (let ((g (gest:new))
        (tr (tract:new))
        (gt (gest:newscalar))
        (expr (gest:new)))
    (configure-tract tr g 0.02)
    (singer-words g (list (gst:wordentry "gt" (mksetter gt))) vsco)
    (cnd)
    (gest:iculate g)
    (add zz loop17-base)
    (oscf 6 0 (reggetf 1))

    (gst:eval expr esco)
    (cnd)
    (gest:iculate expr)
    (mul zz 0.1)
    (mul zz zz)
    (add zz zz)
    (mtof zz)
    (glottis zz 0.5)
    (tract:node tr)
    (gest:scalar gt)
    (adsr zz 0.3 0.1 1 0.2)
    (mul zz zz)))

<<top>>=
(define (loop17-vox1 cnd)
   (loop17-mkvox cnd "
beg 6 6
mn 6 2
  pr 6
    mr 2 t 0 jul-ahmute gt 1
    mr 4 t 0 jul-ah gt 0
  pr 6
    mr 2 t 12 jul-oo gt 1
    mr 4 t 12 jul-ah gt 0
end
loop fin
"
"beg 6 4 t 0 exp 1 t 1 mr 2 t 1 stp end loop fin"
))

<<top>>=
(define (loop17-vox2 cnd)
   (loop17-mkvox cnd "
beg 7 7
mn 7 3
  pr 7
    t 5 jul-ahmute gt 0
    mr 2 t 5 jul-oh gt 1
    mr 4 t 5 jul-ah gt 0
  pr 7
    t 2 jul-ahmute gt 0
    mr 2 t 2 jul-oo gt 1
    mr 4 t 2 jul-ah gt 0
  pr 7
    t 2 jul-ahmute gt 0
    t 2 jul-oo mg gt 1
    t 14 jul-oo
    mr 4 t 14 jul-ah gt 0
end
loop fin
"
"beg 7 4 t 0 exp 1 t 1 mr 2 t 1 stp end loop fin"
))

<<top>>=
(define (loop17-vox3 cnd)
   (loop17-mkvox cnd "
beg 8 8
mn 8 2
pr 8
  mr 2 t 7 jul-ahmute gt 0
  mr 2 t 7 jul-oo gt 1
  mr 4 t 7 jul-ah gt 0
pr 8
  mr 2 t 9 jul-ahmute gt 0
  mr 2 t 9 jul-ahmute gt 1
  mr 4 t 9 jul-ah gt 0
end
loop fin
"
"beg 8 4 t 0 exp 1 t 1 mr 2 t 1 stp end loop fin"
))

<<top>>=
(define (loop17-vox4 cnd)
   (loop17-mkvox cnd "
beg 10 10
mn 10 2
  pr 10
    mr 3 t -2 jul-ahmute gt 0
    t -2 jul-oo mg gt 1
    mr 3 t -3 jul-ah mg
    mr 3 t -3 jul-oo gt 0
  pr 10
    mr 3 t 4 jul-ahmute gt 0
    mr 4 t 4 jul-ahmute gt 1
    mr 3 t 4 jul-ah gt 0
end
loop fin
"
"beg 10 4 t 0 exp 1 t 1 mr 2 t 1 stp end loop fin"
))

Day 18

Thinking about: liquid drum-n-bass, unfa beatboxing, morphing FM wavetables.

<<top>>=
(define (loop18-db)
  ;;(let ((dbr (monolith:nextfree 1)))
  ;;  (sqlite-open "s/a.db")
  ;;  (regset zz dbr)
  ;;  dbr)
  (lambda () (monsqlite "sqlite")))

This needs to be called once, in order to load the SQLite db.

<<top>>=
(define (loop18-init)
  (sqlar:sqlite-open (monolith:mkhome "s/a.db") "sqlite")
  (loop18-cratewt)
  (loop18-setup-wavetables))

<<top>>=
(define (loop18)
  (let*
   ((k (gest:new))
   (s (gest:new))
   (h (gest:new))
   (v (gest:new))
   (rev (monolith:mkcab (lambda () (const 0)) 1))
   (db (loop18-db)))
    (gest:weight k)
    (mul zz 20)
    (gest:weight h)
    (mul zz 20)
    (add zz zz)
    (gest:weight s)
    (mul zz 20)
    (mul zz 0.5)
    (add zz zz)
    (gest:weight v)
    (mul zz 60)
    (add zz zz)

    (add zz 160)
    (mul zz (/ 1 60))
    (phasor zz 0)
    (bhold zz)
    (cabset zz 0)
    (let ((ks (loop18-kik k db (cabgetf 0))))

    (scale (tenvx (cabget ks) 0.01 0.1 0.01) 1 0.3)
    (loop18-bass (cabgetf 0))
    (mul zz zz)
    (cabclr ks))
    (bdup)
    (buthp zz 500)
    (cthrow zz 0.9 (cabgetf rev))
    (add zz zz)

    (loop18-snr s db (cabgetf 0))
    (bdup)
    (cthrow zz 0.5 (cabgetf rev))
    (add zz zz)
    (loop18-hat h db (cabgetf 0))
    (add zz zz)

    (loop18-vox v (cabgetf 0))
    (bdup)
    (cthrow zz 0.5 (cabgetf rev))
    (add zz zz)

    (mul zz (ampdb -3))

    (cabget rev)
    (bdup)
    (revsc zz zz 0.97 10000)
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -10))
    (add zz zz)

    (cabclr rev)

    (limit zz -0.99 0.99)
    (bunhold (cabget 0))))

<<top>>=
(define (loop18-loadwav db id)
  (let ((r (monolith:nextfree 0)))
    (regset (cratewav db id) r)
    r))

<<top>>=
(define (loop18-mkdrums g db cnd id score)
  (let ((s (loop18-loadwav db id))
        (tk (gest:newscalar))
        (amp (gest:newscalar))
        (play (gest:newscalar)))
    (gst:eval-addwords g
(list
  (gst:wordentry "hit" (mkhit tk))
  (gst:wordentry "rest" (mkrest))
  (gst:wordentry "play" (mksetter play))
  (gst:wordentry "amp" (mksetter amp))) score)
    (cnd)
    (gest:iculate g)
    (bdrop)
    (gest:tick tk)
    (tsmp zz (gest:scalar play) (reggetf s))
    (mul zz (gest:scalar amp))
    (regclr s)))

A terrible hack. But time is short. This will return the trigger signal. Made for sidechain compression. Be sure to unhold.

<<top>>=
(define (loop18-mkdrums-savesig g db cnd id score)
  (let* ((s (loop18-loadwav db id))
        (tk (gest:newscalar))
        (amp (gest:newscalar))
        (play (gest:newscalar))
        (sig (monolith:cabnew (lambda ()

    (gst:eval-addwords g
(list
  (gst:wordentry "hit" (mkhit tk))
  (gst:wordentry "rest" (mkrest))
  (gst:wordentry "play" (mksetter play))
  (gst:wordentry "amp" (mksetter amp))) score)
    (cnd)
    (gest:iculate g)
    (bdrop)
    (gest:tick tk))
0)))
    (cabget sig)
    (tsmp zz (gest:scalar play) (reggetf s))
    (mul zz (gest:scalar amp))
    (regclr s)
    sig
))

<<top>>=
(define (loop18-kik g db cnd)
(loop18-mkdrums-savesig g db cnd
"453aafaf%"
"
beg 4 4
mn 1 2
hit mass 0 amp 1 inertia 0.1 play 1
pr 4 mr 3 hit mass -10 hit mass 0
rest pr 2 rest hit mass 0

rest
end
loop fin
"))

<<top>>=
(define (loop18-snr g db cnd)
  (loop18-mkdrums
  g db cnd "6aa8f%"
"
beg 4 4
rest
mn 1 2
hit amp 1 mass 0 play 1
pr 4 mr 3
hit amp 1 mass 30 play 1
hit amp 0.8

rest

mn 1 2 hit hit play 0.5 mass -60
end
loop fin
"))

<<top>>=
(define (loop18-hat g db cnd)
  (loop18-mkdrums
  g db cnd "cfa43159%"
"
beg 4 16
hit play 1 amp 1 mass 0 inertia 0.01
hit amp 0.5 hit hit amp 1

hit amp 0.5 hit amp 1 hit hit
hit hit hit pr 2 mass 30 hit hit
mn 4 2
pr 4
hit hit mr 2 pr 3 hit play 0.9 mass 30 hit hit play 1
pr 6
mass -30 hit shrink 0.5 hit shrink 0.5 hit shrink 0.5
hit shrink 0.5 hit hit
end
loop fin
")
  (buthp zz 4000))

<<top>>=
(define (loop18-bass cnd)

  (let* ((cgst (gest:new))
         (mgst (gest:new))
         (gfmp (gosc:new-fm cgst mgst)))

         (gst:eval-addwords
     mgst (list (gst:wordentry "wt" tok-wt)) "
beg 6 4
mr 2 t 0 lin wt crunchy
mr 2 t 0 lin wt sawft
end
loop fin
")
    (cnd)
    (gest:iculate mgst)
    (bdrop)

    (gst:eval-addwords
     cgst (list (gst:wordentry "wt" tok-wt)) "
beg 16 4
t 0 exp 3 wt sineft
t 3 exp 3 wt sineft
mr 2 t -2 lin wt sinsumft
end
beg 16 4
t 0 exp 3 wt sineft
t 3 exp 3 wt sineft
mr 2
pr 3
t 0 exp 3 wt sinsumft
t 7 exp 3 wt sawft
t -2 exp 3 wt sineft
end
loop fin
")
    (cabget 0)
    (gest:iculate cgst)
    (bdup)
    (add zz (- 36 8 12))
    (mtof zz)
    (param 2)
    (param 4.01)
    (param 8)
    (param 0.1)
    (gosc:node-fm gfmp))
    (bswap)
    (add zz (- 36 8))
    (mtof zz)
    (blsaw zz 0.5)
    (butlp zz 500)
    (add zz zz)
    (mul zz 0.5)
    (eqfil zz 60 60 1.5)
)

<<top>>=
(define (loop18-vox g cnd)
  (let ((tr (tract:new)))
    (configure-tract tr g 0.02)
    (singer g "
beg 8 1
t 3 exp 1 jul-ah mass 0 inertia 0.001
end
beg 8 1
t 12 lin jul-oo
end
beg 8 1
t 3 exp 1 jul-ee
end
beg 8 1
pr 2
t 12 exp 1 jul-ah
pr 2
t 7 mg jul-uh
pr 8
t 0 mg jul-ah mass -100
t 3 mg jul-uh shrink 0.8
t 7 mg jul-oh shrink 0.8
t 10 mg jul-oo shrink 0.8
mr 4 t -2 gl jul-ah shrink 0.8
end
loop fin
")
    (cnd)
    (gest:iculate g)
    (add zz (+ (- 36 8) 36))
    (sine 6 0.3)
    (add zz zz)
    (mtof zz)
    (glottis zz 0.3)
    (tract:node tr)
    (mul zz (ampdb 3))))

<<top>>=
(define (loop18-cratewt)
  (sqlar:cratewav "sqlite" "crunchy" "19263c%")
  (sqlar:cratewav "sqlite" "dusty" "e90813%"))

<<top>>=
(define (loop18-setup-wavetables)
(monolith:ftbl-create "sineft" 8192)
(gen_sine (monft "sineft"))
(monolith:ftbl-create "sawft" 8192)
(monft "sawft")
(rvl "gen_saw")
(monolith:ftbl-create "sinsumft" 8192)
(monft "sinsumft")
(gen_sinesum zz "1.0 0 0.5 0.2"))

Day 19

Thinking about: the innsmouth look, ritual, basso profondo, throat singing, the predator, whispers.

<<top>>=
(define (loop19)
  (let ((g (gest:new))
  (rev (monolith:cabnew (constf 0) 1)))
    (gest:weight g)
    (mul zz 30)
    (add zz 60)
    (mul zz (/ 1 60))
    (bhold (phasor zz 0))
    (cabset zz 0)

    (loop19-vox g (cabgetf 0))
    (eqfil zz 100 80 5)
    (bdup)
    (buthp zz 300)
    (cthrow zz 0.5 (cabgetf rev))

    (loop19-bell (cabgetf 0))
    (bdup)
    (cthrow zz 0.9 (cabgetf rev))
    (mul zz (ampdb -5))
    (add zz zz)

    (cabget rev)
    (simple-delay zz 0 0.1)
    (bdup)
    (revsc zz zz 0.97 10000)
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -10))

    (add zz zz)
    (buthp zz 30)

    (blsaw (randi 60 80 7) 0.5)
    (blsaw (randi 60 200 10) 0.5)
    (add zz zz)
    (mul zz (ampdb -15))
    (butlp zz 80)
    (add zz zz)

    (cabclr rev)
    (bunhold (cabget 0))))

<<top>>=
(define (loop19-vox g cnd)
  (let
      ((tr (tract:new))
       (vow (gest:new))
       (tidal (gest:new))
       (gt (gest:newscalar))
)
  (configure-tract tr vow 0.02)
  (singer vow "
beg 3 3
t 0 lin ls1
t 0 lin ls2
t 0 lin ls3
end
beg 3 3
pr 2
  t 0 lin vow-a
  t 0 lin ls2
pr 4
  t 0 lin vow-uh
  t 0 lin vow-o
  pr 3
    t 0 lin vow-a
    t 0 lin vow-uh
    t 0 lin vow-a
  t 0 lin vow-e
t 0 lin ls1
end
beg 3 3
pr 4
  t 0 lin vow-uh
  t 0 lin vow-o
  t 0 lin vow-a
  t 0 lin vow-e
pr 2
  pr 3
    t 0 lin vow-a
    t 0 lin vow-eh
    t 0 lin jul-ah
  t 0 lin ls2
t 0 lin ls1
end
loop fin
")
  (cnd)
  (gest:iculate vow)
  (bdrop)

  (gst:eval-addwords g (list (gst:wordentry "gt" (mksetter gt))) "
beg 12 4
t 0 gt 1 mass 0 inertia 0.1
t 0.3 mg
t -3 mg mass -60
t -3 mg gt 0
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (add zz 34)
  (mtof zz)
  (glottis zz (randi 0.8 0.7 1))

  (let ((ts (monolith:mkcab (lambda ()
  (gst:eval tidal "
beg 12 4
t 1 stp
t 0 stp
t 0 stp
pr 2
t 0 exp -1
t 1 exp 3
end loop fin
")
  (cnd)
  (gest:iculate tidal)) 0)))
  (cabget ts)
  (noise 0.5)
  (butlp zz 1000)
  (mul zz zz)
  (metro (scale (cabget ts) 1 13))
  (mode zz (scale (cabget ts) 800 1000) 15)
  (add zz zz)
  (cabclr ts))
  (bswap)
  (gest:scalar gt)
  (adsr zz 0.1 0.1 1.0 0.2)
  (crossfade zz zz zz)
  (tract:node tr)))

<<top>>=
(define (loop19-bell cnd)
  (let ((g (gest:new)) (tk (gest:newscalar)))
    (gst:eval-addwords
     g (list (gst:wordentry "hit" (mkhit tk))
  (gst:wordentry "rst" (mkrest))) "
beg 12 4
rst
rst
rst
hit
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (bdrop)
  (gest:tick tk)
  (tgate zz 0.005)
  (port zz 0.001)
  (bdup)
  (mode zz 800 40)
  (bswap)
  (mode zz 1800 1400)
  (add zz zz)
  (limit zz -0.5 0.5)
  (dcblock zz)

  (bdup)
  (mode zz 300 50)
  (bswap)
  (mode zz 880 200)
  (add zz zz)
  (dcblock zz)
  (buthp zz 200)
  (mul zz 0.3)

  (mul zz (ampdb -10))))

Day 20

Thinking about: Rachmaninoff Vespers, afro-cuban grooves, Tanpura Drones

<<top>>=
(define (loop20)
  (let
    ((v1 (gest:new))
     (rev (monolith:mkcab (constf 0) 1)))
    (gest:weight v1)
    (mul zz 0.2)
    (mul zz 30)
    (add zz 140)
    (mul zz (/ 1 60))
    (phasor zz 0)
    (bhold zz)
    (cabset zz 0)

    (loop20-vox v1 (cabgetf 0))
    (eqfil zz 1000 1000 1.2)
    (buthp zz 100)
    (mul zz (ampdb -3))
    (bdup)
    (cthrow zz 0.7 (cabgetf rev))

    (loop20-vox-b (cabgetf 0))
    (mul zz (ampdb -3))
    (buthp zz 100)
    (butlp zz 5000)
    (bdup)
    (cthrow zz 0.4 (cabgetf rev))
    (mul zz (ampdb -2))

    (add zz zz)

    ;(mul zz 0)

    (loop20-drones (cabgetf 0))
    (eqfil zz 1000 2000 0.2)
    (mul zz (ampdb -6))
    (bdup)
    (cthrow zz 0.5 (cabgetf rev))
    (mul zz (ampdb -3))
    (add zz zz)

    (loop20-clavi (cabgetf 0))
    (mul zz (ampdb -10))
    (bdup)
    (cthrow zz 0.5 (cabgetf rev))
    (add zz zz)

    (loop20-castinets (cabgetf 0))
    (mul zz (ampdb -10))
    (bdup)
    (cthrow zz 0.7 (cabgetf rev))
    (mul zz (ampdb -2))
    (add zz zz)

    (loop20-shaker (cabgetf 0))
    (mul zz (ampdb -19))
    (buthp zz 5000)
    (bdup)
    (cthrow zz 0.9 (cabgetf rev))
    (mul zz (ampdb -2))
    (add zz zz)

    (cabget rev)
    (simple-delay zz 0.0 0.07)
    (bdup)
    (revsc zz zz 0.93 8000)
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -10))
    (add zz zz)

    (mul zz (ampdb -1))
    (limit zz -1 1)

    (bunhold (cabget 0))
    (cabclr rev)))

<<top>>=
(define (loop20-vox g cnd)
  (let
      ((tr (tract:new))
        (expr (gest:new)))
    (configure-tract tr g 0.02)
    (singer g "
beg 4 4
mr 2 t 7 mg vow-a mass 0 inertia 0.001
mr 2 pr 3
  t 7 mg vow-o mass -60
  t 5 mg vow-a grow 0.5
  pr 2
    t 4 mg vow-o mass 0
    t 5 mg vow-eh
end
beg 4 4
mr 2 pr 3
  mr 2 t 7 mg vow-a mass -30
  pr 2
    t 5 mg vow-o mass 50
    t 7 mg vow-a
mr 2 t 8 mg vow-eh mass -30
end

beg 4 4
t 7 mg vow-eh mass -10
t 5 mg vow-eh
mr 2
t 7 mg vow-a mass 0
end

beg 4 1
t 7 gl vow-o
end

beg 4 4
mr 2 t 7 mg vow-a mass 0
mr 2 pr 3
  t 7 mg vow-o mass -30
  t 5 mg vow-a shrink 0.4
  pr 2
    t 4 mg vow-o grow 0.8
    t 5 mg vow-eh grow 0.8
end
beg 4 4
mr 2 pr 3
  mr 2 t 7 mg vow-a
  pr 2
    t 5 mg vow-o mass -50
    t 7 mg vow-a grow 0.4
mr 2 t 10 mg vow-eh grow 0.4
end

beg 4 4
mr 2 pr 3
t 8 mg vow-o shrink 0.5
t 7 mg vow-a shrink 0.8
t 5 mg vow-o shrink 0.8
mr 2
pr 6
  t 7 mg vow-a mass 20
  t 5 mg vow-a
  mr 4 t 4 mg vow-a
end

beg 4 1
t 4 gl vow-o mass 0
end

loop fin
")
  (cnd)
  (gest:iculate g)
  (add zz (+ 48 7))
  (sine 6 0.4)
  (gst:eval expr "
beg 4 4
mr 2 t 0.1
t 0.8
t 0.2
end

beg 4 4
mr 2 t 0.1 exp 1
mr 2 t 1
end

beg 4 4
mr 2 t 1 exp 2
mr 2 t 0.5
end

beg 4 4
mr 2 t 0.3
mr 2 t 0.0
end

loop fin
")
  (cnd)
  (gest:iculate expr)
  (scale zz 0.2 1)
  (mul zz zz)
  (add zz zz)
  (mtof zz)
  (glottis zz 0.73)
  (tract:node tr)))

<<top>>=
(define (loop20-vox-b cnd)
  (let
      ((tr (tract:new))
       (g (gest:new))
        (expr (gest:new)))
    (configure-tract tr g 0.02)
    (singer g "
beg 4 4
mr 2 t 4 mg jul-ah
mr 2 pr 3
  t 4 mg jul-oh
  t 2 mg jul-ah
  pr 2
    t 0 mg jul-oo
    t 2 mg jul-ee
end

beg 4 4
mr 2 pr 3
  mr 2 t 4 mg jul-ah
  pr 2
    t 2 mg jul-oo
    t 4 mg jul-ah
mr 2 t 5 mg jul-eh
end

beg 4 4
t 4 mg jul-ah
t 2 mg jul-ee
mr 2
t 4 mg jul-ah
end

beg 4 1
t 4 gl jul-oo
end

beg 4 4
mr 2 t 4 mg jul-ah
mr 2 pr 3
  t 4 mg jul-oh
  t 2 mg jul-ah
  pr 2
    t 0 mg jul-oo
    t 2 mg jul-ee
end

beg 4 4
mr 2 pr 3
  mr 2 t 4 mg jul-ah
  pr 2
    t 2 mg jul-oo
    t 4 mg jul-ah
mr 2 t 7 mg jul-eh
end

beg 4 4
mr 2 pr 3
t 5 mg jul-oh
t 4 mg jul-ah
t 2 mg jul-oh
mr 2
pr 6
  t 4 mg jul-ah
  t 2 mg jul-ah
  mr 4 t 0 mg jul-oh
end

beg 4 1
t 0 gl jul-oh
end

loop fin
")
  (cnd)
  (gest:iculate g)
  (add zz (+ 48 7))
  (sine 5 0.3)
  (gst:eval expr "
beg 4 4
mr 2 t 0.0
mr 2 t 0.4
end

beg 4 4
mr 2 t 0.8
mr 2 t 0.0
end

beg 4 4
mr 2 t 0
mr 2 t 0.4
end

beg 4 4
mr 2 t 0.0
mr 2 t 0.4
end

loop fin
")
  (cnd)
  (gest:iculate expr)
  (scale zz 0.2 1)
  (mul zz zz)
  (add zz zz)
  (mtof zz)
  (glottis zz 0.6)
  (tract:node tr)))

<<top>>=
(define (loop20-drones cnd)
   (let (
   (dr1 (gest:new))
   (dr2 (gest:new))
)
      (gst:eval dr1 "
beg 8 4
mr 3 t 0 mg
t -2 lin
end
loop fin
")
   (cnd)
   (gest:iculate dr1)
   (add zz (+ 36 7))
   (mtof zz)
   (violin zz
           (param 0.1)
           (scale (biramp (phasor 0.2 0) 0.5) 0.01 0.2)
           0.1)

      (gst:eval dr2 "
beg 10 5
t 8 lin
mr 3 t 7 mg
end
loop fin
")
   (cnd)
   (gest:iculate dr2)
   (add zz (+ 36 7))
   (mtof zz)
   (violin zz
           (param 0.1)
           (scale (biramp (phasor 0.12 0.25) 0.5) 0.05 0.2)
           0.1)

   (add zz zz)
   (buthp zz 200)
   (dcblock zz)

   (blsaw (mtof (+ 36 7 -12)) 0.5)
   (blsaw (mtof (+ 36 7 -12.1)) 0.5)
   (add zz zz)
   (butlp zz 500)
   (mul zz (ampdb -6))
   (add zz zz)
   ;(eqfil zz 80 50 1.5)
   (mul zz (ampdb -3))))

<<top>>=
(define (loop20-clavi cnd)
  (let
      ((g (gest:new))
       (hit (gest:newscalar)))
    (gst:eval-addwords
     g (list
        (wordentry "hit" (mkhit hit))
        (wordentry "rest" (mkrest))
) "
beg 4 4
pr 3
mr 2 hit hit
rest
pr 3
hit
mr 2 hit
hit
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (bdrop)
  (gest:tick hit)
  (mode zz 1200 20)
  (bdup)
  (mode zz 2200 20)
  (bswap)
  (mode zz 5000 100)
  (add zz zz)
  (dcblock zz)

  (mul zz (ampdb -6))))

<<top>>=
(define (loop20-shaker cnd)
  (let
      ((g (gest:new))
       (hit (gest:newscalar))
       (amp (gest:newscalar)))
    (gst:eval-addwords
     g (list
        (wordentry "hit" (mkhit hit))
        (wordentry "amp" (mksetter amp))
) "
beg 4 12
hit amp 1 hit amp 0.3 hit
hit amp 1 hit amp 0.3 hit
hit amp 1 hit amp 0.3
hit amp 1 hit amp 0.3
hit amp 1 hit amp 0.3
end

beg 4 12
hit amp 1 hit amp 0.3 hit
hit amp 1 hit amp 0.3 hit
hit amp 1 hit amp 0.3
hit amp 1 hit amp 0.3
hit amp 1 pr 2 hit amp 0.9 hit
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (bdrop)
  (gest:tick hit)
  (tenvx zz 0.001 0.05 0.01)
  (noise 0.4)
  (gest:scalar amp)
  (mul zz zz)
  (buthp zz 5000)
  (butlp zz 8000)
  (mul zz zz)))

<<top>>=
(define (loop20-castinets cnd)
  (let
      ((g (gest:new))
       (hit (gest:newscalar)))
    (gst:eval-addwords
     g (list
        (wordentry "hit" (mkhit hit))
        (wordentry "rest" (mkrest))
) "
beg 4 12
rest hit hit
rest hit pr 2 hit hit
rest hit
rest hit
rest pr 3 hit hit hit
end
beg 4 12
rest hit hit
rest hit pr 2 hit hit
rest hit
rest hit
rest hit
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (bdrop)
  (gest:tick hit)
  (mode zz 600 10)
  (bdup)
  (mode zz 2200 20)
  (bswap)
  (mode zz 5000 100)
  (add zz zz)
  (dcblock zz)

  (mul zz (ampdb -6))))

Day 21

Thinking about: O Willow Wally, Milowda, Lighthouses, Ghost stories.

Some say that to this day, you can still hear her calling from the lighthouse tower...

<<top>>=
(define (loop21)
  (let* ((rev (monolith:cabnew (constf 0) 1))
         (ft (mksineft-nxt rev))
         (g (gest:new)))
    (gest:weight g)
    (mul zz 20)
    (add zz 70)
    (mul zz (/ 1 60))
    (bhold (phasor zz 0))
    (cabset zz 0)

    (loop21-vox g (cabgetf 0))
    (eqfil zz 2000 1000 1)
    (bdup)
    (cthrow zz 0.6 (cabgetf rev))
    (mul zz (ampdb -3))

    (loop21-strings (reggetf ft) (cabgetf 0))
    (eqfil zz 1000 2000 0.2)
    (mul zz (ampdb -8))
    (bdup)
    (cthrow zz 0.6 (cabgetf rev))
    (add zz zz)

    (cabget rev)
    (simple-delay zz 0 0.1)
    (bdup)
    (revsc zz zz 0.91 10000)
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -10))
    (add zz zz)

    (mul zz (ampdb -2))
    (cabclr rev)
    (regclr ft)
    (bunhold (cabget 0))))

<<top>>=
(define (loop21-expr cnd score)
  (let ((g (gest:new)))
    (gst:eval g score)
    (cnd)
    (gest:iculate g)))

<<top>>=
(define (loop21-expr-words cnd words score)
  (let ((g (gest:new)))
    (gst:eval-addwords g words score)
    (cnd)
    (gest:iculate g)))

<<top>>=
(define (loop21-exprf cnd score)
  (lambda () (loop21-expr cnd score)))

<<top>>=
(define loop21-base 57)

<<top>>=
(define (loop21-vox g cnd)
  (let ((tr (tract:new))
        (ex (monolith:cabnew
(loop21-exprf cnd
"
beg 8 8
mr 4 t 0 exp 1
mr 4 t 1 lin
end
loop fin
") 0))
        (gt (gest:newscalar)))
    (configure-tract tr g 0.02)
    (singer-words
     g (list (gst:wordentry "gt" (gst:mksetter gt))) "
beg 4 4
mr 2 t 7 mg jul-oo gt 1 mass 0 inertia 0.01
t 7 mg
t 8 mg
end

beg 4 4
mr 3 t 7 mg mass 0
t 7 mg gt 0
end

beg 4 4
mr 2 t 5 mg jul-oo gt 1 mass 0 inertia 0.01
t 5 mg
t 7 mg
end
beg 4 4
mr 3 t 5 mg
t 5 mg gt 0
end

beg 4 4
mr 2 t 7 mg gt 1
t 7 gl
pr 2
  t 12 mg mass -80
  t 10 mg shrink 0.9
end

beg 4 4
mr 3 t 8 mg
t 8 mg gt 0
end

beg 4 4
mr 2 t 5 mg gt 1 jul-oo mass -30
t 5 mg
pr 2
  t 3 mg mass -50
  t 2 mg shrink 0.8
end

beg 4 4
mr 3 t 0 mg shrink 0.5
t 0 mg gt 0
end
loop fin
")
    (cnd)
    (gest:iculate g)
    (add zz (+ loop21-base 12))
    (sine (scale (cabget ex) 5 6) 0.2)
    (scale (cabget ex) 0.1 1)
    (mul zz zz)
    (add zz zz)
    (mtof zz)
    (glottis zz (scale (cabget ex) 0.4 0.5))
    (tract:node tr)
    (adsr (gest:scalar gt) 0.05 0.1 1 0.08)
    (mul zz zz)
    (cabclr ex)
))

<<top>>=
(define (loop21-strings ft cnd)
  (loop21-stringvoice ft cnd "
beg 8 8
mr 4 t 12 mg gt 1
mr 3 t 11 mg
t 11 mg gt 0
end
beg 8 8
t 12 mg gt 0
t 15 mg gt 1
t 14 mg
t 12 mg
mr 3 t 11 mg
t 11 mg gt 0
end
beg 8 8
mr 4 t 10 mg gt 1
mr 3 t 12 mg
t 12 mg gt 0
end

beg 8 8
mr 4 t 12 mg gt 1
mr 3 t 12 mg
t 12 mg gt 0
end
loop fin
"
"
beg 8 8
rep 2
mr 4 t 0 exp 1
mr 4 t 0.8 stp
end
beg 8 8
rep 2
mr 4 t 0.5 exp 1
mr 4 t 1 stp
end
loop fin
"
)

(loop21-stringvoice ft cnd "
beg 8 8
t 15 mg gt 0
mr 3 t 15 mg gt 1
mr 3 t 14 mg
t 14 mg gt 0
end
beg 8 8
mr 4 t 17 mg gt 1
mr 3 t 17 mg
t 17 mg gt 0
end

beg 8 8
mr 4 t 15 mg gt 1
t 17 mg
mr 2 t 15 mg
pr 2 t 14 mg
t 15 mg
end

beg 8 8
mr 4 t 17 mg gt 1
t 17 mg
pr 2 t 16 mg t 14 mg

mr 2 pr 4
mr 3 t 16 mg
t 16 mg gt 0
end
loop fin
"
"
beg 8 8
rep 2
mr 4 t 0 exp 1
mr 4 t 0.8 stp
end
beg 8 8
rep 2
mr 4 t 0.5 exp 1
mr 4 t 1 stp
end
loop fin
"
)

(add zz zz)

(loop21-stringvoice ft cnd "
beg 8 8
mr 4 t 7 mg gt 1
mr 3 t 7 mg
t 7 mg gt 0
end
beg 8 8
mr 4 t 8 mg gt 1
mr 3 t 7 mg
t 7 mg gt 0
end
beg 8 8
mr 4 t 7 mg gt 1
mr 3 t 8 mg
t 8 mg gt 0
end
beg 8 8
mr 4 t 8 mg gt 1
mr 3 t 7 mg
t 7 mg gt 0
end
loop fin
"
"
beg 8 8
rep 2
mr 4 t 0 exp 1
mr 4 t 0.8 stp
end
beg 8 8
rep 2
mr 4 t 0.5 exp 1
mr 4 t 1 stp
end
loop fin
"
)

(add zz zz)

(loop21-stringvoice ft cnd "
beg 8 8
t 0 mg gt 0
mr 3 t 0 mg gt 1
mr 3 t -5 mg
t -5 stp gt 0
end
beg 8 8
t -7 mg gt 0
mr 3 t -7 mg gt 1
mr 2 t -5 mg
t -5 mg
t -7 mg
end

beg 8 8
mr 4 t -9 mg gt 1
mr 2 t -4 mg
t -4 mg
t -5 mg
end

beg 8 8
t -7 mg gt 1
mr 2 t -9 mg
t -10 mg
mr 3 t -12 mg
t -12 mg gt 0
end
loop fin
"
"
beg 8 8
rep 2
mr 4 t 0 exp 1
mr 4 t 0.8 stp
end
beg 8 8
rep 2
mr 4 t 0.5 exp 1
mr 4 t 1 stp
end
loop fin
"
)

(add zz zz)

(loop21-expr cnd "
beg 32 2
t 1 exp 2
t 1.2 stp
end
loop fin
")
(mul zz zz)

(loop21-expr cnd "
beg 32 2
t 2500 exp 2
t 3000 stp
end
loop fin
")

(butlp zz zz))

<<top>>=
(define (loop21-stringvoice ft cnd score expr)
  (let ((gt (gest:newscalar))
        (ex (monolith:mkcab (loop21-exprf cnd expr) 0)))
  (oscf (randi (param 6) (param 6.1) (randh 1 2 0.5)) 0 ft)
  (mul zz 0.1)
  (scale (cabget ex) 0.3 1)
  (mul zz zz)
  (loop21-expr-words
   cnd
   (list (gst:wordentry "gt" (gst:mksetter gt)))
   score)
  (add zz zz)
  (add zz loop21-base)
  (mtof zz)
  (blsquare zz
    (scale (cabget ex) 0.1 0.15)
    (scale (cabget ex) 0.3 0.35))

  (adsr (gest:scalar gt) 0.3 0.1 1 0.3)
  (mul zz zz)
  (cabclr ex)
))

Day 22

Thinking about: articulation. Experimenting with some of the envelope generator features in Gest. Heptapod B by Johan Johanssohn. And diphones.

<<top>>=
(define (loop22)
  (let ((rev (monolith:cabnew (constf 0) 1)))
    (biscale (sine 0.1 1) 28 92)
    (mul zz (/ 1 60))
    (phasor zz 0)
    (bhold zz)
    (cabset zz 0)

    (loop22-vox-a (cabgetf 0))
    (bdup)
    (cthrow
     zz
     (randi (param 0) (param 0.5) (randh 1 3 1))
     (cabgetf rev))

    (loop22-vox-b (cabgetf 0))
    (bdup)
    (cthrow
     zz
     (randi (param 0) (param 0.5) (randh 1 3 1))
     (cabgetf rev))
    (add zz zz)


    (loop22-vox-c (cabgetf 0))
    (bdup)
    (cthrow
     zz
     (randi (param 0) (param 0.5) (randh 1 3 1))
     (cabgetf rev))
    (add zz zz)

    (loop22-vox-d (cabgetf 0))
    (bdup)
    (cthrow
     zz
     (randi (param 0) (param 0.5) (randh 1 3 1))
     (cabgetf rev))
    (add zz zz)

    (mul zz 0.7)

    (cabget rev)
    (simple-delay zz 0 0.2)
    (bdup)
    (revsc
     zz zz
     (randi (param 0.9) (param 0.99)
            (randh 0.5 1 2))
     (param 10000))
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -15))
    (add zz zz)

    (cabget 0)
    (cabclr rev)
    (bunhold zz)))

<<top>>=
(define (tok-dip g tk)
  (gest:polyramp g 2)
  (gest:target g (string->number (car tk)))
  (gest:linear g)
  (tract:target g (car (cdr tk)))
  (gest:target g (string->number (car tk)))
  (tract:target g (car (cddr tk)))
  (gest:smallgliss g)
  (cdddr tk))

<<top>>=
(define (tok-targate-dot g tk)
  (gest:target g 0)
  (gest:ramp g)
  (gest:gate g 0.1)
  tk)
(define (tok-targate-dash g tk)
  (gest:target g 0)
  (gest:ramp g)
  (gest:gate g 0.6)
  tk)

<<top>>=
(define (loop22-mkvoice cnd vs as)

  (let ((tr (tract:new))
        (env (gest:new))
        (amp (gest:newscalar))
        (seq (gest:new)))
    (configure-tract tr seq 0.01)
    (singer-words seq
(list (gst:wordentry "dip" tok-dip)) vs)
   (cnd)
   (gest:iculate seq)
   (add zz 62)
   (mtof zz)
   (glottis zz (randi 0.2 0.5 0.2))
   (tract:node tr)

   (gexpr-words cnd
(list
  (gst:wordentry "x" tok-targate-dot)
  (gst:wordentry "L" tok-targate-dash)
  (gst:wordentry "a" (gst:mksetter amp))) as)
    (adsr zz 0.03 0.01 0.5 0.08)
    (gest:scalar amp)
    (port zz 0.001)
    (mul zz zz)
    (mul zz zz)))

<<top>>=
(define (loop22-vox-a cnd)

(loop22-mkvoice
  cnd "
beg 4 12
pr 2
  dip 0 jul-oh jul-ah
  dip 0 jul-oh jul-ah
dip 0 jul-ah jul-oh
dip 0 jul-oh jul-ah gl

mr 3 dip -2 jul-uh jul-ah gl

mr 3
  pr 2
    dip 0 jul-uh jul-oo
    dip 0 jul-la jul-ah

mr 3 pr 6
  dip 0 jul-ah jul-ee
  dip 0 jul-la jul-oh
  dip 0 jul-eh jul-ah

  dip 0 jul-ah jul-oo
  dip 0 jul-ah jul-oh
  dip 0 jul-eh jul-ahmute
end
loop fin
"

"
beg 4 12
pr 2 x a 1.0 x
L a 0.8 x a 0.3
mr 3 L a 1.0
mr 3
  pr 2 L x
mr 3 pr 6
  L a 1 x a 0.3 x
  L a 1 x a 0.3 x
end
loop fin
"))

<<top>>=
(define (loop22-vox-b cnd)

(loop22-mkvoice
  cnd "
beg 4 9
t 0 jul-ah gl
mr 2 t 12 jul-oo stp
t 0 jul-ah gl
mr 2 dip 10 jul-uh jul-oh gl
mr 3 t 7 jul-oo lin
end
loop fin
"

"
beg 4 9
mr 3 L a 1
L a 0
mr 2 L a 1
mr 3 L a 1
end
loop fin
")
)

<<top>>=
(define (loop22-vox-c cnd)

(loop22-mkvoice
  cnd "
beg 4 5
dip 14 jul-ah jul-oh lin
dip 2 jul-ah jul-eh
dip 14 jul-ah jul-oh lin
dip 3 jul-ah jul-eh
dip 5 jul-ah jul-eh
end
loop fin
"

"
beg 4 5
x a 0.3
x a 1
x a 0.3
x a 1
x a 1
end
loop fin
")
)

<<top>>=
(define (loop22-vox-d cnd)

(loop22-mkvoice
  cnd "
beg 4 4
dip 3 jul-ah jul-oh
dip 10 jul-oh jul-ah
dip 7 jul-ah jul-oh
dip 5 jul-oh jul-ah
end
beg 4 4
dip 0 jul-ah jul-ee
dip 3 jul-ee jul-oh
dip 7 jul-ah jul-ee
dip 10 jul-ee jul-ah
end
loop fin
"

"
beg 4 4
L a 1
L a 0.5
L a 1
L a 0.5
end
loop fin
"))

Day 23

Yesterday's loop uncovered a bug in Gest that I hopefully fixed today. Creating later, don't have much inspiration for anything too unique. What I do have is an initial 5 voice chord progression I worked out on piano. Should sound pretty with voices. Hoping to bring it here then elaborate and make it more contrapuntal.

Realizing I may want some lilypond like abstractions for note names. I've been doing a movable do thing with numbers, but as I do more stuff with tonal harmony, that is going to break down quickly.

---

Okay, so I didn't actually add any counterpoint. I just got lazy and layered stuff and added reverb. Kind of ended up as a sweet indie soundtrack that's vaguely hopkins like.

<<top>>=
(define (loop23)
  (let ((rev (monolith:cabnew (constf 0) 1)))
    (cabset (bhold (phasor (/ 75 60) 0)) 0)
    (loop23-voice-a (cabgetf 0))
    (mul zz (ampdb -3))

    (bdup)
    (cthrow zz 0.5 (cabgetf rev))
    (mul zz (ampdb -5))
    (loop23-voice-b (cabgetf 0))
    (mul zz (ampdb -3))
    (bdup)
    (cthrow zz 0.5 (cabgetf rev))
    (add zz zz)
    (loop23-voice-c (cabgetf 0))
    (mul zz (ampdb -3))
    (bdup)
    (cthrow zz 0.5 (cabgetf rev))
    (add zz zz)
    (loop23-voice-d (cabgetf 0))
    (mul zz (ampdb -3))
    (bdup)
    (cthrow zz 0.5 (cabgetf rev))
    (add zz zz)
    (loop23-voice-e (cabgetf 0))
    (mul zz (ampdb -3))
    (bdup)
    (cthrow zz 0.5 (cabgetf rev))
    (add zz zz)

    (mul zz 0.6)

    (butlp zz 8000)

    (loop23-tinkerbell (cabgetf 0))
    (bdup)
    (cthrow zz 0.9 (cabgetf rev))
    (mul zz (ampdb -10))
    (add zz zz)

    (loop23-hidrone (cabgetf 0))
    (mul zz (ampdb -14))
    (bdup)
    (cthrow zz 0.91 (cabgetf rev))
    (mul zz (ampdb -5))
    (add zz zz)

    (cabget rev)

    (simple-delay zz 0 0.1)

    (bdup)
    (simple-delay zz 0.8 1.0)
    (sine 0.1 1)
    (biscale zz 0.1 0.53)
    (mul zz zz)
    (buthp zz 200)
    (add zz zz)

    (bdup)
    (revsc zz zz 0.93 8000)
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -10))
    (add zz zz)

    (bunhold (cabget 0))
    (cabclr rev)))

<<top>>=
(define loop23-base 57)

<<top>>=
(define (loop23-mkvoice cnd off tense score)
  (let ((tr (tract:new)) (g (gest:new)))
    (configure-tract tr g 0.02)
    (singer g score)
    (cnd)
    (gest:iculate g)
    (add zz (+ loop23-base off))
    (mtof zz)
    (glottis zz tense)
    (tract:node tr))
)

<<top>>=
(define (loop23-voice-a cnd)
(loop23-mkvoice cnd 0 0.5 "
beg 16 4
t 7 jul-oh sg
t 7 jul-oh sg
t 4 jul-oh sg
t 4 jul-oh mg
end
loop fin
"))

<<top>>=
(define (loop23-voice-b cnd)
(loop23-mkvoice cnd 0 0.5 "
beg 16 4
t 2 jul-oh mg
t 6 jul-oh mg
t 2 jul-oh sg
t 2 jul-oh mg
end
loop fin
"))

<<top>>=
(define (loop23-voice-c cnd)
(loop23-mkvoice cnd 0 0.5 "
beg 16 4
t 0 jul-oh sg
t 0 jul-oh sg
t 0 jul-oh gl
t -3 jul-oh mg
end
loop fin
"))

<<top>>=
(define (loop23-voice-d cnd)
(loop23-mkvoice cnd -12 0.6 "
beg 16 4
t 11 vow-oh gl
t 9 vow-oh gl
t 7 vow-oh gl
t 7 vow-oh gl
end
loop fin
" ))

<<top>>=
(define (loop23-voice-e cnd)
(loop23-mkvoice cnd -24 0.8 "
beg 16 4
t 4 vow-oh gl
t 2 vow-oh gl
t 0 vow-oh gl
t 0 vow-oh gl
end
loop fin
" ))

<<top>>=
(define (loop23-tinkerbell cnd)
  (cnd)
  (phsclk zz 1)
  (tdiv zz 4 1)
  (mode zz (mtof (+ loop23-base 2 24)) 400)
  (cnd)

  (phsclk zz 1)
  (tdiv zz 8 0)
  (mode zz (mtof (+ loop23-base 2 24 -7)) 200)

  (add zz zz)

  (dcblock zz))

<<top>>=
(define (loop23-hidrone cnd)
  (blsaw (mtof (+ loop23-base 2 24)) 0.3)
  (blsaw (mtof (+ loop23-base 2 12.1)) 0.3)
  (add zz zz)
  (blsaw (mtof (+ loop23-base 2 11.9)) 0.3)
  (add zz zz)

  (biscale
    (sine (randi (param 5) (param 10) (randh 0.5 2 1)) 1.0)
    0 1)
  (mul zz zz)

  (butlp zz 700)
  (butbp zz 4000 2000))

Day 24

Thinking about: padsynth algorithm, articulation, diphones, more 12/8 grooves.

<<top>>=
(define loop24-base 44)

<<top>>=
(define (loop24)
  (let ((rev (monolith:cabnew (constf 0) 3))
        (del (monolith:cabnew (constf 0) 4)))
    (gen_padsynth (ftnew 32768) 110 40
      (lambda () (gen_vals (ftnew 1) "0.9 0.5 0.1 0.3 0.5 0.3 0.1 0.1 0.1")))
    (regset zz 1)
    (gen_sine (ftnew 8192))
    (regset zz 2)
    (phasor (/ 72 60) 0)
    (bhold zz)
    (cabset zz 0)

    (loop24-pads (cabgetf 0) (reggetf 1) (reggetf 2))
    (mul zz (ampdb -9))
    (buthp zz 200)
    (bdup)
    (cthrow zz (ampdb -3) (cabgetf rev))
    (mul zz (ampdb -1))

    (loop24-voxbass (cabgetf 0))
    (mul zz (ampdb -4))
    (bdup)
    (buthp zz 300)
    (cthrow zz (ampdb -5) (cabgetf rev))
    (mul zz (ampdb -1))
    (add zz zz)
    (loop24-vox (cabgetf 0))
    (mul zz (ampdb -4))
    (bdup)
    (cthrow zz (ampdb -2) (cabgetf rev))

    (bdup)
    (cthrow zz (ampdb -6) (cabgetf del))

    (add zz zz)

    (loop24-clavi (cabgetf 0))
    (eqfil zz 4000 2000 3)
    (mul zz (ampdb -6))
    (bdup)
    (cthrow zz (ampdb 0) (cabgetf del))
    (bdup)
    (cthrow zz (ampdb -3) (cabgetf rev))
    (add zz zz)

    (cabget del)
    (simple-delay zz 0.8 (* (/ 60 72) 0.5))
    (bdup)
    (cthrow zz (ampdb -8) (cabgetf rev))
    (mul zz (ampdb -8))

    (add zz zz)


    (cabget rev)
    (buthp zz 200)
    (simple-delay zz 0 0.1)
    (bdup)
    (revsc zz zz 0.97 10000)
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -10))
    (add zz zz)

    (regclr 1)
    (regclr 2)
    (cabclr rev)
    (cabclr del)
    (bunhold (cabget 0))
  ))

<<top>>=
(define (loop24-padsynth note ft)
  (param note)
  (mul zz (/ 1 110))
  (phasor zz 0)
  (trd zz ft))

<<top>>=
(define (loop24-pads cnd psft sinft)
    (gexpr cnd "
beg 16 4
mr 2 t 0 sg
mr 2 t 2 mg
end
loop fin
")
    (add zz loop24-base)
    (mtof zz)
    (loop24-padsynth zz psft)

    (gexpr cnd "
beg 12 3
t 7 mg
t 9 mg
t 5 mg
end
loop fin
")
    (add zz loop24-base)
    (mtof zz)
    (loop24-padsynth zz psft)
    (add zz zz)

    (gexpr cnd "
beg 8 4
mr 4 t 17 mg
end
loop fin
")
    (add zz loop24-base)
    (mtof zz)
    (loop24-padsynth zz psft)
    (add zz zz)

    (gexpr cnd "
beg 8 2
t 16 mg
t 14 mg
end
loop fin
")
    (add zz loop24-base)
    (mtof zz)
    (loop24-padsynth zz psft)
    (add zz zz)

    (chorus zz 0.3 0.04 0.3 0.1)
    (chorus zz 1.3 0.01 0.9 0.01)

    (dcblock zz))

<<top>>=
(define (loop24-voxbass cnd)
  (let ((tr (tract:new)) (g (gest:new)))
    (configure-tract tr g 0.02)
    (singer g "
beg 19 3
t 0 ls1 lin
t 0 vow-uh lin
t 0 vow-a lin
end
loop fin
")
    (cnd)
    (gest:iculate g)
    (add zz (- loop24-base 12))
    (mtof zz)
    (glottis zz 0.9)
    (tract:node tr)
    (butlp zz 8000)
    (buthp zz 200)

    (mtof (- loop24-base 12))
    (bltriangle zz 0.3)
    (add zz zz)
    ;(eqfil zz 120 60 1.2)
))

<<top>>=
(define (tok-targate-dot2 g tk)
  (gest:target g 0)
  (gest:ramp g)
  (gest:gate g 0.4)
  tk)

<<top>>=
(define (loop24-vox cnd)
  (let ((tr (tract:new)) (vow (gest:new))
(art (gest:new)))
(configure-tract tr vow 0.02)
(singer-words vow
(list (gst:wordentry "dip" tok-dip))
"
beg 2 12
rep 3
mr 6 pr 3
dip 7 jul-ah jul-oh
dip 7 jul-oh jul-ah
dip 7 jul-ah jul-oo

mr 3 pr 3
dip 7 jul-oh jul-ah
mr 2
dip 7 jul-la jul-oh
mr 2
dip 12 jul-oo jul-ah
dip 7 jul-ah jul-oh
end

beg 2 12
mr 3
dip 16 jul-oh jul-ah gl
mr 3
dip 17 jul-oh jul-ah gl

mn 6 2
dip 12 jul-oh jul-ah gl
dip 19 jul-ee jul-oo gl
end
loop fin
")
   (cnd)
   (gest:iculate vow)
   (add zz (+ loop24-base 12))
   (mtof zz)
   (glottis zz 0.5)
(gexpr-words cnd
(list
  (gst:wordentry "x" tok-targate-dot2)
  (gst:wordentry "L" tok-targate-dash)) "
beg 2 12
rep 3
mr 6 pr 3 x x x
mr 3 pr 3 x mr 2 L
mr 2 x x
end
beg 2 1
t 0 stp irmp
end
loop fin
")
    (port zz 0.001)

    (mul zz zz)

   (tract:node tr)
   (buthp zz 550)
))

<<top>>=
(define (loop24-clavi cnd)
  (let
      ((g (gest:new))
       (hit (gest:newscalar)))
    (gst:eval-addwords
     g (list
        (wordentry "hit" (mkhit hit))
        (wordentry "rest" (mkrest))
) "
beg 8 8
rest hit
mr 6 rest
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (bdrop)
  (gest:tick hit)
  (mode zz 1200 20)
  (bdup)
  (mode zz 2200 20)
  (bswap)
  (mode zz 5000 100)
  (add zz zz)
  (dcblock zz)

  (mul zz (ampdb -6))))

Day 25

Thinking about: melody. the opening to appalachian spring. transformation.

Breathy alto in the morning Confident tenor in the afternoon Grounded bass in the evening Misunderstood were-bot by moonlight

<<top>>=
(define (loop25)
  (let ((tr (tract:new))
        (vow (gest:new))
        (seq (gest:new))
)
   (param 73)
   (gest:weight seq)
   (mul zz 30)
   (add zz zz)
   (mul zz (/ 1 60))
   (cabset (bhold (phasor zz 0)) 0)
   (configure-tract tr vow 0.04)

   (singer vow "
beg 6 6
t 0 jul-ah mg
t 0 jul-oh mg
t 0 jul-ah mg
mr 3 t 0 jul-oh mg
end
beg 5 2
t 0 jul-oh lin
t 0 vow-a
end
beg 6 6
t 0 vow-o mg
t 0 vow-a mg
mr 2 t 0 vow-o mg
mr 2 t 0 vow-a lin
end
beg 8 2
t 0 vow-uh lin
t 0 vow-a gl
end
loop fin
")
   (cabget 0)
   (gest:iculate vow)
   (bdrop)
   (gst:eval seq "
beg 6 6
t 0 mg mass 0 inertia 0.001
t 9 mg mass 30
t -2 mg grow 0.5
t 12 gl shrink 0.5
mr 2 t 5 mg mass -50
end
beg 5 5
t -5 mg mass 0
t 2 mg mass 30
mr 3 t -7 mg mass -10
end
beg 6 6
t -10 mg mass 0
t -7 mg grow 0.5
mr 2 t -12 mg mass -10
mr 2 t -17 mg mass -20
end
beg 8 8
t -15 mg shrink 0.8
t -17 mg shrink 0.8
t -19 mg shrink 0.8
t -17 mg shrink 0.8
mr 4 t -10 gl shrink 0.5
end
loop fin
")

   (cabget 0)
   (gest:iculate seq)
   (add zz 58)
   (sine 6.3 0.3)
   (gexpr (cabgetf 0) "
beg 6 6
mr 3 t 0 exp 2
mr 3 t 0.5 lin
end
beg 5 1
t 0.1 lin
end
beg 6 1
t 1 stp
end
beg 8 2
t 0.5 sg
t 0 sg
end
loop fin
")
   (mul zz zz)
   (add zz zz)
   (bdup)
   (port zz 0.001)
   (mtof zz)

   (gexpr (cabgetf 0) "
beg 6 1
t 0.4 lin
end
beg 5 2
t 0.5 lin
t 0.8 lin
end
beg 6 2
t 0.8 lin
t 0.9 lin
end
beg 8 1
t 0.9 mg
end
loop fin
")
   (glottis zz zz)

   (bswap)
   (add zz -12)
   (port zz 0.08)
   (mtof zz)
   (fmpair zz 1 1.01 5 0.3 (lambda () (gen_sine (ftnew 8192))))
   (rvl "10 softclip")
   (mul zz 0.5)


   (gexpr (cabgetf 0) "
beg 6 1
t 0 stp
end
beg 5 1
t 0 stp
end
beg 6 1
t 0 stp
end
beg 8 2
t 0 exp 1
t 1 lin
end
loop fin
")
   (port zz 0.01)
   (crossfade zz zz zz)
   (tract:node tr)

   (bdup)
   (simple-delay zz 0 0.1)
   (bdup)
   (gexpr (cabgetf 0) "
beg 6 1
t 0.7
end
beg 5 1
t 0.83
end
beg 6 1
t 0.9
end
beg 8 2
t 0.9
t 0.99 gl
end
loop fin
")
   (revsc zz zz zz 10000)
   (bdrop)
   (dcblock zz)
   (mul zz (ampdb -17))
   (add zz zz)
   (bunhold (cabget 0))
))

Day 26

Okay. This is super last minute. I found glitches in my FM oscillator and it is late. So, today I am just making an alto trio in the styles of the elves procession from LOTR. Or something like that. I kind of got sucked into the idea of supernatural realms.

<<top>>=
(define (loop26)
  (let ()
    (cabset (bhold (phasor (/ 72 60) 0)) 0)
    (loop26-vox1 (cabgetf 0))
    (loop26-vox2 (cabgetf 0))
    (add zz zz)
    (loop26-vox3 (cabgetf 0))
    (add zz zz)
    (mul zz (ampdb -5))

    (loop26-drones (cabgetf 0))
    (mul zz (ampdb -18))
    (add zz zz)

    (bdup)
    (simple-delay zz 0 0.1)
    (bdup)
    (revsc zz zz 0.9 10000)
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -10))
    (add zz zz)

    (bunhold (cabget 0))))

<<top>>=
(define (loop26-mkvox cnd sco)
  (let ((tr (tract:new))
        (seq (gest:new))
        (gt (gest:newscalar)))
    (configure-tract tr seq 0.01)
    (singer-words seq (list (gst:wordentry "gt" (gst:mksetter gt)))
       sco)
    (cnd)
    (gest:iculate seq)
    (add zz 61)
    (sine (randi 5 6.3 0.2) 0.1)
    (add zz zz)
    (mtof zz)
    (glottis zz 0.5)
    (adsr (gest:scalar gt) 0.1 0.1 1 0.1)
    (mul zz zz)
    (tract:node tr)))

<<top>>=
(define (loop26-vox1 cnd)
(loop26-mkvox cnd "
beg 6 6
mr 2 t 7 jul-ah mg gt 1

mn 4 2
  pr 4
  pr 3
    mr 2 t 5 jul-oh mg
    pr 2
      t 7 jul-ah mg
      t 5 jul-oh mg
  mr 2 t 4 jul-ah mg
  t 4 jul-ah mg gt 0

  pr 4
  t 10 jul-ah gl
  mr 2 t 7 jul-ah gl
  t 8 jul-ah lin gt 0
end

beg 6 6
mr 2
pr 2
t 7 jul-oh exp -5 gt 1
t 7 jul-ah mg
pr 3
  mr 2 t 0 jul-ah mg
  t -2 jul-oh mg
t 0 jul-ee gl
t 1 jul-ee lin
t 0 jul-ee gl
end
loop fin
    "))

<<top>>=
(define (loop26-vox2 cnd)
(loop26-mkvox cnd "
beg 6 6
mr 2 t 0 jul-ah gl gt 1

mn 4 2
pr 4
  mt 2
    t 0 jul-oh gl
    t 1 jul-oh lin
  mr 2 t 0 jul-ah mg
  t 0 jul-ah mg gt 0
t -24 vow-uh lin
end
beg 6 6
mr 2 pr 2
  t 0 jul-oh exp -5 gt 1
  t 0 jul-ah mg
pr 3
  mr 2 t -5 jul-ah mg
  t -7 jul-oh mg
mr 3 t -5 jul-ee mb 2 gl exp 1
end
loop fin
"))

<<top>>=
(define (loop26-vox3 cnd)
(loop26-mkvox cnd "
beg 6 6
mr 2 t -5 jul-ah mg gt 1
t -2 jul-oh mg
mr 2 t -5 jul-ah mg
t -5 jul-ah mg gt 0
end
beg 6 6
mr 2 pr 2
t -5 jul-oh exp -5 gt 1
t -5 jul-ah mg
pr 3
  mr 2 t -12 jul-oh mg
  t -11 jul-oh gl
mr 3 t -12 jul-ee mb 2 gl exp 1
end
loop fin
    "))

<<top>>=
(define (loop26-drones cnd)
  (violin (mtof (- 61 12)) 0.1 0.4 0.1)
  (violin (mtof (- 68 12)) 0.1 0.4 0.1)
  (add zz zz)
  (violin (mtof (- 61 24)) 0.1 0.1 0.1)
  (add zz zz)
  (dcblock zz)
)

Day 27

Moved back a day. I found Bugs.

<<top>>=
(define (loop27-init)
  (sqlar:sqlite-open (monolith:mkhome "s/a.db") "sqlite")
  <<loop26-init>>
)

<<top>>=
(define (loop27)
  (let ((rev (monolith:cabnew (constf 0) 1)))
  (param 121)
  (gest:conductor)
  (cabset (bhold zz) 0)
  (loop27-fm-a (cabgetf 0))
  (loop27-fm-b (cabgetf 0))
  (add zz zz)
  (loop27-fm-c (cabgetf 0))
  (add zz zz)
  (mul zz (ampdb -10))

  (bdup)
  (cthrow zz (ampdb (randi -10 -3 0.9)) (cabgetf rev))

  (loop27-voice (cabgetf 0))
  (mul zz (ampdb -6))
  (buthp zz 400)
  (bdup)
  (cthrow zz (ampdb (randi -4 -1 0.2)) (cabgetf rev))
  (add zz zz)

  (loop27-cliks (cabgetf 0))
  (bdup)
  (buthp zz 500)
  (cthrow zz (ampdb (randi -3 3 0.2)) (cabgetf rev))
  (add zz zz)

  (cabget rev)
  (simple-delay zz 0 0.1)
  (bdup)
  (revsc zz zz
     (randi (param 0.9) (param 0.95) (randh 0.2 1 1)) (param 10000))
  (bdrop)
  (dcblock zz)
  (mul zz (ampdb -12))
  (add zz zz)
  (bunhold (cabget 0))
  (cabclr rev)))

<<top>>=
(define (loop27-fmvoice cnd csco msco psco isco)
(let* ((cgst (gest:new))
         (mgst (gest:new))
         (gfmp (gosc:new-fm cgst mgst))
         (tr (tract:new)))
  (gst:eval-addwords cgst (list (gst:wordentry "wt" tok-wt)) csco)
(cnd)
(gest:iculate cgst)
(bdrop)
(gst:eval-addwords mgst (list (gst:wordentry "wt" tok-wt)) msco)
(cnd)
(gest:iculate mgst)
(bdrop)

  ;;(gest:tolerance cgst 0.0009)
  ;(gest:tolerance mgst 0.0009)
  ;;(gest:squawk cgst 1)

  (let ((g (gexpr cnd psco)))
    (gest:squawk g 0))

  (add zz 48)
  (mtof zz)
  (param 1)
  (param 1)
  (let ((g (gexpr cnd isco)))
    (gest:squawk g 0))
  (param 0.1)
  (gosc:node-fm gfmp)
  (mul zz 0.5)))

<<top>>=
(define (loop27-fm-a cnd)
(loop27-fmvoice cnd
;; car wt
"
beg 4 4
mr 2 t 0 wt sawfilt
mr 2 t 0 wt sawfilt
end
loop fin
"
"
beg 4 4
mr 2 t 0 wt sawfilt
mr 2 t 0 wt spectA
end
loop fin
"
"
beg 8 16
mr 3 t 7 mg
mr 3 t 3 mg
mr 3 t 5 mg
mr 7 t 0 mg
end
beg 8 16
mr 3 t 7 mg
mr 3 t 3 mg
mr 10 t 5 mg
end
loop
fin
"
;; index
"
beg 5 2
t 4
t 0.3
end
beg 8 2
t 1
t 8
end
loop fin
"
))

<<top>>=
(define (loop27-fm-b cnd)
(loop27-fmvoice cnd
;; car wt
"
beg 4 4
mr 2 t 0 wt sawfilt
mr 2 t 0 wt sawfilt
end
loop fin
"
"
beg 4 4
mr 2 t 0 wt sawfilt
mr 2 t 0 wt spectA
end
beg 4 4
mr 2 t 0 wt spectB
mr 2 t 0 wt sineft
end
loop fin
"
"
beg 8 16
mr 3 t 12 mg
mr 3 t 8 mg
mr 3 t 10 mg
mr 7 t 5 mg
end
beg 8 16
mr 3 t 12 mg
mr 3 t 8 mg
mr 10 t 10 mg
end
loop
fin
"
;; index
"
beg 8 2
t 1
t 8
end
beg 3 2
t 0
t 3
end
loop fin
"
))

<<top>>=
(define (loop27-fm-c cnd)
(loop27-fmvoice cnd
;; car wt
"
beg 5 5
mr 2 t 0 wt sawfilt
mr 2 t 0 wt sawfilt
t 0 wt sineft
end
loop fin
"
"
beg 4 4
mr 2 t 0 wt sawfilt
mr 2 t 0 wt spectA
end
beg 4 4
mr 2 t 0 wt spectB
mr 2 t 0 wt addsine3n
end
beg 4 4
mr 2 t 0 wt spectA
mr 2 t 0 wt sineft
end
loop fin
"
"
beg 8 16
mr 3 t 0 mg
mr 3 t 3 mg
mr 3 t -2 gl
mr 7 t 7 mg
end
beg 8 16
mr 3 t 0 mg
mr 3 t -2 mg
mn 10 2
pr 10
  mr 5 t -3 lin
  mr 5 t -2 mg
t -12 gl
end
loop
fin
"
;; index
"
beg 8 2
t 1
t 8
end
loop fin
"
))

<<loop26-init>>=
(sqlar:cratewav "sqlite" "crunchy" "19263c%")

<<loop26-init>>=
(monolith:ftbl-create "sineft" 2048)
(gen_sine (monft "sineft"))

07460d72 /awwav32/addsine09_11.wav e05250f6 /awwav32/spectral2lin/sposc2582.wav 81116879 /awwav32/spectral2lin/sposc2792.wav f8cf1d60 /awwav32/classicsaw3.000.wav

<<loop26-init>>=
(sqlar:cratewav "sqlite" "addsine3n" "07460d72%")

<<loop26-init>>=
(sqlar:cratewav "sqlite" "spectA" "e05250f6%")

<<loop26-init>>=
(sqlar:cratewav "sqlite" "spectB" "81116879%")

<<loop26-init>>=
(sqlar:cratewav "sqlite" "sawfilt" "f8cf1d6%")

<<top>>=
(define (loop27-gtword amt)
(lambda (g tk)
  (gest:target g 0)
  (gest:ramp g)
  (gest:gate g amt)
  tk))

<<top>>=
(define (loop27-voice cnd)
  (let ((seq (gest:new))
        (tr (tract:new))
        (gt (gest:newscalar))
        (art (gest:new))
)
    (configure-tract tr seq 0.02)
    (singer-words seq (list (gst:wordentry "gt" (mksetter gt))) "
beg 4 4
mr 3 t 12 jul-ah mg
t 7 jul-ee lin
end
beg 4 4
mr 2 t 15 jul-ah mg
t 14 jul-oh mg
pr 2 t 10 jul-ee lin
t -2 vow-a lin
end
beg 4 4
mr 3 t 12 jul-ah mg
t 7 jul-ee lin
end
beg 4 4
mr 2 t 19 jul-ah exp -2
mr 2 t -12 vow-a gl
end
loop fin
")
    (cnd)
    (gest:iculate seq)
    (add zz 60)
    (mtof zz)
    (glottis zz 0.5)
    (tract:node tr)

    (gst:eval-addwords
     art
     (list
       (wordentry "dit" (loop27-gtword 0.1))
       (wordentry "da" (loop27-gtword 0.5))
       (wordentry "z" (mkrest))
) "
beg 4 4
pr 2 dit dit
pr 4 mr 3 da da
mn 2 3
pr 2
  pr 4 z mr 2 da da
  da
pr 2
   pr 4 z da z da
   pr 4 da dit da dit
pr 3 da da da
end
loop fin
")
    (cnd)
    (gest:iculate art)
    (port zz 0.001)
    (mul zz zz)
  ))

<<top>>=
(define (loop27-mkclik cnd sco f1 q1 f2 q2)
   (let ((c1 (gest:new))
         (tk1 (gest:newscalar))
         (amp1 (gest:newscalar)))
      (gst:eval-addwords
        c1 (list
            (gst:wordentry "tk" (mkhit tk1))
            (gst:wordentry "z" (mkrest))
            (gst:wordentry "a" (gst:mksetter amp1))
) sco)
   (cnd)
   (gest:iculate c1)
   (bdrop)
   (gest:tick tk1)
   (mode zz f1 q1)
   (limit zz -1 1)
   (mode zz f2 q2)
   (dcblock zz)
   (gest:scalar amp1)
   (mul zz zz))
)

<<top>>=
(define (loop27-cliks cnd)
(loop27-mkclik cnd "
beg 4 16
tk a 1.0 tk a 0.3 tk a 0.3 tk a 1.0
tk a 1.0 tk a 0.3 tk a 1.0 tk a 0.5
tk a 0.3 tk a 1.0 tk a 0.3 tk a 0.5
tk a 1.0 tk a 0.3 tk a 0.3 pr 2 tk a 0.5 tk a 0.5
end
loop fin
" 500 8 2000 20)
(loop27-mkclik cnd "
beg 4 4
z tk a 1.0 z

mn 1 2
  tk a 1.0
  pr 4
    mr 3 tk a 1.0
    tk a 1.0
end
loop fin
" 300 10 2000 400)

(add zz zz)
(loop27-mkclik cnd "
beg 4 4
tk a 1.0
tk a 1.0
tk a 1.0
tk a 1.0
end
beg 4 4
mn 2 2
pr 2
  pr 4
    tk a 1.0
    mr 3 tk a 1.0
  tk a 1.0
pr 3
  tk a 1.0
  tk a 1.0
  pr 2
   tk a 1.0
   tk a 1.0
tk a 1.0
tk a 1.0
end
loop fin
" 80 8 1000 50)
(add zz zz)
(rvl "4 softclip -6 ampdb mul")

(mul zz (ampdb -6)))

Day 28

Hopefully things are a little less chaotic.

I've been thinking about jazz harmonies and voicings quite a bit. It has been a while since I've had any system capable of letting me even the consider the notion of harmony.

In the context of the voice, I've been thinking about ensembles like the New York Voices, and the richness they have with only 4 voices.

So, this is a very colorful set of jazz voicings I worked out like last week, adapted and arranged for my computer music singing system. It's complicated enough tonally that I think I need to use note names rather than rely on the relative pitches like I've done prior to all this.

<<top>>=
(define (pch2midi pch)
  (let ((p (string->list pch))
        (nt (lambda (x)
              (case x
                ((#\C) 0)
                ((#\D) 2)
                ((#\E) 4)
                ((#\F) 5)
                ((#\G) 7)
                ((#\A) 9)
                ((#\B) 11)
                (else -1))))

        (acc (lambda (x)
               (case x
                 ((#\-) 0)
                 ((#\b) -1)
                 ((#\#) 1)
                 (else 0))))
        (oct (lambda (x) (* 12 (+ x 1)))))
    (+ (nt (car p))
       (acc (car (cdr p)))
       (oct (string->number (list->string (cddr p)))))))

<<top>>=
(define (loop28)
  (let ((v (gest:new)))
    (gest:weight v)
    (mul zz 36)
    (add zz 93)
    (gest:conductor)
    (bhold zz)
    (cabset zz 0)
    (loop28-voice-a v (cabgetf 0))
    (mul zz (ampdb -3))
    (loop28-voice-b (cabgetf 0))
    (simple-delay zz 0 0.005)
    (mul zz (ampdb -3))
    (add zz zz)
    (loop28-voice-c (cabgetf 0))
    (simple-delay zz 0 0.01)
    (mul zz (ampdb -3))
    (add zz zz)
    ;(mul zz 0)
    (loop28-voice-d (cabgetf 0))
    (simple-delay zz 0 0.015)
    (mul zz (ampdb -1))
    (add zz zz)

    (bdup)
    (simple-delay zz 0 0.2)
    (bdup)
    (revsc zz zz 0.9 8000)
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -20))
    (add zz zz)

    (mul zz (ampdb -4))
    (bunhold (cabget 0))))

<<top>>=
(define (tok-nt g tk)
  (gest:target g (pch2midi (car tk)))
  (cdr tk))

<<top>>=
(define (loop28-mkvoice-gst cnd tense sco g)
  (let ((tr (tract:new)) (gt (gest:newscalar)))
  (configure-tract tr g 0.001)
  (singer-words
   g (list
      (gst:wordentry "nt" tok-nt)
      (gst:wordentry "gt" (gst:mksetter gt)))
   sco) (cnd)
  (gest:iculate g)
  (add zz 2)
  (mtof zz)
  (glottis zz tense)
  (adsr (gest:scalar gt) 0.08 0.1 1 0.1)
  (mul zz zz)
  (tract:node tr)))

<<top>>=
(define (loop28-mkvoice cnd tense sco)
  (loop28-mkvoice-gst cnd tense sco (gest:new)))

<<top>>=
(define (loop28-voice-a v cnd)
(loop28-mkvoice-gst cnd 0.5 "
beg 3 3
mr 2 nt Eb4 mg jul-ah mass 0 inertia 0.001 gt 1
nt F-4 mg jul-oh
end
beg 3 3
mr 2 nt Bb4 mg jul-ah mass -50
nt Ab4 mg jul-oh mass 0
end
beg 3 3
mr 2 nt G-4 mg jul-ah
nt Eb4 mg jul-oh mass -60
end
beg 3 3
mr 2 nt C-4 mg jul-ah
nt C-4 mg jul-ah gt 0 mass -120
end

beg 3 3
mr 2 nt Eb4 mg jul-ah mass 0 gt 1
nt F-4 mg jul-oh
end
beg 3 3
mr 2 nt Bb4 mg jul-ah mass -20
nt Ab4 mg jul-oh
end
beg 3 3
mr 2 nt G-4 mg jul-ah mass -40
nt Eb4 mg jul-oh shrink 1.0
end
beg 3 3
mr 3 nt F-4 gl jul-ah mass -120
end
loop fin
" v))

<<top>>=
(define (loop28-voice-b cnd)
(loop28-mkvoice cnd 0.5 "
beg 3 3
mr 2 nt Bb3 mg jul-ah gt 1
nt C-4 mg jul-oh
end

beg 3 3
mr 3 nt F-4 mg jul-ah
end

beg 3 3
mr 2 nt Eb4 mg jul-ah
nt C-4 mg jul-oh
end

beg 3 3
mr 2 nt Bb3 mg jul-ah
nt Bb3 mg jul-ah gt 0
end

beg 3 3
mr 2 nt Bb3 mg jul-ah gt 1
nt C-4 mg jul-oh
end

beg 3 3
mr 3 nt F-4 mg jul-ah
end

beg 3 3
mr 2 nt Eb4 mg jul-ah
nt C-4 mg jul-oh
end

beg 3 3
mr 3 nt A-3 gl jul-ah
end

loop fin
"))

<<top>>=
(define (loop28-voice-c cnd)
(loop28-mkvoice cnd 0.6 "
beg 3 3
mr 2 nt G-3 mg vow-a gt 1
nt G-3 mg vow-o
end

beg 3 3
mr 3 nt Eb4 mg vow-a
end

beg 3 3
mr 2 nt Bb3 mg vow-a
nt G-3 mg vow-o
end

beg 3 3
mr 2 nt Ab3 mg vow-a
nt Ab3 mg vow-a gt 0
end

beg 3 3
mr 2 nt G-3 mg vow-a gt 1
nt G-3 mg vow-o
end

beg 3 3
mr 3 nt Eb4 mg vow-a
end

beg 3 3
mr 2 nt Bb3 mg vow-a
nt G-3 mg vow-o
end

beg 3 3
mr 3 nt G-3 gl vow-a
end

loop fin
"))

<<top>>=
(define (loop28-voice-d cnd)
(loop28-mkvoice cnd 0.6 "
beg 3 3
mr 2 nt E-3 mg vow-a gt 1
nt D-3 gl vow-o
end

beg 3 3
mr 3 nt B-3 mg vow-a
end

beg 3 3
mr 2 nt Ab3 mg vow-a
nt D-3 mg vow-o
end

beg 3 3
mr 2 nt Eb3 mg vow-a
nt Eb3 mg vow-a gt 0
end

beg 3 3
mr 2 nt E-3 mg vow-a gt 1
nt D-3 gl vow-o
end

beg 3 3
mr 3 nt B-3 mg vow-a
end

beg 3 3
mr 2 nt Ab3 mg vow-a
nt D-3 mg vow-o
end

beg 3 3
mr 3 nt F-3 gl vow-a
end

loop fin
"))

Day 29

Today I am out of sounds that are ideas. So now it's onto the next best thing, which is ideas that might be sounds.

This experiment, in a nutshell: use gestures to produce conductors to control other gestures.

With halloween coming, I will build this concept around a Dies Irae motif. Going with more of a tenor/bass sound for starters because I've been doing a lot of alto lately (and can you blame me? it's a much better sounding set of tract shapes).

Also, I am copy-pasting lots of stuff from 28, cuz I have less time on my hands now.

<<top>>=
(define (loop29)
  (let ((v1 (gest:new))
        (v2 (gest:new))
        (rev (monolith:cabnew (constf 0) 1)))
    (gest:weight v1)
    (gest:weight v2)
    (add zz zz)
    (mul zz 36)
    (add zz 93)
    (gest:conductor)
    (bhold zz)
    (cabset zz 0)

    (loop29-voice-a v1 (cabgetf 0))
    (mul zz (ampdb -3))
    (loop29-voice-b v2 (cabgetf 0))
    (mul zz (ampdb -3))
    (add zz zz)

    (bdup)
    (simple-delay zz 0 0.2)
    (bdup)
    (revsc zz zz 0.9 8000)
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -20))
    (add zz zz)

    (mul zz (ampdb -4))
    (cabclr rev)
    (bunhold (cabget 0))))


<<top>>=
(define (loop29-mkvoice-gst cnd g tense sco rmp)
  (let ((tr (tract:new)) (gt (gest:newscalar)))
  (configure-tract tr g 0.001)
  (singer-words
   g (list
      (gst:wordentry "nt" tok-nt)
      (gst:wordentry "gt" (gst:mksetter gt)))
   sco)
  (gexpr cnd rmp)
  (gest:iculate g)
  (add zz 2)
  (mtof zz)
  (glottis zz tense)
  (adsr (gest:scalar gt) 0.08 0.1 1 0.1)
  (mul zz zz)
  (tract:node tr)))

<<top>>=
(define (loop29-mkvoice cnd tense sco)
  (loop29-mkvoice-gst cnd (gest:new) tense sco))

<<top>>=
(define (loop29-voice-a v cnd)
(loop29-mkvoice-gst cnd v 0.8 "
beg 8 8
mr 2 pr 4
mr 3 nt F-3 mg vow-a mass 0 inertia 0.001 gt 1
nt E-3 mg vow-a

nt F-3 mg vow-a
nt D-3 mg vow-o
nt E-3 mg vow-e
nt C-3 mg vow-a
mr 2 nt A-2 mb 2 mg gl vow-o
end

beg 8 8
mr 2 pr 4
mr 3 nt F-3 mg vow-a mass -20 inertia 0.001 gt 1
nt E-3 mg vow-a shrink 0.5

nt F-3 mg vow-a shrink 0.5
nt D-3 mg vow-o shrink 0.5
nt E-3 mg vow-e shrink 0.5
nt C-3 mg vow-a shrink 0.5
mr 2 nt D-3 mb 2 gl lin vow-o
end
loop fin
"
"
beg 4 4
t 0 lin rmp
t 0 lin rmp

mn 2 3
rndn
pr 2
t 0 lin rmp
t 0 lin rmp

t 0 lin rmp

pr 6
mr 3 pr 2
t 0 lin rmp
t 0 lin rmp

t 0 lin rmp
t 0 lin rmp
t 0 lin rmp
end
loop
fin
"
))

<<top>>=
(define (loop29-voice-b v cnd)
(loop29-mkvoice-gst cnd v 0.5 "
beg 8 8
mr 2 pr 4
mr 3 nt Bb3 mg jul-ah mass 0 inertia 0.001 gt 1
nt A-3 mg jul-ah

nt Bb3 mg jul-ah
nt G-3 mg jul-oh
nt A-3 mg jul-ee
nt F-3 mg jul-ah
mr 2 nt D-3 mb 2 mg gl jul-oh
end

beg 8 8
mr 2 pr 4
mr 3 nt Bb3 mg jul-ah mass 0 inertia 0.001 gt 1
nt A-3 mg jul-ah

nt Bb3 mg jul-ah
nt G-3 mg jul-oh
nt A-3 mg jul-ee
nt F-3 mg jul-ah
mr 2 nt G-3 mb 2 mg exp 2 jul-oh
end

loop fin
"
"
beg 4 4
t 0 lin rmp
t 0 lin rmp

mn 2 3
rndn
t 0 lin rmp
pr 3
t 0 lin rmp
t 0 lin rmp
t 0 lin rmp
pr 4
t 0 lin rmp
t 0 lin rmp
t 0 lin rmp
t 0 lin rmp
end
loop
fin
"
))

<<top>>=
(define (loop29-clavi cnd)
  (let
      ((g (gest:new))
       (hit (gest:newscalar)))
    (gst:eval-addwords
     g (list
        (wordentry "hit" (mkhit hit))
        (wordentry "rest" (mkrest))
) "
beg 4 4
rest rest rest hit
end
loop fin
")
  (cnd)
  (gest:iculate g)
  (bdrop)
  (gest:tick hit)
  (mode zz 1200 20)
  (bdup)
  (mode zz 2200 20)
  (bswap)
  (mode zz 5000 100)
  (add zz zz)
  (dcblock zz)

  (mul zz (ampdb -6))))

Day 30

Thinking about: doo-wop.

<<top>>=
(define (loop30)
  (let ()
    (param 86)
    (gest:conductor)
    (bhold zz)
    (cabset zz 0)
    (loop30-voice-a (cabgetf 0))

    (loop30-voice-b (cabgetf 0))
    (mul zz (ampdb -4))
    (loop30-voice-c (cabgetf 0))
    (mul zz (ampdb -4))
    (simple-delay zz 0 0.01)
    (add zz zz)
    (loop30-voice-d (cabgetf 0))
    (mul zz (ampdb -4))
    (simple-delay zz 0 0.02)
    (add zz zz)
    (buthp zz 200)
    (add zz zz)

    (loop30-voice-e (cabgetf 0))
    (buthp zz 200)
    (add zz zz)

    (bdup)
    (simple-delay zz 0 0.2)
    (bdup)
    (revsc zz zz 0.9 8000)
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -20))
    (add zz zz)

    (mul zz (ampdb -4))
    (bunhold (cabget 0))))

<<top>>=
(define (loop30-mkvoice cnd tense sco art)
  (let ((tr (tract:new)) (gt (gest:newscalar)) (g (gest:new)))
  (configure-tract tr g 0.001)
  (singer-words
   g (list
      (gst:wordentry "nt" tok-nt)
      (gst:wordentry "gt" (gst:mksetter gt)))
   sco) (cnd)
  (gest:iculate g)
  (mtof zz)
  (glottis zz tense)
  (gexpr cnd art)
  (adsr zz 0.03 0.1 1 0.01)
  (mul zz zz)
  (tract:node tr)))

<<top>>=
(define (loop30-mklead cnd tense sco art vib)
  (let ((tr (tract:new)) (gt (gest:newscalar)) (g (gest:new)))
  (configure-tract tr g 0.001)
  (singer-words
   g (list
      (gst:wordentry "nt" tok-nt)
      (gst:wordentry "gt" (gst:mksetter gt)))
   sco) (cnd)
  (gest:iculate g)
  (sine 6 0.2)
  (gexpr cnd vib)
  (mul zz zz)
  (add zz zz)
  (mtof zz)
  (glottis zz tense)
  (gexpr cnd art)
  (adsr zz 0.03 0.1 1 0.01)
  (mul zz zz)
  (tract:node tr)))

<<top>>=
(define (loop30-voice-a cnd)
(loop30-mkvoice cnd 0.7  "
beg 8 8
mr 2 pr 6
   mr 5 nt G-2 stp vow-a
   nt G-2 gl vow-o
mr 2 pr 6
   mr 5 nt E-2 stp vow-a
   nt E-2 gl vow-o
mr 2 pr 6
   mr 5 nt A-2 stp vow-a
   nt A-2 gl vow-o
mr 2 pr 6
   mr 5 nt D-2 stp vow-a
   nt D-2 gl vow-o
end
loop fin
"

"
beg 8 8
mr 2 pr 6
  mr 5 t 0 gate 0.6 rmp
  t 0 stp irmp
mr 2 pr 6
  mr 5 t 0 gate 0.6 rmp
  t 0 stp irmp
mr 2 pr 6
  mr 5 t 0 gate 0.6 rmp
  t 0 stp irmp
mr 2 pr 6
  mr 5 t 0 gate 0.6 rmp
  t 0 stp irmp
end
loop fin
"
)
)

<<top>>=
(define (loop30-voice-b cnd)
(loop30-mkvoice cnd 0.7  "
beg 8 8
mr 2 pr 6
  mr 2 nt A-3 mg vow-a
  mr 4 nt B-3 mg

mr 2 pr 6
  mr 2 nt B-3 mg
  mr 4 nt B-3 mg

mr 2 pr 6
  mr 2 nt B-3 mg
  mr 4 nt C-4 mg

mr 2 pr 6
  mr 2 nt C-4 mg
  mr 4 nt A-3 mg
end
loop fin
"

"
beg 8 8
mr 2 pr 6
  mr 2 t 0 stp rmp
  mr 4 t 0 stp irmp
mr 2 pr 6
  mr 2 t 0 stp rmp
  mr 4 t 0 stp irmp
mr 2 pr 6
  mr 2 t 0 stp rmp
  mr 4 t 0 stp irmp
mr 2 pr 6
  mr 2 t 0 stp rmp
  mr 4 t 0 stp irmp
end
loop fin
"
)
)

<<top>>=
(define (loop30-voice-c cnd)
(loop30-mkvoice cnd 0.7  "
beg 8 8
mr 2 pr 6
  mr 2 nt F#3 mg vow-a
  mr 4 nt G-3 mg

mr 2 pr 6
  mr 2 nt G-3 mg
  mr 4 nt G-3 mg

mr 2 pr 6
  mr 2 nt G-3 mg
  mr 4 nt A-3 mg

mr 2 pr 6
  mr 2 nt A-3 mg
  mr 4 nt F#3 stp
end
loop fin
"

"
beg 8 8
mr 2 pr 6
  mr 2 t 0 stp rmp
  mr 4 t 0 stp irmp
mr 2 pr 6
  mr 2 t 0 stp rmp
  mr 4 t 0 stp irmp
mr 2 pr 6
  mr 2 t 0 stp rmp
  mr 4 t 0 stp irmp
mr 2 pr 6
  mr 2 t 0 stp rmp
  mr 4 t 0 stp irmp
end
loop fin
"
)
)

<<top>>=
(define (loop30-voice-d cnd)
(loop30-mkvoice cnd 0.7  "
beg 8 8
mr 2 pr 6
  mr 2 nt D-4 mg vow-a
  mr 4 nt D-4 mg

mr 2 pr 6
  mr 2 nt D-4 mg
  mr 4 nt D-4 mg

mr 2 pr 6
  mr 2 nt D-4 mg
  mr 4 nt E-4 mg

mr 2 pr 6
  mr 2 nt E-4 mg
  mr 4 nt D-4 stp
end
loop fin
"

"
beg 8 8
mr 2 pr 6
  mr 2 t 0 stp rmp
  mr 4 t 0 stp irmp
mr 2 pr 6
  mr 2 t 0 stp rmp
  mr 4 t 0 stp irmp
mr 2 pr 6
  mr 2 t 0 stp rmp
  mr 4 t 0 stp irmp
mr 2 pr 6
  mr 2 t 0 stp rmp
  mr 4 t 0 stp irmp
end
loop fin
"
)
)

<<top>>=
(define (loop30-voice-e cnd)
(loop30-mklead cnd 0.55  "
beg 8 8
nt G-3 jul-ah gl
nt G-4 jul-ah mg
pr 3
   mr 2 nt F#4 jul-ah mg
   nt G-4 jul-ah mg
pr 3
   mr 2 nt F#4 jul-ah mg
   nt D-4 jul-ah mg
nt G-3 jul-oo mg

pr 3
   mr 2 nt E-4 jul-ah mg
   nt D-4 jul-oh mg
nt D-4 jul-oh mg
pr 3
   mr 2 nt C-4 jul-ah mg
   nt B-3 jul-oh mg
end

beg 8 8
nt B-3 jul-oh mg
pr 3
   mr 2 nt D-4 jul-ah mg
   nt G-3 jul-oh mg
mr 2 nt G-3 jul-oh mg
mn 4 2
pr 4
mr 2
pr 6
  mr 4 nt A-3 jul-ah mg
  nt B-3 jul-oo gl
  nt C-4 jul-ah gl
mr 2 nt D-4 jul-oh gl
pr 4
mr 2 nt A-3 jul-ah mg
mr 2 nt B-3 jul-oh gl
end
loop fin
"

"
beg 8 8
mr 8 t 0 stp irmp
end
loop fin
"

"
beg 8 8
mr 3 t 0.1
mr 1 t 0.9
mr 3 t 0.1
mr 1 t 0.9
end
loop fin
"
))

Day 31

Thinking about: Halloween! Spooky Ghosts. Sooo spooky. wooooo!

<<top>>=
(define (loop31)
  (let ()
    (cabset (bhold (gst:cnd 60)) 0)
    (loop31-ghost-julia (cabgetf 0))
    (loop31-ghost-anna (cabgetf 0))
    (add zz zz)
    (loop31-ghost-bill (cabgetf 0))
    (add zz zz)
    (loop31-ghost-jack (cabgetf 0))
    (add zz zz)
    (mul zz (ampdb -8))
    (bunhold (cabget 0))

    (bdup)
    (simple-delay zz 0 0.1)
    (bdup)
    (revsc zz zz 0.9 10000)
    (bdrop)
    (dcblock zz)
    (mul zz (ampdb -15))
    (add zz zz)))

<<top>>=
(define (loop31-mkghost cnd tense base vib sco time)
(let ((tr (tract:new)) (seq (gest:new)))
    (configure-tract tr seq 0.02)
    (singer seq sco)
    (gexpr cnd time)
    (gest:iculate seq)
    (add zz base)
    (sine (randi 6 7 2) vib)
    (add zz zz)
    (mtof zz)
    (glottis zz tense)
    (tract:node tr)))

<<top>>=
(define (loop31-ghost-julia cnd)
  (loop31-mkghost cnd 0.5 60 0.3 "
beg 4 4
mr 2 t 0 jul-oo

mn 2 4
rndn
pr 2 t 1 t -1
t 2
t 3
pr 2 t 7 t 1
end
loop fin
"
"
beg 1 1
t 0 rmp
end
loop fin
"
))

<<top>>=
(define (loop31-ghost-anna cnd)
  (loop31-mkghost cnd 0.5 67 0.5 "
beg 5 5
mr 3 t 0 jul-oo

mn 2 4
rndn
pr 2 t 3 t 4 exp 1
pr 2 t 1 exp 3 t 8
t 7 exp 3
t 9 exp -3
end
loop fin
"
"
beg 3 3
t 0 rmp
mr 2 t 0 rmp
end
loop fin
"
))

<<top>>=
(define (loop31-ghost-bill cnd)
  (loop31-mkghost cnd 0.9 55 0.8 "
beg 5 5
mr 3 t 0 vow-o

mn 2 4
rndn
pr 2 t 5 t 2 exp 1
pr 2 t 1 exp 3 t 3
t 2 exp 3
t 3 exp -3
end
loop fin
"
"
beg 4 3
t 0 rmp
t 0 rmp
t 0 rmp
end
loop fin
"
))

<<top>>=
(define (loop31-ghost-jack cnd)
  (loop31-mkghost cnd 0.8 40 1 "
beg 5 5
mr 3 t 0 vow-o

mn 2 4
rndn
pr 2 t 5 t 2 exp 1
pr 2 t 1 exp 3 t 3
t 2 exp 3
t 3 exp -3
end
loop fin
"
"
beg 4 4
mr 3
t 0 rmp
t 0 rmp
end
loop fin
"
))

home | index