# Looptober 2024

Music loops for the month of Looptober, 2024.

# 1 One

Made with OctaMED Soundstudio V1.03c in FS-UAE.

# 2 Two

setcps(0.27)

$: s("{bd!32, sd!24}*[16 8 12 4]/32*<[{16? 8} {12? 8} {15? 8} {18? 8}]*2 4>")
  .n(run(16))
  .jux(x=>x.iter(8).fast(2))
  .fast(2)
  .gain(0.25)

$: s("<bd!15 sd*4>!7*<128!3 160> bd*<32 36 24 27>*2")
  .n(run(32))
  .jux(x=>x.n(run(31).fast(32.0/31.0)))
  .gain(0.1)

strudel.cc

# 3 Three

setcps(3/3)

$: s("sd:3")
  .note("3")
  .every(3, fast(3))
  .chop(3*3*3)
  .slow(3+3)
  .sometimes(jux(sometimes(rev)))
  .loopAt(3/3/3)
  .every(3, slow(3*3))
  .fast(3*3)
  .echo(3, sine.slow(3.03).mul(.3/33).add(.3/333), .3*3)
  .room(.3)
  .gain(.3/3)

$: s("bd:3!3*3/4")
  .note("23")
  .lpf(33*3)
  .distort(3)
  .room(.3*3)
  .gain(.3/3)

$: s("~ hh:3")
  .note("33")
  .fast(3*3/4)
  .jux(iter(3))
  .hpf(3333*3)
  .echo(3, cosine.slow(3*3*3*3).mul(.3/333).add(.3/3333), .3*3)
  .room(.3)
  .gain(.3)

strudel.cc

# 4 Four

setcps(4*(4+4))

$: s("bd")
  .degradeBy(.004)
  .n(run(4).slow(run(4).slow(run(4).add(4)).add(4)))
  .fast(run(4).slow(run(4).slow(4*4).add(4)).add(4))
  .loopAt(run(4).slow(4*4).add(4.4).add(cosine.slow(4*4*4*(4+4))))
  .slow(4+4)
  .juxBy(.4, rev)
  .echo(4, run(4).slow(4*4*4).add(.4).add(cosine.slow(4*4*4*4*4)).div(4), .4)
  .gain((.4+.4)/4)

$: s("{bd/4, [~@444 sd@344]/4}")
  .degradeBy(.004)
  .slow(4)
  .sometimesBy(.04, juxBy(.4/4, fast(4)))
  .echo(4, run(4).slow(4*4).add(.4).add(cosine.slow(4*4*4*4*(4+4))).div(4+4), .4+.4)
  .gain(.4+.4/4)

$: s("[bd cp]/4/4/4")
  .degradeBy(.004)
  .sometimesBy(.4/4, x=>x.n(4))
  .echo(4, run(4).slow(4*(4+4)).add(.4).add(cosine.slow(4*4*4*4)).div(4), .4)
  .distort(44)
  .gain(.0000000000000000004/4)
  .room(.4)

strudel.cc

# 5 Five

setcps(5.55/5.5/5)

$: s("{[~@55 bd:5 ~@55]!5/5*5.5, [~!55 sd:5 ~!55]}")
  .slow(5)
  .echoWith(5, 55.505, (p,n)=>p.fast(5+n).slow(.5-n).degradeBy(cosine.slow(5).mul(.05)))
  .echoWith(5, 55.555, (p,n)=>p.chop(5+n).juxBy(.5, rev).slow(5*(5-n)).speed((5+5-n)/5).degradeBy(sine.slow(5*5).mul(.05)))
  .slow(5).repeatCycles(5).fast(5)
  .juxBy(.5, iter(5))
  .gain(.5/5)
  .room(cosine.fast(55.55).mul(.5).add(.05))

$: s("jazz:5*5")
  .note("[0 , .005] [.5 , .55]".add(55-5*5))
  .juxBy(.5, sometimes(x=>x.speed(5/5+.005)))
  .distort(.5)
  .gain(.5)
  .room(rand.mul(.55).add(.05))
  .delay(.555)
  .delayfb(rand.range(5/5-.05, 0).segment(5*5*5))
  .delaytime(rand.range(0, .5).segment(5*5*5))

