From f15686ba0f13d947f7eadcec421f06b039057a06 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Fri, 11 Feb 2022 01:10:44 +0100 Subject: [PATCH] build --- docs/_snowpack/link/strudel.js | 38 ++++++++++++++++++--- docs/dist/App.js | 10 +++--- docs/dist/tunes.js | 62 +++++++++++++++++++++++++++++++++- docs/global.css | 30 ++++++++-------- 4 files changed, 116 insertions(+), 24 deletions(-) diff --git a/docs/_snowpack/link/strudel.js b/docs/_snowpack/link/strudel.js index 96cc10c8..132e4d0f 100644 --- a/docs/_snowpack/link/strudel.js +++ b/docs/_snowpack/link/strudel.js @@ -354,9 +354,10 @@ class Pattern { return stack([this, func(this._early(time_pat))]); } every(n, func) { - const pats = Array(n - 1).fill(this); - pats.unshift(func(this)); - return slowcat(...pats); + const pat = this; + const pats = Array(n - 1).fill(pat); + pats.unshift(func(pat)); + return slowcatPrime(...pats); } append(other) { return fastcat(...[this, other]); @@ -422,6 +423,15 @@ function slowcat(...pats) { }; return new Pattern(query2)._splitQueries(); } +function slowcatPrime(...pats) { + pats = pats.map(reify); + const query2 = function(span) { + const pat_n = Math.floor(span.begin) % pats.length; + const pat = pats[pat_n]; + return pat.query(span); + }; + return new Pattern(query2)._splitQueries(); +} function fastcat(...pats) { return slowcat(...pats)._fast(pats.length); } @@ -493,6 +503,16 @@ const slow = curry((a, pat) => pat.slow(a)); const early = curry((a, pat) => pat.early(a)); const late = curry((a, pat) => pat.late(a)); const rev = (pat) => pat.rev(); +const add = curry((a, pat) => pat.add(a)); +const sub = curry((a, pat) => pat.sub(a)); +const mul = curry((a, pat) => pat.mul(a)); +const div = curry((a, pat) => pat.div(a)); +const union = curry((a, pat) => pat.union(a)); +const every = curry((i, f, pat) => pat.every(i, f)); +const when = curry((binary, f, pat) => pat.when(binary, f)); +const off = curry((t, f, pat) => pat.off(t, f)); +const jux = curry((f, pat) => pat.jux(f)); +const append = curry((a, pat) => pat.append(a)); export { Fraction, TimeSpan, @@ -515,5 +535,15 @@ export { slow, early, late, - rev + rev, + add, + sub, + mul, + div, + union, + every, + when, + off, + jux, + append }; diff --git a/docs/dist/App.js b/docs/dist/App.js index e6a28405..fb19d714 100644 --- a/docs/dist/App.js +++ b/docs/dist/App.js @@ -126,7 +126,7 @@ function App() { }, []) }); return /* @__PURE__ */ React.createElement("div", { - className: "h-screen bg-slate-900 flex flex-col" + className: "min-h-screen bg-[#2A3236] flex flex-col" }, /* @__PURE__ */ React.createElement("header", { className: "flex-none w-full h-16 px-2 flex border-b border-gray-200 bg-white justify-between" }, /* @__PURE__ */ React.createElement("div", { @@ -144,11 +144,11 @@ function App() { } } }, isHot ? "🔥" : " ", " toggle hot mode")), /* @__PURE__ */ React.createElement("section", { - className: "grow flex flex-col p-2 text-gray-100" + className: "grow flex flex-col text-gray-100" }, /* @__PURE__ */ React.createElement("div", { className: "grow relative" }, /* @__PURE__ */ React.createElement("div", { - className: cx("h-full bg-[#2A3236]", error ? "focus:ring-red-500" : "focus:ring-slate-800") + className: cx("h-full bg-[#2A3236]", error ? "focus:ring-red-500" : "focus:ring-slate-800") }, /* @__PURE__ */ React.createElement(CodeMirror, { value: code, readOnly: isHot, @@ -163,7 +163,7 @@ function App() { } } }), /* @__PURE__ */ React.createElement("span", { - className: "p-4 absolute bottom-0 left-0 text-xs whitespace-pre" + className: "p-4 absolute bottom-0 right-0 text-xs whitespace-pre text-right" }, !cycle.started ? `press ctrl+enter to play ` : !isHot && activePattern !== pattern ? `ctrl+enter to update ` : "no changes\n", !isHot && /* @__PURE__ */ React.createElement(React.Fragment, null, {pegjs: "mini"}[mode] || mode, " mode"), isHot && "🔥 hot mode: go to hot.js to edit pattern, then save")), error && /* @__PURE__ */ React.createElement("div", { @@ -178,7 +178,7 @@ function App() { } } }, cycle.started ? "pause" : "play"), /* @__PURE__ */ React.createElement("textarea", { - className: "grow bg-[#283237] border-0 text-xs", + className: "grow bg-[#283237] border-0 text-xs min-h-[200px]", value: log, readOnly: true, ref: logBox, diff --git a/docs/dist/tunes.js b/docs/dist/tunes.js index c9c9cfea..50e6a14b 100644 --- a/docs/dist/tunes.js +++ b/docs/dist/tunes.js @@ -171,4 +171,64 @@ export const whirlyStrudel = `mini("[e4 [b2 b3] c4]") .every(3, x => x.slow(1.5)) .fast(slowcat(1.25,1,1.5)) .every(2, _ => mini("e4 ~ e3 d4 ~"))`; -export default shapeShifted; +export const swimming = `stack( + mini( + '~', + '~', + '~', + 'A5 [F5@2 C5] [D5@2 F5] F5', + '[C5@2 F5] [F5@2 C6] A5 G5', + 'A5 [F5@2 C5] [D5@2 F5] F5', + '[C5@2 F5] [Bb5 A5 G5] F5@2', + 'A5 [F5@2 C5] [D5@2 F5] F5', + '[C5@2 F5] [F5@2 C6] A5 G5', + 'A5 [F5@2 C5] [D5@2 F5] F5', + '[C5@2 F5] [Bb5 A5 G5] F5@2', + 'A5 [F5@2 C5] A5 F5', + 'Ab5 [F5@2 Ab5] G5@2', + 'A5 [F5@2 C5] A5 F5', + 'Ab5 [F5@2 C5] C6@2', + 'A5 [F5@2 C5] [D5@2 F5] F5', + '[C5@2 F5] [Bb5 A5 G5] F5@2' + ), + mini( + '[F4,Bb4,D5] [[D4,G4,Bb4]@2 [Bb3,D4,F4]] [[G3,C4,E4]@2 [[Ab3,F4] [A3,Gb4]]] [Bb3,E4,G4]', + '[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, Bb3, Db3] [F3, Bb3, Db3]]', + '[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]', + '[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]', + '[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]', + '[~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]', + '[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]', + '[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]', + '[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]', + '[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]', + '[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]', + '[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]', + '[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]', + '[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]', + '[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]', + '[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]', + '[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]' + ), + mini( + '[G3 G3 C3 E3]', + '[F2 D2 G2 C2]', + '[F2 D2 G2 C2]', + '[F2 A2 Bb2 B2]', + '[A2 Ab2 G2 C2]', + '[F2 A2 Bb2 B2]', + '[G2 C2 F2 F2]', + '[F2 A2 Bb2 B2]', + '[A2 Ab2 G2 C2]', + '[F2 A2 Bb2 B2]', + '[G2 C2 F2 F2]', + '[Bb2 Bb2 A2 A2]', + '[Ab2 Ab2 G2 [C2 D2 E2]]', + '[Bb2 Bb2 A2 A2]', + '[Ab2 Ab2 G2 [C2 D2 E2]]', + '[F2 A2 Bb2 B2]', + '[G2 C2 F2 F2]' + ) +).slow(51); +`; +export default swimming; diff --git a/docs/global.css b/docs/global.css index dd9fb0ca..c07c0480 100644 --- a/docs/global.css +++ b/docs/global.css @@ -606,8 +606,8 @@ select { .bottom-0 { bottom: 0px; } -.left-0 { - left: 0px; +.right-0 { + right: 0px; } .right-2 { right: 0.5rem; @@ -621,15 +621,18 @@ select { .flex { display: flex; } -.h-screen { - height: 100vh; -} .h-16 { height: 4rem; } .h-full { height: 100%; } +.min-h-screen { + min-height: 100vh; +} +.min-h-\[200px\] { + min-height: 200px; +} .w-full { width: 100%; } @@ -676,18 +679,14 @@ select { --tw-border-opacity: 1; border-color: rgb(55 65 81 / var(--tw-border-opacity)); } -.bg-slate-900 { +.bg-\[\#2A3236\] { --tw-bg-opacity: 1; - background-color: rgb(15 23 42 / var(--tw-bg-opacity)); + background-color: rgb(42 50 54 / var(--tw-bg-opacity)); } .bg-white { --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity)); } -.bg-\[\#2A3236\] { - --tw-bg-opacity: 1; - background-color: rgb(42 50 54 / var(--tw-bg-opacity)); -} .bg-slate-700 { --tw-bg-opacity: 1; background-color: rgb(51 65 85 / var(--tw-bg-opacity)); @@ -696,16 +695,19 @@ select { --tw-bg-opacity: 1; background-color: rgb(40 50 55 / var(--tw-bg-opacity)); } -.p-2 { - padding: 0.5rem; -} .p-4 { padding: 1rem; } +.p-2 { + padding: 0.5rem; +} .px-2 { padding-left: 0.5rem; padding-right: 0.5rem; } +.text-right { + text-align: right; +} .text-2xl { font-size: 1.5rem; line-height: 2rem;