From c6ce763f7ca8727e0a2122994fb0fcbd3c02d5b2 Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 14:46:33 +0100 Subject: [PATCH 01/20] FIXES: Warning about jsxBracketSameLine deprecation --- .prettierrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.prettierrc b/.prettierrc index c35a73b5..8581ce3c 100644 --- a/.prettierrc +++ b/.prettierrc @@ -7,7 +7,7 @@ "jsxSingleQuote": false, "trailingComma": "all", "bracketSpacing": true, - "jsxBracketSameLine": false, + "bracketSameLine": false, "arrowParens": "always", "proseWrap": "preserve", "htmlWhitespaceSensitivity": "css", From a08ad07537002679023267f4f0f519b3d49ae956 Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 14:55:01 +0100 Subject: [PATCH 02/20] ADDS: Continuation to Csound --- website/src/pages/learn/effects.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/learn/effects.mdx b/website/src/pages/learn/effects.mdx index 7fc0a77c..12e57846 100644 --- a/website/src/pages/learn/effects.mdx +++ b/website/src/pages/learn/effects.mdx @@ -146,3 +146,5 @@ global effects use the same chain for all events of the same orbit: ## roomsize + +Next, we'll look at strudel's support for [Csound](/learn/csound). From 9ab315ac2c3448d462d70e1873bbe73fe8c7f18b Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 14:58:02 +0100 Subject: [PATCH 03/20] ADDS: Continuation to Samples --- website/src/pages/learn/mini-notation.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/learn/mini-notation.mdx b/website/src/pages/learn/mini-notation.mdx index 9d376e70..6bcca4ee 100644 --- a/website/src/pages/learn/mini-notation.mdx +++ b/website/src/pages/learn/mini-notation.mdx @@ -235,3 +235,5 @@ Starting with this one `n`, can you make a _pattern string_ that uses every sing
+ +Next: How do [Samples](/learn/samples) play into this? From 42caa9058b781f7a14e734e23ffd2711363e0ba4 Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:00:17 +0100 Subject: [PATCH 04/20] ADDS: Continuation to Synths --- website/src/pages/learn/samples.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/learn/samples.mdx b/website/src/pages/learn/samples.mdx index 4720e5fa..4e6e3cda 100644 --- a/website/src/pages/learn/samples.mdx +++ b/website/src/pages/learn/samples.mdx @@ -322,3 +322,5 @@ Sampler effects are functions that can be used to change the behaviour of sample ### speed + +After samples, let's see what [Synths](/learn/synths) afford us. From 0fd783e83fb2ba36efcdaad4f7b1201fc54d19e0 Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:03:58 +0100 Subject: [PATCH 05/20] ADDS: Continuation to Functional JavaScript API --- website/src/pages/learn/csound.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/learn/csound.mdx b/website/src/pages/learn/csound.mdx index 24f41ce5..8f854c21 100644 --- a/website/src/pages/learn/csound.mdx +++ b/website/src/pages/learn/csound.mdx @@ -150,3 +150,5 @@ In the future, the integration could be improved by passing all patterned contro This could work by a unique [channel](https://kunstmusik.github.io/icsc2022-csound-web/tutorial2-interacting-with-csound/#step-4---writing-continuous-data-channels) for each value. Channels could be read [like this](https://github.com/csound/csound/blob/master/Android/CsoundForAndroid/CsoundAndroidExamples/src/main/res/raw/multitouch_xy.csd). Also, it might make sense to have a standard library of csound instruments for strudel's effects. + +Now, let's dive into the [Functional JavaScript API](/functions/intro) From 760bdea521543054e24ddbdab0a438eb863dbb62 Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:07:03 +0100 Subject: [PATCH 06/20] ADDS: Continuation to Pattern Constructors --- website/src/pages/functions/intro.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/functions/intro.mdx b/website/src/pages/functions/intro.mdx index 6bbd26b9..14a1b3b7 100644 --- a/website/src/pages/functions/intro.mdx +++ b/website/src/pages/functions/intro.mdx @@ -71,3 +71,5 @@ You can freely mix JS patterns, mini patterns and values! For example, this patt While mini notation is almost always shorter, it only has a handful of modifiers: \* / ! @. When using JS patterns, there is a lot more you can do. + +What [Pattern Constructors](/learn/factories) does Strudel offer? From 90a90a87a50ea371e21583829b3e26508bc7ab17 Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:08:45 +0100 Subject: [PATCH 07/20] ADDS: Continuation to Time Modifiers --- website/src/pages/learn/factories.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/learn/factories.mdx b/website/src/pages/learn/factories.mdx index 86598cf2..28e051a5 100644 --- a/website/src/pages/learn/factories.mdx +++ b/website/src/pages/learn/factories.mdx @@ -64,3 +64,5 @@ As a chained function: ## run + +After Pattern Constructors, let's see what [Time Modifiers](/learn/time-modifiers) are available. From 8549d6ea8b56bfaebc40a0e965a0f1fa01fc605d Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:09:37 +0100 Subject: [PATCH 08/20] ADDS: Continuation to Control Parameters --- website/src/pages/learn/time-modifiers.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/learn/time-modifiers.mdx b/website/src/pages/learn/time-modifiers.mdx index 41e87113..8496d67c 100644 --- a/website/src/pages/learn/time-modifiers.mdx +++ b/website/src/pages/learn/time-modifiers.mdx @@ -105,3 +105,5 @@ Some of these have equivalent operators in the Mini Notation: ## ribbon + +Apart from modifying time, there are ways to [Control Parameters](functions/value-modifiers). From f50a6ce1aed202c97afd93eacd2854d138c0d396 Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:11:28 +0100 Subject: [PATCH 09/20] ADDS: Continuation to Signals --- website/src/pages/functions/value-modifiers.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/functions/value-modifiers.mdx b/website/src/pages/functions/value-modifiers.mdx index cae8c278..81874672 100644 --- a/website/src/pages/functions/value-modifiers.mdx +++ b/website/src/pages/functions/value-modifiers.mdx @@ -160,3 +160,5 @@ x(sine.range(0, 200)).y(cosine.range(0, 200)); /> Note that these params will not do anything until you give them meaning in your custom output! + +From modifying parameters we transition to the concept of [Signals](/learn/signals). From 61b0d08b5fc1a3bc3ee7048fd77de370549b443b Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:12:37 +0100 Subject: [PATCH 10/20] ADDS: Continuation to Conditional Modifiers --- website/src/pages/learn/signals.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/learn/signals.mdx b/website/src/pages/learn/signals.mdx index 79f255b0..ae64d812 100644 --- a/website/src/pages/learn/signals.mdx +++ b/website/src/pages/learn/signals.mdx @@ -106,3 +106,5 @@ These methods add random behavior to your Patterns. ## always + +Next up: [Conditional Modifiers](/learn/conditional-modifiers) From 176877f2b8c2875274309db5ed23e070e107ef06 Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:14:38 +0100 Subject: [PATCH 11/20] ADDS: Continuation to Accumulation Modifiers --- website/src/pages/learn/conditional-modifiers.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/learn/conditional-modifiers.mdx b/website/src/pages/learn/conditional-modifiers.mdx index 3a055285..2bc4b42d 100644 --- a/website/src/pages/learn/conditional-modifiers.mdx +++ b/website/src/pages/learn/conditional-modifiers.mdx @@ -59,3 +59,5 @@ import { JsDoc } from '../../docs/JsDoc'; ## invert + +After Conditional Modifiers, let's see what [Accumulation Modifiers](/learn/accumulation) have to offer. From 451828e5d44defac5899ca0c09107fc7e43cb607 Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:15:54 +0100 Subject: [PATCH 12/20] ADDS: Continuation to Tonal Modifiers --- website/src/pages/learn/accumulation.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/learn/accumulation.mdx b/website/src/pages/learn/accumulation.mdx index c442e87b..4940d791 100644 --- a/website/src/pages/learn/accumulation.mdx +++ b/website/src/pages/learn/accumulation.mdx @@ -31,3 +31,5 @@ import { JsDoc } from '../../docs/JsDoc'; ## stut + +There are also [Tonal Modifiers](/learn/tonal). From 8ffaeeb1717395b332756c5f7cb8edc9d90a5d7a Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:16:51 +0100 Subject: [PATCH 13/20] ADDS: Continuation to MIDI and OSC --- website/src/pages/learn/tonal.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/learn/tonal.mdx b/website/src/pages/learn/tonal.mdx index ccdcdcba..5932d4a9 100644 --- a/website/src/pages/learn/tonal.mdx +++ b/website/src/pages/learn/tonal.mdx @@ -70,3 +70,5 @@ Together with layer, struct and voicings, this can be used to create a basic bac x => x.rootNotes(2).note().s('sawtooth').cutoff(800) )`} /> + +So far, we've stayed within the browser. [MIDI and OSC](/learn/input-output) are ways to break out of it. From 33dbf75e3bf60b1b22a40f1f361c98ee2542f97b Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:18:32 +0100 Subject: [PATCH 14/20] ADDS: Continuation to Offline --- website/src/pages/learn/input-output.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/learn/input-output.mdx b/website/src/pages/learn/input-output.mdx index 68233159..6baad9ee 100644 --- a/website/src/pages/learn/input-output.mdx +++ b/website/src/pages/learn/input-output.mdx @@ -69,3 +69,5 @@ The following functions can be used with [SuperDirt](https://github.com/musikinf Please refer to [Tidal Docs](https://tidalcycles.org/) for more info.
+ +But can we use Strudel [offline](/learn/pwa)? From cfd04ab7fa3a3d1c18f20e81d0dfac296c7cecd5 Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:19:14 +0100 Subject: [PATCH 15/20] ADDS: Continuation to Patterns --- website/src/pages/learn/pwa.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/learn/pwa.mdx b/website/src/pages/learn/pwa.mdx index ab2c68f3..29c0843b 100644 --- a/website/src/pages/learn/pwa.mdx +++ b/website/src/pages/learn/pwa.mdx @@ -7,3 +7,5 @@ layout: ../../layouts/MainLayout.astro You can use Strudel even without a network! When you first visit the [Strudel REPL](strudel.tidalcycles.org/), your browser will download the whole web app including documentation. + +Ok, what are [Patterns](/technical-manual/patterns) all about? From 9dbf52bedba68d15738565109026240bbd7f2752 Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:20:26 +0100 Subject: [PATCH 16/20] ADDS: Continuation to Pattern Alignment --- website/src/pages/technical-manual/patterns.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/technical-manual/patterns.mdx b/website/src/pages/technical-manual/patterns.mdx index 8ea41a86..45664ad7 100644 --- a/website/src/pages/technical-manual/patterns.mdx +++ b/website/src/pages/technical-manual/patterns.mdx @@ -37,3 +37,5 @@ Each event has a value, a begin time and an end time, where time is represented Note that the query function is not just a way to access a pattern, but true to the principles of functional programming, is the pattern itself. This means that in theory there is no way to change a pattern, it is opaque as a pure function. In practice though, Strudel and Tidal are all about transforming patterns, so how is this done? The answer is, by replacing the pattern with a new one, that calls the old one. This new one is only able to manipulate the query before passing it to the old pattern, and manipulate the results from it before returning them to caller. But, this is enough to support all the temporal and structural manipulations provided by Strudel (and Tidal's) extensive library of functions. The above examples do not represent how Strudel is used in practice. In the live coding editor, the user only has to type in the pattern itself, the querying will be handled by the scheduler. The scheduler will repeatedly query the pattern for events, which are then scheduled as sound synthesis or other event triggers. + +Can we [align](/technical-manual/alignment) patterns? From 4704c03d48807032f8976858cdfecc8e1ddc35cd Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:21:25 +0100 Subject: [PATCH 17/20] ADDS: Continuation to Strudel vs Tidal --- website/src/pages/technical-manual/alignment.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/technical-manual/alignment.mdx b/website/src/pages/technical-manual/alignment.mdx index 2c2a1d15..f9ac68e4 100644 --- a/website/src/pages/technical-manual/alignment.mdx +++ b/website/src/pages/technical-manual/alignment.mdx @@ -45,3 +45,5 @@ This makes way for other ways to align the pattern, and several are already defi - `trigzero` is similar to `trig`, but the pattern is 'triggered' from its very first cycle, rather than from the current cycle. `trig` and `trigzero` therefore only give different results where the leftmost pattern differs from one cycle to the next. We will save going deeper into the background, design and practicalities of these alignment functions for future publications. However in the next section, we take them as a case study for looking at the different design affordances offered by Haskell to Tidal, and JavaScript to Strudel. + +Ok, so how do Strudel and Tidal [compare](/learn/strudel-vs-tidal)? From 9daea5bbc2d9972102b0176e0843a73bd0a6fb13 Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:22:35 +0100 Subject: [PATCH 18/20] ADDS: Continuation to REPL --- website/src/pages/learn/strudel-vs-tidal.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/learn/strudel-vs-tidal.mdx b/website/src/pages/learn/strudel-vs-tidal.mdx index 776ca759..8f67e779 100644 --- a/website/src/pages/learn/strudel-vs-tidal.mdx +++ b/website/src/pages/learn/strudel-vs-tidal.mdx @@ -144,3 +144,5 @@ You can get the same tempo as tidal with: ``` note("c a f e").fast(.5625); ``` + +Next up: the [REPL](/technical-manual/repl) From 99ec261f799b9546206ec7fbe45bf09a933c22ce Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:23:34 +0100 Subject: [PATCH 19/20] ADDS: Continuation to Docs --- website/src/pages/technical-manual/repl.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/technical-manual/repl.mdx b/website/src/pages/technical-manual/repl.mdx index 08925ab7..f8a0bcf9 100644 --- a/website/src/pages/technical-manual/repl.mdx +++ b/website/src/pages/technical-manual/repl.mdx @@ -186,3 +186,5 @@ function onTrigger(hap, deadline, duration) { ``` The above example will create an `OscillatorNode` for each event, where the frequency is controlled by the `note` param. In essence, this is how the WebAudio API output of Strudel works, only with many more parameters to control synths, samples and effects. + +I want to help, how do I contribute to the [Docs](/technical-manual/docs)? From 40e629cb0eb7d6c0326161f0f0df3d582765926c Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Thu, 16 Feb 2023 15:24:44 +0100 Subject: [PATCH 20/20] ADDS: Continuation to Testing --- website/src/pages/technical-manual/docs.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/src/pages/technical-manual/docs.mdx b/website/src/pages/technical-manual/docs.mdx index 502702af..9b4732c1 100644 --- a/website/src/pages/technical-manual/docs.mdx +++ b/website/src/pages/technical-manual/docs.mdx @@ -74,3 +74,5 @@ Documentation is written with [jsdoc](https://jsdoc.app/) comments. Example: - To regenerate the `doc.json` file manually, run `npm run jsdoc-json` - The file is used by the `JsDoc` component to find the documentation by name - Also, it is used for the `examples.test.mjs` snapshot test + +How does Strudel do its [Testing](/technical-manual/testing)?