strudel.cc

# 6 Six

setcps(6.0606)

$: s("<bd:6 [bd:6 ~]>")
  .slow(6)
  .note(6*6.6)
  .echoWith(6, .666, (p, n) => p.pan((n+.6)/6).speed((6+n/6)/6))
  .gain(.6)

$: s("[~@6 sd:6@3 sd:6@2]/6")
  .when(run(6).slow(run(6).slow(6).mul(6)).fmap(x=>x>4), x=>x.speed(-6.6/6))

$: s("[~@6 ~@1 jazz:6@4]/6")
  .note(6*6)
  .jux(x=>x.note("<6 6.6 6.66 6.666>/6".mul(6.6)))
  .echo(6, 666.666, .66)
  .delay(.6)
  .delayt(sine.slow(666).range(.6, .666))
  .delayfb(.6)

$: s("[bd:666@2 bd:666]/6")
  .degradeBy(.06)

strudel.cc

# 7 Seven

setcps(.7+.7/7)

$: s("bd:7")
  .note(rand.mul(007).add(70))
  .degradeBy(.007)
  .n(run(007).slow(run(007).slow(run(007).add(007*007)).add(007)))
  .fast(run(007).slow(run(007).slow(007*007).add(007)).add(007))
  .loopAt(run(007).slow(007).add(7.007).add(cosine.slow(007*007*(007+007))))
  .juxBy(.7, rev)
  .echo(007, run(007).slow(7.007).add(.007).add(cosine.slow(007*007*007)).div(00777), 0.07)
  .gain(.7)

$: s("[bd cp]/7")
  .degradeBy(.7)
  .sometimesBy(.7/007, x=>x.n(7))
  .echo(007, run(007).slow(007*(007+007)).add(.07).add(cosine.slow(007*(007+007))).div(007), .07/007)
  .distort(0077)
  .gain(.000000000000000000000000000000007/7)
  .room(.7)

strudel.cc

# 8 Eight

setcps(8.08)

$: s("RolandTR808_bd:808(23,808)/8/8")
  .every((8*8)/(8+8), x=>x.n(0))
  .echoWith(2, cosine.slow(808).div(808).add(80.8), (p,n)=>p.speed(n+.808))
  .echoWith(2, cosine.slow(80.8).div(80.8).add(8.08), (p,n)=>p.pan((n/2)+1/4))
  .echoWith(2, 0.808, (p,n)=>p.note(28.08+18.08*n))
  .distort(0.808)
  .delay(.0808)
  .delayt(8.08)
  .delayfb(.808)
  .every(8, x=>x.hpf(808.08))
  .lastOf(8, x=>x.lpf(8.0808))

strudel.cc

# 9 Nine

setcps(9)

$: s("RolandTR909_bd(23,909)/9/9 RolandTR909_sd(23,909,415)/9/9")
  .n(9.9)
  .hpf(49)
  .hpq(9)
  .hpe(9)
  .hpa(.009)
  .hpd(.09)
  .hpr(.009)
  .lpf(9999.9)
  .lpq(.9)
  .lpe(99)
  .lpa(.009)
  .lpd(.09)
  .lpr(.9)

$: s("sawtooth(57,909)/9/9")
  .chop(9)
  .note(rand.range(9.9, 9.99).add(29))
  .juxBy(.09, x=>x.speed(rand.range(0.9, 0.9999)))
  .legato("99(23,909)/9/9")
  .gain(.9)
  .room(.9)
  .delay(.9)
  .delayt(.09)
  .delayfb(.49)

$: s("square(57,909,99)/9/9")
  .note(39.09-12)
  .juxBy(.9, x=>x.speed(.99))
  .legato("99(23,909)/9/9")
  .gain(.9)
  .room(.9)
  .delay(.9)
  .delayt(rand.range(.0009, .009))
  .delayfb(.9)

strudel.cc

# 10 Ten

setcps(.10)

$: s("bd:10*10")
  .note(run(10).add(10+10+10))
  .fast("<1!10 10>*10")

$: s("~@10 sd:10*10")
  .note(run(10).add(10+10+10+10).fast(10))

