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", 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? 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). 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). 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. 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) 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). 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. 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)? 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? 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? 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. 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) 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) 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). 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. 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)? 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)? 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? 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)?