diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index dd08cfb8..1568a53e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,6 +1,6 @@ name: Build and Deploy -on: [workflow_dispatch] +on: [push] # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: diff --git a/my-patterns/01.txt b/my-patterns/01.txt new file mode 100644 index 00000000..6478a38d --- /dev/null +++ b/my-patterns/01.txt @@ -0,0 +1,5 @@ +s("bd:7").struct("x x [~ x] [x x*2]".iter(8)) + .slow(1.4) + .off(0.25, x => x.speed(saw.range(3,2.5).color('green'))) + .room(3).size(saw.slow(4)) + .lastOf(4, x => x.bank("OberheimDMX")).legato(0.25) diff --git a/my-patterns/01b.txt b/my-patterns/01b.txt new file mode 100644 index 00000000..e1dff04f --- /dev/null +++ b/my-patterns/01b.txt @@ -0,0 +1,3 @@ +stack(n("{4 [~ 4] ~ [4 ~ 3]@2, 2 ~ [3 7 5]@2}%4").s("snare_hi").speed(1.2), + s("clap:1 [~ clap:0] [~ clap:3]").iter(3).speed(1.5).gain(0.4).color("green") + ) diff --git a/my-patterns/01c.txt b/my-patterns/01c.txt new file mode 100644 index 00000000..7cbc0fcd --- /dev/null +++ b/my-patterns/01c.txt @@ -0,0 +1,4 @@ +stack(n("{4 [~ 4] ~ [5*3 ~ 3]@2, 2 ~ [3 7 ~ 5]@2}%3").s("snare_rim ").gain(2).speed("[2,2 [2.02|2.03]]"), + s("clap:1 [~ clap:0] [~ clap:3]").iter(3).speed(1.5).gain(0.4).color("green").delay(0.25).delaytime(1/12).delayfeedback(0.6), + n("3 2 [1 5]").s("framedrum").gain(2).speed(2) + ).room(saw.range(0, 2).slow(32)).size(1.5) diff --git a/my-patterns/02.txt b/my-patterns/02.txt new file mode 100644 index 00000000..0647d16f --- /dev/null +++ b/my-patterns/02.txt @@ -0,0 +1,8 @@ +s("bd hh sd oh".fast(2)) + .squeeze(n("<[0 1] 2 [0 4]>")) + .bank("RolandTR909") + .reset("1".euclidLegato("<3 2 3 5>","8")) + .sometimesBy("0.2", x => x.crush("3")) + .speed("[<1.02 1>,1.03]") + .when("0 0 [0|1] 0",x => x.fast(1.5).add(speed("-2"))) + .slow(1.7) diff --git a/my-patterns/03.txt b/my-patterns/03.txt new file mode 100644 index 00000000..553433ae --- /dev/null +++ b/my-patterns/03.txt @@ -0,0 +1,10 @@ +stack(s("bd [~ sd] [sh bd] cb".fast("4")) + .bank("YamahaRY30") + .reset("1".euclidLegato("<3 5 7>","[8 16]")) + .early("<0 0.125>") + .speed(1.5) + .chunk(4,x => x.crush(5)) + .off("<0.5 0.125 0.0625>", x => x.speed(8).gain(0.25).pan(sine.slow(2))), + s("clap") +).slow(3.7) + diff --git a/my-patterns/04.txt b/my-patterns/04.txt new file mode 100644 index 00000000..af4f40d7 --- /dev/null +++ b/my-patterns/04.txt @@ -0,0 +1,13 @@ +samples({ + atlast: ['extra-samples/atlast/0_piano.wav', 'extra-samples/atlast/1_vocal.wav', 'extra-samples/atlast/2_hardly.wav'], +}, 'github:yaxu/spicule/master/'); + +s("atlast:2") + .chop(32) + .inside(4,iter("8")) + .room(0.3) + .size(0.6) + .jux(rev) + .when("[1 0 0 0]".iter(4).fast(4), x => x.slow(2).speed(0.5).crush(4)) + .slow(4.2) + diff --git a/my-patterns/05.txt b/my-patterns/05.txt new file mode 100644 index 00000000..2ceebb36 --- /dev/null +++ b/my-patterns/05.txt @@ -0,0 +1,26 @@ +var isSubset = (superObj, subObj) => { + return Object.keys(subObj).every(ele => { + if (typeof subObj[ele] == 'object') { + return isSubset(superObj[ele], subObj[ele]); + } + return subObj[ele] === superObj[ele] + }); +}; + +Pattern.prototype.match = function (o, f) { + return stack(this.filterValues(v => !isSubset(v,o)), f(this.filterValues(v => isSubset(v, o)))); +} + +x = s("bd sd [~ hh] sd [~ bd] [~ rd] rm bd*2") + .bank("SequentialCircuitsDrumtracks") + .off("1".div("[8 16]/1.2"), x => x.speed(2).gain(0.8).n(3)) + .speed(1.5) + .juxBy(0.25,rev) + .match({s: 'rd'}, pat => pat.crush(2).end(0.1)) + +y = s("bd:4(7,12,<0 2>)").gain(0.7).crush(3).speed(0.8).end(0.3) + .fast(16/12) + +stack(x,y) + .slow(2.1).when("<0!8 1!4>", x => x.speed(saw.add(1))) + diff --git a/my-patterns/06.txt b/my-patterns/06.txt new file mode 100644 index 00000000..ffe8e612 --- /dev/null +++ b/my-patterns/06.txt @@ -0,0 +1,9 @@ +var a = s("mt [ht lt] misc:1") + .off ("<0.25 0.125>", x => x.n(2).speed(2)) + .fast("<2 3@2>") + .bank("ViscoSpaceDrum") + .slow(4) + +var b = s("[clap:2 ~ clap:6]*2").speed(1.4) + +stack(a,b) diff --git a/my-patterns/07.txt b/my-patterns/07.txt new file mode 100644 index 00000000..b60eb4fa --- /dev/null +++ b/my-patterns/07.txt @@ -0,0 +1,11 @@ +var a = s("mt mt rim") + .fast("<1@3 1.5@1 0.75@4>").gain(0.9) + .bank("ViscoSpaceDrum") + +var b = s("sd*<2@3 2@1 1.5@4 1@1>").gain(1) + .hcutoff(3000) + +stack(a, + b + ) + diff --git a/my-patterns/08.txt b/my-patterns/08.txt new file mode 100644 index 00000000..bd0fff22 --- /dev/null +++ b/my-patterns/08.txt @@ -0,0 +1,7 @@ +s("bd [~ hh] sd ") + .off("<1 3>".div("<16 8 16>"), x => x.mix(speed("1(3,8,<0 2 3>)")).n("<0 1 2>")) + .off("<1 5 7>".div("<16 8>"), x => x.mix(speed("2(3,8,<0 2 3 4>)")).n("<0 1 2 3>").crush(4).speed(1.5)) + .bank("RolandTR808") + .slow(1.7) +.end(1).room(0.3).size(0.3) + diff --git a/my-patterns/09.txt b/my-patterns/09.txt new file mode 100644 index 00000000..2a3c6744 --- /dev/null +++ b/my-patterns/09.txt @@ -0,0 +1,15 @@ +var a = s("<[bd [~ sd] sd] !3 [bd [cb sd]]!3>") + .off("<1 3>".div("<16 8 16>"), x => x.mix(speed("1 2 3 [4 5]")).n("<0 1 2>")) + .off(0.125, x => x.mul(speed(2))) + .bank("ViscoSpaceDrum") + .jux(rev) + .end(0.3).room(0.3).size(0.3) + +var b = s("[[ lt:7/2 ht:6/3 ~] ~] sd [~ bd:2] sd") + .gain(1.8).speed("[2.1,2.11]".add(perlin.mul(0.5).slow(2))) + .crush(3).end(0.7) + .bank("RolandTR909") + +stack(a,b) + .slow(1.2) + diff --git a/website/astro.config.mjs b/website/astro.config.mjs index 9dca58df..93370893 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -30,7 +30,7 @@ export default defineConfig({ mdx(options), tailwind(), ], - site: `https://strudel.tidalcycles.org`, + site: `https://patterns.slab.org`, base: '/', }); diff --git a/website/public/CNAME b/website/public/CNAME index 63687b2b..ebb952ff 100644 --- a/website/public/CNAME +++ b/website/public/CNAME @@ -1 +1 @@ -strudel.tidalcycles.org +patterns.slab.org