$: s("~ sawtooth*10")
  .note("[10 16]*10".add(10+10+10+10).sub(run(10).sub(run(10).slow(10))))
  .echoWith(10, .010, (p,n)=>p.pan(n/10))
  .gain(.410)
  .delay(.910)
  .delayt(1.10)
  .delayfb(.710)

strudel.cc

# 11 Eleven

setcps(11.11)

$: s("bd:11")
  .every(11, x=>x
    .gain(11)
    .distort(11)
    .fast(run(11).mul(3).mod(11).add(11).slow(11*11))
    .speed(run(11).mul(4).mod(11).sub(11).slow(11*11))
    .delay(11)
    .delayt(cosine.slow(11*11).mul(.11).add(.11))
    .delayfb(.11)
    .room(.11)
        )

$: s("[~!11 sd:11*11 ~!11]/11")
  .gain(11)
  .distort(11)
  .delay(11)
  .delayt(run(11).mul(5).mod(11).add(.5).div(11).range(.00011, .011).slow(11*11))
  .delayfb(.811)

strudel.cc

# 12 Twelve

This one loops after 24 minutes, viewing Strudel.CC link is recommended as the video file is truncated (and large).

STROBE WARNING

// STROBE WARNING // STROBE WARNING // STROBE WARNING // STROBE WARNING // STROBE WARNING

setcps(1.2)

$: s("gm_marimba ~@12")
  .echoWith(12, 1/12, (p,n)=>
    { n =       "0 1 2 3 4 5 6 7 8 9 10 11".slow(12).mul(n).mod(12); return p.n(n).note
          (     "0 1 2 3 4 5 6 7 8 9 10 11".slow(12*12)
           .mul("0 1 2 3 4 5 6 7 8 9 10 11".slow(12*12).mul(n).slow(12))
           .mul(  "1,2,3,4,5,6,7,8,9,10,11")
           .add("0 1 2 3 4 5 6 7 8 9 10 11".slow(12).mul(n).slow(12*12))
           .mod(12)
           .add(12+12+12)
           .mul(1.2)
          )
        .pan((n.add(.5).div(12))
        .legato(n.mul(n.slow(12)).mod(12).add(1))
        .hsl(n.mul(30).add(15).div(360),.5,.5))
    })
  .gain(.12)
  .room(.12)
  .pianoroll({cycles:2,vertical:true,stroke:1,fill:0,fillActive:1})

strudel.cc

# 13 Thirteen

setcps(.13)

$: stack
  ( s("piano!13").note(run(13).mul(3).mod(13).add(13+13+13).mul(12/13))
  , s("piano(3,13,2)").echoWith(13,run(13).div(13),(p,n)=>p.pan(n/13).note((13+13+13+13+13+n/13)*(12/13)))
  , s("piano(<1 2 3 4 5 6 7 8 9 10 11 12 13>,13)*<13 12 11 10 9 8 7 6 5 4 3 2 1>").note(61.3)
  , s("piano(5,13,<1 2 3 4 5 6 7 8 9 10 11 12 13>)").note(71.3).jux(rev)
  )
  .pianoroll()

strudel.cc

# 14 Fourteen

const r = "0 1 2 3 4 5 6 7 8 9 10 11 12 13"

setcps(.14*1.4*1.4*1.4)

$: s("bd:14!14")
  .note(r.mul(r.slow(14)).mod(14).add(14+14+14))
  .room(1.4)
  .delay(1.4)
  .delayt(r.mul(r.slow(14*14)).mod(14).div(14).range(.0014,.014))
  .delayfb(1-.14)
  .distort(1.4)
  .pan(.14)

$: s("sd:14")
  .euclidRot(r.slow(14), 14, r.slow(14*14*14))
  .sometimesBy(.14/14, fast(14))
  .chop(14)
  .jux(x=>x.speed(1.4))
  .delay(1.4)
  .delayt(r.mul(r.slow(14)).mod(14).div(14).range(.0014*1.4, .014*1.4))
  .delayfb(1-.14)
  .room(.14)
  .gain(1.4)
  .pan(1-.14)

strudel.cc

# 15 Fifteen

setcps(1.5*1.5*1.5)

$: s("bd@15 sd@10*<1 5 3 15>")
  .n("<1 5 3 15>*[1,5,3,15]/[1 5 3 15]/[1,5,3,15]")
  .gain(.015)
  .room(.15)
  .every(15, x=>x.room(1.5))
  .roomsize(15)

strudel.cc

# 16 Sixteen

setcps(1.16)

$: s("[bd*[1 2 4 8 16]/1@4 sd*[1 2 4 8 16]/2@2 ~ bd*[1 2 4 8 16]/4@2 ~ bd*[1 2 4 8 16]/8@2  sd*[1 2 4 8 16]/16@4]/<2!32 1!16 2!8 4!4 8!2 16!1 0>")
  .n("<2 4 8 16>*{1 2, 4 8 16}/<1 2 4 8>")
  .pan("<.5 .25 .5 .75>/<1 2 4 8 16>")
  .speed("<1 2 4 .5>/{1 2, 4 8 16}/<1 2 4 8>")
  .outside("1, 2, 4, 8, 16", iter("{1 2 4, 8 16}%8"))
  .gain(1.6/16)
  .room(1.6)
  .roomsize(.16)
  .legato(1/4)
  .note("[40,40.16]")

strudel.cc

# 17 Seventeen

setcps(17)

let [a, b] = ['~@5 ','~@5 ']
for (var i = 1; i <= 4; ++i) { let [c, d] = [a + a + i +'@2 ' + b, a + b + (-i) + '@2 ' + a]; a=c; b=d; }

$: s("sawtooth")
  .legato(mini('<' + b + '>').mul(1.7).add(7).div(1.7))
  .note(mini('<' + a + ', 0>').div(17).add("46, <50 49>/17/17, 53, <55 56>/17/17"))
  .pan(mini('<' + b + '>').add(17*3/8).div(17/2))
  .delay(.317).delayt(mini('<' + a + '>').add(5).div(17)).delayfb(.917)
  .gain(.17)

$: s("square")
  .legato(mini('<' + a + '>').add(5).div(.17))
  .note(mini('<' + b + ', 0>').div(17).add("46, <50 49>/17/17, 53, <55 56>/17/17"))
  .pan(mini('<' + a + '>').add(17*1/8).div(17/2))
  .delay(.317).delayt(mini('<' + b + '>').add(5).div(17)).delayfb(.917)
  .gain(.17/1.7/1.7)

$: s("RolandTR909_bd:17(2,17)/17")
  .legato(17).hpf(17*3).hpq(17.17).distort(1.7)
  .gain(.17/1.7/1.7)

$: s("RolandTR909_oh:17(2,17,4)/17")
  .legato(1.7).lpf(17*17*17).lpq(17.17).distort(1.7)
  .gain(.17/1.7/1.7)

strudel.cc

# 18 Eighteen

“an modular arithmetic experiment”

A generalized version of this composition, allowing to change the numbers determining the sequencing is at strudel.cc/?YIHRFpoVcTPa.

  setcps(.18*1.8*1.8)
  let n = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18".rev()
  $: s("bd*18, [~ sd]*9, [~ ht/3 mt]*6")
    .distort(1.8).gain(.18).room(1.8*1.8).roomsize(.18)
    .n(n.mul(n.mul(n.slow(18)).slow(18)).bind(n=>{return stack
         ( n % 2 > 0 ? n % 2 : "~"
         , n % 3 > 0 ? n % 3 : "~"
         , n % 6 > 0 ? n % 6 : "~"
         , n % 9 > 0 ? n % 9 : "~"
         , n %18 > 0 ? n %18 : "~"
         )})
    .bind(x=>{return pure(x).hsl(x/18,1-.18,.25).label(''+x).
      note(n.slow(18).mul(5).add(13*x).mod(18).add(18*2))}))
    .early(18)
    .pianoroll({cycles:1.8, fold:0, autorange:0, minMidi:18*2-1, maxMidi:18*3,
                labels: 1, stroke:1, fill:0, fillActive:1,
                background:'#fff', playheadColor:'#888'})
    .gain(.018)

strudel.cc