+ In the last post, we've been filling
+ fixed length audio buffers. While this is very simple to implement, it's a
+ bit annoying when the audio is always stopping. To calculate samples
+ infinitely, we can use an AudioWorklet. Now we've arrived at a typical
+ bytebeat/floatbeat editor:
+
+
+ 💡 hit ctrl+enter to update the code & ctrl+. to stop
+
+ The AudioWorklet is the lowest abstaction we get with the Web Audio API.
+ It essentially gives us a function that fills a buffer of 128 samples over
+ and over again, also running isolated from the rest of the page. At a
+ sample rate of 44100/s, this means we fill a buffer every ~3ms
+ (44100/128).
+
- In the last post, we've been filling
- fixed length audio buffers. While this is very simple to implement, it's a
- bit annoying when the audio is always stopping. To calculate samples
- infinitely, we can use an AudioWorklet. Now we've arrived at a typical
- bytebeat/floatbeat editor:
-
-
- 💡 hit ctrl+enter to update the code & ctrl+. to stop
-
- The AudioWorklet is the lowest abstaction we get with the Web Audio API.
- It essentially gives us a function that fills a buffer of 128 samples over
- and over again, also running isolated from the rest of the page. At a
- sample rate of 44100/s, this means we fill a buffer every ~3ms
- (44100/128).
-
- To learn more about what this all means, check out the{' '}
+ {/* To learn more about what this all means, check out the{' '} */}
+ To get started, check out the
interactive tutorial
. Also feel free to join the{' '}
- tidalcycles discord channel
+ discord channel
{' '}
to ask any questions, give feedback or just say hello.
+
+- Patterns represent just values in time!
+- Suitable for any time based output (music, visuals, movement, .. ?)
+
+### Supported Outputs
+
+At the time of writing this doc, the following outputs are supported:
+
+- Web Audio API `.out()` see [/webaudio](https://github.com/tidalcycles/strudel/tree/main/packages/webaudio)
+- MIDI `.midi()` see [/midi](https://github.com/tidalcycles/strudel/tree/main/packages/midi)
+- OSC `.osc()` see [/osc](https://github.com/tidalcycles/strudel/tree/main/packages/osc)
+- Serial `.serial()` see [/serial](https://github.com/tidalcycles/strudel/tree/main/packages/serial)
+- Tone.js `.tone()` (deprecated?) [/tone](https://github.com/tidalcycles/strudel/tree/main/packages/tone)
+- WebDirt `.webdirt()` (deprecated?) [/webdirt](https://github.com/tidalcycles/strudel/tree/main/packages/webdirt)
+- Speech `.speak()` (experimental) part of [/core](https://github.com/tidalcycles/strudel/tree/main/packages/core)
+
+These could change, so make sure to check the [packages folder](https://github.com/tidalcycles/strudel/tree/main/packages).
From 5fdea7fd8002ae7454bccb88e81e1689e26f55bb Mon Sep 17 00:00:00 2001
From: Alex McLean
Date: Thu, 12 Jun 2025 14:36:45 +0100
Subject: [PATCH 44/74] github > strudel
---
packages/README.md | 2 +-
packages/codemirror/package.json | 6 +++---
packages/core/clockworker.js | 2 +-
packages/core/controls.mjs | 12 ++++++------
packages/core/cyclist.mjs | 6 +++---
packages/core/drawLine.mjs | 2 +-
packages/core/euclid.mjs | 2 +-
packages/core/evaluate.mjs | 2 +-
packages/core/fraction.mjs | 2 +-
packages/core/hap.mjs | 2 +-
packages/core/index.mjs | 2 +-
packages/core/neocyclist.mjs | 2 +-
packages/core/package.json | 4 ++--
packages/core/pattern.mjs | 2 +-
packages/core/pick.mjs | 2 +-
packages/core/repl.mjs | 2 +-
packages/core/signal.mjs | 2 +-
packages/core/speak.mjs | 2 +-
packages/core/state.mjs | 2 +-
packages/core/timespan.mjs | 2 +-
packages/core/ui.mjs | 2 +-
packages/core/util.mjs | 2 +-
packages/core/value.mjs | 4 ++--
packages/csound/package.json | 6 +++---
packages/desktopbridge/index.mjs | 2 +-
packages/desktopbridge/package.json | 6 +++---
packages/draw/draw.mjs | 2 +-
packages/draw/package.json | 6 +++---
packages/draw/pianoroll.mjs | 2 +-
packages/embed/package.json | 6 +++---
packages/gamepad/package.json | 6 +++---
packages/hs2js/package.json | 6 +++---
packages/hydra/package.json | 6 +++---
packages/midi/midi.mjs | 2 +-
packages/midi/package.json | 6 +++---
packages/mini/krill.pegjs | 2 +-
packages/mini/mini.mjs | 2 +-
packages/mini/package.json | 6 +++---
packages/motion/package.json | 6 +++---
packages/mqtt/mqtt.mjs | 2 +-
packages/mqtt/package.json | 6 +++---
packages/osc/osc.mjs | 2 +-
packages/osc/package.json | 6 +++---
packages/osc/server.js | 2 +-
packages/osc/tidal-sniffer.js | 2 +-
packages/reference/package.json | 6 +++---
packages/repl/package.json | 6 +++---
packages/serial/package.json | 6 +++---
packages/serial/serial.mjs | 2 +-
packages/soundfonts/package.json | 6 +++---
packages/superdough/index.mjs | 2 +-
packages/superdough/package.json | 6 +++---
packages/superdough/superdough.mjs | 2 +-
packages/tidal/package.json | 6 +++---
packages/tonal/package.json | 6 +++---
packages/tonal/tonal.mjs | 2 +-
packages/tonal/tonleiter.mjs | 2 +-
packages/tonal/voicings.mjs | 2 +-
packages/transpiler/package.json | 6 +++---
packages/transpiler/transpiler.mjs | 2 +-
packages/web/package.json | 6 +++---
packages/webaudio/index.mjs | 2 +-
packages/webaudio/package.json | 6 +++---
packages/webaudio/webaudio.mjs | 4 ++--
packages/xen/package.json | 6 +++---
packages/xen/tune.mjs | 2 +-
packages/xen/tunejs.js | 2 +-
packages/xen/xen.mjs | 2 +-
68 files changed, 126 insertions(+), 126 deletions(-)
diff --git a/packages/README.md b/packages/README.md
index 7a7681b67..a5b93d321 100644
--- a/packages/README.md
+++ b/packages/README.md
@@ -2,4 +2,4 @@
Each folder represents one of the @strudel/* packages [published to npm](https://www.npmjs.com/org/strudel).
-To understand how those pieces connect, refer to the [Technical Manual](https://github.com/tidalcycles/strudel/wiki/Technical-Manual) or the individual READMEs.
+To understand how those pieces connect, refer to the [Technical Manual](https://codeberg.org/uzu/strudel/src/branch/main/technical-manual.md) or the individual READMEs.
diff --git a/packages/codemirror/package.json b/packages/codemirror/package.json
index 5036cd8a3..1ffe1724c 100644
--- a/packages/codemirror/package.json
+++ b/packages/codemirror/package.json
@@ -13,7 +13,7 @@
"type": "module",
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -28,9 +28,9 @@
],
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@codemirror/autocomplete": "^6.18.4",
"@codemirror/commands": "^6.8.0",
diff --git a/packages/core/clockworker.js b/packages/core/clockworker.js
index bcaf28725..77a45362e 100644
--- a/packages/core/clockworker.js
+++ b/packages/core/clockworker.js
@@ -113,7 +113,7 @@ self.onconnect = function (e) {
port.start(); // Required when using addEventListener. Otherwise called implicitly by onmessage setter.
};
-// used to consistently schedule events, for use in a service worker - see
+// used to consistently schedule events, for use in a service worker - see
function createClock(
getTime,
callback, // called slightly before each cycle
diff --git a/packages/core/controls.mjs b/packages/core/controls.mjs
index 21c183da9..058f4536a 100644
--- a/packages/core/controls.mjs
+++ b/packages/core/controls.mjs
@@ -1,6 +1,6 @@
/*
controls.mjs - Registers audio controls for pattern manipulation and effects.
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
@@ -96,7 +96,7 @@ export const { source, src } = registerControl('source', 'src');
* @example
* s("bd sd [~ bd] sd,hh*6").n("<0 1>")
*/
-// also see https://github.com/tidalcycles/strudel/pull/63
+// also see https://codeberg.org/uzu/strudel/pulls/63
export const { n } = registerControl('n');
/**
* Plays the given note name or midi number. A note name consists of
@@ -348,7 +348,7 @@ export const { bandf, bpf, bp } = registerControl(['bandf', 'bandq', 'bpenv'], '
* s("bd sd [~ bd] sd").bpf(500).bpq("<0 1 2 3>")
*
*/
-// currently an alias of 'bandq' https://github.com/tidalcycles/strudel/issues/496
+// currently an alias of 'bandq' https://codeberg.org/uzu/strudel/issues/496
// ['bpq'],
export const { bandq, bpq } = registerControl('bandq', 'bpq');
/**
@@ -855,7 +855,7 @@ export const { fanchor } = registerControl('fanchor');
* s("bd sd [~ bd] sd,hh*8").hpf("<2000 2000:25>")
*
*/
-// currently an alias of 'hcutoff' https://github.com/tidalcycles/strudel/issues/496
+// currently an alias of 'hcutoff' https://codeberg.org/uzu/strudel/issues/496
// ['hpf'],
/**
* Applies a vibrato to the frequency of the oscillator.
@@ -922,7 +922,7 @@ export const { hresonance, hpq } = registerControl('hresonance', 'hpq');
* s("bd sd [~ bd] sd,hh*8").lpf(2000).lpq("<0 10 20 30>")
*
*/
-// currently an alias of 'resonance' https://github.com/tidalcycles/strudel/issues/496
+// currently an alias of 'resonance' https://codeberg.org/uzu/strudel/issues/496
export const { resonance, lpq } = registerControl('resonance', 'lpq');
/**
* DJ filter, below 0.5 is low pass filter, above is high pass filter.
@@ -1288,7 +1288,7 @@ export const { semitone } = registerControl('semitone');
// TODO: synth param
export const { voice } = registerControl('voice');
-// voicings // https://github.com/tidalcycles/strudel/issues/506
+// voicings // https://codeberg.org/uzu/strudel/issues/506
// chord to voice, like C Eb Fm7 G7. the symbols can be defined via addVoicings
export const { chord } = registerControl('chord');
// which dictionary to use for the voicings
diff --git a/packages/core/cyclist.mjs b/packages/core/cyclist.mjs
index bd2db1223..f28dc604c 100644
--- a/packages/core/cyclist.mjs
+++ b/packages/core/cyclist.mjs
@@ -1,6 +1,6 @@
/*
-cyclist.mjs - event scheduler for a single strudel instance. for multi-instance scheduler, see - see
-Copyright (C) 2022 Strudel contributors - see
+cyclist.mjs - event scheduler for a single strudel instance. for multi-instance scheduler, see - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
@@ -65,7 +65,7 @@ export class Cyclist {
(hap.whole.begin - this.num_cycles_at_cps_change) / this.cps + this.seconds_at_cps_change + latency;
const duration = hap.duration / this.cps;
// the following line is dumb and only here for backwards compatibility
- // see https://github.com/tidalcycles/strudel/pull/1004
+ // see https://codeberg.org/uzu/strudel/pulls/1004
const deadline = targetTime - phase;
onTrigger?.(hap, deadline, duration, this.cps, targetTime);
if (hap.value.cps !== undefined && this.cps != hap.value.cps) {
diff --git a/packages/core/drawLine.mjs b/packages/core/drawLine.mjs
index 91b86b4ab..7509c0f6f 100644
--- a/packages/core/drawLine.mjs
+++ b/packages/core/drawLine.mjs
@@ -1,6 +1,6 @@
/*
drawLine.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/euclid.mjs b/packages/core/euclid.mjs
index ad0b01486..1a5be78b4 100644
--- a/packages/core/euclid.mjs
+++ b/packages/core/euclid.mjs
@@ -2,7 +2,7 @@
euclid.mjs - Bjorklund/Euclidean/Diaspora rhythms
Copyright (C) 2023 Rohan Drape and strudel contributors
-See for authors of this file.
+See for authors of this file.
The Bjorklund algorithm implementation is ported from the Haskell Music Theory Haskell module by Rohan Drape -
https://rohandrape.net/?t=hmt
diff --git a/packages/core/evaluate.mjs b/packages/core/evaluate.mjs
index e3e73d596..0559a93a2 100644
--- a/packages/core/evaluate.mjs
+++ b/packages/core/evaluate.mjs
@@ -1,6 +1,6 @@
/*
evaluate.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/fraction.mjs b/packages/core/fraction.mjs
index dc7fe27a7..2e3bc68ea 100644
--- a/packages/core/fraction.mjs
+++ b/packages/core/fraction.mjs
@@ -1,6 +1,6 @@
/*
fraction.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/hap.mjs b/packages/core/hap.mjs
index 7a9e0a620..a6e3c55ad 100644
--- a/packages/core/hap.mjs
+++ b/packages/core/hap.mjs
@@ -1,6 +1,6 @@
/*
hap.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
import Fraction from './fraction.mjs';
diff --git a/packages/core/index.mjs b/packages/core/index.mjs
index a10b68b09..e4daf445a 100644
--- a/packages/core/index.mjs
+++ b/packages/core/index.mjs
@@ -1,6 +1,6 @@
/*
index.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/neocyclist.mjs b/packages/core/neocyclist.mjs
index ad22cf006..5c175dc1f 100644
--- a/packages/core/neocyclist.mjs
+++ b/packages/core/neocyclist.mjs
@@ -1,6 +1,6 @@
/*
neocyclist.mjs - event scheduler like cyclist, except recieves clock pulses from clockworker in order to sync across multiple instances.
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/package.json b/packages/core/package.json
index 89b047d2a..d6853c961 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -15,7 +15,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -27,7 +27,7 @@
"author": "Alex McLean (https://slab.org)",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
"homepage": "https://strudel.cc",
"dependencies": {
diff --git a/packages/core/pattern.mjs b/packages/core/pattern.mjs
index efbae1f3e..76b02c21e 100644
--- a/packages/core/pattern.mjs
+++ b/packages/core/pattern.mjs
@@ -1,6 +1,6 @@
/*
pattern.mjs - Core pattern representation for strudel
-Copyright (C) 2025 Strudel contributors - see
+Copyright (C) 2025 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/pick.mjs b/packages/core/pick.mjs
index 702201fa6..206fa619b 100644
--- a/packages/core/pick.mjs
+++ b/packages/core/pick.mjs
@@ -1,6 +1,6 @@
/*
pick.mjs - methods that use one pattern to pick events from other patterns.
-Copyright (C) 2024 Strudel contributors - see
+Copyright (C) 2024 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/repl.mjs b/packages/core/repl.mjs
index e703909ff..7a8cbbab2 100644
--- a/packages/core/repl.mjs
+++ b/packages/core/repl.mjs
@@ -225,7 +225,7 @@ export function repl({
export const getTrigger =
({ getTime, defaultOutput }) =>
async (hap, deadline, duration, cps, t) => {
- // TODO: get rid of deadline after https://github.com/tidalcycles/strudel/pull/1004
+ // TODO: get rid of deadline after https://codeberg.org/uzu/strudel/pulls/1004
try {
if (!hap.context.onTrigger || !hap.context.dominantTrigger) {
await defaultOutput(hap, deadline, duration, cps, t);
diff --git a/packages/core/signal.mjs b/packages/core/signal.mjs
index 5fd83bce3..54da989a5 100644
--- a/packages/core/signal.mjs
+++ b/packages/core/signal.mjs
@@ -1,6 +1,6 @@
/*
signal.mjs - continuous patterns
-Copyright (C) 2024 Strudel contributors - see
+Copyright (C) 2024 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/speak.mjs b/packages/core/speak.mjs
index 6ae959544..7e548a73b 100644
--- a/packages/core/speak.mjs
+++ b/packages/core/speak.mjs
@@ -1,6 +1,6 @@
/*
speak.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/state.mjs b/packages/core/state.mjs
index db1f77eff..162dc7da9 100644
--- a/packages/core/state.mjs
+++ b/packages/core/state.mjs
@@ -1,6 +1,6 @@
/*
state.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/timespan.mjs b/packages/core/timespan.mjs
index 4cbfb999a..0dbc74fc8 100644
--- a/packages/core/timespan.mjs
+++ b/packages/core/timespan.mjs
@@ -1,6 +1,6 @@
/*
timespan.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/ui.mjs b/packages/core/ui.mjs
index 86ceb2863..5a2c54a30 100644
--- a/packages/core/ui.mjs
+++ b/packages/core/ui.mjs
@@ -1,6 +1,6 @@
/*
ui.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/util.mjs b/packages/core/util.mjs
index b7b1e8413..b81811bae 100644
--- a/packages/core/util.mjs
+++ b/packages/core/util.mjs
@@ -1,6 +1,6 @@
/*
util.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/value.mjs b/packages/core/value.mjs
index ef98bc370..9496405eb 100644
--- a/packages/core/value.mjs
+++ b/packages/core/value.mjs
@@ -1,6 +1,6 @@
/*
value.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
@@ -9,7 +9,7 @@ import { logger } from './logger.mjs';
export function unionWithObj(a, b, func) {
if (b?.value !== undefined && Object.keys(b).length === 1) {
- // https://github.com/tidalcycles/strudel/issues/1026
+ // https://codeberg.org/uzu/strudel/issues/1026
logger(`[warn]: Can't do arithmetic on control pattern.`);
return a;
}
diff --git a/packages/csound/package.json b/packages/csound/package.json
index f200cdaf4..837a397f9 100644
--- a/packages/csound/package.json
+++ b/packages/csound/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -28,9 +28,9 @@
],
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@csound/browser": "6.18.7",
"@strudel/core": "workspace:*",
diff --git a/packages/desktopbridge/index.mjs b/packages/desktopbridge/index.mjs
index 591bbe34f..ffb88783f 100644
--- a/packages/desktopbridge/index.mjs
+++ b/packages/desktopbridge/index.mjs
@@ -1,6 +1,6 @@
/*
index.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/desktopbridge/package.json b/packages/desktopbridge/package.json
index 45e89f44e..6609016e0 100644
--- a/packages/desktopbridge/package.json
+++ b/packages/desktopbridge/package.json
@@ -7,7 +7,7 @@
"type": "module",
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -19,11 +19,11 @@
"author": "Jade Rowland ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
"dependencies": {
"@strudel/core": "workspace:*",
"@tauri-apps/api": "^2.2.0"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme"
+ "homepage": "https://codeberg.org/uzu/strudel#readme"
}
\ No newline at end of file
diff --git a/packages/draw/draw.mjs b/packages/draw/draw.mjs
index 0576c297b..c727c1d81 100644
--- a/packages/draw/draw.mjs
+++ b/packages/draw/draw.mjs
@@ -1,6 +1,6 @@
/*
draw.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/draw/package.json b/packages/draw/package.json
index 51750da2b..f2555a5c4 100644
--- a/packages/draw/package.json
+++ b/packages/draw/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"titdalcycles",
@@ -25,9 +25,9 @@
"author": "Felix Roos ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*"
},
diff --git a/packages/draw/pianoroll.mjs b/packages/draw/pianoroll.mjs
index d874c9686..1cf218fa0 100644
--- a/packages/draw/pianoroll.mjs
+++ b/packages/draw/pianoroll.mjs
@@ -1,6 +1,6 @@
/*
pianoroll.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/embed/package.json b/packages/embed/package.json
index afd887887..3b88acc62 100644
--- a/packages/embed/package.json
+++ b/packages/embed/package.json
@@ -6,7 +6,7 @@
"type": "module",
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -18,7 +18,7 @@
"author": "Felix Roos ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme"
+ "homepage": "https://codeberg.org/uzu/strudel#readme"
}
diff --git a/packages/gamepad/package.json b/packages/gamepad/package.json
index 8b91a15e9..25b4a87b5 100644
--- a/packages/gamepad/package.json
+++ b/packages/gamepad/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"titdalcycles",
@@ -25,9 +25,9 @@
"author": "Yuta Nakayama ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*"
},
diff --git a/packages/hs2js/package.json b/packages/hs2js/package.json
index c650dfc83..3b93a3ede 100644
--- a/packages/hs2js/package.json
+++ b/packages/hs2js/package.json
@@ -16,7 +16,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"haskell",
@@ -25,9 +25,9 @@
"author": "Felix Roos ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel",
+ "homepage": "https://codeberg.org/uzu/strudel/",
"dependencies": {
"web-tree-sitter": "^0.24.7"
},
diff --git a/packages/hydra/package.json b/packages/hydra/package.json
index 4375ebefc..c1294eb00 100644
--- a/packages/hydra/package.json
+++ b/packages/hydra/package.json
@@ -17,7 +17,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -29,9 +29,9 @@
"author": "Felix Roos ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*",
"@strudel/draw": "workspace:*",
diff --git a/packages/midi/midi.mjs b/packages/midi/midi.mjs
index ce7cdb0e2..af2dd3a62 100644
--- a/packages/midi/midi.mjs
+++ b/packages/midi/midi.mjs
@@ -1,6 +1,6 @@
/*
midi.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/midi/package.json b/packages/midi/package.json
index 2956b99f3..513dbe197 100644
--- a/packages/midi/package.json
+++ b/packages/midi/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"titdalcycles",
@@ -25,9 +25,9 @@
"author": "Felix Roos ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*",
"@strudel/webaudio": "workspace:*",
diff --git a/packages/mini/krill.pegjs b/packages/mini/krill.pegjs
index a593b4167..8af82caee 100644
--- a/packages/mini/krill.pegjs
+++ b/packages/mini/krill.pegjs
@@ -1,6 +1,6 @@
/*
krill.pegjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/mini/mini.mjs b/packages/mini/mini.mjs
index 6277daa91..d138d9fa0 100644
--- a/packages/mini/mini.mjs
+++ b/packages/mini/mini.mjs
@@ -1,6 +1,6 @@
/*
mini.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/mini/package.json b/packages/mini/package.json
index 5ae0dc242..9c96292d7 100644
--- a/packages/mini/package.json
+++ b/packages/mini/package.json
@@ -16,7 +16,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -28,9 +28,9 @@
"author": "Felix Roos ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*"
},
diff --git a/packages/motion/package.json b/packages/motion/package.json
index 850a75bd1..1fa87d878 100644
--- a/packages/motion/package.json
+++ b/packages/motion/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"titdalcycles",
@@ -25,9 +25,9 @@
"author": "Yuta Nakayama ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*"
},
diff --git a/packages/mqtt/mqtt.mjs b/packages/mqtt/mqtt.mjs
index c2322600c..aef01bd93 100644
--- a/packages/mqtt/mqtt.mjs
+++ b/packages/mqtt/mqtt.mjs
@@ -1,6 +1,6 @@
/*
mqtt.mjs - for patterning the internet of things from strudel
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/mqtt/package.json b/packages/mqtt/package.json
index 9b9cdaa3b..0eba694c3 100644
--- a/packages/mqtt/package.json
+++ b/packages/mqtt/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"titdalcycles",
@@ -25,9 +25,9 @@
"author": "Alex McLean ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*",
"paho-mqtt": "^1.1.0"
diff --git a/packages/osc/osc.mjs b/packages/osc/osc.mjs
index 3c7b92d4e..ac70b9e73 100644
--- a/packages/osc/osc.mjs
+++ b/packages/osc/osc.mjs
@@ -1,6 +1,6 @@
/*
osc.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/osc/package.json b/packages/osc/package.json
index 7e87c1e1a..62b00090a 100644
--- a/packages/osc/package.json
+++ b/packages/osc/package.json
@@ -17,7 +17,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -32,9 +32,9 @@
],
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*",
"osc-js": "^2.4.1"
diff --git a/packages/osc/server.js b/packages/osc/server.js
index 7e0b90592..75fc5b1c0 100644
--- a/packages/osc/server.js
+++ b/packages/osc/server.js
@@ -1,6 +1,6 @@
/*
server.js -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/osc/tidal-sniffer.js b/packages/osc/tidal-sniffer.js
index 10bf0ad05..95e1fc329 100644
--- a/packages/osc/tidal-sniffer.js
+++ b/packages/osc/tidal-sniffer.js
@@ -1,6 +1,6 @@
/*
tidal-sniffer.js -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/reference/package.json b/packages/reference/package.json
index fd7edadff..289520ddd 100644
--- a/packages/reference/package.json
+++ b/packages/reference/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -28,9 +28,9 @@
],
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"devDependencies": {
"vite": "^6.0.11"
}
diff --git a/packages/repl/package.json b/packages/repl/package.json
index 5487ce443..1c10aebf7 100644
--- a/packages/repl/package.json
+++ b/packages/repl/package.json
@@ -14,7 +14,7 @@
"type": "module",
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -29,9 +29,9 @@
],
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/codemirror": "workspace:*",
"@strudel/core": "workspace:*",
diff --git a/packages/serial/package.json b/packages/serial/package.json
index bf6e0dcab..df671cb1a 100644
--- a/packages/serial/package.json
+++ b/packages/serial/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"titdalcycles",
@@ -25,9 +25,9 @@
"author": "Alex McLean ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*"
},
diff --git a/packages/serial/serial.mjs b/packages/serial/serial.mjs
index e0eeacedd..692109522 100644
--- a/packages/serial/serial.mjs
+++ b/packages/serial/serial.mjs
@@ -1,6 +1,6 @@
/*
serial.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/soundfonts/package.json b/packages/soundfonts/package.json
index bf4fa2960..d227359c7 100644
--- a/packages/soundfonts/package.json
+++ b/packages/soundfonts/package.json
@@ -13,7 +13,7 @@
"type": "module",
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -25,9 +25,9 @@
"author": "Felix Roos ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*",
"@strudel/webaudio": "workspace:*",
diff --git a/packages/superdough/index.mjs b/packages/superdough/index.mjs
index 3247c5b49..fd49fe338 100644
--- a/packages/superdough/index.mjs
+++ b/packages/superdough/index.mjs
@@ -1,6 +1,6 @@
/*
index.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/superdough/package.json b/packages/superdough/package.json
index a835f252d..8fc3cca78 100644
--- a/packages/superdough/package.json
+++ b/packages/superdough/package.json
@@ -16,7 +16,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -28,9 +28,9 @@
"author": "Felix Roos ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"devDependencies": {
"vite": "^6.0.11",
"vite-plugin-bundle-audioworklet": "workspace:*"
diff --git a/packages/superdough/superdough.mjs b/packages/superdough/superdough.mjs
index 1069d4e84..819cdeb37 100644
--- a/packages/superdough/superdough.mjs
+++ b/packages/superdough/superdough.mjs
@@ -1,6 +1,6 @@
/*
superdough.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/tidal/package.json b/packages/tidal/package.json
index 8e4871617..960b09001 100644
--- a/packages/tidal/package.json
+++ b/packages/tidal/package.json
@@ -6,7 +6,7 @@
"module": "tidal.mjs",
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel/tree/main/packages/tidal"
+ "url": "git+https://codeberg.org/uzu/strudel/src/branch/main/packages/tidal"
},
"keywords": [
"haskell",
@@ -15,9 +15,9 @@
"author": "Felix Roos ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel/tree/main/packages/hs2js",
+ "homepage": "https://codeberg.org/uzu/strudel/src/branch/main/packages/hs2js",
"dependencies": {
"@strudel/core": "workspace:*",
"@strudel/mini": "workspace:*",
diff --git a/packages/tonal/package.json b/packages/tonal/package.json
index 89f02b301..98b2a5325 100644
--- a/packages/tonal/package.json
+++ b/packages/tonal/package.json
@@ -14,7 +14,7 @@
"type": "module",
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -26,9 +26,9 @@
"author": "Felix Roos ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*",
"@tonaljs/tonal": "^4.10.0",
diff --git a/packages/tonal/tonal.mjs b/packages/tonal/tonal.mjs
index 78183d228..4fd622158 100644
--- a/packages/tonal/tonal.mjs
+++ b/packages/tonal/tonal.mjs
@@ -1,6 +1,6 @@
/*
tonal.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/tonal/tonleiter.mjs b/packages/tonal/tonleiter.mjs
index 15288fcc8..3814394f6 100644
--- a/packages/tonal/tonleiter.mjs
+++ b/packages/tonal/tonleiter.mjs
@@ -178,7 +178,7 @@ export function renderVoicing({ chord, dictionary, offset = 0, n, mode = 'below'
return notes;
}
-// https://github.com/tidalcycles/strudel/blob/14184993d0ee7d69c47df57ac864a1a0f99a893f/packages/tonal/tonleiter.mjs
+// https://codeberg.org/uzu/strudel/blob/14184993d0ee7d69c47df57ac864a1a0f99a893f/packages/tonal/tonleiter.mjs
const steps = [1, 0, 2, 0, 3, 4, 0, 5, 0, 6, 0, 7];
const notes = ['C', '', 'D', '', 'E', 'F', '', 'G', '', 'A', '', 'B'];
const noteLetters = ['C', 'D', 'E', 'F', 'G', 'A', 'B'];
diff --git a/packages/tonal/voicings.mjs b/packages/tonal/voicings.mjs
index 0a08575db..d81911e01 100644
--- a/packages/tonal/voicings.mjs
+++ b/packages/tonal/voicings.mjs
@@ -1,6 +1,6 @@
/*
voicings.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/transpiler/package.json b/packages/transpiler/package.json
index 93648bbc7..1a20a78f8 100644
--- a/packages/transpiler/package.json
+++ b/packages/transpiler/package.json
@@ -14,7 +14,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -26,9 +26,9 @@
"author": "Felix Roos ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*",
"@strudel/mini": "workspace:*",
diff --git a/packages/transpiler/transpiler.mjs b/packages/transpiler/transpiler.mjs
index 2e566305f..2f5ed5309 100644
--- a/packages/transpiler/transpiler.mjs
+++ b/packages/transpiler/transpiler.mjs
@@ -194,7 +194,7 @@ function isLabelStatement(node) {
}
// converts label expressions to p calls: "x: y" to "y.p('x')"
-// see https://github.com/tidalcycles/strudel/issues/990
+// see https://codeberg.org/uzu/strudel/issues/990
function labelToP(node) {
return {
type: 'ExpressionStatement',
diff --git a/packages/web/package.json b/packages/web/package.json
index 652496fee..6264849eb 100644
--- a/packages/web/package.json
+++ b/packages/web/package.json
@@ -14,7 +14,7 @@
"type": "module",
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -29,9 +29,9 @@
],
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*",
"@strudel/mini": "workspace:*",
diff --git a/packages/webaudio/index.mjs b/packages/webaudio/index.mjs
index 59672b617..362e61c44 100644
--- a/packages/webaudio/index.mjs
+++ b/packages/webaudio/index.mjs
@@ -1,6 +1,6 @@
/*
index.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/webaudio/package.json b/packages/webaudio/package.json
index 5714fddf3..f984d5321 100644
--- a/packages/webaudio/package.json
+++ b/packages/webaudio/package.json
@@ -17,7 +17,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -29,9 +29,9 @@
"author": "Felix Roos ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*",
"@strudel/draw": "workspace:*",
diff --git a/packages/webaudio/webaudio.mjs b/packages/webaudio/webaudio.mjs
index 44a683480..f80f114fd 100644
--- a/packages/webaudio/webaudio.mjs
+++ b/packages/webaudio/webaudio.mjs
@@ -1,6 +1,6 @@
/*
webaudio.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
@@ -16,7 +16,7 @@ const hap2value = (hap) => {
};
export const webaudioOutputTrigger = (t, hap, ct, cps) => superdough(hap2value(hap), t - ct, hap.duration / cps, cps);
-// uses more precise, absolute t if available, see https://github.com/tidalcycles/strudel/pull/1004
+// uses more precise, absolute t if available, see https://codeberg.org/uzu/strudel/pulls/1004
export const webaudioOutput = (hap, deadline, hapDuration, cps, t) =>
superdough(hap2value(hap), t ? `=${t}` : deadline, hapDuration);
diff --git a/packages/xen/package.json b/packages/xen/package.json
index 76fecf525..b79aea6e6 100644
--- a/packages/xen/package.json
+++ b/packages/xen/package.json
@@ -14,7 +14,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -26,9 +26,9 @@
"author": "Felix Roos ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/core": "workspace:*"
},
diff --git a/packages/xen/tune.mjs b/packages/xen/tune.mjs
index feed38f4f..01303bf52 100644
--- a/packages/xen/tune.mjs
+++ b/packages/xen/tune.mjs
@@ -1,6 +1,6 @@
/*
tune.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/xen/tunejs.js b/packages/xen/tunejs.js
index 7b1a804a0..6b5e7cb7c 100644
--- a/packages/xen/tunejs.js
+++ b/packages/xen/tunejs.js
@@ -1,6 +1,6 @@
/*
tunejs.js -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/xen/xen.mjs b/packages/xen/xen.mjs
index 4077632a5..cc96f4110 100644
--- a/packages/xen/xen.mjs
+++ b/packages/xen/xen.mjs
@@ -1,6 +1,6 @@
/*
xen.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
From 307e5ea2d7536dcef26b2e7d453b797bd0f78e87 Mon Sep 17 00:00:00 2001
From: Alex McLean
Date: Thu, 12 Jun 2025 14:45:35 +0100
Subject: [PATCH 45/74] less github
---
package.json | 4 ++--
technical.manual.md | 24 ++++++++++++------------
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/package.json b/package.json
index 01c3e7d5d..be3e1f1c8 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"tidalcycles",
@@ -43,7 +43,7 @@
"author": "Alex McLean (https://slab.org)",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
"homepage": "https://strudel.cc",
"dependencies": {
diff --git a/technical.manual.md b/technical.manual.md
index 73180b145..9b09c741d 100644
--- a/technical.manual.md
+++ b/technical.manual.md
@@ -7,13 +7,13 @@ There are different packages for different purposes. They..
- split up the code into smaller chunks
- can be selectively used to implement some sort of time based system
-Please refer to the individual README files in the [packages folder](https://github.com/tidalcycles/strudel/tree/main/packages)
+Please refer to the individual README files in the [packages folder](https://codeberg.org/uzu/strudel/src/branch/main/packages)
## REPL
The [REPL](https://strudel.tidalcycles.org/) is the place where all packages come together to form a live coding system. It can also be seen as a reference implementation for users of the library.
-More info in the [REPL README](https://github.com/tidalcycles/strudel/tree/main/repl)
+More info in the [REPL README](https://codeberg.org/uzu/strudel/src/branch/main/packages/repl/README.md)
# High Level Overview
@@ -21,7 +21,7 @@ More info in the [REPL README](https://github.com/tidalcycles/strudel/tree/main/
## 1. End User Code
-The End User Code is written in JavaScript with added syntax sugar. The [eval package](https://github.com/tidalcycles/strudel/tree/main/packages/eval#strudelcycleseval) evaluates the user code
+The End User Code is written in JavaScript with added syntax sugar. The [eval package](https://codeberg.org/uzu/strudel/src/branch/main/packages/eval#strudelcycleseval) evaluates the user code
after a transpilation step, which resolves the syntax sugar. If you don't want the syntax sugar, you can omit the eval package and call the native javascript `eval` instead.
### 🍭 Syntax Sugar
@@ -60,7 +60,7 @@ Shift will most likely be replaced with acorn in the future, see https://github.
Another important part of the user code is the mini notation, which allows to express rhythms in a short manner.
-- the mini notation is [implemented as a PEG grammar](https://github.com/tidalcycles/strudel/blob/main/packages/mini/krill.pegjs), living in the [mini package](https://github.com/tidalcycles/strudel/tree/main/packages/mini)
+- the mini notation is [implemented as a PEG grammar](https://codeberg.org/uzu/strudel/src/branch/main/packages/mini/krill.pegjs), living in the [mini package](https://codeberg.org/uzu/strudel/src/branch/main/packages/mini)
- it is based on [krill](https://github.com/Mdashdotdashn/krill) by Mdashdotdashn
- the peg grammar is used to generate a parser with [peggyjs](https://peggyjs.org/)
- the generated parser takes a mini notation string and outputs an AST
@@ -182,12 +182,12 @@ Here is an example Hap value with different properties:
At the time of writing this doc, the following outputs are supported:
-- Web Audio API `.out()` see [/webaudio](https://github.com/tidalcycles/strudel/tree/main/packages/webaudio)
-- MIDI `.midi()` see [/midi](https://github.com/tidalcycles/strudel/tree/main/packages/midi)
-- OSC `.osc()` see [/osc](https://github.com/tidalcycles/strudel/tree/main/packages/osc)
-- Serial `.serial()` see [/serial](https://github.com/tidalcycles/strudel/tree/main/packages/serial)
-- Tone.js `.tone()` (deprecated?) [/tone](https://github.com/tidalcycles/strudel/tree/main/packages/tone)
-- WebDirt `.webdirt()` (deprecated?) [/webdirt](https://github.com/tidalcycles/strudel/tree/main/packages/webdirt)
-- Speech `.speak()` (experimental) part of [/core](https://github.com/tidalcycles/strudel/tree/main/packages/core)
+- Web Audio API `.out()` see [/webaudio](https://codeberg.org/uzu/strudel/src/branch/main/packages/webaudio)
+- MIDI `.midi()` see [/midi](https://codeberg.org/uzu/strudel/src/branch/main/packages/midi)
+- OSC `.osc()` see [/osc](https://codeberg.org/uzu/strudel/src/branch/main/packages/osc)
+- Serial `.serial()` see [/serial](https://codeberg.org/uzu/strudel/src/branch/main/packages/serial)
+- Tone.js `.tone()` (deprecated?) [/tone](https://codeberg.org/uzu/strudel/src/branch/main/packages/tone)
+- WebDirt `.webdirt()` (deprecated?) [/webdirt](https://codeberg.org/uzu/strudel/src/branch/main/packages/webdirt)
+- Speech `.speak()` (experimental) part of [/core](https://codeberg.org/uzu/strudel/src/branch/main/packages/core)
-These could change, so make sure to check the [packages folder](https://github.com/tidalcycles/strudel/tree/main/packages).
+These could change, so make sure to check the [packages folder](https://codeberg.org/uzu/strudel/src/branch/main/packages).
From c0ae12f32f49b3386bd3e07d8ffc754545df84bd Mon Sep 17 00:00:00 2001
From: alex
Date: Thu, 12 Jun 2025 17:26:19 +0100
Subject: [PATCH 46/74] add codeberg repo update command
---
CONTRIBUTING.md | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 618830b9c..aa84cbce7 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -6,6 +6,13 @@ Thanks for wanting to contribute!!! There are many ways you can add value to thi
We are currently in the process of moving from github to codeberg -- not everything is working, please bear with us.
+To update your local clone, you can run this command:
+
+```
+git remote set-url origin git@codeberg.org:uzu/strudel.git
+```
+
+
## Communication Channels
To get in touch with the contributors, either
From 990f1c6ece10f61dca48d23b81d95c755bf99d54 Mon Sep 17 00:00:00 2001
From: alex
Date: Thu, 12 Jun 2025 17:29:29 +0100
Subject: [PATCH 47/74] degithub
---
README.md | 2 +-
technical.manual.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 12ee85035..e225d9bde 100644
--- a/README.md
+++ b/README.md
@@ -39,7 +39,7 @@ Licensing info for the default sound banks can be found over on the [dough-sampl
There are many ways to contribute to this project! See [contribution guide](./CONTRIBUTING.md).
-
+
diff --git a/technical.manual.md b/technical.manual.md
index 9b09c741d..58f7cd934 100644
--- a/technical.manual.md
+++ b/technical.manual.md
@@ -54,7 +54,7 @@ This is how it works:
- The AST is transformed to resolve the syntax sugar
- The AST is used to generate code again (shift-codegen)
-Shift will most likely be replaced with acorn in the future, see https://github.com/tidalcycles/strudel/issues/174
+Shift will most likely be replaced with acorn in the future, see https://codeberg.org/uzu/strudel/issues/174
### Mini Notation
From a3d9d68c45fb0ccbf883acfff68b15bcbb235b7b Mon Sep 17 00:00:00 2001
From: alex
Date: Thu, 12 Jun 2025 18:00:39 +0100
Subject: [PATCH 48/74] less github
---
examples/tidal-repl/package.json | 6 +++---
jsdoc/jsdoc-synonyms.js | 2 +-
my-patterns/README.md | 22 +++++++++-------------
packages/core/test/value.test.mjs | 2 +-
packages/hs2js/README.md | 2 +-
website/agpl-header.txt | 4 ++--
website/src/config.ts | 2 +-
website/src/user_pattern_utils.mjs | 2 +-
8 files changed, 19 insertions(+), 23 deletions(-)
diff --git a/examples/tidal-repl/package.json b/examples/tidal-repl/package.json
index 4da2f086b..7c1f55c38 100644
--- a/examples/tidal-repl/package.json
+++ b/examples/tidal-repl/package.json
@@ -11,7 +11,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/tidalcycles/strudel.git"
+ "url": "git+https://codeberg.org/uzu/strudel.git
},
"keywords": [
"titdalcycles",
@@ -23,9 +23,9 @@
"author": "Felix Roos ",
"license": "AGPL-3.0-or-later",
"bugs": {
- "url": "https://github.com/tidalcycles/strudel/issues"
+ "url": "https://codeberg.org/uzu/strudel/issues"
},
- "homepage": "https://github.com/tidalcycles/strudel#readme",
+ "homepage": "https://codeberg.org/uzu/strudel#readme",
"dependencies": {
"@strudel/web": "workspace:*",
"hs2js": "workspace:*"
diff --git a/jsdoc/jsdoc-synonyms.js b/jsdoc/jsdoc-synonyms.js
index 09190846f..0b52420bc 100644
--- a/jsdoc/jsdoc-synonyms.js
+++ b/jsdoc/jsdoc-synonyms.js
@@ -1,6 +1,6 @@
/*
jsdoc-synonyms.js - Add support for @synonym tag
-Copyright (C) 2023 Strudel contributors - see
+Copyright (C) 2023 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/my-patterns/README.md b/my-patterns/README.md
index c8d694ea8..5283ad81b 100644
--- a/my-patterns/README.md
+++ b/my-patterns/README.md
@@ -5,22 +5,24 @@ made into a pattern swatch.
Example:
+Please note: These instructions have not been fully tested/adapted since strudel moved to codeberg from github. PRs welcome!
+
## deploy
-### 1. fork the [strudel repo on github](https://github.com/tidalcycles/strudel.git)
+### 1. fork the [strudel repo on codeberg](https://codeberg.org/uzu/strudel.git)
-### 2. clone your fork to your machine `git clone https://github.com//strudel.git strudel && cd strudel`
+### 2. clone your fork to your machine `git clone https://codeberg.org//strudel.git strudel && cd strudel`
### 3. create a separate branch like `git branch patternuary && git checkout patternuary`
### 4. save one or more .txt files in the my-patterns folder
-### 5. edit `website/public/CNAME` to contain `.github.io/strudel`
+### 5. edit `website/public/CNAME` to contain `.codeberg.page/strudel`
-### 6. edit `website/astro.config.mjs` to use site: `https://.github.io` and base `/strudel`, like this
+### 6. edit `website/astro.config.mjs` to use site: `https://.codeberg.page` and base `/strudel`, like this
```js
-const site = 'https://.github.io';
+const site = 'https://.codeberg.page';
const base = '/strudel';
```
@@ -30,15 +32,9 @@ const base = '/strudel';
git add . && git commit -m "site config" && git push --set-upstream origin
```
-### 8. deploy to github pages
+### 8. deploy to codeberg pages
-- go to settings -> pages and select "Github Actions" as source
-- go to settings -> environments -> github-pages and press the edit button next to `main` and type in `patternuary` (under "Deployment branches")
-- go to Actions -> `Build and Deploy` and click `Run workflow` with branch `patternuary`
-
-### 9. view your patterns at `.github.io/strudel/swatch/`
-
-Alternatively, github pages allows you to use a custom domain, like https://mycooldomain.org/swatch/. [See their documentation for details](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site).
+### 9. view your patterns at `.codeberg.page/strudel/swatch/`
### 10. optional: automatic deployment
diff --git a/packages/core/test/value.test.mjs b/packages/core/test/value.test.mjs
index 87cba57d0..35d9f5e10 100644
--- a/packages/core/test/value.test.mjs
+++ b/packages/core/test/value.test.mjs
@@ -1,6 +1,6 @@
/*
value.test.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2025 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/hs2js/README.md b/packages/hs2js/README.md
index 24d9c7749..f84f9cded 100644
--- a/packages/hs2js/README.md
+++ b/packages/hs2js/README.md
@@ -2,7 +2,7 @@
Experimental haskell in javascript interpreter. Many haskell features are not implemented.
This projects mainly exists to be able to write and interpret [Tidal Cycles](https://tidalcycles.org/) code in the browser,
-as part of [Strudel](https://github.com/tidalcycles/strudel). This project could only exist thanks to [tree-sitter-haskell](https://github.com/tree-sitter/tree-sitter-haskell).
+as part of [Strudel](https://codeberg.org/uzu/strudel). This project could only exist thanks to [tree-sitter-haskell](https://github.com/tree-sitter/tree-sitter-haskell).
## Installation
diff --git a/website/agpl-header.txt b/website/agpl-header.txt
index 6fd0c0fc9..8b7b6d631 100644
--- a/website/agpl-header.txt
+++ b/website/agpl-header.txt
@@ -1,10 +1,10 @@
/*
Strudel - javascript-based environment for live coding algorithmic (musical) patterns
-https://strudel.cc / https://github.com/tidalcycles/strudel/
+https://strudel.cc / https://codeberg.org/uzu/strudel/
Copyright (C) Strudel contributors
-https://github.com/tidalcycles/strudel/graphs/contributors
+https://codeberg.org/uzu/strudel/activity/contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
diff --git a/website/src/config.ts b/website/src/config.ts
index e88b7f3e1..490a067b2 100644
--- a/website/src/config.ts
+++ b/website/src/config.ts
@@ -28,7 +28,7 @@ export const KNOWN_LANGUAGES = {
} as const;
export const KNOWN_LANGUAGE_CODES = Object.values(KNOWN_LANGUAGES);
-export const GITHUB_EDIT_URL = `https://github.com/tidalcycles/strudel/tree/main/website`;
+export const GITHUB_EDIT_URL = `https://codeberg.org/uzu/strudel/src/branch/main/website`;
export const COMMUNITY_INVITE_URL = `https://discord.com/invite/HGEdXmRkzT`;
diff --git a/website/src/user_pattern_utils.mjs b/website/src/user_pattern_utils.mjs
index 18442cb4c..791c6a8f9 100644
--- a/website/src/user_pattern_utils.mjs
+++ b/website/src/user_pattern_utils.mjs
@@ -96,7 +96,7 @@ export async function loadDBPatterns() {
}
}
-// reason: https://github.com/tidalcycles/strudel/issues/857
+// reason: https://codeberg.org/uzu/strudel/issues/857
const $activePattern = sessionAtom('activePattern', '');
export function setActivePattern(key) {
From fec38bd5d2d0f0a0162bbc08325cecf6fcc84d31 Mon Sep 17 00:00:00 2001
From: yaxu
Date: Fri, 13 Jun 2025 00:07:24 +0200
Subject: [PATCH 49/74] Update .github/workflows/test.yml
---
.github/workflows/test.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 180f87521..6f2246790 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -4,7 +4,7 @@ on: [push, pull_request]
jobs:
build:
- runs-on: ubuntu-latest
+ runs-on: toplap-runner
strategy:
matrix:
node-version: [20]
From 1141b1803b92469ef87a7be3022c7cf7a321599d Mon Sep 17 00:00:00 2001
From: yaxu
Date: Fri, 13 Jun 2025 00:08:39 +0200
Subject: [PATCH 50/74] Update .github/workflows/test.yml
---
.github/workflows/test.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 6f2246790..180f87521 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -4,7 +4,7 @@ on: [push, pull_request]
jobs:
build:
- runs-on: toplap-runner
+ runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20]
From 8c8e91417079fd90629d7067d21e19697d53fe3c Mon Sep 17 00:00:00 2001
From: yaxu
Date: Fri, 13 Jun 2025 08:53:53 +0200
Subject: [PATCH 51/74] Update .github/workflows/test.yml
---
.github/workflows/test.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 180f87521..498cd800b 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -4,7 +4,7 @@ on: [push, pull_request]
jobs:
build:
- runs-on: ubuntu-latest
+ runs-on: docker
strategy:
matrix:
node-version: [20]
From 062201d1dce00779f400236abd38724843571f1d Mon Sep 17 00:00:00 2001
From: alex
Date: Fri, 13 Jun 2025 08:07:35 +0100
Subject: [PATCH 52/74] fix json
---
package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index be3e1f1c8..d18291eb2 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
@@ -74,4 +74,4 @@
"vitest": "^3.0.4",
"vite-plugin-bundle-audioworklet": "workspace:*"
}
-}
+}
\ No newline at end of file
From dcac254790eafe8a35155da2c77595ea2ddc0b09 Mon Sep 17 00:00:00 2001
From: alex
Date: Fri, 13 Jun 2025 08:17:55 +0100
Subject: [PATCH 53/74] missing double quotes
---
examples/tidal-repl/package.json | 2 +-
packages/codemirror/package.json | 2 +-
packages/core/package.json | 2 +-
packages/csound/package.json | 2 +-
packages/desktopbridge/package.json | 4 ++--
packages/draw/package.json | 2 +-
packages/embed/package.json | 2 +-
packages/gamepad/package.json | 2 +-
packages/hs2js/package.json | 2 +-
packages/hydra/package.json | 2 +-
packages/midi/package.json | 2 +-
packages/mini/package.json | 2 +-
packages/motion/package.json | 2 +-
packages/mqtt/package.json | 2 +-
packages/osc/package.json | 2 +-
packages/reference/package.json | 2 +-
packages/repl/package.json | 2 +-
packages/serial/package.json | 2 +-
packages/soundfonts/package.json | 2 +-
packages/superdough/package.json | 2 +-
packages/tonal/package.json | 2 +-
packages/transpiler/package.json | 2 +-
packages/web/package.json | 2 +-
packages/webaudio/package.json | 2 +-
packages/xen/package.json | 2 +-
25 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/examples/tidal-repl/package.json b/examples/tidal-repl/package.json
index 7c1f55c38..21c8ee177 100644
--- a/examples/tidal-repl/package.json
+++ b/examples/tidal-repl/package.json
@@ -11,7 +11,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"titdalcycles",
diff --git a/packages/codemirror/package.json b/packages/codemirror/package.json
index 1ffe1724c..4f8508c90 100644
--- a/packages/codemirror/package.json
+++ b/packages/codemirror/package.json
@@ -13,7 +13,7 @@
"type": "module",
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/core/package.json b/packages/core/package.json
index d6853c961..f4170f2b5 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -15,7 +15,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/csound/package.json b/packages/csound/package.json
index 837a397f9..04a5ff246 100644
--- a/packages/csound/package.json
+++ b/packages/csound/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/desktopbridge/package.json b/packages/desktopbridge/package.json
index 6609016e0..a01ec1f8a 100644
--- a/packages/desktopbridge/package.json
+++ b/packages/desktopbridge/package.json
@@ -7,7 +7,7 @@
"type": "module",
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
@@ -26,4 +26,4 @@
"@tauri-apps/api": "^2.2.0"
},
"homepage": "https://codeberg.org/uzu/strudel#readme"
-}
\ No newline at end of file
+}
diff --git a/packages/draw/package.json b/packages/draw/package.json
index f2555a5c4..ee1b8dd00 100644
--- a/packages/draw/package.json
+++ b/packages/draw/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"titdalcycles",
diff --git a/packages/embed/package.json b/packages/embed/package.json
index 3b88acc62..a0cc33de1 100644
--- a/packages/embed/package.json
+++ b/packages/embed/package.json
@@ -6,7 +6,7 @@
"type": "module",
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/gamepad/package.json b/packages/gamepad/package.json
index 25b4a87b5..3efb2e084 100644
--- a/packages/gamepad/package.json
+++ b/packages/gamepad/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"titdalcycles",
diff --git a/packages/hs2js/package.json b/packages/hs2js/package.json
index 3b93a3ede..c0bf8fa8c 100644
--- a/packages/hs2js/package.json
+++ b/packages/hs2js/package.json
@@ -16,7 +16,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"haskell",
diff --git a/packages/hydra/package.json b/packages/hydra/package.json
index c1294eb00..b022de87d 100644
--- a/packages/hydra/package.json
+++ b/packages/hydra/package.json
@@ -17,7 +17,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/midi/package.json b/packages/midi/package.json
index 513dbe197..4efd329d8 100644
--- a/packages/midi/package.json
+++ b/packages/midi/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"titdalcycles",
diff --git a/packages/mini/package.json b/packages/mini/package.json
index 9c96292d7..5d94301d4 100644
--- a/packages/mini/package.json
+++ b/packages/mini/package.json
@@ -16,7 +16,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/motion/package.json b/packages/motion/package.json
index 1fa87d878..a7db05680 100644
--- a/packages/motion/package.json
+++ b/packages/motion/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"titdalcycles",
diff --git a/packages/mqtt/package.json b/packages/mqtt/package.json
index 0eba694c3..f522e3354 100644
--- a/packages/mqtt/package.json
+++ b/packages/mqtt/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"titdalcycles",
diff --git a/packages/osc/package.json b/packages/osc/package.json
index 62b00090a..7d19fbbfc 100644
--- a/packages/osc/package.json
+++ b/packages/osc/package.json
@@ -17,7 +17,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/reference/package.json b/packages/reference/package.json
index 289520ddd..8dc966cc2 100644
--- a/packages/reference/package.json
+++ b/packages/reference/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/repl/package.json b/packages/repl/package.json
index 1c10aebf7..bfa404c75 100644
--- a/packages/repl/package.json
+++ b/packages/repl/package.json
@@ -14,7 +14,7 @@
"type": "module",
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/serial/package.json b/packages/serial/package.json
index df671cb1a..c04a69cd0 100644
--- a/packages/serial/package.json
+++ b/packages/serial/package.json
@@ -13,7 +13,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"titdalcycles",
diff --git a/packages/soundfonts/package.json b/packages/soundfonts/package.json
index d227359c7..2c87a6e05 100644
--- a/packages/soundfonts/package.json
+++ b/packages/soundfonts/package.json
@@ -13,7 +13,7 @@
"type": "module",
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/superdough/package.json b/packages/superdough/package.json
index 8fc3cca78..439b83718 100644
--- a/packages/superdough/package.json
+++ b/packages/superdough/package.json
@@ -16,7 +16,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/tonal/package.json b/packages/tonal/package.json
index 98b2a5325..614e86f74 100644
--- a/packages/tonal/package.json
+++ b/packages/tonal/package.json
@@ -14,7 +14,7 @@
"type": "module",
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/transpiler/package.json b/packages/transpiler/package.json
index 1a20a78f8..2a5e39776 100644
--- a/packages/transpiler/package.json
+++ b/packages/transpiler/package.json
@@ -14,7 +14,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/web/package.json b/packages/web/package.json
index 6264849eb..0feddc82d 100644
--- a/packages/web/package.json
+++ b/packages/web/package.json
@@ -14,7 +14,7 @@
"type": "module",
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/webaudio/package.json b/packages/webaudio/package.json
index f984d5321..5cc0a5538 100644
--- a/packages/webaudio/package.json
+++ b/packages/webaudio/package.json
@@ -17,7 +17,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
diff --git a/packages/xen/package.json b/packages/xen/package.json
index b79aea6e6..88c2bb082 100644
--- a/packages/xen/package.json
+++ b/packages/xen/package.json
@@ -14,7 +14,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://codeberg.org/uzu/strudel.git
+ "url": "git+https://codeberg.org/uzu/strudel.git"
},
"keywords": [
"tidalcycles",
From 3dbae7907cba29b340aea371bdaac2ba4fdec8b1 Mon Sep 17 00:00:00 2001
From: alex
Date: Fri, 13 Jun 2025 08:22:46 +0100
Subject: [PATCH 54/74] ignore .pnpm-store
---
.prettierignore | 1 +
1 file changed, 1 insertion(+)
diff --git a/.prettierignore b/.prettierignore
index 950e59f19..c9584aca0 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -13,3 +13,4 @@ pnpm-workspace.yaml
website/.astro
!tidal-drum-machines.json
!tidal-drum-machines-alias.json
+.pnpm-store
From d7b83e200c01820a0733dcb99bef577a34089209 Mon Sep 17 00:00:00 2001
From: Bernhard Wagner
Date: Thu, 12 Jun 2025 19:32:41 +0200
Subject: [PATCH 55/74] fix issue #1368 euclidLegatoRot
---
.gitignore | 1 +
packages/core/euclid.mjs | 44 ++++++-----
packages/core/test/euclid.test.js | 89 +++++++++++++++++++++++
packages/core/test/util.test.mjs | 65 ++++++++++++++---
packages/core/util.mjs | 2 +
pnpm-workspace.yaml | 16 ++--
test/__snapshots__/examples.test.mjs.snap | 25 ++++---
test/__snapshots__/tunes.test.mjs.snap | 24 +++---
8 files changed, 205 insertions(+), 61 deletions(-)
create mode 100644 packages/core/test/euclid.test.js
diff --git a/.gitignore b/.gitignore
index 59d9940e1..2be3ee698 100644
--- a/.gitignore
+++ b/.gitignore
@@ -130,3 +130,4 @@ fabric.properties
samples/*
!samples/README.md
+.idea/
diff --git a/packages/core/euclid.mjs b/packages/core/euclid.mjs
index 1a5be78b4..c3bb7a6d5 100644
--- a/packages/core/euclid.mjs
+++ b/packages/core/euclid.mjs
@@ -10,9 +10,8 @@ https://rohandrape.net/?t=hmt
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
-import { Pattern, timeCat, register, silence } from './pattern.mjs';
+import { timeCat, register, silence } from './pattern.mjs';
import { rotate, flatten, splitAt, zipWith } from './util.mjs';
-import Fraction from './fraction.mjs';
const left = function (n, x) {
const [ons, offs] = n;
@@ -42,29 +41,26 @@ const _bjork = function (n, x) {
export const bjork = function (ons, steps) {
const inverted = ons < 0;
- ons = Math.abs(ons);
- const offs = steps - ons;
- const x = Array(ons).fill([1]);
- const y = Array(offs).fill([0]);
- const result = _bjork([ons, offs], [x, y]);
- const p = flatten(result[1][0]).concat(flatten(result[1][1]));
- if (inverted) {
- return p.map((x) => (x === 0 ? 1 : 0));
- }
- return p;
+ const absOns = Math.abs(ons);
+ const offs = steps - absOns;
+ const ones = Array(absOns).fill([1]);
+ const zeros = Array(offs).fill([0]);
+ const result = _bjork([absOns, offs], [ones, zeros]);
+ const pattern = flatten(result[1][0]).concat(flatten(result[1][1]));
+ return inverted ? pattern.map((x) => 1 - x) : pattern;
};
/**
- * Changes the structure of the pattern to form an euclidean rhythm.
- * Euclidian rhythms are rhythms obtained using the greatest common
+ * Changes the structure of the pattern to form an Euclidean rhythm.
+ * Euclidean rhythms are rhythms obtained using the greatest common
* divisor of two numbers. They were described in 2004 by Godfried
- * Toussaint, a canadian computer scientist. Euclidian rhythms are
+ * Toussaint, a Canadian computer scientist. Euclidean rhythms are
* really useful for computer/algorithmic music because they can
* describe a large number of rhythms with a couple of numbers.
*
* @memberof Pattern
* @name euclid
- * @param {number} pulses the number of onsets / beats
+ * @param {number} pulses the number of onsets/beats
* @param {number} steps the number of steps to fill
* @returns Pattern
* @example
@@ -76,7 +72,7 @@ export const bjork = function (ons, steps) {
* Like `euclid`, but has an additional parameter for 'rotating' the resulting sequence.
* @memberof Pattern
* @name euclidRot
- * @param {number} pulses the number of onsets / beats
+ * @param {number} pulses the number of onsets/beats
* @param {number} steps the number of steps to fill
* @param {number} rotation offset in steps
* @returns Pattern
@@ -86,13 +82,13 @@ export const bjork = function (ons, steps) {
*/
/**
- * @example // A thirteenth century Persian rhythm called Khafif-e-ramal.
+ * @example // A thirteenth-century Persian rhythm called Khafif-e-ramal.
* note("c3").euclid(2,5)
* @example // The archetypal pattern of the Cumbia from Colombia, as well as a Calypso rhythm from Trinidad.
* note("c3").euclid(3,4)
* @example // Another thirteenth century Persian rhythm by the name of Khafif-e-ramal, as well as a Rumanian folk-dance rhythm.
* note("c3").euclidRot(3,5,2)
- * @example // A Ruchenitza rhythm used in a Bulgarian folk-dance.
+ * @example // A Ruchenitza rhythm used in a Bulgarian folk dance.
* note("c3").euclid(3,7)
* @example // The Cuban tresillo pattern.
* note("c3").euclid(3,8)
@@ -151,8 +147,10 @@ export const { euclidrot, euclidRot } = register(['euclidrot', 'euclidRot'], fun
* so there will be no gaps.
* @name euclidLegato
* @memberof Pattern
- * @param {number} pulses the number of onsets / beats
+ * @param {number} pulses the number of onsets/beats
* @param {number} steps the number of steps to fill
+ * @param rotation offset in steps
+ * @param pat
* @example
* note("c3").euclidLegato(3,8)
*/
@@ -161,13 +159,13 @@ const _euclidLegato = function (pulses, steps, rotation, pat) {
if (pulses < 1) {
return silence;
}
- const bin_pat = _euclidRot(pulses, steps, rotation);
+ const bin_pat = _euclidRot(pulses, steps, 0);
const gapless = bin_pat
.join('')
.split('1')
.slice(1)
.map((s) => [s.length + 1, true]);
- return pat.struct(timeCat(...gapless));
+ return pat.struct(timeCat(...gapless)).late(rotation / steps);
};
export const euclidLegato = register(['euclidLegato'], function (pulses, steps, pat) {
@@ -180,7 +178,7 @@ export const euclidLegato = register(['euclidLegato'], function (pulses, steps,
* the resulting sequence
* @name euclidLegatoRot
* @memberof Pattern
- * @param {number} pulses the number of onsets / beats
+ * @param {number} pulses the number of onsets/beats
* @param {number} steps the number of steps to fill
* @param {number} rotation offset in steps
* @example
diff --git a/packages/core/test/euclid.test.js b/packages/core/test/euclid.test.js
new file mode 100644
index 000000000..a33ec9514
--- /dev/null
+++ b/packages/core/test/euclid.test.js
@@ -0,0 +1,89 @@
+import { bjork } from '../euclid.mjs';
+import { describe, expect, it } from 'vitest';
+import { fastcat } from '../pattern.mjs';
+
+describe('bjork', () => {
+ it('should apply bjorklund to ons and steps', () => {
+ expect(bjork(3, 8)).toStrictEqual([1, 0, 0, 1, 0, 0, 1, 0]);
+ expect(bjork(-3, 8)).toStrictEqual([0, 1, 1, 0, 1, 1, 0, 1]);
+ expect(bjork(8, 8)).toStrictEqual([1, 1, 1, 1, 1, 1, 1, 1]);
+ expect(bjork(-8, 8)).toStrictEqual([0, 0, 0, 0, 0, 0, 0, 0]);
+ expect(bjork(5, 8)).toStrictEqual([1, 0, 1, 1, 0, 1, 1, 0]);
+ });
+});
+
+describe('euclid', () => {
+ it('Can create euclid', () => {
+ expect(
+ fastcat('a')
+ .euclid(3, 8)
+ .firstCycle()
+ .sort((a, b) => a.part.begin.sub(b.part.begin))
+ .map((a) => a.showWhole(true)),
+ ).toStrictEqual(['0/1 → 1/8: a', '3/8 → 1/2: a', '3/4 → 7/8: a']);
+ expect(
+ fastcat('a')
+ .euclid(5, 8)
+ .firstCycle()
+ .sort((a, b) => a.part.begin.sub(b.part.begin))
+ .map((a) => a.showWhole(true)),
+ ).toStrictEqual(['0/1 → 1/8: a', '1/4 → 3/8: a', '3/8 → 1/2: a', '5/8 → 3/4: a', '3/4 → 7/8: a']);
+ });
+});
+
+describe('euclidRot', () => {
+ it('Can create euclidRot', () => {
+ expect(
+ fastcat('a')
+ .euclidRot(3, 8, 2)
+ .firstCycle()
+ .sort((a, b) => a.part.begin.sub(b.part.begin))
+ .map((a) => a.showWhole(true)),
+ ).toStrictEqual(['0/1 → 1/8: a', '1/4 → 3/8: a', '5/8 → 3/4: a']);
+ expect(
+ fastcat('a')
+ .euclidRot(5, 8, 2)
+ .firstCycle()
+ .sort((a, b) => a.part.begin.sub(b.part.begin))
+ .map((a) => a.showWhole(true)),
+ ).toStrictEqual(['0/1 → 1/8: a', '1/4 → 3/8: a', '1/2 → 5/8: a', '5/8 → 3/4: a', '7/8 → 1/1: a']);
+ });
+});
+
+describe('euclidLegato', () => {
+ it('Can create euclidLegato', () => {
+ expect(
+ fastcat('a')
+ .euclidLegato(3, 8)
+ .firstCycle()
+ .sort((a, b) => a.part.begin.sub(b.part.begin))
+ .map((a) => a.showWhole(true)),
+ ).toStrictEqual(['0/1 → 3/8: a', '3/8 → 3/4: a', '3/4 → 1/1: a']);
+ expect(
+ fastcat('a')
+ .euclidLegato(5, 8)
+ .firstCycle()
+ .sort((a, b) => a.part.begin.sub(b.part.begin))
+ .map((a) => a.showWhole(true)),
+ ).toStrictEqual(['0/1 → 1/4: a', '1/4 → 3/8: a', '3/8 → 5/8: a', '5/8 → 3/4: a', '3/4 → 1/1: a']);
+ });
+});
+
+describe('euclidLegatoRot', () => {
+ it('Can create euclidLegatoRot', () => {
+ expect(
+ fastcat('a')
+ .euclidLegatoRot(3, 8, 2)
+ .firstCycle()
+ .sort((a, b) => a.part.begin.sub(b.part.begin))
+ .map((a) => a.showWhole(true)),
+ ).toStrictEqual(['0/1 → 1/4: a', '1/4 → 5/8: a', '5/8 → 1/1: a']);
+ expect(
+ fastcat('a')
+ .euclidLegatoRot(5, 8, 2)
+ .firstCycle()
+ .sort((a, b) => a.part.begin.sub(b.part.begin))
+ .map((a) => a.showWhole(true)),
+ ).toStrictEqual(['0/1 → 1/4: a', '1/4 → 1/2: a', '1/2 → 5/8: a', '5/8 → 7/8: a', '7/8 → 1/1: a']);
+ });
+});
diff --git a/packages/core/test/util.test.mjs b/packages/core/test/util.test.mjs
index 6b1053a3f..a511e0fc2 100644
--- a/packages/core/test/util.test.mjs
+++ b/packages/core/test/util.test.mjs
@@ -6,21 +6,25 @@ This program is free software: you can redistribute it and/or modify it under th
import { pure } from '../pattern.mjs';
import {
- isNote,
- tokenizeNote,
- noteToMidi,
- midiToFreq,
- freqToMidi,
_mod,
compose,
+ flatten,
+ fractionalArgs,
+ freqToMidi,
getFrequency,
getPlayableNoteValue,
- parseNumeral,
- parseFractional,
+ isNote,
+ midiToFreq,
+ noteToMidi,
numeralArgs,
- fractionalArgs,
+ parseFractional,
+ parseNumeral,
+ rotate,
+ splitAt,
+ tokenizeNote,
+ zipWith,
} from '../util.mjs';
-import { describe, it, expect } from 'vitest';
+import { describe, expect, it } from 'vitest';
describe('isNote', () => {
it('should recognize notes without accidentals', () => {
@@ -233,3 +237,46 @@ describe('fractionalArgs', () => {
expect(add('q', 2)).toBe(2.25);
});
});
+
+describe('rotate', () => {
+ it('should rotate array to the left', () => {
+ expect(rotate([0, 1, 2, 3], 2)).toStrictEqual([2, 3, 0, 1]);
+ expect(rotate([0, 1, 2, 3], 0)).toStrictEqual([0, 1, 2, 3]);
+ expect(rotate([0, 1, 2, 3], -3)).toStrictEqual([1, 2, 3, 0]);
+ expect(rotate([0, 1, 2, 3], 3)).toStrictEqual([3, 0, 1, 2]);
+ expect(rotate([0], 3)).toStrictEqual([0]);
+ expect(rotate([], 3)).toStrictEqual([]);
+ });
+});
+
+describe('flatten', () => {
+ it('should flatten array by one level', () => {
+ expect(flatten([0, 1, 2, 3])).toStrictEqual([0, 1, 2, 3]);
+ expect(flatten([0, 1, [2, 3]])).toStrictEqual([0, 1, 2, 3]);
+ expect(flatten([0, [1, [2, 3]]])).toStrictEqual([0, 1, [2, 3]]);
+ expect(flatten([0])).toStrictEqual([0]);
+ expect(flatten([])).toStrictEqual([]);
+ });
+});
+
+describe('splitAt', () => {
+ it('should split array into two', () => {
+ expect(splitAt(2, [0, 1, 2, 3])).toStrictEqual([
+ [0, 1],
+ [2, 3],
+ ]);
+ expect(splitAt(0, [0, 1, 2, 3])).toStrictEqual([[], [0, 1, 2, 3]]);
+ expect(splitAt(-3, [0, 1, 2, 3])).toStrictEqual([[0], [1, 2, 3]]);
+ expect(splitAt(3, [0, 1, 2, 3])).toStrictEqual([[0, 1, 2], [3]]);
+ });
+});
+
+describe('zipWith', () => {
+ it('should use the function to combine the two arrays element-wise', () => {
+ expect(zipWith((a, b) => a + b, [0, 1, 2, 3], [0, 1, 2, 3])).toStrictEqual([0, 2, 4, 6]);
+ expect(zipWith((a, b) => a + b, [0, 1, 2, 3], [0, 1, 2])).toStrictEqual([0, 2, 4, NaN]);
+ expect(zipWith((a, b) => a + b, [0, 1, 2], [0, 1, 2, 3])).toStrictEqual([0, 2, 4]);
+ expect(zipWith((a) => a, [0, 1, 2], [1, 2, 3, 0])).toStrictEqual([0, 1, 2]);
+ expect(zipWith((a, b) => b, [0, 1, 2], [1, 2, 3, 0])).toStrictEqual([1, 2, 3]);
+ });
+});
diff --git a/packages/core/util.mjs b/packages/core/util.mjs
index b81811bae..756fac8e8 100644
--- a/packages/core/util.mjs
+++ b/packages/core/util.mjs
@@ -162,6 +162,7 @@ export const compose = (...funcs) => pipe(...funcs.reverse());
// Removes 'None' values from given list
export const removeUndefineds = (xs) => xs.filter((x) => x != undefined);
+// flattens by one level
export const flatten = (arr) => [].concat(...arr);
export const id = (a) => a;
@@ -237,6 +238,7 @@ export const splitAt = function (index, value) {
return [value.slice(0, index), value.slice(index)];
};
+// Uses the function f to combine the arrays xs, ys element-wise
export const zipWith = (f, xs, ys) => xs.map((n, i) => f(n, ys[i]));
export const pairs = function (xs) {
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index ef8cc99d5..a4fca9ff7 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,6 +1,12 @@
packages:
- # all packages in direct subdirs of packages/
- - "packages/*"
- - "examples/*"
- - "tools/dbpatch"
- - "website/"
+ - packages/*
+ - examples/*
+ - tools/dbpatch
+ - website/
+
+onlyBuiltDependencies:
+ - esbuild
+ - nx
+ - sharp
+ - tree-sitter
+ - tree-sitter-haskell
diff --git a/test/__snapshots__/examples.test.mjs.snap b/test/__snapshots__/examples.test.mjs.snap
index 0eacfdfb0..85948f0c0 100644
--- a/test/__snapshots__/examples.test.mjs.snap
+++ b/test/__snapshots__/examples.test.mjs.snap
@@ -3145,18 +3145,19 @@ exports[`runs examples > example "euclidLegato" example index 0 1`] = `
exports[`runs examples > example "euclidLegatoRot" example index 0 1`] = `
[
- "[ 0/1 → 1/4 | note:c3 ]",
- "[ 1/4 → 3/4 | note:c3 ]",
- "[ 3/4 → 1/1 | note:c3 ]",
- "[ 1/1 → 5/4 | note:c3 ]",
- "[ 5/4 → 7/4 | note:c3 ]",
- "[ 7/4 → 2/1 | note:c3 ]",
- "[ 2/1 → 9/4 | note:c3 ]",
- "[ 9/4 → 11/4 | note:c3 ]",
- "[ 11/4 → 3/1 | note:c3 ]",
- "[ 3/1 → 13/4 | note:c3 ]",
- "[ 13/4 → 15/4 | note:c3 ]",
- "[ 15/4 → 4/1 | note:c3 ]",
+ "[ -1/5 ⇜ (0/1 → 1/5) | note:c3 ]",
+ "[ 1/5 → 2/5 | note:c3 ]",
+ "[ 2/5 → 4/5 | note:c3 ]",
+ "[ 4/5 → 6/5 | note:c3 ]",
+ "[ 6/5 → 7/5 | note:c3 ]",
+ "[ 7/5 → 9/5 | note:c3 ]",
+ "[ 9/5 → 11/5 | note:c3 ]",
+ "[ 11/5 → 12/5 | note:c3 ]",
+ "[ 12/5 → 14/5 | note:c3 ]",
+ "[ 14/5 → 16/5 | note:c3 ]",
+ "[ 16/5 → 17/5 | note:c3 ]",
+ "[ 17/5 → 19/5 | note:c3 ]",
+ "[ (19/5 → 4/1) ⇝ 21/5 | note:c3 ]",
]
`;
diff --git a/test/__snapshots__/tunes.test.mjs.snap b/test/__snapshots__/tunes.test.mjs.snap
index 06267b8f9..4a0ddd539 100644
--- a/test/__snapshots__/tunes.test.mjs.snap
+++ b/test/__snapshots__/tunes.test.mjs.snap
@@ -7318,12 +7318,12 @@ exports[`renders tunes > tune: randomBells 1`] = `
[
"[ -9/8 ⇜ (0/1 → 3/8) | gain:0.6 note:A3 velocity:0.5989903202280402 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ -3/4 ⇜ (0/1 → 3/4) | gain:0.6 note:C5 velocity:0.8369929669424891 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
- "[ 0/1 → 3/2 | note:D2 s:bass clip:1 gain:0.8 ]",
+ "[ 0/1 → 3/2 | note:F2 s:bass clip:1 gain:0.8 ]",
"[ 0/1 → 9/4 | gain:0.6 note:D3 velocity:0.5 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 3/8 → 21/8 | gain:0.6 note:F5 velocity:0.9213038925081491 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 3/4 → 3/1 | gain:0.6 note:C5 velocity:0.8426077850162983 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
- "[ 3/2 → 9/4 | note:D2 s:bass clip:1 gain:0.8 ]",
- "[ 9/4 → 3/1 | note:D2 s:bass clip:1 gain:0.8 ]",
+ "[ 3/2 → 9/4 | note:F2 s:bass clip:1 gain:0.8 ]",
+ "[ 9/4 → 3/1 | note:F2 s:bass clip:1 gain:0.8 ]",
"[ 9/4 → 9/2 | gain:0.6 note:D4 velocity:0.7006962578743696 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 21/8 → 39/8 | gain:0.6 note:C4 velocity:0.6507943943142891 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 3/1 → 9/2 | note:D2 s:bass clip:1 gain:0.8 ]",
@@ -7335,12 +7335,12 @@ exports[`renders tunes > tune: randomBells 1`] = `
"[ (21/4 → 6/1) ⇝ 27/4 | gain:0.6 note:D4 velocity:0.6988155404105783 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 39/8 ⇜ (6/1 → 51/8) | gain:0.6 note:D5 velocity:0.8758113365620375 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 21/4 ⇜ (6/1 → 27/4) | gain:0.6 note:D4 velocity:0.6988155404105783 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
- "[ 6/1 → 15/2 | note:A2 s:bass clip:1 gain:0.8 ]",
+ "[ 6/1 → 15/2 | note:D2 s:bass clip:1 gain:0.8 ]",
"[ 6/1 → 33/4 | gain:0.6 note:G4 velocity:0.7597710825502872 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 51/8 → 69/8 | gain:0.6 note:G4 velocity:0.7743164440616965 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 27/4 → 9/1 | gain:0.6 note:C5 velocity:0.8362447572872043 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
- "[ 15/2 → 33/4 | note:A2 s:bass clip:1 gain:0.8 ]",
- "[ 33/4 → 9/1 | note:A2 s:bass clip:1 gain:0.8 ]",
+ "[ 15/2 → 33/4 | note:D2 s:bass clip:1 gain:0.8 ]",
+ "[ 33/4 → 9/1 | note:D2 s:bass clip:1 gain:0.8 ]",
"[ 33/4 → 21/2 | gain:0.6 note:A3 velocity:0.5914018759503961 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 69/8 → 87/8 | gain:0.6 note:G4 velocity:0.754063542932272 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 9/1 → 21/2 | note:A2 s:bass clip:1 gain:0.8 ]",
@@ -7352,12 +7352,12 @@ exports[`renders tunes > tune: randomBells 1`] = `
"[ (45/4 → 12/1) ⇝ 51/4 | gain:0.6 note:A4 velocity:0.7972785895690322 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 87/8 ⇜ (12/1 → 99/8) | gain:0.6 note:F4 velocity:0.7347871446982026 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 45/4 ⇜ (12/1 → 51/4) | gain:0.6 note:A4 velocity:0.7972785895690322 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
- "[ 12/1 → 27/2 | note:G2 s:bass clip:1 gain:0.8 ]",
+ "[ 12/1 → 27/2 | note:A2 s:bass clip:1 gain:0.8 ]",
"[ 12/1 → 57/4 | gain:0.6 note:G5 velocity:0.9797635599970818 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 99/8 → 117/8 | gain:0.6 note:C4 velocity:0.6662392104044557 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 51/4 → 15/1 | gain:0.6 note:F5 velocity:0.9516951469704509 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
- "[ 27/2 → 57/4 | note:G2 s:bass clip:1 gain:0.8 ]",
- "[ 57/4 → 15/1 | note:G2 s:bass clip:1 gain:0.8 ]",
+ "[ 27/2 → 57/4 | note:A2 s:bass clip:1 gain:0.8 ]",
+ "[ 57/4 → 15/1 | note:A2 s:bass clip:1 gain:0.8 ]",
"[ 57/4 → 33/2 | gain:0.6 note:F5 velocity:0.9182533202692866 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 117/8 → 135/8 | gain:0.6 note:G3 velocity:0.5711571052670479 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 15/1 → 33/2 | note:G2 s:bass clip:1 gain:0.8 ]",
@@ -7369,12 +7369,12 @@ exports[`renders tunes > tune: randomBells 1`] = `
"[ (69/4 → 18/1) ⇝ 75/4 | gain:0.6 note:F3 velocity:0.5081270858645439 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 135/8 ⇜ (18/1 → 147/8) | gain:0.6 note:F5 velocity:0.9456470254808664 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 69/4 ⇜ (18/1 → 75/4) | gain:0.6 note:F3 velocity:0.5081270858645439 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
- "[ 18/1 → 39/2 | note:F2 s:bass clip:1 gain:0.8 ]",
+ "[ 18/1 → 39/2 | note:G2 s:bass clip:1 gain:0.8 ]",
"[ 18/1 → 81/4 | gain:0.6 note:A3 velocity:0.6086445553228259 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 147/8 → 165/8 | gain:0.6 note:F3 velocity:0.5062594395130873 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 75/4 → 21/1 | gain:0.6 note:D4 velocity:0.6716219391673803 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
- "[ 39/2 → 81/4 | note:F2 s:bass clip:1 gain:0.8 ]",
- "[ 81/4 → 21/1 | note:F2 s:bass clip:1 gain:0.8 ]",
+ "[ 39/2 → 81/4 | note:G2 s:bass clip:1 gain:0.8 ]",
+ "[ 81/4 → 21/1 | note:G2 s:bass clip:1 gain:0.8 ]",
"[ 81/4 → 45/2 | gain:0.6 note:D4 velocity:0.7043459005653858 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 165/8 → 183/8 | gain:0.6 note:D5 velocity:0.8878388572484255 s:bell delay:0.2 delaytime:0.3333333333333333 delayfeedback:0.8 ]",
"[ 21/1 → 45/2 | note:F2 s:bass clip:1 gain:0.8 ]",
From 7f50bcebd29a36d90b13678ebc6473a512b0f291 Mon Sep 17 00:00:00 2001
From: Bernhard Wagner
Date: Fri, 13 Jun 2025 10:28:03 +0200
Subject: [PATCH 56/74] avoid floating point inaccuracy by using Fraction
---
packages/core/euclid.mjs | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/packages/core/euclid.mjs b/packages/core/euclid.mjs
index c3bb7a6d5..2ee9962da 100644
--- a/packages/core/euclid.mjs
+++ b/packages/core/euclid.mjs
@@ -12,6 +12,7 @@ This program is free software: you can redistribute it and/or modify it under th
import { timeCat, register, silence } from './pattern.mjs';
import { rotate, flatten, splitAt, zipWith } from './util.mjs';
+import Fraction, { lcm } from './fraction.mjs';
const left = function (n, x) {
const [ons, offs] = n;
@@ -165,7 +166,7 @@ const _euclidLegato = function (pulses, steps, rotation, pat) {
.split('1')
.slice(1)
.map((s) => [s.length + 1, true]);
- return pat.struct(timeCat(...gapless)).late(rotation / steps);
+ return pat.struct(timeCat(...gapless)).late(Fraction(rotation).div(steps));
};
export const euclidLegato = register(['euclidLegato'], function (pulses, steps, pat) {
From 38e7fe606c3a355277ca5dbf7ef88568f0762ca8 Mon Sep 17 00:00:00 2001
From: yaxu
Date: Fri, 13 Jun 2025 16:47:40 +0200
Subject: [PATCH 57/74] Update .github/workflows/deploy.yml
---
.github/workflows/deploy.yml | 34 +++++++++++-----------------------
1 file changed, 11 insertions(+), 23 deletions(-)
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 9a853c783..669073887 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -2,13 +2,6 @@ name: Build and Deploy
on: [workflow_dispatch]
-# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
-permissions:
- contents: read
- pages: write
- id-token: write
- deployments: write
-
# Allow one concurrent deployment
concurrency:
group: "pages"
@@ -16,10 +9,9 @@ concurrency:
jobs:
build:
- runs-on: ubuntu-latest
- environment:
- name: github-pages
- url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: docker
+ env:
+ SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
@@ -35,15 +27,11 @@ jobs:
- name: Build
run: pnpm build
- - name: Setup Pages
- uses: actions/configure-pages@v2
-
- - name: Upload artifact
- uses: actions/upload-pages-artifact@v3
- with:
- # Upload entire repository
- path: "./website/dist"
-
- - name: Deploy to GitHub Pages
- id: deployment
- uses: actions/deploy-pages@v4
+ - name: Deploy
+ run: |
+ eval $(ssh-agent -s)
+ echo "$SSH_PRIVATE_KEY" | ssh-add -
+ apt update && apt install -y rsync
+ mkdir ~/.ssh
+ ssh-keyscan matrix.toplap.org > ~/.ssh/known_hosts
+ rsync -atv --progress ./website/dist strudel@matrix.toplap.org:/home/strudel/dist
\ No newline at end of file
From 8fba92f447cab4a104b694f86dd74303dcc5cfc8 Mon Sep 17 00:00:00 2001
From: yaxu
Date: Fri, 13 Jun 2025 17:10:37 +0200
Subject: [PATCH 58/74] Update .github/workflows/deploy.yml
---
.github/workflows/deploy.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 669073887..8eefebc2c 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -34,4 +34,4 @@ jobs:
apt update && apt install -y rsync
mkdir ~/.ssh
ssh-keyscan matrix.toplap.org > ~/.ssh/known_hosts
- rsync -atv --progress ./website/dist strudel@matrix.toplap.org:/home/strudel/dist
\ No newline at end of file
+ rsync -atv --progress ./website/dist/ strudel@matrix.toplap.org:/home/strudel/deploy
\ No newline at end of file
From 3428e18e7d36142ed10acd54251cc2ccce87b6f1 Mon Sep 17 00:00:00 2001
From: yaxu
Date: Fri, 13 Jun 2025 17:26:37 +0200
Subject: [PATCH 59/74] Update .github/workflows/deploy.yml
---
.github/workflows/deploy.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 8eefebc2c..f82f0e30f 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -34,4 +34,4 @@ jobs:
apt update && apt install -y rsync
mkdir ~/.ssh
ssh-keyscan matrix.toplap.org > ~/.ssh/known_hosts
- rsync -atv --progress ./website/dist/ strudel@matrix.toplap.org:/home/strudel/deploy
\ No newline at end of file
+ rsync -atv --delete --progress ./website/dist/ strudel@matrix.toplap.org:/home/strudel/deploy
\ No newline at end of file
From 0c193238c55217725045de3d1fdfe75a7a2636d5 Mon Sep 17 00:00:00 2001
From: yaxu
Date: Fri, 13 Jun 2025 17:31:03 +0200
Subject: [PATCH 60/74] Update .github/workflows/deploy.yml
---
.github/workflows/deploy.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index f82f0e30f..d8049d767 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -34,4 +34,4 @@ jobs:
apt update && apt install -y rsync
mkdir ~/.ssh
ssh-keyscan matrix.toplap.org > ~/.ssh/known_hosts
- rsync -atv --delete --progress ./website/dist/ strudel@matrix.toplap.org:/home/strudel/deploy
\ No newline at end of file
+ rsync -atv --delete --delete-after --progress ./website/dist/ strudel@matrix.toplap.org:/home/strudel/deploy
\ No newline at end of file
From 47de9e45ff9e976908f2aa59a54bda211933b6cb Mon Sep 17 00:00:00 2001
From: yaxu
Date: Fri, 13 Jun 2025 17:31:33 +0200
Subject: [PATCH 61/74] Update .github/workflows/deploy.yml
---
.github/workflows/deploy.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index d8049d767..561fee658 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -20,7 +20,7 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: 20
- cache: "pnpm"
+ # cache: "pnpm"
- name: Install Dependencies
run: pnpm install
From aa20526963fe216fe9ed82f5f3bda114a31f024e Mon Sep 17 00:00:00 2001
From: yaxu
Date: Fri, 13 Jun 2025 17:33:47 +0200
Subject: [PATCH 62/74] Update .github/workflows/test.yml
---
.github/workflows/test.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 498cd800b..765f5958d 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -17,7 +17,7 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- cache: 'pnpm'
+ # cache: 'pnpm'
- run: pnpm install
- run: pnpm run format-check
- run: pnpm run lint
From 2bc3d69fb0e240214cd24304aef4d85d0f7d12ad Mon Sep 17 00:00:00 2001
From: Felix Roos
Date: Sat, 14 Jun 2025 14:01:11 +0200
Subject: [PATCH 63/74] replace github links in release notes
---
.../content/blog/release-0.0.2-schwindlig.mdx | 52 ++--
.../blog/release-0.0.2.1-stuermisch.mdx | 80 ++---
.../content/blog/release-0.0.3-maelstrom.mdx | 104 +++----
.../src/content/blog/release-0.0.4-gischt.mdx | 62 ++--
.../content/blog/release-0.3.0-donauwelle.mdx | 74 ++---
.../content/blog/release-0.4.0-brandung.mdx | 8 +-
.../src/content/blog/release-0.5.0-wirbel.mdx | 54 ++--
.../blog/release-0.6.0-zimtschnecke.mdx | 104 +++----
.../content/blog/release-0.7.0-zuckerguss.mdx | 118 +++----
.../blog/release-0.8.0-himbeermuffin.mdx | 84 ++---
.../blog/release-0.9.0-bananenbrot.mdx | 82 ++---
.../blog/release-1.0.0-geburtstagskuchen.mdx | 288 +++++++++---------
website/src/content/blog/year-2.mdx | 4 +-
13 files changed, 557 insertions(+), 557 deletions(-)
diff --git a/website/src/content/blog/release-0.0.2-schwindlig.mdx b/website/src/content/blog/release-0.0.2-schwindlig.mdx
index cf4bc19d6..8dbff4928 100644
--- a/website/src/content/blog/release-0.0.2-schwindlig.mdx
+++ b/website/src/content/blog/release-0.0.2-schwindlig.mdx
@@ -8,33 +8,33 @@ author: froos
## What's Changed
-- Most work done as [commits to main](https://github.com/tidalcycles/strudel/commits/2a0d8c3f77ff7b34e82602e2d02400707f367316)
-- repl + reify functions by @felixroos in https://github.com/tidalcycles/strudel/pull/2
-- Fix path by @yaxu in https://github.com/tidalcycles/strudel/pull/3
-- update readme for local dev by @kindohm in https://github.com/tidalcycles/strudel/pull/4
-- Patternify all the things by @yaxu in https://github.com/tidalcycles/strudel/pull/5
-- krill parser + improved repl by @felixroos in https://github.com/tidalcycles/strudel/pull/6
-- fixed editor crash by @felixroos in https://github.com/tidalcycles/strudel/pull/7
-- timeCat by @yaxu in https://github.com/tidalcycles/strudel/pull/8
-- Bugfix every, and create more top level functions by @yaxu in https://github.com/tidalcycles/strudel/pull/9
-- Failing test for `when` WIP by @yaxu in https://github.com/tidalcycles/strudel/pull/10
-- Added mask() and struct() by @yaxu in https://github.com/tidalcycles/strudel/pull/11
-- Add continuous signals (sine, cosine, saw, etc) by @yaxu in https://github.com/tidalcycles/strudel/pull/13
-- add apply and layer, and missing div/mul methods by @yaxu in https://github.com/tidalcycles/strudel/pull/15
-- higher latencyHint by @felixroos in https://github.com/tidalcycles/strudel/pull/16
-- test: 📦 Add missing dependency and a CI check, to prevent oversights ;p by @puria in https://github.com/tidalcycles/strudel/pull/17
-- fix: 💄 Enhance visualisation of the Tutorial on mobile by @puria in https://github.com/tidalcycles/strudel/pull/19
-- Stateful queries and events (WIP) by @yaxu in https://github.com/tidalcycles/strudel/pull/14
-- Fix resolveState by @yaxu in https://github.com/tidalcycles/strudel/pull/22
-- added \_asNumber + interpret numbers as midi by @felixroos in https://github.com/tidalcycles/strudel/pull/21
-- Update package.json by @ChiakiUehira in https://github.com/tidalcycles/strudel/pull/23
-- packaging by @felixroos in https://github.com/tidalcycles/strudel/pull/24
+- Most work done as [commits to main](https://codeberg.org/uzu/strudel/commit/2a0d8c3f77ff7b34e82602e2d02400707f367316)
+- repl + reify functions by @felixroos in https://codeberg.org/uzu/strudel/pulls/2
+- Fix path by @yaxu in https://codeberg.org/uzu/strudel/pulls/3
+- update readme for local dev by @kindohm in https://codeberg.org/uzu/strudel/pulls/4
+- Patternify all the things by @yaxu in https://codeberg.org/uzu/strudel/pulls/5
+- krill parser + improved repl by @felixroos in https://codeberg.org/uzu/strudel/pulls/6
+- fixed editor crash by @felixroos in https://codeberg.org/uzu/strudel/pulls/7
+- timeCat by @yaxu in https://codeberg.org/uzu/strudel/pulls/8
+- Bugfix every, and create more top level functions by @yaxu in https://codeberg.org/uzu/strudel/pulls/9
+- Failing test for `when` WIP by @yaxu in https://codeberg.org/uzu/strudel/pulls/10
+- Added mask() and struct() by @yaxu in https://codeberg.org/uzu/strudel/pulls/11
+- Add continuous signals (sine, cosine, saw, etc) by @yaxu in https://codeberg.org/uzu/strudel/pulls/13
+- add apply and layer, and missing div/mul methods by @yaxu in https://codeberg.org/uzu/strudel/pulls/15
+- higher latencyHint by @felixroos in https://codeberg.org/uzu/strudel/pulls/16
+- test: 📦 Add missing dependency and a CI check, to prevent oversights ;p by @puria in https://codeberg.org/uzu/strudel/pulls/17
+- fix: 💄 Enhance visualisation of the Tutorial on mobile by @puria in https://codeberg.org/uzu/strudel/pulls/19
+- Stateful queries and events (WIP) by @yaxu in https://codeberg.org/uzu/strudel/pulls/14
+- Fix resolveState by @yaxu in https://codeberg.org/uzu/strudel/pulls/22
+- added \_asNumber + interpret numbers as midi by @felixroos in https://codeberg.org/uzu/strudel/pulls/21
+- Update package.json by @ChiakiUehira in https://codeberg.org/uzu/strudel/pulls/23
+- packaging by @felixroos in https://codeberg.org/uzu/strudel/pulls/24
## New Contributors
-- @felixroos made their first contribution in https://github.com/tidalcycles/strudel/pull/2
-- @kindohm made their first contribution in https://github.com/tidalcycles/strudel/pull/4
-- @puria made their first contribution in https://github.com/tidalcycles/strudel/pull/17
-- @ChiakiUehira made their first contribution in https://github.com/tidalcycles/strudel/pull/23
+- @felixroos made their first contribution in https://codeberg.org/uzu/strudel/pulls/2
+- @kindohm made their first contribution in https://codeberg.org/uzu/strudel/pulls/4
+- @puria made their first contribution in https://codeberg.org/uzu/strudel/pulls/17
+- @ChiakiUehira made their first contribution in https://codeberg.org/uzu/strudel/pulls/23
-**Full Changelog**: https://github.com/tidalcycles/strudel/commits/2a0d8c3f77ff7b34e82602e2d02400707f367316
+**Full Changelog**: https://codeberg.org/uzu/strudel/commit/2a0d8c3f77ff7b34e82602e2d02400707f367316
diff --git a/website/src/content/blog/release-0.0.2.1-stuermisch.mdx b/website/src/content/blog/release-0.0.2.1-stuermisch.mdx
index edefd2b09..441d99f76 100644
--- a/website/src/content/blog/release-0.0.2.1-stuermisch.mdx
+++ b/website/src/content/blog/release-0.0.2.1-stuermisch.mdx
@@ -7,47 +7,47 @@ author: froos
## What's Changed
-- Add chunk, chunkBack and iterBack by @yaxu in https://github.com/tidalcycles/strudel/pull/25
-- Update tutorial.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/37
-- Update tutorial.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/38
-- Compose by @felixroos in https://github.com/tidalcycles/strudel/pull/40
-- Fix polymeter by @yaxu in https://github.com/tidalcycles/strudel/pull/44
-- First run at squeezeBind, ref #32 by @yaxu in https://github.com/tidalcycles/strudel/pull/48
-- Implement `chop()` by @yaxu in https://github.com/tidalcycles/strudel/pull/50
-- OSC and SuperDirt support by @yaxu in https://github.com/tidalcycles/strudel/pull/27
-- More functions by @yaxu in https://github.com/tidalcycles/strudel/pull/56
-- More functions by @yaxu in https://github.com/tidalcycles/strudel/pull/61
-- Separate out strudel.mjs, make index.mjs aggregate module by @yaxu in https://github.com/tidalcycles/strudel/pull/62
-- Speech output by @felixroos in https://github.com/tidalcycles/strudel/pull/67
-- use new fixed version of osc-js package by @felixroos in https://github.com/tidalcycles/strudel/pull/68
-- First effort at rand() by @yaxu in https://github.com/tidalcycles/strudel/pull/69
-- More randomness, fix `rand`, and add `brand`, `irand` and `choose` by @yaxu in https://github.com/tidalcycles/strudel/pull/70
-- webaudio package by @felixroos in https://github.com/tidalcycles/strudel/pull/26
-- Port `perlin` noise, `rangex`, and `palindrome` by @yaxu in https://github.com/tidalcycles/strudel/pull/73
-- More random functions by @yaxu in https://github.com/tidalcycles/strudel/pull/74
-- Try to fix appLeft / appRight by @yaxu in https://github.com/tidalcycles/strudel/pull/75
-- Basic webserial support by @yaxu in https://github.com/tidalcycles/strudel/pull/80
-- Webaudio in REPL by @felixroos in https://github.com/tidalcycles/strudel/pull/77
-- add `striate()` by @yaxu in https://github.com/tidalcycles/strudel/pull/76
-- Tidy up a couple of old files by @mindofmatthew in https://github.com/tidalcycles/strudel/pull/84
-- Add pattern composers, implements #82 by @yaxu in https://github.com/tidalcycles/strudel/pull/83
-- Fiddles with cat/stack by @yaxu in https://github.com/tidalcycles/strudel/pull/90
-- Paper by @felixroos in https://github.com/tidalcycles/strudel/pull/98
-- Change to Affero GPL by @yaxu in https://github.com/tidalcycles/strudel/pull/101
-- Work on Codemirror 6 highlighting by @mindofmatthew in https://github.com/tidalcycles/strudel/pull/102
-- Codemirror 6 by @felixroos in https://github.com/tidalcycles/strudel/pull/97
-- Tune tests by @felixroos in https://github.com/tidalcycles/strudel/pull/104
-- /embed package: web component for repl by @felixroos in https://github.com/tidalcycles/strudel/pull/106
-- Reset, Restart and other composers by @felixroos in https://github.com/tidalcycles/strudel/pull/88
-- Embed style by @felixroos in https://github.com/tidalcycles/strudel/pull/109
-- In source doc by @yaxu in https://github.com/tidalcycles/strudel/pull/105
-- `.brak()`, `.inside()` and `.outside()` by @yaxu in https://github.com/tidalcycles/strudel/pull/112
-- loopAt by @yaxu in https://github.com/tidalcycles/strudel/pull/114
-- Osc timing improvements by @yaxu in https://github.com/tidalcycles/strudel/pull/113
+- Add chunk, chunkBack and iterBack by @yaxu in https://codeberg.org/uzu/strudel/pulls/25
+- Update tutorial.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/37
+- Update tutorial.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/38
+- Compose by @felixroos in https://codeberg.org/uzu/strudel/pulls/40
+- Fix polymeter by @yaxu in https://codeberg.org/uzu/strudel/pulls/44
+- First run at squeezeBind, ref #32 by @yaxu in https://codeberg.org/uzu/strudel/pulls/48
+- Implement `chop()` by @yaxu in https://codeberg.org/uzu/strudel/pulls/50
+- OSC and SuperDirt support by @yaxu in https://codeberg.org/uzu/strudel/pulls/27
+- More functions by @yaxu in https://codeberg.org/uzu/strudel/pulls/56
+- More functions by @yaxu in https://codeberg.org/uzu/strudel/pulls/61
+- Separate out strudel.mjs, make index.mjs aggregate module by @yaxu in https://codeberg.org/uzu/strudel/pulls/62
+- Speech output by @felixroos in https://codeberg.org/uzu/strudel/pulls/67
+- use new fixed version of osc-js package by @felixroos in https://codeberg.org/uzu/strudel/pulls/68
+- First effort at rand() by @yaxu in https://codeberg.org/uzu/strudel/pulls/69
+- More randomness, fix `rand`, and add `brand`, `irand` and `choose` by @yaxu in https://codeberg.org/uzu/strudel/pulls/70
+- webaudio package by @felixroos in https://codeberg.org/uzu/strudel/pulls/26
+- Port `perlin` noise, `rangex`, and `palindrome` by @yaxu in https://codeberg.org/uzu/strudel/pulls/73
+- More random functions by @yaxu in https://codeberg.org/uzu/strudel/pulls/74
+- Try to fix appLeft / appRight by @yaxu in https://codeberg.org/uzu/strudel/pulls/75
+- Basic webserial support by @yaxu in https://codeberg.org/uzu/strudel/pulls/80
+- Webaudio in REPL by @felixroos in https://codeberg.org/uzu/strudel/pulls/77
+- add `striate()` by @yaxu in https://codeberg.org/uzu/strudel/pulls/76
+- Tidy up a couple of old files by @mindofmatthew in https://codeberg.org/uzu/strudel/pulls/84
+- Add pattern composers, implements #82 by @yaxu in https://codeberg.org/uzu/strudel/pulls/83
+- Fiddles with cat/stack by @yaxu in https://codeberg.org/uzu/strudel/pulls/90
+- Paper by @felixroos in https://codeberg.org/uzu/strudel/pulls/98
+- Change to Affero GPL by @yaxu in https://codeberg.org/uzu/strudel/pulls/101
+- Work on Codemirror 6 highlighting by @mindofmatthew in https://codeberg.org/uzu/strudel/pulls/102
+- Codemirror 6 by @felixroos in https://codeberg.org/uzu/strudel/pulls/97
+- Tune tests by @felixroos in https://codeberg.org/uzu/strudel/pulls/104
+- /embed package: web component for repl by @felixroos in https://codeberg.org/uzu/strudel/pulls/106
+- Reset, Restart and other composers by @felixroos in https://codeberg.org/uzu/strudel/pulls/88
+- Embed style by @felixroos in https://codeberg.org/uzu/strudel/pulls/109
+- In source doc by @yaxu in https://codeberg.org/uzu/strudel/pulls/105
+- `.brak()`, `.inside()` and `.outside()` by @yaxu in https://codeberg.org/uzu/strudel/pulls/112
+- loopAt by @yaxu in https://codeberg.org/uzu/strudel/pulls/114
+- Osc timing improvements by @yaxu in https://codeberg.org/uzu/strudel/pulls/113
## New Contributors
-- @bwagner made their first contribution in https://github.com/tidalcycles/strudel/pull/37
-- @mindofmatthew made their first contribution in https://github.com/tidalcycles/strudel/pull/84
+- @bwagner made their first contribution in https://codeberg.org/uzu/strudel/pulls/37
+- @mindofmatthew made their first contribution in https://codeberg.org/uzu/strudel/pulls/84
-**Full Changelog**: https://github.com/tidalcycles/strudel/compare/v0.0.2...@strudel.cycles/core@0.1.0
+**Full Changelog**: https://codeberg.org/uzu/strudel/compare/v0.0.2...@strudel.cycles/core@0.1.0
diff --git a/website/src/content/blog/release-0.0.3-maelstrom.mdx b/website/src/content/blog/release-0.0.3-maelstrom.mdx
index 3710a9ce5..5141b34a7 100644
--- a/website/src/content/blog/release-0.0.3-maelstrom.mdx
+++ b/website/src/content/blog/release-0.0.3-maelstrom.mdx
@@ -8,59 +8,59 @@ author: froos
## What's Changed
-- Add chunk, chunkBack and iterBack by @yaxu in https://github.com/tidalcycles/strudel/pull/25
-- Update tutorial.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/37
-- Update tutorial.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/38
-- Compose by @felixroos in https://github.com/tidalcycles/strudel/pull/40
-- Fix polymeter by @yaxu in https://github.com/tidalcycles/strudel/pull/44
-- First run at squeezeBind, ref #32 by @yaxu in https://github.com/tidalcycles/strudel/pull/48
-- Implement `chop()` by @yaxu in https://github.com/tidalcycles/strudel/pull/50
-- OSC and SuperDirt support by @yaxu in https://github.com/tidalcycles/strudel/pull/27
-- More functions by @yaxu in https://github.com/tidalcycles/strudel/pull/56
-- More functions by @yaxu in https://github.com/tidalcycles/strudel/pull/61
-- Separate out strudel.mjs, make index.mjs aggregate module by @yaxu in https://github.com/tidalcycles/strudel/pull/62
-- Speech output by @felixroos in https://github.com/tidalcycles/strudel/pull/67
-- use new fixed version of osc-js package by @felixroos in https://github.com/tidalcycles/strudel/pull/68
-- First effort at rand() by @yaxu in https://github.com/tidalcycles/strudel/pull/69
-- More randomness, fix `rand`, and add `brand`, `irand` and `choose` by @yaxu in https://github.com/tidalcycles/strudel/pull/70
-- webaudio package by @felixroos in https://github.com/tidalcycles/strudel/pull/26
-- Port `perlin` noise, `rangex`, and `palindrome` by @yaxu in https://github.com/tidalcycles/strudel/pull/73
-- More random functions by @yaxu in https://github.com/tidalcycles/strudel/pull/74
-- Try to fix appLeft / appRight by @yaxu in https://github.com/tidalcycles/strudel/pull/75
-- Basic webserial support by @yaxu in https://github.com/tidalcycles/strudel/pull/80
-- Webaudio in REPL by @felixroos in https://github.com/tidalcycles/strudel/pull/77
-- add `striate()` by @yaxu in https://github.com/tidalcycles/strudel/pull/76
-- Tidy up a couple of old files by @mindofmatthew in https://github.com/tidalcycles/strudel/pull/84
-- Add pattern composers, implements #82 by @yaxu in https://github.com/tidalcycles/strudel/pull/83
-- Fiddles with cat/stack by @yaxu in https://github.com/tidalcycles/strudel/pull/90
-- Paper by @felixroos in https://github.com/tidalcycles/strudel/pull/98
-- Change to Affero GPL by @yaxu in https://github.com/tidalcycles/strudel/pull/101
-- Work on Codemirror 6 highlighting by @mindofmatthew in https://github.com/tidalcycles/strudel/pull/102
-- Codemirror 6 by @felixroos in https://github.com/tidalcycles/strudel/pull/97
-- Tune tests by @felixroos in https://github.com/tidalcycles/strudel/pull/104
-- /embed package: web component for repl by @felixroos in https://github.com/tidalcycles/strudel/pull/106
-- Reset, Restart and other composers by @felixroos in https://github.com/tidalcycles/strudel/pull/88
-- Embed style by @felixroos in https://github.com/tidalcycles/strudel/pull/109
-- In source doc by @yaxu in https://github.com/tidalcycles/strudel/pull/105
-- `.brak()`, `.inside()` and `.outside()` by @yaxu in https://github.com/tidalcycles/strudel/pull/112
-- loopAt by @yaxu in https://github.com/tidalcycles/strudel/pull/114
-- Osc timing improvements by @yaxu in https://github.com/tidalcycles/strudel/pull/113
-- react package + vite build by @felixroos in https://github.com/tidalcycles/strudel/pull/116
-- In source doc by @felixroos in https://github.com/tidalcycles/strudel/pull/117
-- fix: #108 by @felixroos in https://github.com/tidalcycles/strudel/pull/123
-- fix: #122 ctrl enter would add newline by @felixroos in https://github.com/tidalcycles/strudel/pull/124
-- Webdirt by @felixroos in https://github.com/tidalcycles/strudel/pull/121
-- Fix link to contributing to tutorial docs by @stephendwolff in https://github.com/tidalcycles/strudel/pull/129
-- Pianoroll enhancements by @felixroos in https://github.com/tidalcycles/strudel/pull/131
-- add createParam + createParams by @felixroos in https://github.com/tidalcycles/strudel/pull/110
-- remove cycle + delta from onTrigger by @felixroos in https://github.com/tidalcycles/strudel/pull/135
-- Scheduler improvements by @felixroos in https://github.com/tidalcycles/strudel/pull/134
-- add onTrigger helper by @felixroos in https://github.com/tidalcycles/strudel/pull/136
+- Add chunk, chunkBack and iterBack by @yaxu in https://codeberg.org/uzu/strudel/pulls/25
+- Update tutorial.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/37
+- Update tutorial.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/38
+- Compose by @felixroos in https://codeberg.org/uzu/strudel/pulls/40
+- Fix polymeter by @yaxu in https://codeberg.org/uzu/strudel/pulls/44
+- First run at squeezeBind, ref #32 by @yaxu in https://codeberg.org/uzu/strudel/pulls/48
+- Implement `chop()` by @yaxu in https://codeberg.org/uzu/strudel/pulls/50
+- OSC and SuperDirt support by @yaxu in https://codeberg.org/uzu/strudel/pulls/27
+- More functions by @yaxu in https://codeberg.org/uzu/strudel/pulls/56
+- More functions by @yaxu in https://codeberg.org/uzu/strudel/pulls/61
+- Separate out strudel.mjs, make index.mjs aggregate module by @yaxu in https://codeberg.org/uzu/strudel/pulls/62
+- Speech output by @felixroos in https://codeberg.org/uzu/strudel/pulls/67
+- use new fixed version of osc-js package by @felixroos in https://codeberg.org/uzu/strudel/pulls/68
+- First effort at rand() by @yaxu in https://codeberg.org/uzu/strudel/pulls/69
+- More randomness, fix `rand`, and add `brand`, `irand` and `choose` by @yaxu in https://codeberg.org/uzu/strudel/pulls/70
+- webaudio package by @felixroos in https://codeberg.org/uzu/strudel/pulls/26
+- Port `perlin` noise, `rangex`, and `palindrome` by @yaxu in https://codeberg.org/uzu/strudel/pulls/73
+- More random functions by @yaxu in https://codeberg.org/uzu/strudel/pulls/74
+- Try to fix appLeft / appRight by @yaxu in https://codeberg.org/uzu/strudel/pulls/75
+- Basic webserial support by @yaxu in https://codeberg.org/uzu/strudel/pulls/80
+- Webaudio in REPL by @felixroos in https://codeberg.org/uzu/strudel/pulls/77
+- add `striate()` by @yaxu in https://codeberg.org/uzu/strudel/pulls/76
+- Tidy up a couple of old files by @mindofmatthew in https://codeberg.org/uzu/strudel/pulls/84
+- Add pattern composers, implements #82 by @yaxu in https://codeberg.org/uzu/strudel/pulls/83
+- Fiddles with cat/stack by @yaxu in https://codeberg.org/uzu/strudel/pulls/90
+- Paper by @felixroos in https://codeberg.org/uzu/strudel/pulls/98
+- Change to Affero GPL by @yaxu in https://codeberg.org/uzu/strudel/pulls/101
+- Work on Codemirror 6 highlighting by @mindofmatthew in https://codeberg.org/uzu/strudel/pulls/102
+- Codemirror 6 by @felixroos in https://codeberg.org/uzu/strudel/pulls/97
+- Tune tests by @felixroos in https://codeberg.org/uzu/strudel/pulls/104
+- /embed package: web component for repl by @felixroos in https://codeberg.org/uzu/strudel/pulls/106
+- Reset, Restart and other composers by @felixroos in https://codeberg.org/uzu/strudel/pulls/88
+- Embed style by @felixroos in https://codeberg.org/uzu/strudel/pulls/109
+- In source doc by @yaxu in https://codeberg.org/uzu/strudel/pulls/105
+- `.brak()`, `.inside()` and `.outside()` by @yaxu in https://codeberg.org/uzu/strudel/pulls/112
+- loopAt by @yaxu in https://codeberg.org/uzu/strudel/pulls/114
+- Osc timing improvements by @yaxu in https://codeberg.org/uzu/strudel/pulls/113
+- react package + vite build by @felixroos in https://codeberg.org/uzu/strudel/pulls/116
+- In source doc by @felixroos in https://codeberg.org/uzu/strudel/pulls/117
+- fix: #108 by @felixroos in https://codeberg.org/uzu/strudel/pulls/123
+- fix: #122 ctrl enter would add newline by @felixroos in https://codeberg.org/uzu/strudel/pulls/124
+- Webdirt by @felixroos in https://codeberg.org/uzu/strudel/pulls/121
+- Fix link to contributing to tutorial docs by @stephendwolff in https://codeberg.org/uzu/strudel/pulls/129
+- Pianoroll enhancements by @felixroos in https://codeberg.org/uzu/strudel/pulls/131
+- add createParam + createParams by @felixroos in https://codeberg.org/uzu/strudel/pulls/110
+- remove cycle + delta from onTrigger by @felixroos in https://codeberg.org/uzu/strudel/pulls/135
+- Scheduler improvements by @felixroos in https://codeberg.org/uzu/strudel/pulls/134
+- add onTrigger helper by @felixroos in https://codeberg.org/uzu/strudel/pulls/136
## New Contributors
-- @bwagner made their first contribution in https://github.com/tidalcycles/strudel/pull/37
-- @mindofmatthew made their first contribution in https://github.com/tidalcycles/strudel/pull/84
-- @stephendwolff made their first contribution in https://github.com/tidalcycles/strudel/pull/129
+- @bwagner made their first contribution in https://codeberg.org/uzu/strudel/pulls/37
+- @mindofmatthew made their first contribution in https://codeberg.org/uzu/strudel/pulls/84
+- @stephendwolff made their first contribution in https://codeberg.org/uzu/strudel/pulls/129
-**Full Changelog**: https://github.com/tidalcycles/strudel/compare/v0.0.2...v0.0.3
+**Full Changelog**: https://codeberg.org/uzu/strudel/compare/v0.0.2...v0.0.3
diff --git a/website/src/content/blog/release-0.0.4-gischt.mdx b/website/src/content/blog/release-0.0.4-gischt.mdx
index 9149137ca..f06dd38e8 100644
--- a/website/src/content/blog/release-0.0.4-gischt.mdx
+++ b/website/src/content/blog/release-0.0.4-gischt.mdx
@@ -8,38 +8,38 @@ author: froos
## What's Changed
-- Webaudio rewrite by @felixroos in https://github.com/tidalcycles/strudel/pull/138
-- Fix createParam() by @yaxu in https://github.com/tidalcycles/strudel/pull/140
-- Soundfont Support by @felixroos in https://github.com/tidalcycles/strudel/pull/139
-- Serial twiddles by @yaxu in https://github.com/tidalcycles/strudel/pull/141
-- Pianoroll Object Support by @felixroos in https://github.com/tidalcycles/strudel/pull/142
-- flash effect on ctrl enter by @felixroos in https://github.com/tidalcycles/strudel/pull/144
-- can now generate short link for sharing by @felixroos in https://github.com/tidalcycles/strudel/pull/146
-- Sampler optimizations and more by @felixroos in https://github.com/tidalcycles/strudel/pull/148
-- Final update to demo.pdf by @yaxu in https://github.com/tidalcycles/strudel/pull/151
-- add webdirt drum samples to prebake for general availability by @larkob in https://github.com/tidalcycles/strudel/pull/150
-- update to tutorial documentation by @larkob in https://github.com/tidalcycles/strudel/pull/162
-- add chooseInWith/chooseCycles by @yaxu in https://github.com/tidalcycles/strudel/pull/166
-- fix: jsdoc comments by @felixroos in https://github.com/tidalcycles/strudel/pull/169
-- Pianoroll fixes by @felixroos in https://github.com/tidalcycles/strudel/pull/163
-- Talk fixes by @felixroos in https://github.com/tidalcycles/strudel/pull/164
-- Amend shapeshifter to allow use of dynamic import by @debrisapron in https://github.com/tidalcycles/strudel/pull/171
-- add more shapeshifter flags by @felixroos in https://github.com/tidalcycles/strudel/pull/99
-- Replace react-codemirror6 with @uiw/react-codemirror by @felixroos in https://github.com/tidalcycles/strudel/pull/173
-- fix some annoying bugs by @felixroos in https://github.com/tidalcycles/strudel/pull/177
-- incorporate elements of randomness to the mini notation by @bpow in https://github.com/tidalcycles/strudel/pull/165
-- replace mocha with vitest by @felixroos in https://github.com/tidalcycles/strudel/pull/175
-- scheduler improvements by @felixroos in https://github.com/tidalcycles/strudel/pull/181
-- Fix codemirror bug by @felixroos in https://github.com/tidalcycles/strudel/pull/186
-- wait for prebake to finish before evaluating by @felixroos in https://github.com/tidalcycles/strudel/pull/189
-- fix regression: old way of setting frequencies was broken by @felixroos in https://github.com/tidalcycles/strudel/pull/190
-- Soundfont file support by @felixroos in https://github.com/tidalcycles/strudel/pull/183
-- change "stride"/"offset" of successive degradeBy/chooseIn by @bpow in https://github.com/tidalcycles/strudel/pull/185
+- Webaudio rewrite by @felixroos in https://codeberg.org/uzu/strudel/pulls/138
+- Fix createParam() by @yaxu in https://codeberg.org/uzu/strudel/pulls/140
+- Soundfont Support by @felixroos in https://codeberg.org/uzu/strudel/pulls/139
+- Serial twiddles by @yaxu in https://codeberg.org/uzu/strudel/pulls/141
+- Pianoroll Object Support by @felixroos in https://codeberg.org/uzu/strudel/pulls/142
+- flash effect on ctrl enter by @felixroos in https://codeberg.org/uzu/strudel/pulls/144
+- can now generate short link for sharing by @felixroos in https://codeberg.org/uzu/strudel/pulls/146
+- Sampler optimizations and more by @felixroos in https://codeberg.org/uzu/strudel/pulls/148
+- Final update to demo.pdf by @yaxu in https://codeberg.org/uzu/strudel/pulls/151
+- add webdirt drum samples to prebake for general availability by @larkob in https://codeberg.org/uzu/strudel/pulls/150
+- update to tutorial documentation by @larkob in https://codeberg.org/uzu/strudel/pulls/162
+- add chooseInWith/chooseCycles by @yaxu in https://codeberg.org/uzu/strudel/pulls/166
+- fix: jsdoc comments by @felixroos in https://codeberg.org/uzu/strudel/pulls/169
+- Pianoroll fixes by @felixroos in https://codeberg.org/uzu/strudel/pulls/163
+- Talk fixes by @felixroos in https://codeberg.org/uzu/strudel/pulls/164
+- Amend shapeshifter to allow use of dynamic import by @debrisapron in https://codeberg.org/uzu/strudel/pulls/171
+- add more shapeshifter flags by @felixroos in https://codeberg.org/uzu/strudel/pulls/99
+- Replace react-codemirror6 with @uiw/react-codemirror by @felixroos in https://codeberg.org/uzu/strudel/pulls/173
+- fix some annoying bugs by @felixroos in https://codeberg.org/uzu/strudel/pulls/177
+- incorporate elements of randomness to the mini notation by @bpow in https://codeberg.org/uzu/strudel/pulls/165
+- replace mocha with vitest by @felixroos in https://codeberg.org/uzu/strudel/pulls/175
+- scheduler improvements by @felixroos in https://codeberg.org/uzu/strudel/pulls/181
+- Fix codemirror bug by @felixroos in https://codeberg.org/uzu/strudel/pulls/186
+- wait for prebake to finish before evaluating by @felixroos in https://codeberg.org/uzu/strudel/pulls/189
+- fix regression: old way of setting frequencies was broken by @felixroos in https://codeberg.org/uzu/strudel/pulls/190
+- Soundfont file support by @felixroos in https://codeberg.org/uzu/strudel/pulls/183
+- change "stride"/"offset" of successive degradeBy/chooseIn by @bpow in https://codeberg.org/uzu/strudel/pulls/185
## New Contributors
-- @larkob made their first contribution in https://github.com/tidalcycles/strudel/pull/150
-- @debrisapron made their first contribution in https://github.com/tidalcycles/strudel/pull/171
-- @bpow made their first contribution in https://github.com/tidalcycles/strudel/pull/165
+- @larkob made their first contribution in https://codeberg.org/uzu/strudel/pulls/150
+- @debrisapron made their first contribution in https://codeberg.org/uzu/strudel/pulls/171
+- @bpow made their first contribution in https://codeberg.org/uzu/strudel/pulls/165
-**Full Changelog**: https://github.com/tidalcycles/strudel/compare/v0.0.3...v0.0.4
+**Full Changelog**: https://codeberg.org/uzu/strudel/compare/v0.0.3...v0.0.4
diff --git a/website/src/content/blog/release-0.3.0-donauwelle.mdx b/website/src/content/blog/release-0.3.0-donauwelle.mdx
index 054b36b31..a551dc53b 100644
--- a/website/src/content/blog/release-0.3.0-donauwelle.mdx
+++ b/website/src/content/blog/release-0.3.0-donauwelle.mdx
@@ -22,44 +22,44 @@ author: froos
## What's Changed
-- Fix numbers in sampler by @felixroos in https://github.com/tidalcycles/strudel/pull/196
-- document random functions by @felixroos in https://github.com/tidalcycles/strudel/pull/199
-- add rollup-plugin-visualizer to build by @felixroos in https://github.com/tidalcycles/strudel/pull/200
-- add vowel to .out by @felixroos in https://github.com/tidalcycles/strudel/pull/201
-- Coarse crush shape by @felixroos in https://github.com/tidalcycles/strudel/pull/205
-- Webaudio guide by @felixroos in https://github.com/tidalcycles/strudel/pull/207
-- Even more docs by @felixroos in https://github.com/tidalcycles/strudel/pull/212
-- Just another docs PR by @felixroos in https://github.com/tidalcycles/strudel/pull/215
-- sampler features + fixes by @felixroos in https://github.com/tidalcycles/strudel/pull/217
-- samples now have envelopes by @felixroos in https://github.com/tidalcycles/strudel/pull/218
-- encapsulate webaudio output by @felixroos in https://github.com/tidalcycles/strudel/pull/219
-- Fix squeeze join by @yaxu in https://github.com/tidalcycles/strudel/pull/220
-- Feedback Delay by @felixroos in https://github.com/tidalcycles/strudel/pull/213
-- support negative speeds by @felixroos in https://github.com/tidalcycles/strudel/pull/222
-- focus tweak for squeezeJoin - another go at fixing #216 by @yaxu in https://github.com/tidalcycles/strudel/pull/221
-- Reverb by @felixroos in https://github.com/tidalcycles/strudel/pull/224
-- fix fastgap for events that go across cycle boundaries by @yaxu in https://github.com/tidalcycles/strudel/pull/225
-- Core util tests by @mystery-house in https://github.com/tidalcycles/strudel/pull/226
-- Refactor tunes away from tone by @felixroos in https://github.com/tidalcycles/strudel/pull/230
-- Just another docs branch by @felixroos in https://github.com/tidalcycles/strudel/pull/228
-- Patternify range by @yaxu in https://github.com/tidalcycles/strudel/pull/231
-- Out by default by @felixroos in https://github.com/tidalcycles/strudel/pull/232
-- Fix zero length queries WIP by @yaxu in https://github.com/tidalcycles/strudel/pull/234
-- add vcsl sample library by @felixroos in https://github.com/tidalcycles/strudel/pull/235
-- fx on stereo speakers by @felixroos in https://github.com/tidalcycles/strudel/pull/236
-- Tidal drum machines by @felixroos in https://github.com/tidalcycles/strudel/pull/237
-- Object arithmetic by @felixroos in https://github.com/tidalcycles/strudel/pull/238
-- Load samples from url by @felixroos in https://github.com/tidalcycles/strudel/pull/239
-- feat: support github: links by @felixroos in https://github.com/tidalcycles/strudel/pull/240
-- in source example tests by @felixroos in https://github.com/tidalcycles/strudel/pull/242
-- Readme + TLC by @felixroos in https://github.com/tidalcycles/strudel/pull/244
-- patchday by @felixroos in https://github.com/tidalcycles/strudel/pull/246
-- Some tunes by @felixroos in https://github.com/tidalcycles/strudel/pull/247
-- snapshot tests on shared snippets by @felixroos in https://github.com/tidalcycles/strudel/pull/243
-- General purpose scheduler by @felixroos in https://github.com/tidalcycles/strudel/pull/248
+- Fix numbers in sampler by @felixroos in https://codeberg.org/uzu/strudel/pulls/196
+- document random functions by @felixroos in https://codeberg.org/uzu/strudel/pulls/199
+- add rollup-plugin-visualizer to build by @felixroos in https://codeberg.org/uzu/strudel/pulls/200
+- add vowel to .out by @felixroos in https://codeberg.org/uzu/strudel/pulls/201
+- Coarse crush shape by @felixroos in https://codeberg.org/uzu/strudel/pulls/205
+- Webaudio guide by @felixroos in https://codeberg.org/uzu/strudel/pulls/207
+- Even more docs by @felixroos in https://codeberg.org/uzu/strudel/pulls/212
+- Just another docs PR by @felixroos in https://codeberg.org/uzu/strudel/pulls/215
+- sampler features + fixes by @felixroos in https://codeberg.org/uzu/strudel/pulls/217
+- samples now have envelopes by @felixroos in https://codeberg.org/uzu/strudel/pulls/218
+- encapsulate webaudio output by @felixroos in https://codeberg.org/uzu/strudel/pulls/219
+- Fix squeeze join by @yaxu in https://codeberg.org/uzu/strudel/pulls/220
+- Feedback Delay by @felixroos in https://codeberg.org/uzu/strudel/pulls/213
+- support negative speeds by @felixroos in https://codeberg.org/uzu/strudel/pulls/222
+- focus tweak for squeezeJoin - another go at fixing #216 by @yaxu in https://codeberg.org/uzu/strudel/pulls/221
+- Reverb by @felixroos in https://codeberg.org/uzu/strudel/pulls/224
+- fix fastgap for events that go across cycle boundaries by @yaxu in https://codeberg.org/uzu/strudel/pulls/225
+- Core util tests by @mystery-house in https://codeberg.org/uzu/strudel/pulls/226
+- Refactor tunes away from tone by @felixroos in https://codeberg.org/uzu/strudel/pulls/230
+- Just another docs branch by @felixroos in https://codeberg.org/uzu/strudel/pulls/228
+- Patternify range by @yaxu in https://codeberg.org/uzu/strudel/pulls/231
+- Out by default by @felixroos in https://codeberg.org/uzu/strudel/pulls/232
+- Fix zero length queries WIP by @yaxu in https://codeberg.org/uzu/strudel/pulls/234
+- add vcsl sample library by @felixroos in https://codeberg.org/uzu/strudel/pulls/235
+- fx on stereo speakers by @felixroos in https://codeberg.org/uzu/strudel/pulls/236
+- Tidal drum machines by @felixroos in https://codeberg.org/uzu/strudel/pulls/237
+- Object arithmetic by @felixroos in https://codeberg.org/uzu/strudel/pulls/238
+- Load samples from url by @felixroos in https://codeberg.org/uzu/strudel/pulls/239
+- feat: support github: links by @felixroos in https://codeberg.org/uzu/strudel/pulls/240
+- in source example tests by @felixroos in https://codeberg.org/uzu/strudel/pulls/242
+- Readme + TLC by @felixroos in https://codeberg.org/uzu/strudel/pulls/244
+- patchday by @felixroos in https://codeberg.org/uzu/strudel/pulls/246
+- Some tunes by @felixroos in https://codeberg.org/uzu/strudel/pulls/247
+- snapshot tests on shared snippets by @felixroos in https://codeberg.org/uzu/strudel/pulls/243
+- General purpose scheduler by @felixroos in https://codeberg.org/uzu/strudel/pulls/248
## New Contributors
-- @mystery-house made their first contribution in https://github.com/tidalcycles/strudel/pull/226
+- @mystery-house made their first contribution in https://codeberg.org/uzu/strudel/pulls/226
-**Full Changelog**: https://github.com/tidalcycles/strudel/compare/v0.0.4...v0.3.0
+**Full Changelog**: https://codeberg.org/uzu/strudel/compare/v0.0.4...v0.3.0
diff --git a/website/src/content/blog/release-0.4.0-brandung.mdx b/website/src/content/blog/release-0.4.0-brandung.mdx
index 06023662b..01e2f9b89 100644
--- a/website/src/content/blog/release-0.4.0-brandung.mdx
+++ b/website/src/content/blog/release-0.4.0-brandung.mdx
@@ -8,8 +8,8 @@ author: froos
## What's Changed
-- new transpiler based on acorn by @felixroos in https://github.com/tidalcycles/strudel/pull/249
-- Webaudio build by @felixroos in https://github.com/tidalcycles/strudel/pull/250
-- Repl refactoring by @felixroos in https://github.com/tidalcycles/strudel/pull/255
+- new transpiler based on acorn by @felixroos in https://codeberg.org/uzu/strudel/pulls/249
+- Webaudio build by @felixroos in https://codeberg.org/uzu/strudel/pulls/250
+- Repl refactoring by @felixroos in https://codeberg.org/uzu/strudel/pulls/255
-**Full Changelog**: https://github.com/tidalcycles/strudel/compare/v0.3.0...v0.4.0
+**Full Changelog**: https://codeberg.org/uzu/strudel/compare/v0.3.0...v0.4.0
diff --git a/website/src/content/blog/release-0.5.0-wirbel.mdx b/website/src/content/blog/release-0.5.0-wirbel.mdx
index 032639fd9..3c1e1bfe2 100644
--- a/website/src/content/blog/release-0.5.0-wirbel.mdx
+++ b/website/src/content/blog/release-0.5.0-wirbel.mdx
@@ -26,34 +26,34 @@ author: froos
## What's Changed
-- Binaries by @felixroos in https://github.com/tidalcycles/strudel/pull/254
-- fix tutorial bugs by @felixroos in https://github.com/tidalcycles/strudel/pull/263
-- fix performance bottleneck by @felixroos in https://github.com/tidalcycles/strudel/pull/266
-- Tidying up core by @yaxu in https://github.com/tidalcycles/strudel/pull/256
-- tonal update with fixed memory leak by @felixroos in https://github.com/tidalcycles/strudel/pull/272
-- add eslint by @felixroos in https://github.com/tidalcycles/strudel/pull/271
-- release version bumps by @felixroos in https://github.com/tidalcycles/strudel/pull/273
-- Support sending CRC16 bytes with serial messages by @yaxu in https://github.com/tidalcycles/strudel/pull/276
-- add licenses / credits to all tunes + remove some by @felixroos in https://github.com/tidalcycles/strudel/pull/277
-- add basic csound output by @felixroos in https://github.com/tidalcycles/strudel/pull/275
-- do not recompile orc by @felixroos in https://github.com/tidalcycles/strudel/pull/278
-- implement collect + arp function by @felixroos in https://github.com/tidalcycles/strudel/pull/281
-- Switch 'operators' from .whatHow to .what.how by @yaxu in https://github.com/tidalcycles/strudel/pull/285
-- Fancy hap show, include part in snapshots by @yaxu in https://github.com/tidalcycles/strudel/pull/291
-- Reorganise pattern.mjs with a 'toplevel first' regime by @yaxu in https://github.com/tidalcycles/strudel/pull/286
-- add prettier task by @felixroos in https://github.com/tidalcycles/strudel/pull/296
-- Move stuff to new register function by @felixroos in https://github.com/tidalcycles/strudel/pull/295
-- can now add bare numbers to numeral object props by @felixroos in https://github.com/tidalcycles/strudel/pull/287
-- update vitest by @felixroos in https://github.com/tidalcycles/strudel/pull/297
-- remove whitespace from highlighted region by @felixroos in https://github.com/tidalcycles/strudel/pull/298
-- .defragmentHaps() for merging touching haps that share a whole and value by @yaxu in https://github.com/tidalcycles/strudel/pull/299
-- fix whitespace trimming by @felixroos in https://github.com/tidalcycles/strudel/pull/300
-- add freq support to sampler by @felixroos in https://github.com/tidalcycles/strudel/pull/301
-- add lint + prettier check before test by @felixroos in https://github.com/tidalcycles/strudel/pull/305
-- Updated csoundm to use the register facility . by @gogins in https://github.com/tidalcycles/strudel/pull/303
+- Binaries by @felixroos in https://codeberg.org/uzu/strudel/pulls/254
+- fix tutorial bugs by @felixroos in https://codeberg.org/uzu/strudel/pulls/263
+- fix performance bottleneck by @felixroos in https://codeberg.org/uzu/strudel/pulls/266
+- Tidying up core by @yaxu in https://codeberg.org/uzu/strudel/pulls/256
+- tonal update with fixed memory leak by @felixroos in https://codeberg.org/uzu/strudel/pulls/272
+- add eslint by @felixroos in https://codeberg.org/uzu/strudel/pulls/271
+- release version bumps by @felixroos in https://codeberg.org/uzu/strudel/pulls/273
+- Support sending CRC16 bytes with serial messages by @yaxu in https://codeberg.org/uzu/strudel/pulls/276
+- add licenses / credits to all tunes + remove some by @felixroos in https://codeberg.org/uzu/strudel/pulls/277
+- add basic csound output by @felixroos in https://codeberg.org/uzu/strudel/pulls/275
+- do not recompile orc by @felixroos in https://codeberg.org/uzu/strudel/pulls/278
+- implement collect + arp function by @felixroos in https://codeberg.org/uzu/strudel/pulls/281
+- Switch 'operators' from .whatHow to .what.how by @yaxu in https://codeberg.org/uzu/strudel/pulls/285
+- Fancy hap show, include part in snapshots by @yaxu in https://codeberg.org/uzu/strudel/pulls/291
+- Reorganise pattern.mjs with a 'toplevel first' regime by @yaxu in https://codeberg.org/uzu/strudel/pulls/286
+- add prettier task by @felixroos in https://codeberg.org/uzu/strudel/pulls/296
+- Move stuff to new register function by @felixroos in https://codeberg.org/uzu/strudel/pulls/295
+- can now add bare numbers to numeral object props by @felixroos in https://codeberg.org/uzu/strudel/pulls/287
+- update vitest by @felixroos in https://codeberg.org/uzu/strudel/pulls/297
+- remove whitespace from highlighted region by @felixroos in https://codeberg.org/uzu/strudel/pulls/298
+- .defragmentHaps() for merging touching haps that share a whole and value by @yaxu in https://codeberg.org/uzu/strudel/pulls/299
+- fix whitespace trimming by @felixroos in https://codeberg.org/uzu/strudel/pulls/300
+- add freq support to sampler by @felixroos in https://codeberg.org/uzu/strudel/pulls/301
+- add lint + prettier check before test by @felixroos in https://codeberg.org/uzu/strudel/pulls/305
+- Updated csoundm to use the register facility . by @gogins in https://codeberg.org/uzu/strudel/pulls/303
## New Contributors
-- @gogins made their first contribution in https://github.com/tidalcycles/strudel/pull/303
+- @gogins made their first contribution in https://codeberg.org/uzu/strudel/pulls/303
-**Full Changelog**: https://github.com/tidalcycles/strudel/compare/v0.4.0...v0.5.0
+**Full Changelog**: https://codeberg.org/uzu/strudel/compare/v0.4.0...v0.5.0
diff --git a/website/src/content/blog/release-0.6.0-zimtschnecke.mdx b/website/src/content/blog/release-0.6.0-zimtschnecke.mdx
index 2736974bf..19536581d 100644
--- a/website/src/content/blog/release-0.6.0-zimtschnecke.mdx
+++ b/website/src/content/blog/release-0.6.0-zimtschnecke.mdx
@@ -26,59 +26,59 @@ author: froos
## What's Changed
-- support freq in pianoroll by @felixroos in https://github.com/tidalcycles/strudel/pull/308
-- ICLC2023 paper WIP by @yaxu in https://github.com/tidalcycles/strudel/pull/306
-- fix: copy share link to clipboard was broken for some browsers by @felixroos in https://github.com/tidalcycles/strudel/pull/311
-- Jsdoc component by @felixroos in https://github.com/tidalcycles/strudel/pull/312
-- object support for .scale by @felixroos in https://github.com/tidalcycles/strudel/pull/307
-- Astro build by @felixroos in https://github.com/tidalcycles/strudel/pull/315
-- Reference tab sort by @felixroos in https://github.com/tidalcycles/strudel/pull/318
-- tutorial updates by @jarmitage in https://github.com/tidalcycles/strudel/pull/320
-- support notes without octave by @felixroos in https://github.com/tidalcycles/strudel/pull/323
-- mini repl improvements by @felixroos in https://github.com/tidalcycles/strudel/pull/324
-- fix: workaround Object.assign globalThis by @felixroos in https://github.com/tidalcycles/strudel/pull/326
-- add examples route by @felixroos in https://github.com/tidalcycles/strudel/pull/327
-- add my-patterns by @felixroos in https://github.com/tidalcycles/strudel/pull/328
-- my-patterns build + deploy by @felixroos in https://github.com/tidalcycles/strudel/pull/329
-- my-patterns: fix paths + update readme by @felixroos in https://github.com/tidalcycles/strudel/pull/330
-- improve displaying 's' in pianoroll by @felixroos in https://github.com/tidalcycles/strudel/pull/331
-- fix: can now multiply floats in mini notation by @felixroos in https://github.com/tidalcycles/strudel/pull/332
-- Embed mode improvements by @felixroos in https://github.com/tidalcycles/strudel/pull/333
-- testing + docs docs by @felixroos in https://github.com/tidalcycles/strudel/pull/334
-- animate mvp by @felixroos in https://github.com/tidalcycles/strudel/pull/335
-- Tidy parser, implement polymeters by @yaxu in https://github.com/tidalcycles/strudel/pull/336
-- animation options by @felixroos in https://github.com/tidalcycles/strudel/pull/337
-- move /my-patterns to /swatch by @yaxu in https://github.com/tidalcycles/strudel/pull/338
-- more animate functions + mini repl fix by @felixroos in https://github.com/tidalcycles/strudel/pull/340
-- Patternify euclid, fast, slow and polymeter step parameters in mininotation by @yaxu in https://github.com/tidalcycles/strudel/pull/341
-- fixes #346 by @felixroos in https://github.com/tidalcycles/strudel/pull/347
-- Fix prebake base path by @felixroos in https://github.com/tidalcycles/strudel/pull/345
-- Fix Bjorklund by @yaxu in https://github.com/tidalcycles/strudel/pull/343
-- docs: tidal comparison + add global fx + add missing sampler fx by @felixroos in https://github.com/tidalcycles/strudel/pull/356
-- Fix .out(), renaming webaudio's out() to webaudio() by @yaxu in https://github.com/tidalcycles/strudel/pull/361
-- Support for multiple mininotation operators by @yaxu in https://github.com/tidalcycles/strudel/pull/350
-- doc structuring by @felixroos in https://github.com/tidalcycles/strudel/pull/360
-- add https to url by @urswilke in https://github.com/tidalcycles/strudel/pull/364
-- document more functions + change arp join by @felixroos in https://github.com/tidalcycles/strudel/pull/369
-- improve new draw logic by @felixroos in https://github.com/tidalcycles/strudel/pull/372
-- Draw fixes by @felixroos in https://github.com/tidalcycles/strudel/pull/377
-- update my-patterns instructions by @felixroos in https://github.com/tidalcycles/strudel/pull/384
-- docs: use note instead of n to mitigate confusion by @felixroos in https://github.com/tidalcycles/strudel/pull/385
-- add run + test + docs by @felixroos in https://github.com/tidalcycles/strudel/pull/386
-- Rename a to angle by @felixroos in https://github.com/tidalcycles/strudel/pull/387
-- document csound by @felixroos in https://github.com/tidalcycles/strudel/pull/391
-- Notes are not essential :) by @yaxu in https://github.com/tidalcycles/strudel/pull/393
-- add ribbon + test + docs by @felixroos in https://github.com/tidalcycles/strudel/pull/388
-- Add tidal-drum-patterns to examples by @urswilke in https://github.com/tidalcycles/strudel/pull/379
-- add pattern methods hurry, press and pressBy by @yaxu in https://github.com/tidalcycles/strudel/pull/397
-- proper builds + use pnpm workspaces by @felixroos in https://github.com/tidalcycles/strudel/pull/396
-- fix: minirepl styles by @felixroos in https://github.com/tidalcycles/strudel/pull/398
-- can now await initAudio + initAudioOnFirstClick by @felixroos in https://github.com/tidalcycles/strudel/pull/399
-- release webaudio by @felixroos in https://github.com/tidalcycles/strudel/pull/400
+- support freq in pianoroll by @felixroos in https://codeberg.org/uzu/strudel/pulls/308
+- ICLC2023 paper WIP by @yaxu in https://codeberg.org/uzu/strudel/pulls/306
+- fix: copy share link to clipboard was broken for some browsers by @felixroos in https://codeberg.org/uzu/strudel/pulls/311
+- Jsdoc component by @felixroos in https://codeberg.org/uzu/strudel/pulls/312
+- object support for .scale by @felixroos in https://codeberg.org/uzu/strudel/pulls/307
+- Astro build by @felixroos in https://codeberg.org/uzu/strudel/pulls/315
+- Reference tab sort by @felixroos in https://codeberg.org/uzu/strudel/pulls/318
+- tutorial updates by @jarmitage in https://codeberg.org/uzu/strudel/pulls/320
+- support notes without octave by @felixroos in https://codeberg.org/uzu/strudel/pulls/323
+- mini repl improvements by @felixroos in https://codeberg.org/uzu/strudel/pulls/324
+- fix: workaround Object.assign globalThis by @felixroos in https://codeberg.org/uzu/strudel/pulls/326
+- add examples route by @felixroos in https://codeberg.org/uzu/strudel/pulls/327
+- add my-patterns by @felixroos in https://codeberg.org/uzu/strudel/pulls/328
+- my-patterns build + deploy by @felixroos in https://codeberg.org/uzu/strudel/pulls/329
+- my-patterns: fix paths + update readme by @felixroos in https://codeberg.org/uzu/strudel/pulls/330
+- improve displaying 's' in pianoroll by @felixroos in https://codeberg.org/uzu/strudel/pulls/331
+- fix: can now multiply floats in mini notation by @felixroos in https://codeberg.org/uzu/strudel/pulls/332
+- Embed mode improvements by @felixroos in https://codeberg.org/uzu/strudel/pulls/333
+- testing + docs docs by @felixroos in https://codeberg.org/uzu/strudel/pulls/334
+- animate mvp by @felixroos in https://codeberg.org/uzu/strudel/pulls/335
+- Tidy parser, implement polymeters by @yaxu in https://codeberg.org/uzu/strudel/pulls/336
+- animation options by @felixroos in https://codeberg.org/uzu/strudel/pulls/337
+- move /my-patterns to /swatch by @yaxu in https://codeberg.org/uzu/strudel/pulls/338
+- more animate functions + mini repl fix by @felixroos in https://codeberg.org/uzu/strudel/pulls/340
+- Patternify euclid, fast, slow and polymeter step parameters in mininotation by @yaxu in https://codeberg.org/uzu/strudel/pulls/341
+- fixes #346 by @felixroos in https://codeberg.org/uzu/strudel/pulls/347
+- Fix prebake base path by @felixroos in https://codeberg.org/uzu/strudel/pulls/345
+- Fix Bjorklund by @yaxu in https://codeberg.org/uzu/strudel/pulls/343
+- docs: tidal comparison + add global fx + add missing sampler fx by @felixroos in https://codeberg.org/uzu/strudel/pulls/356
+- Fix .out(), renaming webaudio's out() to webaudio() by @yaxu in https://codeberg.org/uzu/strudel/pulls/361
+- Support for multiple mininotation operators by @yaxu in https://codeberg.org/uzu/strudel/pulls/350
+- doc structuring by @felixroos in https://codeberg.org/uzu/strudel/pulls/360
+- add https to url by @urswilke in https://codeberg.org/uzu/strudel/pulls/364
+- document more functions + change arp join by @felixroos in https://codeberg.org/uzu/strudel/pulls/369
+- improve new draw logic by @felixroos in https://codeberg.org/uzu/strudel/pulls/372
+- Draw fixes by @felixroos in https://codeberg.org/uzu/strudel/pulls/377
+- update my-patterns instructions by @felixroos in https://codeberg.org/uzu/strudel/pulls/384
+- docs: use note instead of n to mitigate confusion by @felixroos in https://codeberg.org/uzu/strudel/pulls/385
+- add run + test + docs by @felixroos in https://codeberg.org/uzu/strudel/pulls/386
+- Rename a to angle by @felixroos in https://codeberg.org/uzu/strudel/pulls/387
+- document csound by @felixroos in https://codeberg.org/uzu/strudel/pulls/391
+- Notes are not essential :) by @yaxu in https://codeberg.org/uzu/strudel/pulls/393
+- add ribbon + test + docs by @felixroos in https://codeberg.org/uzu/strudel/pulls/388
+- Add tidal-drum-patterns to examples by @urswilke in https://codeberg.org/uzu/strudel/pulls/379
+- add pattern methods hurry, press and pressBy by @yaxu in https://codeberg.org/uzu/strudel/pulls/397
+- proper builds + use pnpm workspaces by @felixroos in https://codeberg.org/uzu/strudel/pulls/396
+- fix: minirepl styles by @felixroos in https://codeberg.org/uzu/strudel/pulls/398
+- can now await initAudio + initAudioOnFirstClick by @felixroos in https://codeberg.org/uzu/strudel/pulls/399
+- release webaudio by @felixroos in https://codeberg.org/uzu/strudel/pulls/400
## New Contributors
-- @jarmitage made their first contribution in https://github.com/tidalcycles/strudel/pull/320
-- @urswilke made their first contribution in https://github.com/tidalcycles/strudel/pull/364
+- @jarmitage made their first contribution in https://codeberg.org/uzu/strudel/pulls/320
+- @urswilke made their first contribution in https://codeberg.org/uzu/strudel/pulls/364
-**Full Changelog**: https://github.com/tidalcycles/strudel/compare/v0.5.0...v0.6.0
+**Full Changelog**: https://codeberg.org/uzu/strudel/compare/v0.5.0...v0.6.0
diff --git a/website/src/content/blog/release-0.7.0-zuckerguss.mdx b/website/src/content/blog/release-0.7.0-zuckerguss.mdx
index 0a3a4649b..f67deee73 100644
--- a/website/src/content/blog/release-0.7.0-zuckerguss.mdx
+++ b/website/src/content/blog/release-0.7.0-zuckerguss.mdx
@@ -23,66 +23,66 @@ author: froos
## What's Changed
-- pin @csound/browser to 6.18.3 + bump by @felixroos in https://github.com/tidalcycles/strudel/pull/403
-- update csound + fix sound output by @felixroos in https://github.com/tidalcycles/strudel/pull/404
-- fix: share url on subpath by @felixroos in https://github.com/tidalcycles/strudel/pull/405
-- add shabda doc by @felixroos in https://github.com/tidalcycles/strudel/pull/407
-- Update effects.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/410
-- improve effects doc by @felixroos in https://github.com/tidalcycles/strudel/pull/409
-- google gtfo by @felixroos in https://github.com/tidalcycles/strudel/pull/413
-- improve samples doc by @felixroos in https://github.com/tidalcycles/strudel/pull/411
-- PWA with offline support by @felixroos in https://github.com/tidalcycles/strudel/pull/417
-- add caching strategy for missing file types + cache all samples loaded from github by @felixroos in https://github.com/tidalcycles/strudel/pull/419
-- add more offline caching by @felixroos in https://github.com/tidalcycles/strudel/pull/421
-- add cdn.freesound to cache list by @felixroos in https://github.com/tidalcycles/strudel/pull/425
-- minirepl: add keyboard shortcuts by @felixroos in https://github.com/tidalcycles/strudel/pull/429
-- Themes by @felixroos in https://github.com/tidalcycles/strudel/pull/431
-- autocomplete preparations by @felixroos in https://github.com/tidalcycles/strudel/pull/427
-- Fix anchors by @felixroos in https://github.com/tidalcycles/strudel/pull/433
-- Update code.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/436
-- Update mini-notation.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/437
-- Update synths.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/438
-- FIXES: Warning about jsxBracketSameLine deprecation by @bwagner in https://github.com/tidalcycles/strudel/pull/461
-- Composable functions by @yaxu in https://github.com/tidalcycles/strudel/pull/390
-- weave and weaveWith by @yaxu in https://github.com/tidalcycles/strudel/pull/465
-- slice and splice by @yaxu in https://github.com/tidalcycles/strudel/pull/466
-- fix: osc should not return a promise by @felixroos in https://github.com/tidalcycles/strudel/pull/472
-- FIXES: freqs instead of pitches by @bwagner in https://github.com/tidalcycles/strudel/pull/464
-- Update input-output.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/471
-- settings tab with vim / emacs modes + additional themes and fonts by @felixroos in https://github.com/tidalcycles/strudel/pull/467
-- fix: hash links by @felixroos in https://github.com/tidalcycles/strudel/pull/473
-- midi cc support by @felixroos in https://github.com/tidalcycles/strudel/pull/478
-- Fix array args by @felixroos in https://github.com/tidalcycles/strudel/pull/480
-- docs: packages + offline by @felixroos in https://github.com/tidalcycles/strudel/pull/482
-- Update mini-notation.mdx by @yaxu in https://github.com/tidalcycles/strudel/pull/365
-- Revert "Another attempt at composable functions - WIP (#390)" by @felixroos in https://github.com/tidalcycles/strudel/pull/484
-- fix app height by @felixroos in https://github.com/tidalcycles/strudel/pull/485
-- add algolia creds + optimize sidebar for crawling by @felixroos in https://github.com/tidalcycles/strudel/pull/488
-- refactor react package by @felixroos in https://github.com/tidalcycles/strudel/pull/490
-- react style fixes by @felixroos in https://github.com/tidalcycles/strudel/pull/491
-- implement cps in scheduler by @felixroos in https://github.com/tidalcycles/strudel/pull/493
-- Add control aliases by @yaxu in https://github.com/tidalcycles/strudel/pull/497
-- fix: nano-repl highlighting by @felixroos in https://github.com/tidalcycles/strudel/pull/501
-- Reinstate slice and splice by @yaxu in https://github.com/tidalcycles/strudel/pull/500
-- can now use : as a replacement for space in scales by @felixroos in https://github.com/tidalcycles/strudel/pull/502
-- Support list syntax in mininotation by @yaxu in https://github.com/tidalcycles/strudel/pull/512
-- update react to 18 by @felixroos in https://github.com/tidalcycles/strudel/pull/514
-- add arrange function by @felixroos in https://github.com/tidalcycles/strudel/pull/508
-- Update README.md by @bwagner in https://github.com/tidalcycles/strudel/pull/474
-- add 2 illegible fonts by @felixroos in https://github.com/tidalcycles/strudel/pull/518
-- registerSound API + improved sounds tab + regroup soundfonts by @felixroos in https://github.com/tidalcycles/strudel/pull/516
-- fix: envelopes in chrome by @felixroos in https://github.com/tidalcycles/strudel/pull/521
-- Update samples.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/524
-- Update intro.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/525
-- fix(footer): fix link to tidalcycles by @revolunet in https://github.com/tidalcycles/strudel/pull/529
-- FIXES: alias pm for polymeter by @bwagner in https://github.com/tidalcycles/strudel/pull/527
-- Maintain random seed state in parser, not globally by @ijc8 in https://github.com/tidalcycles/strudel/pull/531
-- feat: add freq support to gm soundfonts by @felixroos in https://github.com/tidalcycles/strudel/pull/534
-- Update lerna by @felixroos in https://github.com/tidalcycles/strudel/pull/535
+- pin @csound/browser to 6.18.3 + bump by @felixroos in https://codeberg.org/uzu/strudel/pulls/403
+- update csound + fix sound output by @felixroos in https://codeberg.org/uzu/strudel/pulls/404
+- fix: share url on subpath by @felixroos in https://codeberg.org/uzu/strudel/pulls/405
+- add shabda doc by @felixroos in https://codeberg.org/uzu/strudel/pulls/407
+- Update effects.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/410
+- improve effects doc by @felixroos in https://codeberg.org/uzu/strudel/pulls/409
+- google gtfo by @felixroos in https://codeberg.org/uzu/strudel/pulls/413
+- improve samples doc by @felixroos in https://codeberg.org/uzu/strudel/pulls/411
+- PWA with offline support by @felixroos in https://codeberg.org/uzu/strudel/pulls/417
+- add caching strategy for missing file types + cache all samples loaded from github by @felixroos in https://codeberg.org/uzu/strudel/pulls/419
+- add more offline caching by @felixroos in https://codeberg.org/uzu/strudel/pulls/421
+- add cdn.freesound to cache list by @felixroos in https://codeberg.org/uzu/strudel/pulls/425
+- minirepl: add keyboard shortcuts by @felixroos in https://codeberg.org/uzu/strudel/pulls/429
+- Themes by @felixroos in https://codeberg.org/uzu/strudel/pulls/431
+- autocomplete preparations by @felixroos in https://codeberg.org/uzu/strudel/pulls/427
+- Fix anchors by @felixroos in https://codeberg.org/uzu/strudel/pulls/433
+- Update code.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/436
+- Update mini-notation.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/437
+- Update synths.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/438
+- FIXES: Warning about jsxBracketSameLine deprecation by @bwagner in https://codeberg.org/uzu/strudel/pulls/461
+- Composable functions by @yaxu in https://codeberg.org/uzu/strudel/pulls/390
+- weave and weaveWith by @yaxu in https://codeberg.org/uzu/strudel/pulls/465
+- slice and splice by @yaxu in https://codeberg.org/uzu/strudel/pulls/466
+- fix: osc should not return a promise by @felixroos in https://codeberg.org/uzu/strudel/pulls/472
+- FIXES: freqs instead of pitches by @bwagner in https://codeberg.org/uzu/strudel/pulls/464
+- Update input-output.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/471
+- settings tab with vim / emacs modes + additional themes and fonts by @felixroos in https://codeberg.org/uzu/strudel/pulls/467
+- fix: hash links by @felixroos in https://codeberg.org/uzu/strudel/pulls/473
+- midi cc support by @felixroos in https://codeberg.org/uzu/strudel/pulls/478
+- Fix array args by @felixroos in https://codeberg.org/uzu/strudel/pulls/480
+- docs: packages + offline by @felixroos in https://codeberg.org/uzu/strudel/pulls/482
+- Update mini-notation.mdx by @yaxu in https://codeberg.org/uzu/strudel/pulls/365
+- Revert "Another attempt at composable functions - WIP (#390)" by @felixroos in https://codeberg.org/uzu/strudel/pulls/484
+- fix app height by @felixroos in https://codeberg.org/uzu/strudel/pulls/485
+- add algolia creds + optimize sidebar for crawling by @felixroos in https://codeberg.org/uzu/strudel/pulls/488
+- refactor react package by @felixroos in https://codeberg.org/uzu/strudel/pulls/490
+- react style fixes by @felixroos in https://codeberg.org/uzu/strudel/pulls/491
+- implement cps in scheduler by @felixroos in https://codeberg.org/uzu/strudel/pulls/493
+- Add control aliases by @yaxu in https://codeberg.org/uzu/strudel/pulls/497
+- fix: nano-repl highlighting by @felixroos in https://codeberg.org/uzu/strudel/pulls/501
+- Reinstate slice and splice by @yaxu in https://codeberg.org/uzu/strudel/pulls/500
+- can now use : as a replacement for space in scales by @felixroos in https://codeberg.org/uzu/strudel/pulls/502
+- Support list syntax in mininotation by @yaxu in https://codeberg.org/uzu/strudel/pulls/512
+- update react to 18 by @felixroos in https://codeberg.org/uzu/strudel/pulls/514
+- add arrange function by @felixroos in https://codeberg.org/uzu/strudel/pulls/508
+- Update README.md by @bwagner in https://codeberg.org/uzu/strudel/pulls/474
+- add 2 illegible fonts by @felixroos in https://codeberg.org/uzu/strudel/pulls/518
+- registerSound API + improved sounds tab + regroup soundfonts by @felixroos in https://codeberg.org/uzu/strudel/pulls/516
+- fix: envelopes in chrome by @felixroos in https://codeberg.org/uzu/strudel/pulls/521
+- Update samples.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/524
+- Update intro.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/525
+- fix(footer): fix link to tidalcycles by @revolunet in https://codeberg.org/uzu/strudel/pulls/529
+- FIXES: alias pm for polymeter by @bwagner in https://codeberg.org/uzu/strudel/pulls/527
+- Maintain random seed state in parser, not globally by @ijc8 in https://codeberg.org/uzu/strudel/pulls/531
+- feat: add freq support to gm soundfonts by @felixroos in https://codeberg.org/uzu/strudel/pulls/534
+- Update lerna by @felixroos in https://codeberg.org/uzu/strudel/pulls/535
## New Contributors
-- @revolunet made their first contribution in https://github.com/tidalcycles/strudel/pull/529
-- @ijc8 made their first contribution in https://github.com/tidalcycles/strudel/pull/531
+- @revolunet made their first contribution in https://codeberg.org/uzu/strudel/pulls/529
+- @ijc8 made their first contribution in https://codeberg.org/uzu/strudel/pulls/531
-**Full Changelog**: https://github.com/tidalcycles/strudel/compare/v0.6.0...v0.7.0
+**Full Changelog**: https://codeberg.org/uzu/strudel/compare/v0.6.0...v0.7.0
diff --git a/website/src/content/blog/release-0.8.0-himbeermuffin.mdx b/website/src/content/blog/release-0.8.0-himbeermuffin.mdx
index 7620140b5..babab5954 100644
--- a/website/src/content/blog/release-0.8.0-himbeermuffin.mdx
+++ b/website/src/content/blog/release-0.8.0-himbeermuffin.mdx
@@ -82,49 +82,49 @@ A big thanks to all the contributors!
## What's Changed
-- fix period key for dvorak + remove duplicated code by @felixroos in https://github.com/tidalcycles/strudel/pull/537
-- improve initial loading + wait before eval by @felixroos in https://github.com/tidalcycles/strudel/pull/538
-- do not reset cps before eval #517 by @felixroos in https://github.com/tidalcycles/strudel/pull/539
-- feat: add loader bar to animate loading state by @felixroos in https://github.com/tidalcycles/strudel/pull/542
-- add firacode font by @felixroos in https://github.com/tidalcycles/strudel/pull/544
-- fix: allow whitespace at the end of a mini pattern by @felixroos in https://github.com/tidalcycles/strudel/pull/547
-- fix: reset time on stop by @felixroos in https://github.com/tidalcycles/strudel/pull/548
-- fix: load soundfonts in prebake by @felixroos in https://github.com/tidalcycles/strudel/pull/550
-- fix: colorable highlighting by @felixroos in https://github.com/tidalcycles/strudel/pull/553
-- fix: make soundfonts import dynamic by @felixroos in https://github.com/tidalcycles/strudel/pull/556
-- add basic triads and guidetone voicings by @felixroos in https://github.com/tidalcycles/strudel/pull/557
-- Patchday by @felixroos in https://github.com/tidalcycles/strudel/pull/559
-- Vanilla JS Refactoring by @felixroos in https://github.com/tidalcycles/strudel/pull/563
-- repl: add option to display line numbers by @roipoussiere in https://github.com/tidalcycles/strudel/pull/582
-- learn/tonal: fix typo in "scaleTran[s]pose" by @srenatus in https://github.com/tidalcycles/strudel/pull/585
-- Music metadata by @roipoussiere in https://github.com/tidalcycles/strudel/pull/580
-- New Workshop by @felixroos in https://github.com/tidalcycles/strudel/pull/587
-- Fix option dot by @felixroos in https://github.com/tidalcycles/strudel/pull/596
-- fix: allow f for flat notes like tidal by @felixroos in https://github.com/tidalcycles/strudel/pull/593
-- fix: division by zero by @felixroos in https://github.com/tidalcycles/strudel/pull/591
-- Solmization added by @dariacotocu in https://github.com/tidalcycles/strudel/pull/570
-- improve cursor by @felixroos in https://github.com/tidalcycles/strudel/pull/597
-- enable auto-completion by @roipoussiere in https://github.com/tidalcycles/strudel/pull/588
-- add ratio function by @felixroos in https://github.com/tidalcycles/strudel/pull/602
-- editor: enable line wrapping by @roipoussiere in https://github.com/tidalcycles/strudel/pull/581
-- tonal fixes by @felixroos in https://github.com/tidalcycles/strudel/pull/607
-- fix: flatten scale lists by @felixroos in https://github.com/tidalcycles/strudel/pull/605
-- clip now works like legato in tidal by @felixroos in https://github.com/tidalcycles/strudel/pull/598
-- fix: doc links by @felixroos in https://github.com/tidalcycles/strudel/pull/612
-- tauri desktop app by @vasilymilovidov in https://github.com/tidalcycles/strudel/pull/613
-- add spiral viz by @felixroos in https://github.com/tidalcycles/strudel/pull/614
-- patterning ui settings by @felixroos in https://github.com/tidalcycles/strudel/pull/606
-- Fix typo on packages.mdx by @paikwiki in https://github.com/tidalcycles/strudel/pull/520
-- cps dependent functions by @felixroos in https://github.com/tidalcycles/strudel/pull/620
-- desktop: play samples from disk by @felixroos in https://github.com/tidalcycles/strudel/pull/621
-- fix: midi clock drift by @felixroos in https://github.com/tidalcycles/strudel/pull/627
+- fix period key for dvorak + remove duplicated code by @felixroos in https://codeberg.org/uzu/strudel/pulls/537
+- improve initial loading + wait before eval by @felixroos in https://codeberg.org/uzu/strudel/pulls/538
+- do not reset cps before eval #517 by @felixroos in https://codeberg.org/uzu/strudel/pulls/539
+- feat: add loader bar to animate loading state by @felixroos in https://codeberg.org/uzu/strudel/pulls/542
+- add firacode font by @felixroos in https://codeberg.org/uzu/strudel/pulls/544
+- fix: allow whitespace at the end of a mini pattern by @felixroos in https://codeberg.org/uzu/strudel/pulls/547
+- fix: reset time on stop by @felixroos in https://codeberg.org/uzu/strudel/pulls/548
+- fix: load soundfonts in prebake by @felixroos in https://codeberg.org/uzu/strudel/pulls/550
+- fix: colorable highlighting by @felixroos in https://codeberg.org/uzu/strudel/pulls/553
+- fix: make soundfonts import dynamic by @felixroos in https://codeberg.org/uzu/strudel/pulls/556
+- add basic triads and guidetone voicings by @felixroos in https://codeberg.org/uzu/strudel/pulls/557
+- Patchday by @felixroos in https://codeberg.org/uzu/strudel/pulls/559
+- Vanilla JS Refactoring by @felixroos in https://codeberg.org/uzu/strudel/pulls/563
+- repl: add option to display line numbers by @roipoussiere in https://codeberg.org/uzu/strudel/pulls/582
+- learn/tonal: fix typo in "scaleTran[s]pose" by @srenatus in https://codeberg.org/uzu/strudel/pulls/585
+- Music metadata by @roipoussiere in https://codeberg.org/uzu/strudel/pulls/580
+- New Workshop by @felixroos in https://codeberg.org/uzu/strudel/pulls/587
+- Fix option dot by @felixroos in https://codeberg.org/uzu/strudel/pulls/596
+- fix: allow f for flat notes like tidal by @felixroos in https://codeberg.org/uzu/strudel/pulls/593
+- fix: division by zero by @felixroos in https://codeberg.org/uzu/strudel/pulls/591
+- Solmization added by @dariacotocu in https://codeberg.org/uzu/strudel/pulls/570
+- improve cursor by @felixroos in https://codeberg.org/uzu/strudel/pulls/597
+- enable auto-completion by @roipoussiere in https://codeberg.org/uzu/strudel/pulls/588
+- add ratio function by @felixroos in https://codeberg.org/uzu/strudel/pulls/602
+- editor: enable line wrapping by @roipoussiere in https://codeberg.org/uzu/strudel/pulls/581
+- tonal fixes by @felixroos in https://codeberg.org/uzu/strudel/pulls/607
+- fix: flatten scale lists by @felixroos in https://codeberg.org/uzu/strudel/pulls/605
+- clip now works like legato in tidal by @felixroos in https://codeberg.org/uzu/strudel/pulls/598
+- fix: doc links by @felixroos in https://codeberg.org/uzu/strudel/pulls/612
+- tauri desktop app by @vasilymilovidov in https://codeberg.org/uzu/strudel/pulls/613
+- add spiral viz by @felixroos in https://codeberg.org/uzu/strudel/pulls/614
+- patterning ui settings by @felixroos in https://codeberg.org/uzu/strudel/pulls/606
+- Fix typo on packages.mdx by @paikwiki in https://codeberg.org/uzu/strudel/pulls/520
+- cps dependent functions by @felixroos in https://codeberg.org/uzu/strudel/pulls/620
+- desktop: play samples from disk by @felixroos in https://codeberg.org/uzu/strudel/pulls/621
+- fix: midi clock drift by @felixroos in https://codeberg.org/uzu/strudel/pulls/627
## New Contributors
-- @roipoussiere made their first contribution in https://github.com/tidalcycles/strudel/pull/582
-- @srenatus made their first contribution in https://github.com/tidalcycles/strudel/pull/585
-- @dariacotocu made their first contribution in https://github.com/tidalcycles/strudel/pull/570
-- @vasilymilovidov made their first contribution in https://github.com/tidalcycles/strudel/pull/613
-- @paikwiki made their first contribution in https://github.com/tidalcycles/strudel/pull/520
+- @roipoussiere made their first contribution in https://codeberg.org/uzu/strudel/pulls/582
+- @srenatus made their first contribution in https://codeberg.org/uzu/strudel/pulls/585
+- @dariacotocu made their first contribution in https://codeberg.org/uzu/strudel/pulls/570
+- @vasilymilovidov made their first contribution in https://codeberg.org/uzu/strudel/pulls/613
+- @paikwiki made their first contribution in https://codeberg.org/uzu/strudel/pulls/520
-**Full Changelog**: https://github.com/tidalcycles/strudel/compare/v0.7.0...v0.8.0
+**Full Changelog**: https://codeberg.org/uzu/strudel/compare/v0.7.0...v0.8.0
diff --git a/website/src/content/blog/release-0.9.0-bananenbrot.mdx b/website/src/content/blog/release-0.9.0-bananenbrot.mdx
index ae77b4247..944675e38 100644
--- a/website/src/content/blog/release-0.9.0-bananenbrot.mdx
+++ b/website/src/content/blog/release-0.9.0-bananenbrot.mdx
@@ -29,14 +29,14 @@ Main new features include:
Related PRs:
-- superdough: encapsulates web audio output by @felixroos in https://github.com/tidalcycles/strudel/pull/664
-- basic fm by @felixroos in https://github.com/tidalcycles/strudel/pull/669
-- Wave Selection and Global Envelope on the FM Synth Modulator by @Bubobubobubobubo in https://github.com/tidalcycles/strudel/pull/683
-- control osc partial count with n by @felixroos in https://github.com/tidalcycles/strudel/pull/674
-- ZZFX Synth support by @Bubobubobubobubo in https://github.com/tidalcycles/strudel/pull/684
-- Adding filter envelopes and filter order selection by @Bubobubobubobubo in https://github.com/tidalcycles/strudel/pull/692
-- Adding loop points and thus wavetable synthesis by @Bubobubobubobubo in https://github.com/tidalcycles/strudel/pull/698
-- Adding vibrato to base oscillators by @Bubobubobubobubo in https://github.com/tidalcycles/strudel/pull/693
+- superdough: encapsulates web audio output by @felixroos in https://codeberg.org/uzu/strudel/pulls/664
+- basic fm by @felixroos in https://codeberg.org/uzu/strudel/pulls/669
+- Wave Selection and Global Envelope on the FM Synth Modulator by @Bubobubobubobubo in https://codeberg.org/uzu/strudel/pulls/683
+- control osc partial count with n by @felixroos in https://codeberg.org/uzu/strudel/pulls/674
+- ZZFX Synth support by @Bubobubobubobubo in https://codeberg.org/uzu/strudel/pulls/684
+- Adding filter envelopes and filter order selection by @Bubobubobubobubo in https://codeberg.org/uzu/strudel/pulls/692
+- Adding loop points and thus wavetable synthesis by @Bubobubobubobubo in https://codeberg.org/uzu/strudel/pulls/698
+- Adding vibrato to base oscillators by @Bubobubobubobubo in https://codeberg.org/uzu/strudel/pulls/693
## Desktop App Improvements
@@ -45,70 +45,70 @@ which do not depend on browser APIs!
You can see superdough, superdirt via OSC + hardware synths via MIDI all together playing in harmony in this [awesome video](https://www.youtube.com/watch?v=lxQgBeLQBgk). These are the related PRs:
-- Create Midi Integration for Tauri Desktop app by @daslyfe in https://github.com/tidalcycles/strudel/pull/685
-- add sleep timer + improve message iterating by @daslyfe in https://github.com/tidalcycles/strudel/pull/688
-- fix MIDI CC messages by @vasilymilovidov in https://github.com/tidalcycles/strudel/pull/690
-- Direct OSC Support in Tauri by @daslyfe in https://github.com/tidalcycles/strudel/pull/694
-- Add logging from tauri by @daslyfe in https://github.com/tidalcycles/strudel/pull/697
-- fix osc bundle timestamp glitches caused by drifting clock by @daslyfe in https://github.com/tidalcycles/strudel/pull/666
-- Midi time fixes by @daslyfe in https://github.com/tidalcycles/strudel/pull/668
-- [Bug Fix] Account for numeral notation when converting to midi by @daslyfe in https://github.com/tidalcycles/strudel/pull/656
-- [Bug Fix] Midi: Don't treat note 0 as false by @daslyfe in https://github.com/tidalcycles/strudel/pull/657
+- Create Midi Integration for Tauri Desktop app by @daslyfe in https://codeberg.org/uzu/strudel/pulls/685
+- add sleep timer + improve message iterating by @daslyfe in https://codeberg.org/uzu/strudel/pulls/688
+- fix MIDI CC messages by @vasilymilovidov in https://codeberg.org/uzu/strudel/pulls/690
+- Direct OSC Support in Tauri by @daslyfe in https://codeberg.org/uzu/strudel/pulls/694
+- Add logging from tauri by @daslyfe in https://codeberg.org/uzu/strudel/pulls/697
+- fix osc bundle timestamp glitches caused by drifting clock by @daslyfe in https://codeberg.org/uzu/strudel/pulls/666
+- Midi time fixes by @daslyfe in https://codeberg.org/uzu/strudel/pulls/668
+- [Bug Fix] Account for numeral notation when converting to midi by @daslyfe in https://codeberg.org/uzu/strudel/pulls/656
+- [Bug Fix] Midi: Don't treat note 0 as false by @daslyfe in https://codeberg.org/uzu/strudel/pulls/657
## Visuals
-- 2 new FFT based vizualisations have now landed: [scope and fscope](https://github.com/tidalcycles/strudel/pull/677) (featured in the video at the top).
-- pianoroll has new options, see [PR](https://github.com/tidalcycles/strudel/pull/679)
+- 2 new FFT based vizualisations have now landed: [scope and fscope](https://codeberg.org/uzu/strudel/pulls/677) (featured in the video at the top).
+- pianoroll has new options, see [PR](https://codeberg.org/uzu/strudel/pulls/679)
Related PRs:
-- Scope by @felixroos in https://github.com/tidalcycles/strudel/pull/677 ([demo](https://strudel.tidalcycles.org/?hXVQF-KxMI8p))
-- Pianoroll improvements by @felixroos in https://github.com/tidalcycles/strudel/pull/679 ([demo](https://strudel.tidalcycles.org/?aPMKqXGVMgSM))
+- Scope by @felixroos in https://codeberg.org/uzu/strudel/pulls/677 ([demo](https://strudel.tidalcycles.org/?hXVQF-KxMI8p))
+- Pianoroll improvements by @felixroos in https://codeberg.org/uzu/strudel/pulls/679 ([demo](https://strudel.tidalcycles.org/?aPMKqXGVMgSM))
## Voicings
There is now a new way to play chord voicings + a huge selection of chord voicings available. Find out more in these PRs:
-- stateless voicings + tonleiter lib by @felixroos in https://github.com/tidalcycles/strudel/pull/647 ([demo](https://strudel.tidalcycles.org/?FoILM0Hs9y9f))
-- ireal voicings by @felixroos in https://github.com/tidalcycles/strudel/pull/653 ([demo](https://strudel.tidalcycles.org/?bv_TjY9hOC28))
+- stateless voicings + tonleiter lib by @felixroos in https://codeberg.org/uzu/strudel/pulls/647 ([demo](https://strudel.tidalcycles.org/?FoILM0Hs9y9f))
+- ireal voicings by @felixroos in https://codeberg.org/uzu/strudel/pulls/653 ([demo](https://strudel.tidalcycles.org/?bv_TjY9hOC28))
## Adaptive Highlighting
Thanks to @mindofmatthew , the highlighting will adapt to edits instantly! Related PRs:
-- More work on highlight IDs by @mindofmatthew in https://github.com/tidalcycles/strudel/pull/636
-- Adaptive Highlighting by @felixroos in https://github.com/tidalcycles/strudel/pull/634
+- More work on highlight IDs by @mindofmatthew in https://codeberg.org/uzu/strudel/pulls/636
+- Adaptive Highlighting by @felixroos in https://codeberg.org/uzu/strudel/pulls/634
## UI Changes
-- teletext theme + fonts by @felixroos in https://github.com/tidalcycles/strudel/pull/681 (featured in video at the top)
-- togglable panel position by @felixroos in https://github.com/tidalcycles/strudel/pull/667
+- teletext theme + fonts by @felixroos in https://codeberg.org/uzu/strudel/pulls/681 (featured in video at the top)
+- togglable panel position by @felixroos in https://codeberg.org/uzu/strudel/pulls/667
## Other New Features
-- slice: list mode by @felixroos in https://github.com/tidalcycles/strudel/pull/645 ([demo](https://strudel.tidalcycles.org/?bAYIqz5NLjRr))
-- add emoji support by @felixroos in https://github.com/tidalcycles/strudel/pull/680 ([demo](https://strudel.tidalcycles.org/?a6FgLz475gN9))
+- slice: list mode by @felixroos in https://codeberg.org/uzu/strudel/pulls/645 ([demo](https://strudel.tidalcycles.org/?bAYIqz5NLjRr))
+- add emoji support by @felixroos in https://codeberg.org/uzu/strudel/pulls/680 ([demo](https://strudel.tidalcycles.org/?a6FgLz475gN9))
## Articles
-- Understand pitch by @felixroos in https://github.com/tidalcycles/strudel/pull/652
+- Understand pitch by @felixroos in https://codeberg.org/uzu/strudel/pulls/652
## Other Fixes & Enhancements
-- fix: out of range error by @felixroos in https://github.com/tidalcycles/strudel/pull/630
-- fix: update canvas size on window resize by @felixroos in https://github.com/tidalcycles/strudel/pull/631
-- FIXES: TODO in rotateChroma by @bwagner in https://github.com/tidalcycles/strudel/pull/650
-- snapshot tests: sort haps by part by @felixroos in https://github.com/tidalcycles/strudel/pull/637
-- Delete old packages by @felixroos in https://github.com/tidalcycles/strudel/pull/639
-- update vitest by @felixroos in https://github.com/tidalcycles/strudel/pull/651
-- fix: welcome message for latestCode by @felixroos in https://github.com/tidalcycles/strudel/pull/659
-- fix: always run previous trigger by @felixroos in https://github.com/tidalcycles/strudel/pull/660
+- fix: out of range error by @felixroos in https://codeberg.org/uzu/strudel/pulls/630
+- fix: update canvas size on window resize by @felixroos in https://codeberg.org/uzu/strudel/pulls/631
+- FIXES: TODO in rotateChroma by @bwagner in https://codeberg.org/uzu/strudel/pulls/650
+- snapshot tests: sort haps by part by @felixroos in https://codeberg.org/uzu/strudel/pulls/637
+- Delete old packages by @felixroos in https://codeberg.org/uzu/strudel/pulls/639
+- update vitest by @felixroos in https://codeberg.org/uzu/strudel/pulls/651
+- fix: welcome message for latestCode by @felixroos in https://codeberg.org/uzu/strudel/pulls/659
+- fix: always run previous trigger by @felixroos in https://codeberg.org/uzu/strudel/pulls/660
## New Contributors
-- @daslyfe made their first contribution in https://github.com/tidalcycles/strudel/pull/656
-- @Bubobubobubobubo made their first contribution in https://github.com/tidalcycles/strudel/pull/683
+- @daslyfe made their first contribution in https://codeberg.org/uzu/strudel/pulls/656
+- @Bubobubobubobubo made their first contribution in https://codeberg.org/uzu/strudel/pulls/683
-**Full Changelog**: https://github.com/tidalcycles/strudel/compare/v0.8.0...v0.9.0
+**Full Changelog**: https://codeberg.org/uzu/strudel/compare/v0.8.0...v0.9.0
A big thanks to all the contributors!
diff --git a/website/src/content/blog/release-1.0.0-geburtstagskuchen.mdx b/website/src/content/blog/release-1.0.0-geburtstagskuchen.mdx
index 5784fe52d..0ee149a20 100644
--- a/website/src/content/blog/release-1.0.0-geburtstagskuchen.mdx
+++ b/website/src/content/blog/release-1.0.0-geburtstagskuchen.mdx
@@ -27,13 +27,13 @@ Let me write up some of the highlights:
This version changes the default cps value from 1 to 0.5 to give patterns a little bit more time by default.
If you find your existing patterns to be suddenly half the speed, just add a `setcps(1)` to the top and it should sound as it did before!
-- make 0.5hz cps the default by @yaxu in https://github.com/tidalcycles/strudel/pull/931
+- make 0.5hz cps the default by @yaxu in https://codeberg.org/uzu/strudel/pulls/931
## New Domain
Strudel is now available under [strudel.cc](https://strudel.cc/). The old domain still works but you might not get the most recent version.
-- replace strudel.tidalcycles.org with strudel.cc by @felixroos in https://github.com/tidalcycles/strudel/pull/768
+- replace strudel.tidalcycles.org with strudel.cc by @felixroos in https://codeberg.org/uzu/strudel/pulls/768
## Strudel on Mastodon
@@ -43,52 +43,52 @@ Strudel now has a mastodon presence: https://social.toplap.org/@strudel
superdough, the audio engine of strudel has gotten some new features:
-- Create phaser effect by @daslyfe in https://github.com/tidalcycles/strudel/pull/798
-- Multichannel audio by @daslyfe in https://github.com/tidalcycles/strudel/pull/820
-- Audio device selection by @daslyfe in https://github.com/tidalcycles/strudel/pull/854
-- Better convolution reverb by generating impulse responses by @Bubobubobubobubo and @felixroos in https://github.com/tidalcycles/strudel/pull/718
-- Add 'white', 'pink' and 'brown' oscillators + refactor synth by @Bubobubobubobubo and @felixroos in https://github.com/tidalcycles/strudel/pull/713
-- New noise type: "crackle" by @Bubobubobubobubo in https://github.com/tidalcycles/strudel/pull/806
-- Add support for using samples as impulse response buffers for the reverb by @vasilymilovidov in https://github.com/tidalcycles/strudel/pull/717
-- Compressor by @felixroos in https://github.com/tidalcycles/strudel/pull/729
-- Adding vibrato to Superdough sampler by @Bubobubobubobubo and @felixroos in https://github.com/tidalcycles/strudel/pull/706
-- Further Envelope improvements by @daslyfe in https://github.com/tidalcycles/strudel/pull/868
-- Add more vowel qualities for the vowels function by @fnordomat in https://github.com/tidalcycles/strudel/pull/907
-- pitch envelope by @felixroos in https://github.com/tidalcycles/strudel/pull/913
+- Create phaser effect by @daslyfe in https://codeberg.org/uzu/strudel/pulls/798
+- Multichannel audio by @daslyfe in https://codeberg.org/uzu/strudel/pulls/820
+- Audio device selection by @daslyfe in https://codeberg.org/uzu/strudel/pulls/854
+- Better convolution reverb by generating impulse responses by @Bubobubobubobubo and @felixroos in https://codeberg.org/uzu/strudel/pulls/718
+- Add 'white', 'pink' and 'brown' oscillators + refactor synth by @Bubobubobubobubo and @felixroos in https://codeberg.org/uzu/strudel/pulls/713
+- New noise type: "crackle" by @Bubobubobubobubo in https://codeberg.org/uzu/strudel/pulls/806
+- Add support for using samples as impulse response buffers for the reverb by @vasilymilovidov in https://codeberg.org/uzu/strudel/pulls/717
+- Compressor by @felixroos in https://codeberg.org/uzu/strudel/pulls/729
+- Adding vibrato to Superdough sampler by @Bubobubobubobubo and @felixroos in https://codeberg.org/uzu/strudel/pulls/706
+- Further Envelope improvements by @daslyfe in https://codeberg.org/uzu/strudel/pulls/868
+- Add more vowel qualities for the vowels function by @fnordomat in https://codeberg.org/uzu/strudel/pulls/907
+- pitch envelope by @felixroos in https://codeberg.org/uzu/strudel/pulls/913
## Slider Controls
The new `slider` function inlines a draggable slider element into the code, bridging the gap between code and GUI.
-- widgets by @felixroos in https://github.com/tidalcycles/strudel/pull/714
-- Slider afterthoughts by @felixroos in https://github.com/tidalcycles/strudel/pull/723
-- add xfade by @felixroos in https://github.com/tidalcycles/strudel/pull/780
+- widgets by @felixroos in https://codeberg.org/uzu/strudel/pulls/714
+- Slider afterthoughts by @felixroos in https://codeberg.org/uzu/strudel/pulls/723
+- add xfade by @felixroos in https://codeberg.org/uzu/strudel/pulls/780
## Improved MIDI integration
Pattern params [can now be controlled with cc messages](https://www.youtube.com/watch?v=e2-Sv_jjDQk) + you can now send a MIDI clock to sync your DAW with strudel.
-- Midi in by @felixroos in https://github.com/tidalcycles/strudel/pull/699
-- add midi clock support by @felixroos in https://github.com/tidalcycles/strudel/pull/710
+- Midi in by @felixroos in https://codeberg.org/uzu/strudel/pulls/699
+- add midi clock support by @felixroos in https://codeberg.org/uzu/strudel/pulls/710
## hydra
[hydra](https://hydra.ojack.xyz), the live coding video synth [can now be used directly inside the strudel REPL](https://strudel.cc/learn/hydra/).
-- Hydra integration by @felixroos in https://github.com/tidalcycles/strudel/pull/759
-- add options param to initHydra by @kasparsj in https://github.com/tidalcycles/strudel/pull/808
-- Hydra fixes and improvements by @atfornes in https://github.com/tidalcycles/strudel/pull/818
+- Hydra integration by @felixroos in https://codeberg.org/uzu/strudel/pulls/759
+- add options param to initHydra by @kasparsj in https://codeberg.org/uzu/strudel/pulls/808
+- Hydra fixes and improvements by @atfornes in https://codeberg.org/uzu/strudel/pulls/818
## Vanilla REPL
The codemirror editor and the repl abstraction have been refactored from react to vanilla JS!
This should give some performance improvements and less dependency / maintenance burden:
-- Vanilla repl 2 by @felixroos in https://github.com/tidalcycles/strudel/pull/863
-- Vanilla repl 3 by @felixroos in https://github.com/tidalcycles/strudel/pull/865
-- more work on vanilla repl: repl web component + package + MicroRepl by @felixroos in https://github.com/tidalcycles/strudel/pull/866
-- main repl vanillification by @felixroos in https://github.com/tidalcycles/strudel/pull/873
-- final vanillification by @felixroos in https://github.com/tidalcycles/strudel/pull/876
+- Vanilla repl 2 by @felixroos in https://codeberg.org/uzu/strudel/pulls/863
+- Vanilla repl 3 by @felixroos in https://codeberg.org/uzu/strudel/pulls/865
+- more work on vanilla repl: repl web component + package + MicroRepl by @felixroos in https://codeberg.org/uzu/strudel/pulls/866
+- main repl vanillification by @felixroos in https://codeberg.org/uzu/strudel/pulls/873
+- final vanillification by @felixroos in https://codeberg.org/uzu/strudel/pulls/876
## Doc Changes
@@ -97,25 +97,25 @@ Plenty of things have been added to the docs, including a [showcase of what peop
show PRs
-- Showcase by @felixroos in https://github.com/tidalcycles/strudel/pull/885
-- Recipes by @felixroos in https://github.com/tidalcycles/strudel/pull/742
-- Document striate function by @ilesinge in https://github.com/tidalcycles/strudel/pull/766
-- Document adsr function by @ilesinge in https://github.com/tidalcycles/strudel/pull/767
-- Add function params in reference tab by @ilesinge in https://github.com/tidalcycles/strudel/pull/785
-- Update first-sounds.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/794
-- Update recap.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/797
-- Update pattern-effects.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/796
-- Update first-effects.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/795
-- Document pianoroll by @ilesinge in https://github.com/tidalcycles/strudel/pull/784
-- Add doc for euclidLegatoRot, wordfall and slider by @ilesinge in https://github.com/tidalcycles/strudel/pull/801
-- Improve documentation for synonym functions by @ilesinge in https://github.com/tidalcycles/strudel/pull/800
-- Add and style algolia search by @ilesinge in https://github.com/tidalcycles/strudel/pull/827
-- Fix a typo by @drewgbarnes in https://github.com/tidalcycles/strudel/pull/830
-- add mastodon link by @felixroos in https://github.com/tidalcycles/strudel/pull/884
-- adds a blog by @felixroos in https://github.com/tidalcycles/strudel/pull/911
-- community bakery by @felixroos in https://github.com/tidalcycles/strudel/pull/923
-- Blog improvements by @felixroos in https://github.com/tidalcycles/strudel/pull/919
-- 2 years blog post by @felixroos in https://github.com/tidalcycles/strudel/pull/929
+- Showcase by @felixroos in https://codeberg.org/uzu/strudel/pulls/885
+- Recipes by @felixroos in https://codeberg.org/uzu/strudel/pulls/742
+- Document striate function by @ilesinge in https://codeberg.org/uzu/strudel/pulls/766
+- Document adsr function by @ilesinge in https://codeberg.org/uzu/strudel/pulls/767
+- Add function params in reference tab by @ilesinge in https://codeberg.org/uzu/strudel/pulls/785
+- Update first-sounds.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/794
+- Update recap.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/797
+- Update pattern-effects.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/796
+- Update first-effects.mdx by @bwagner in https://codeberg.org/uzu/strudel/pulls/795
+- Document pianoroll by @ilesinge in https://codeberg.org/uzu/strudel/pulls/784
+- Add doc for euclidLegatoRot, wordfall and slider by @ilesinge in https://codeberg.org/uzu/strudel/pulls/801
+- Improve documentation for synonym functions by @ilesinge in https://codeberg.org/uzu/strudel/pulls/800
+- Add and style algolia search by @ilesinge in https://codeberg.org/uzu/strudel/pulls/827
+- Fix a typo by @drewgbarnes in https://codeberg.org/uzu/strudel/pulls/830
+- add mastodon link by @felixroos in https://codeberg.org/uzu/strudel/pulls/884
+- adds a blog by @felixroos in https://codeberg.org/uzu/strudel/pulls/911
+- community bakery by @felixroos in https://codeberg.org/uzu/strudel/pulls/923
+- Blog improvements by @felixroos in https://codeberg.org/uzu/strudel/pulls/919
+- 2 years blog post by @felixroos in https://codeberg.org/uzu/strudel/pulls/929
@@ -124,34 +124,34 @@ Plenty of things have been added to the docs, including a [showcase of what peop
There is a lot more
-- mini notation: international alphabets support by @ilesinge in https://github.com/tidalcycles/strudel/pull/751
-- Add shabda shortcut by @ilesinge in https://github.com/tidalcycles/strudel/pull/740
-- add play function by @felixroos in https://github.com/tidalcycles/strudel/pull/758 (superseded by next)
-- tidal style d1 ... d9 functions + more by @felixroos in https://github.com/tidalcycles/strudel/pull/805
-- add vscode bindings by @Dsm0 in https://github.com/tidalcycles/strudel/pull/773
-- Implement optional hover tooltip with function documentation by @ilesinge in https://github.com/tidalcycles/strudel/pull/783
-- samples loading shortcuts: by @felixroos in https://github.com/tidalcycles/strudel/pull/788
-- add option to disable active line highlighting in Code Settings by @kasparsj in https://github.com/tidalcycles/strudel/pull/804
-- Color hsl by @felixroos in https://github.com/tidalcycles/strudel/pull/815
-- Patterns tab + Refactor Panel by @felixroos in https://github.com/tidalcycles/strudel/pull/769
-- patterns tab: import patterns + style by @felixroos in https://github.com/tidalcycles/strudel/pull/852
-- Export patterns + ui tweaks by @felixroos in https://github.com/tidalcycles/strudel/pull/855
-- Pattern organization by @felixroos in https://github.com/tidalcycles/strudel/pull/858
-- Sound Import from local file system by @daslyfe in https://github.com/tidalcycles/strudel/pull/839
-- bugfix: suspend and close existing audio context when changing interface by @daslyfe in https://github.com/tidalcycles/strudel/pull/882
-- add root mode for voicings by @felixroos in https://github.com/tidalcycles/strudel/pull/887
-- scales can now be anchored by @felixroos in https://github.com/tidalcycles/strudel/pull/888
-- add dough function for raw dsp by @felixroos in https://github.com/tidalcycles/strudel/pull/707 (experimental)
-- support mininotation '..' range operator, fixes #715 by @yaxu in https://github.com/tidalcycles/strudel/pull/716
-- Add pick and squeeze functions by @daslyfe in https://github.com/tidalcycles/strudel/pull/771
-- support , in < > by @felixroos in https://github.com/tidalcycles/strudel/pull/886
-- public sharing by @felixroos in https://github.com/tidalcycles/strudel/pull/910
-- pick, pickmod, inhabit, inhabitmod by @yaxu in https://github.com/tidalcycles/strudel/pull/921
-- Mini-notation additions towards tidal compatibility by @yaxu in https://github.com/tidalcycles/strudel/pull/926
-- add pickF and pickmodF by @geikha in https://github.com/tidalcycles/strudel/pull/924
-- Make splice cps-aware by @yaxu in https://github.com/tidalcycles/strudel/pull/932
-- Refactor cps functions by @felixroos in https://github.com/tidalcycles/strudel/pull/933
-- Add useful pattern selection behavior for performing. by @daslyfe in https://github.com/tidalcycles/strudel/pull/897
+- mini notation: international alphabets support by @ilesinge in https://codeberg.org/uzu/strudel/pulls/751
+- Add shabda shortcut by @ilesinge in https://codeberg.org/uzu/strudel/pulls/740
+- add play function by @felixroos in https://codeberg.org/uzu/strudel/pulls/758 (superseded by next)
+- tidal style d1 ... d9 functions + more by @felixroos in https://codeberg.org/uzu/strudel/pulls/805
+- add vscode bindings by @Dsm0 in https://codeberg.org/uzu/strudel/pulls/773
+- Implement optional hover tooltip with function documentation by @ilesinge in https://codeberg.org/uzu/strudel/pulls/783
+- samples loading shortcuts: by @felixroos in https://codeberg.org/uzu/strudel/pulls/788
+- add option to disable active line highlighting in Code Settings by @kasparsj in https://codeberg.org/uzu/strudel/pulls/804
+- Color hsl by @felixroos in https://codeberg.org/uzu/strudel/pulls/815
+- Patterns tab + Refactor Panel by @felixroos in https://codeberg.org/uzu/strudel/pulls/769
+- patterns tab: import patterns + style by @felixroos in https://codeberg.org/uzu/strudel/pulls/852
+- Export patterns + ui tweaks by @felixroos in https://codeberg.org/uzu/strudel/pulls/855
+- Pattern organization by @felixroos in https://codeberg.org/uzu/strudel/pulls/858
+- Sound Import from local file system by @daslyfe in https://codeberg.org/uzu/strudel/pulls/839
+- bugfix: suspend and close existing audio context when changing interface by @daslyfe in https://codeberg.org/uzu/strudel/pulls/882
+- add root mode for voicings by @felixroos in https://codeberg.org/uzu/strudel/pulls/887
+- scales can now be anchored by @felixroos in https://codeberg.org/uzu/strudel/pulls/888
+- add dough function for raw dsp by @felixroos in https://codeberg.org/uzu/strudel/pulls/707 (experimental)
+- support mininotation '..' range operator, fixes #715 by @yaxu in https://codeberg.org/uzu/strudel/pulls/716
+- Add pick and squeeze functions by @daslyfe in https://codeberg.org/uzu/strudel/pulls/771
+- support , in < > by @felixroos in https://codeberg.org/uzu/strudel/pulls/886
+- public sharing by @felixroos in https://codeberg.org/uzu/strudel/pulls/910
+- pick, pickmod, inhabit, inhabitmod by @yaxu in https://codeberg.org/uzu/strudel/pulls/921
+- Mini-notation additions towards tidal compatibility by @yaxu in https://codeberg.org/uzu/strudel/pulls/926
+- add pickF and pickmodF by @geikha in https://codeberg.org/uzu/strudel/pulls/924
+- Make splice cps-aware by @yaxu in https://codeberg.org/uzu/strudel/pulls/932
+- Refactor cps functions by @felixroos in https://codeberg.org/uzu/strudel/pulls/933
+- Add useful pattern selection behavior for performing. by @daslyfe in https://codeberg.org/uzu/strudel/pulls/897
@@ -160,79 +160,79 @@ Plenty of things have been added to the docs, including a [showcase of what peop
show
-- fix: finally repair envelopes by @felixroos in https://github.com/tidalcycles/strudel/pull/861
-- fix: reverb regenerate loophole by @felixroos in https://github.com/tidalcycles/strudel/pull/726
-- fix: reverb roomsize not required by @felixroos in https://github.com/tidalcycles/strudel/pull/731
-- fix: reverb sampleRate by @felixroos in https://github.com/tidalcycles/strudel/pull/732
-- consume n with scale by @felixroos in https://github.com/tidalcycles/strudel/pull/727
-- fix: hashes in urls by @felixroos in https://github.com/tidalcycles/strudel/pull/728
-- [Bug Fix] chooseWith: prevent pattern from stopping audio when selection is >= 1 or < 0 by @daslyfe in https://github.com/tidalcycles/strudel/pull/741
-- Fix addivite synthesis phases by @felixroos in https://github.com/tidalcycles/strudel/pull/762
-- fix: scale offset by @felixroos in https://github.com/tidalcycles/strudel/pull/764
-- fix zen mode logo overlap by @felixroos in https://github.com/tidalcycles/strudel/pull/760
-- fix: share copy to clipboard + alert by @felixroos in https://github.com/tidalcycles/strudel/pull/774
-- fix: style issues by @felixroos in https://github.com/tidalcycles/strudel/pull/781
-- Fix scope pos + document by @felixroos in https://github.com/tidalcycles/strudel/pull/786
-- don't use anchor links for reference by @felixroos in https://github.com/tidalcycles/strudel/pull/791
-- remove unwanted cm6 outline for strudelTheme by @kasparsj in https://github.com/tidalcycles/strudel/pull/802
-- FIXES: palindrome abc -> abccba by @bwagner in https://github.com/tidalcycles/strudel/pull/831
-- Bug Fix #119: Clock drift by @daslyfe in https://github.com/tidalcycles/strudel/pull/874
-- bugfix: sound select indexes out of bounds by @daslyfe in https://github.com/tidalcycles/strudel/pull/871
-- Error tolerance by @felixroos in https://github.com/tidalcycles/strudel/pull/880
-- fix: make sure n is never undefined before nanFallback by @felixroos in https://github.com/tidalcycles/strudel/pull/881
-- fix: invisible selection on vim + emacs mode by @felixroos in https://github.com/tidalcycles/strudel/pull/889
-- fix: autocomplete / tooltip code example bug by @felixroos in https://github.com/tidalcycles/strudel/pull/898
-- Fix examples page, piano() and a few workshop imgs by @shiyouganai in https://github.com/tidalcycles/strudel/pull/848
-- fix: trailing slash confusion by @felixroos in https://github.com/tidalcycles/strudel/pull/743
-- fix: try different trailing slash behavior by @felixroos in https://github.com/tidalcycles/strudel/pull/744
-- Fix krill build command in README by @ilesinge in https://github.com/tidalcycles/strudel/pull/748
-- Fix for #1. Enables named instruments for csoundm. by @gogins in https://github.com/tidalcycles/strudel/pull/662
-- fix: missing hash for links starting with / by @felixroos in https://github.com/tidalcycles/strudel/pull/845
-- fix: swatch png src by @felixroos in https://github.com/tidalcycles/strudel/pull/846
-- Fix edge case with rehype-urls and trailing slashes in image file paths by @shiyouganai in https://github.com/tidalcycles/strudel/pull/849
-- fix: multiple repls by @felixroos in https://github.com/tidalcycles/strudel/pull/813
-- Fix chunk, add fastChunk and repeatCycles by @yaxu in https://github.com/tidalcycles/strudel/pull/712
-- Update tauri.yml workflow file by @vasilymilovidov in https://github.com/tidalcycles/strudel/pull/705
-- vite-vanilla-repl readme fix by @felixroos in https://github.com/tidalcycles/strudel/pull/737
-- completely revert config mess by @felixroos in https://github.com/tidalcycles/strudel/pull/745
-- hopefully fix trailing slashes bug by @felixroos in https://github.com/tidalcycles/strudel/pull/753
-- Update vite pwa by @felixroos in https://github.com/tidalcycles/strudel/pull/772
-- Update to Astro 3 by @felixroos in https://github.com/tidalcycles/strudel/pull/775
-- support multiple named serial connections, change default baudrate by @yaxu in https://github.com/tidalcycles/strudel/pull/551
-- CHANGES: github action checkout v2 -> v4 by @bwagner in https://github.com/tidalcycles/strudel/pull/837
-- CHANGES: pin pnpm to version 8.3.1 by @bwagner in https://github.com/tidalcycles/strudel/pull/834
-- CHANGES: github action pnpm version from 7 to 8.3.1 by @bwagner in https://github.com/tidalcycles/strudel/pull/835
-- ADDS: JetBrains IDE files and directories to .gitignore by @bwagner in https://github.com/tidalcycles/strudel/pull/840
-- Prevent 404 on Algolia crawls by @ilesinge in https://github.com/tidalcycles/strudel/pull/838
-- Add in fixes from my fork to slashocalypse branch by @shiyouganai in https://github.com/tidalcycles/strudel/pull/843
-- improve slashing + base href behavior by @felixroos in https://github.com/tidalcycles/strudel/pull/842
-- CHANGES: pnpm 8.1.3 to 8.11.0 by @bwagner in https://github.com/tidalcycles/strudel/pull/850
-- add missing trailing slashes by @felixroos in https://github.com/tidalcycles/strudel/pull/860
-- move all examples to separate examples folder by @felixroos in https://github.com/tidalcycles/strudel/pull/878
-- Dependency update by @felixroos in https://github.com/tidalcycles/strudel/pull/879
-- Update Vite version so hot reload works properly with newest pnpm version by @daslyfe in https://github.com/tidalcycles/strudel/pull/892
-- prevent vite from complaining about additional exports in jsx files by @daslyfe in https://github.com/tidalcycles/strudel/pull/891
-- fix some build warnings by @felixroos in https://github.com/tidalcycles/strudel/pull/902
-- Remove hideHeader for better mobile UI and consistency by @rjulian in https://github.com/tidalcycles/strudel/pull/894
-- Fix: swatch/[name].png.js static path by @oscarbyrne in https://github.com/tidalcycles/strudel/pull/916
-- rename @strudel.cycles/_ packages to @strudel/_ by @felixroos in https://github.com/tidalcycles/strudel/pull/917
-- `pick` now accepts lookup tables, with alternate cycle squeezing behaviour as new `inhabit` function by @yaxu in https://github.com/tidalcycles/strudel/pull/918
-- Revert "`pick` now accepts lookup tables, with alternate cycle squeezing behaviour as new `inhabit` function" by @yaxu in https://github.com/tidalcycles/strudel/pull/920
-- Fix pattern tab not showing patterns without created date by @daslyfe in https://github.com/tidalcycles/strudel/pull/934
+- fix: finally repair envelopes by @felixroos in https://codeberg.org/uzu/strudel/pulls/861
+- fix: reverb regenerate loophole by @felixroos in https://codeberg.org/uzu/strudel/pulls/726
+- fix: reverb roomsize not required by @felixroos in https://codeberg.org/uzu/strudel/pulls/731
+- fix: reverb sampleRate by @felixroos in https://codeberg.org/uzu/strudel/pulls/732
+- consume n with scale by @felixroos in https://codeberg.org/uzu/strudel/pulls/727
+- fix: hashes in urls by @felixroos in https://codeberg.org/uzu/strudel/pulls/728
+- [Bug Fix] chooseWith: prevent pattern from stopping audio when selection is >= 1 or < 0 by @daslyfe in https://codeberg.org/uzu/strudel/pulls/741
+- Fix addivite synthesis phases by @felixroos in https://codeberg.org/uzu/strudel/pulls/762
+- fix: scale offset by @felixroos in https://codeberg.org/uzu/strudel/pulls/764
+- fix zen mode logo overlap by @felixroos in https://codeberg.org/uzu/strudel/pulls/760
+- fix: share copy to clipboard + alert by @felixroos in https://codeberg.org/uzu/strudel/pulls/774
+- fix: style issues by @felixroos in https://codeberg.org/uzu/strudel/pulls/781
+- Fix scope pos + document by @felixroos in https://codeberg.org/uzu/strudel/pulls/786
+- don't use anchor links for reference by @felixroos in https://codeberg.org/uzu/strudel/pulls/791
+- remove unwanted cm6 outline for strudelTheme by @kasparsj in https://codeberg.org/uzu/strudel/pulls/802
+- FIXES: palindrome abc -> abccba by @bwagner in https://codeberg.org/uzu/strudel/pulls/831
+- Bug Fix #119: Clock drift by @daslyfe in https://codeberg.org/uzu/strudel/pulls/874
+- bugfix: sound select indexes out of bounds by @daslyfe in https://codeberg.org/uzu/strudel/pulls/871
+- Error tolerance by @felixroos in https://codeberg.org/uzu/strudel/pulls/880
+- fix: make sure n is never undefined before nanFallback by @felixroos in https://codeberg.org/uzu/strudel/pulls/881
+- fix: invisible selection on vim + emacs mode by @felixroos in https://codeberg.org/uzu/strudel/pulls/889
+- fix: autocomplete / tooltip code example bug by @felixroos in https://codeberg.org/uzu/strudel/pulls/898
+- Fix examples page, piano() and a few workshop imgs by @shiyouganai in https://codeberg.org/uzu/strudel/pulls/848
+- fix: trailing slash confusion by @felixroos in https://codeberg.org/uzu/strudel/pulls/743
+- fix: try different trailing slash behavior by @felixroos in https://codeberg.org/uzu/strudel/pulls/744
+- Fix krill build command in README by @ilesinge in https://codeberg.org/uzu/strudel/pulls/748
+- Fix for #1. Enables named instruments for csoundm. by @gogins in https://codeberg.org/uzu/strudel/pulls/662
+- fix: missing hash for links starting with / by @felixroos in https://codeberg.org/uzu/strudel/pulls/845
+- fix: swatch png src by @felixroos in https://codeberg.org/uzu/strudel/pulls/846
+- Fix edge case with rehype-urls and trailing slashes in image file paths by @shiyouganai in https://codeberg.org/uzu/strudel/pulls/849
+- fix: multiple repls by @felixroos in https://codeberg.org/uzu/strudel/pulls/813
+- Fix chunk, add fastChunk and repeatCycles by @yaxu in https://codeberg.org/uzu/strudel/pulls/712
+- Update tauri.yml workflow file by @vasilymilovidov in https://codeberg.org/uzu/strudel/pulls/705
+- vite-vanilla-repl readme fix by @felixroos in https://codeberg.org/uzu/strudel/pulls/737
+- completely revert config mess by @felixroos in https://codeberg.org/uzu/strudel/pulls/745
+- hopefully fix trailing slashes bug by @felixroos in https://codeberg.org/uzu/strudel/pulls/753
+- Update vite pwa by @felixroos in https://codeberg.org/uzu/strudel/pulls/772
+- Update to Astro 3 by @felixroos in https://codeberg.org/uzu/strudel/pulls/775
+- support multiple named serial connections, change default baudrate by @yaxu in https://codeberg.org/uzu/strudel/pulls/551
+- CHANGES: github action checkout v2 -> v4 by @bwagner in https://codeberg.org/uzu/strudel/pulls/837
+- CHANGES: pin pnpm to version 8.3.1 by @bwagner in https://codeberg.org/uzu/strudel/pulls/834
+- CHANGES: github action pnpm version from 7 to 8.3.1 by @bwagner in https://codeberg.org/uzu/strudel/pulls/835
+- ADDS: JetBrains IDE files and directories to .gitignore by @bwagner in https://codeberg.org/uzu/strudel/pulls/840
+- Prevent 404 on Algolia crawls by @ilesinge in https://codeberg.org/uzu/strudel/pulls/838
+- Add in fixes from my fork to slashocalypse branch by @shiyouganai in https://codeberg.org/uzu/strudel/pulls/843
+- improve slashing + base href behavior by @felixroos in https://codeberg.org/uzu/strudel/pulls/842
+- CHANGES: pnpm 8.1.3 to 8.11.0 by @bwagner in https://codeberg.org/uzu/strudel/pulls/850
+- add missing trailing slashes by @felixroos in https://codeberg.org/uzu/strudel/pulls/860
+- move all examples to separate examples folder by @felixroos in https://codeberg.org/uzu/strudel/pulls/878
+- Dependency update by @felixroos in https://codeberg.org/uzu/strudel/pulls/879
+- Update Vite version so hot reload works properly with newest pnpm version by @daslyfe in https://codeberg.org/uzu/strudel/pulls/892
+- prevent vite from complaining about additional exports in jsx files by @daslyfe in https://codeberg.org/uzu/strudel/pulls/891
+- fix some build warnings by @felixroos in https://codeberg.org/uzu/strudel/pulls/902
+- Remove hideHeader for better mobile UI and consistency by @rjulian in https://codeberg.org/uzu/strudel/pulls/894
+- Fix: swatch/[name].png.js static path by @oscarbyrne in https://codeberg.org/uzu/strudel/pulls/916
+- rename @strudel.cycles/_ packages to @strudel/_ by @felixroos in https://codeberg.org/uzu/strudel/pulls/917
+- `pick` now accepts lookup tables, with alternate cycle squeezing behaviour as new `inhabit` function by @yaxu in https://codeberg.org/uzu/strudel/pulls/918
+- Revert "`pick` now accepts lookup tables, with alternate cycle squeezing behaviour as new `inhabit` function" by @yaxu in https://codeberg.org/uzu/strudel/pulls/920
+- Fix pattern tab not showing patterns without created date by @daslyfe in https://codeberg.org/uzu/strudel/pulls/934
## New Contributors
-- @ilesinge made their first contribution in https://github.com/tidalcycles/strudel/pull/748
-- @Dsm0 made their first contribution in https://github.com/tidalcycles/strudel/pull/773
-- @kasparsj made their first contribution in https://github.com/tidalcycles/strudel/pull/802
-- @atfornes made their first contribution in https://github.com/tidalcycles/strudel/pull/818
-- @drewgbarnes made their first contribution in https://github.com/tidalcycles/strudel/pull/830
-- @shiyouganai made their first contribution in https://github.com/tidalcycles/strudel/pull/843
-- @rjulian made their first contribution in https://github.com/tidalcycles/strudel/pull/894
-- @fnordomat made their first contribution in https://github.com/tidalcycles/strudel/pull/907
-- @oscarbyrne made their first contribution in https://github.com/tidalcycles/strudel/pull/916
-- @geikha made their first contribution in https://github.com/tidalcycles/strudel/pull/924
+- @ilesinge made their first contribution in https://codeberg.org/uzu/strudel/pulls/748
+- @Dsm0 made their first contribution in https://codeberg.org/uzu/strudel/pulls/773
+- @kasparsj made their first contribution in https://codeberg.org/uzu/strudel/pulls/802
+- @atfornes made their first contribution in https://codeberg.org/uzu/strudel/pulls/818
+- @drewgbarnes made their first contribution in https://codeberg.org/uzu/strudel/pulls/830
+- @shiyouganai made their first contribution in https://codeberg.org/uzu/strudel/pulls/843
+- @rjulian made their first contribution in https://codeberg.org/uzu/strudel/pulls/894
+- @fnordomat made their first contribution in https://codeberg.org/uzu/strudel/pulls/907
+- @oscarbyrne made their first contribution in https://codeberg.org/uzu/strudel/pulls/916
+- @geikha made their first contribution in https://codeberg.org/uzu/strudel/pulls/924
-**Full Changelog**: https://github.com/tidalcycles/strudel/compare/v0.9.0...v1.0.0
+**Full Changelog**: https://codeberg.org/uzu/strudel/compare/v0.9.0...v1.0.0
diff --git a/website/src/content/blog/year-2.mdx b/website/src/content/blog/year-2.mdx
index 38e39bbfd..0ea4616a3 100644
--- a/website/src/content/blog/year-2.mdx
+++ b/website/src/content/blog/year-2.mdx
@@ -216,9 +216,9 @@ Here is a recording of the first session we organized over the discord server:
The midi integration has gotten a few new features:
-- [clock out](https://github.com/tidalcycles/strudel/pull/710) to sync your midi devices / DAW to the strudel clock (better doc coming soon)
+- [clock out](https://codeberg.org/uzu/strudel/pulls/710) to sync your midi devices / DAW to the strudel clock (better doc coming soon)
- [cc output](https://strudel.cc/learn/input-output/#ccn--ccv) to send cc values to your gear
-- [cc input](https://github.com/tidalcycles/strudel/pull/699) to control strudel via MIDI (better doc coming soon)
+- [cc input](https://codeberg.org/uzu/strudel/pulls/699) to control strudel via MIDI (better doc coming soon)
Here is a little demo of me fiddling with a midi controller, changing a piano pattern:
From 912b3270aaaf1a28f2444f130c179bf110edc048 Mon Sep 17 00:00:00 2001
From: Felix Roos
Date: Sat, 14 Jun 2025 14:35:19 +0200
Subject: [PATCH 64/74] use yt for gh video assets + replace release asset
links
---
.../content/blog/release-0.8.0-himbeermuffin.mdx | 14 +++++++-------
.../src/content/blog/release-0.9.0-bananenbrot.mdx | 6 +++---
.../blog/release-1.0.0-geburtstagskuchen.mdx | 2 --
3 files changed, 10 insertions(+), 12 deletions(-)
diff --git a/website/src/content/blog/release-0.8.0-himbeermuffin.mdx b/website/src/content/blog/release-0.8.0-himbeermuffin.mdx
index babab5954..1eb1888a7 100644
--- a/website/src/content/blog/release-0.8.0-himbeermuffin.mdx
+++ b/website/src/content/blog/release-0.8.0-himbeermuffin.mdx
@@ -6,7 +6,7 @@ tags: ['meta']
author: froos
---
-import BlogVideo from '../../components/BlogVideo.astro';
+import { Youtube } from '@src/components/Youtube';
These are the release notes for Strudel 0.8.0 aka "Himbeermuffin"!
@@ -18,11 +18,11 @@ Let me write up some of the highlights:
Besides the REPL (https://strudel.tidalcycles.org/), Strudel is now also distributed as a Desktop App via https://tauri.app/! Thanks to [vasilymilovidov](https://github.com/vasilymilovidov)!
-- [Linux: Debian based](https://github.com/tidalcycles/strudel/releases/download/v0.8.0/strudel_0.1.0_amd64.deb)
-- [Linux: AppImage](https://github.com/tidalcycles/strudel/releases/download/v0.8.0/strudel_0.1.0_amd64.AppImage)
-- [MacOS](https://github.com/tidalcycles/strudel/releases/download/v0.8.0/Strudel_0.1.0_x64.dmg)
-- [Windows .exe](https://github.com/tidalcycles/strudel/releases/download/v0.8.0/Strudel_0.1.0_x64-setup.exe)
-- [Windows .msi](https://github.com/tidalcycles/strudel/releases/download/v0.8.0/Strudel_0.1.0_x64_en-US.msi)
+- [Linux: Debian based](https://codeberg.org/uzu/strudel/releases/download/v0.8.0/strudel_0.1.0_amd64.deb)
+- [Linux: AppImage](https://codeberg.org/uzu/strudel/releases/download/v0.8.0/strudel_0.1.0_amd64.AppImage)
+- [MacOS](https://codeberg.org/uzu/strudel/releases/download/v0.8.0/Strudel_0.1.0_x64.dmg)
+- [Windows .exe](https://codeberg.org/uzu/strudel/releases/download/v0.8.0/Strudel_0.1.0_x64-setup.exe)
+- [Windows .msi](https://codeberg.org/uzu/strudel/releases/download/v0.8.0/Strudel_0.1.0_x64_en-US.msi)
edit: the desktop app performance on linux is currently not that great.. the web REPL runs much smoother (using firefox or chromium)
@@ -43,7 +43,7 @@ I would be very happy to collect some feedback on how it works across different
Also still undocumented, but you can now visualize patterns as a spiral via `.spiral()`:
-
+
This is especially nice because strudel is not only the name of a dessert but also the german word for vortex! The spiral is very fitting to visualize cycles because you can align cycles vertically, while surfing along an infinite twisted timeline.
diff --git a/website/src/content/blog/release-0.9.0-bananenbrot.mdx b/website/src/content/blog/release-0.9.0-bananenbrot.mdx
index 944675e38..eb6894f69 100644
--- a/website/src/content/blog/release-0.9.0-bananenbrot.mdx
+++ b/website/src/content/blog/release-0.9.0-bananenbrot.mdx
@@ -6,8 +6,6 @@ tags: ['meta']
author: froos
---
-import BlogVideo from '../../components/BlogVideo.astro';
-
These are the release notes for Strudel 0.9.0 aka "Bananenbrot"!
The last release was over 11 weeks ago, so a lot of things have happened!
@@ -25,7 +23,9 @@ Main new features include:
- [vibrato](https://strudel.tidalcycles.org/learn/synths#vibrato)
- an integration of [ZZFX](https://strudel.tidalcycles.org/learn/synths#zzfx)
-
+import { Youtube } from '@src/components/Youtube';
+
+
Related PRs:
diff --git a/website/src/content/blog/release-1.0.0-geburtstagskuchen.mdx b/website/src/content/blog/release-1.0.0-geburtstagskuchen.mdx
index 0ee149a20..bfbf24a20 100644
--- a/website/src/content/blog/release-1.0.0-geburtstagskuchen.mdx
+++ b/website/src/content/blog/release-1.0.0-geburtstagskuchen.mdx
@@ -6,8 +6,6 @@ tags: ['meta']
author: froos
---
-import BlogVideo from '../../components/BlogVideo.astro';
-
These are the release notes for Strudel 1.0.0 aka "Geburtstagskuchen"
This release marks the 2 year anniversary of the project, the first commit was on the 22nd January 2022 by Alex McLean.
From 0163c8ba25712f56c0aa725a770d8c84a3b6552f Mon Sep 17 00:00:00 2001
From: Felix Roos
Date: Sat, 14 Jun 2025 14:47:16 +0200
Subject: [PATCH 65/74] replace remaining links to old github repo
---
website/src/content/blog/year-2.mdx | 2 +-
website/src/pages/learn/getting-started.mdx | 2 +-
website/src/pages/learn/input-output.mdx | 4 +--
website/src/pages/learn/metadata.mdx | 2 --
website/src/pages/learn/samples.mdx | 2 +-
website/src/pages/learn/strudel-vs-tidal.mdx | 8 ++---
website/src/pages/technical-manual/docs.mdx | 4 +--
.../src/pages/technical-manual/packages.mdx | 30 +++++++++----------
.../pages/technical-manual/project-start.mdx | 6 ++--
website/src/pages/technical-manual/repl.mdx | 4 +--
10 files changed, 31 insertions(+), 33 deletions(-)
diff --git a/website/src/content/blog/year-2.mdx b/website/src/content/blog/year-2.mdx
index 0ea4616a3..1a33c673b 100644
--- a/website/src/content/blog/year-2.mdx
+++ b/website/src/content/blog/year-2.mdx
@@ -228,7 +228,7 @@ Here is a little demo of me fiddling with a midi controller, changing a piano pa
- You can now run [hydra inside strudel](https://strudel.cc/learn/hydra/) + you can even run strudel in [hydra](https://hydra.ojack.xyz), thanks to [Olivia Jack](https://ojack.xyz/) and [Ámbar Tenorio Fornés](https://atenor.io/)! Read more [here](https://alpaca.pubpub.org/pub/b7hwrjfk/release/2?readingCollection=1def0192)
- There is now a [VSCode Plugin](https://marketplace.visualstudio.com/items?itemName=roipoussiere.tidal-strudel) thanks to [roipoussiere](https://github.com/roipoussiere)! It allows you run patterns from a `.strudel` file inside VSCode.
-- Strudel can now be downloaded as a desktop app, thanks to [vasilymilovidov](https://github.com/vasilymilovidov) who has wrapped the REPL with [tauri](https://tauri.app/). You can download it [on the releases page](https://github.com/tidalcycles/strudel/releases) (scroll down to Assets). The performance is not optimal on MacOS and Linux, which is why it is still considered experimental
+- Strudel can now be downloaded as a desktop app, thanks to [vasilymilovidov](https://github.com/vasilymilovidov) who has wrapped the REPL with [tauri](https://tauri.app/). You can download it [on the releases page](https://codeberg.org/uzu/strudel/releases) (scroll down to Assets). The performance is not optimal on MacOS and Linux, which is why it is still considered experimental
## Stats
diff --git a/website/src/pages/learn/getting-started.mdx b/website/src/pages/learn/getting-started.mdx
index d18a05607..2d056d3b4 100644
--- a/website/src/pages/learn/getting-started.mdx
+++ b/website/src/pages/learn/getting-started.mdx
@@ -81,7 +81,7 @@ s("bd,[~ ],hh*8") // drums
Please note that this project is still in its experimental state.
In the future, parts of it might change significantly.
This tutorial is also far from complete.
-You can contribute to it clicking 'Edit this page' in the top right, or by visiting the [Strudel GitHub page](https://github.com/tidalcycles/strudel/).
+You can contribute to it clicking 'Edit this page' in the top right, or by visiting the [Strudel GitHub page](https://codeberg.org/uzu/strudel/).
# What's next?
diff --git a/website/src/pages/learn/input-output.mdx b/website/src/pages/learn/input-output.mdx
index 92379aa6f..0dd48b7de 100644
--- a/website/src/pages/learn/input-output.mdx
+++ b/website/src/pages/learn/input-output.mdx
@@ -8,7 +8,7 @@ import { JsDoc } from '../../docs/JsDoc';
# MIDI, OSC and MQTT
-Normally, Strudel is used to pattern sound, using its own '[web audio](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API)'-based synthesiser called [SuperDough](https://github.com/tidalcycles/strudel/tree/main/packages/superdough).
+Normally, Strudel is used to pattern sound, using its own '[web audio](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API)'-based synthesiser called [SuperDough](https://codeberg.org/uzu/strudel/src/branch/main/packages/superdough).
It is also possible to pattern other things with Strudel, such as software and hardware synthesisers with MIDI, other software using Open Sound Control/OSC (including the [SuperDirt](https://github.com/musikinformatik/SuperDirt/) synthesiser commonly used with Strudel's sibling [TidalCycles](https://tidalcycles.org/)), or the MQTT 'internet of things' protocol.
@@ -184,7 +184,7 @@ To get SuperDirt to work with Strudel, you need to
1. install SuperCollider + sc3 plugins, see [Tidal Docs](https://tidalcycles.org/docs/) (Install Tidal) for more info.
2. install SuperDirt, or the [StrudelDirt](https://github.com/daslyfe/StrudelDirt) fork which is optimised for use with Strudel
3. install [node.js](https://nodejs.org/en/)
-4. download [Strudel Repo](https://github.com/tidalcycles/strudel/) (or git clone, if you have git installed)
+4. download [Strudel Repo](https://codeberg.org/uzu/strudel/) (or git clone, if you have git installed)
5. run `pnpm i` in the strudel directory
6. run `pnpm run osc` to start the osc server, which forwards OSC messages from Strudel REPL to SuperCollider
diff --git a/website/src/pages/learn/metadata.mdx b/website/src/pages/learn/metadata.mdx
index e8bb86dfc..61db16f0e 100644
--- a/website/src/pages/learn/metadata.mdx
+++ b/website/src/pages/learn/metadata.mdx
@@ -18,8 +18,6 @@ You can optionally add some music metadata in your Strudel code, by using tags i
Like other comments, those are ignored by Strudel, but it can be used by other tools to retrieve some information about the music.
-It is for instance used by the [swatch tool](https://github.com/tidalcycles/strudel/tree/main/my-patterns) to display pattern titles in the [examples page](https://strudel.cc/examples/).
-
## Alternative syntax
You can also use comment blocks:
diff --git a/website/src/pages/learn/samples.mdx b/website/src/pages/learn/samples.mdx
index 890de3aae..cd7944caa 100644
--- a/website/src/pages/learn/samples.mdx
+++ b/website/src/pages/learn/samples.mdx
@@ -62,7 +62,7 @@ To see which sample names are available, open the `sounds` tab in the [REPL](htt
Note that only the sample maps (mapping names to URLs) are loaded initially, while the audio samples themselves are not loaded until they are actually played.
This behaviour of loading things only when they are needed is also called `lazy loading`.
While it saves resources, it can also lead to sounds not being audible the first time they are triggered, because the sound is still loading.
-[This might be fixed in the future](https://github.com/tidalcycles/strudel/issues/187)
+[This might be fixed in the future](https://codeberg.org/uzu/strudel/issues/187)
# Sound Banks
diff --git a/website/src/pages/learn/strudel-vs-tidal.mdx b/website/src/pages/learn/strudel-vs-tidal.mdx
index 40ea188fd..9c1cc6b73 100644
--- a/website/src/pages/learn/strudel-vs-tidal.mdx
+++ b/website/src/pages/learn/strudel-vs-tidal.mdx
@@ -79,7 +79,7 @@ Instead of `+` / `add`, you can use any of the available operators of the first
## Function Compatibility
-[This issue](https://github.com/tidalcycles/strudel/issues/31) tracks which Tidal functions are implemented in Strudel.
+[This issue](https://codeberg.org/uzu/strudel/issues/31) tracks which Tidal functions are implemented in Strudel.
The list might not be 100% up to date and probably also misses some functions completely..
Feel encouraged to search the source code for a function you're looking for.
If you find a function that's not on the list, please tell!
@@ -89,7 +89,7 @@ If you find a function that's not on the list, please tell!
As seen in the example, the `#` operator (shorthand for `|>`) is also just a function call in strudel.
So `note "c5" # s "gtr"` becomes `note("c5").s('gtr')`.
-[This file](https://github.com/tidalcycles/strudel/blob/main/packages/core/controls.mjs) lists all available control params.
+[This file](https://codeberg.org/uzu/strudel/src/branch/main/packages/core/controls.mjs) lists all available control params.
Note that not all of those work in the Webaudio Output of Strudel.
If you find a tidal control that's not on the list, please tell!
@@ -107,11 +107,11 @@ You can find a [list of available effects here](/learn/effects/).
### Sampler
Strudel's sampler supports [a subset](/learn/samples) of Superdirt's sampler.
-Also, samples are always loaded from a URL rather than from the disk, although [that might be possible in the future](https://github.com/tidalcycles/strudel/issues/118).
+Also, samples are always loaded from a URL rather than from the disk, although [that might be possible in the future](https://codeberg.org/uzu/strudel/issues/118).
## Evaluation
-The Strudel REPL does not support [block based evaluation](https://github.com/tidalcycles/strudel/issues/34) yet.
+The Strudel REPL does not support [block based evaluation](https://codeberg.org/uzu/strudel/issues/34) yet.
You can use labeled statements and `_` to mute:
*8").scale('G4 minor')
This will load the strudel website in an iframe, using the code provided within the HTML comments ``.
The HTML comments are needed to make sure the browser won't interpret it as HTML.
-For alternative ways to load this package, see the [@strudel/embed README](https://github.com/tidalcycles/strudel/tree/main/packages/embed#strudelembed).
+For alternative ways to load this package, see the [@strudel/embed README](https://codeberg.org/uzu/strudel/src/branch/main/packages/embed#strudel-embed).
### @strudel/repl
@@ -99,7 +99,7 @@ The upside of using the repl without an iframe is that you can pin the strudel v
This will guarantee your pattern wont break due to changes to the strudel project in the future.
-For more info on this package, see the [@strudel/repl README](https://github.com/tidalcycles/strudel/tree/main/packages/repl#strudelrepl).
+For more info on this package, see the [@strudel/repl README](https://codeberg.org/uzu/strudel/src/branch/main/packages/repl#strudel-repl).
## With your own UI
@@ -118,7 +118,7 @@ If you'd rather use your own UI, you can use the `@strudel/web` package:
```
-For more info on this package, see the [@strudel/web README](https://github.com/tidalcycles/strudel/tree/main/packages/web#strudelweb).
+For more info on this package, see the [@strudel/web README]https://codeberg.org/uzu/strudel/src/branch/main/packages/web#strudel-web).
## Via npm
diff --git a/website/src/pages/technical-manual/repl.mdx b/website/src/pages/technical-manual/repl.mdx
index f336ce361..f53efac41 100644
--- a/website/src/pages/technical-manual/repl.mdx
+++ b/website/src/pages/technical-manual/repl.mdx
@@ -17,7 +17,7 @@ Besides a UI for playback control and meta information, the main part of the REP
2. While the REPL is running, the `Scheduler` queries the active `Pattern` by a regular interval, generating `Events` (also known as `Haps` in Strudel) for the next time span.
3. For each scheduling tick, all generated `Events` are triggered by calling their `onTrigger` method, which is set by the output.
-
+
## User Code
@@ -75,7 +75,7 @@ The sum of both is passed to `withLoc` to tell each element its location, which
Another important part of the user code is the mini notation, which allows to express rhythms in a short manner.
-- the mini notation is [implemented as a PEG grammar](https://github.com/tidalcycles/strudel/blob/main/packages/mini/krill.pegjs), living in the [mini package](https://github.com/tidalcycles/strudel/tree/main/packages/mini)
+- the mini notation is [implemented as a PEG grammar](https://codeberg.org/uzu/strudel/src/branch/talk/packages/mini/krill.pegjs), living in the [mini package](https://codeberg.org/uzu/strudel/src/branch/main/packages/mini)
- it is based on [krill](https://github.com/Mdashdotdashn/krill) by Mdashdotdashn
- the peg grammar is used to generate a parser with [peggyjs](https://peggyjs.org/)
- the generated parser takes a mini notation string and outputs an AST
From a7f044e1aae575355d8a92dea3ca05ef480a8c64 Mon Sep 17 00:00:00 2001
From: Felix Roos
Date: Sat, 14 Jun 2025 16:17:22 +0200
Subject: [PATCH 66/74] more degithubbing
---
packages/core/test/controls.test.mjs | 2 +-
packages/core/test/drawLine.test.mjs | 2 +-
packages/core/test/fraction.test.mjs | 2 +-
packages/core/test/pattern.test.mjs | 2 +-
packages/core/test/util.test.mjs | 2 +-
packages/mini/test/mini.test.mjs | 2 +-
packages/repl/README.md | 2 +-
packages/tonal/test/tonal.test.mjs | 2 +-
packages/tonal/test/tonleiter.test.mjs | 2 +-
packages/transpiler/test/transpiler.test.mjs | 2 +-
packages/xen/test/xen.test.mjs | 2 +-
technical.manual.md | 6 +++---
website/src/cx.mjs | 2 +-
website/src/repl/Repl.jsx | 2 +-
website/src/repl/components/panel/WelcomeTab.jsx | 2 +-
website/src/repl/tunes.mjs | 2 +-
website/src/repl/useReplContext.jsx | 2 +-
17 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/packages/core/test/controls.test.mjs b/packages/core/test/controls.test.mjs
index f0af02eb6..667c3a4e5 100644
--- a/packages/core/test/controls.test.mjs
+++ b/packages/core/test/controls.test.mjs
@@ -1,6 +1,6 @@
/*
controls.test.mjs -
-Copyright (C) 2023 Strudel contributors - see
+Copyright (C) 2023 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/test/drawLine.test.mjs b/packages/core/test/drawLine.test.mjs
index 84359a7cf..2240080cd 100644
--- a/packages/core/test/drawLine.test.mjs
+++ b/packages/core/test/drawLine.test.mjs
@@ -1,6 +1,6 @@
/*
drawLine.test.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/test/fraction.test.mjs b/packages/core/test/fraction.test.mjs
index 6b710d043..b167c9483 100644
--- a/packages/core/test/fraction.test.mjs
+++ b/packages/core/test/fraction.test.mjs
@@ -1,6 +1,6 @@
/*
fraction.test.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/test/pattern.test.mjs b/packages/core/test/pattern.test.mjs
index 08611032c..696f13fef 100644
--- a/packages/core/test/pattern.test.mjs
+++ b/packages/core/test/pattern.test.mjs
@@ -1,6 +1,6 @@
/*
pattern.test.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/core/test/util.test.mjs b/packages/core/test/util.test.mjs
index a511e0fc2..d3033a82c 100644
--- a/packages/core/test/util.test.mjs
+++ b/packages/core/test/util.test.mjs
@@ -1,6 +1,6 @@
/*
util.test.mjs - Tests for the core 'util' module
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/mini/test/mini.test.mjs b/packages/mini/test/mini.test.mjs
index 15d501111..c38997308 100644
--- a/packages/mini/test/mini.test.mjs
+++ b/packages/mini/test/mini.test.mjs
@@ -1,6 +1,6 @@
/*
mini.test.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/repl/README.md b/packages/repl/README.md
index 46819712c..3db4cc3f7 100644
--- a/packages/repl/README.md
+++ b/packages/repl/README.md
@@ -91,7 +91,7 @@ or
```
-The `.editor` property on the `strudel-editor` web component gives you the instance of [StrudelMirror](https://github.com/tidalcycles/strudel/blob/a46bd9b36ea7d31c9f1d3fca484297c7da86893f/packages/codemirror/codemirror.mjs#L124) that runs the REPL.
+The `.editor` property on the `strudel-editor` web component gives you the instance of [StrudelMirror](https://codeberg.org/uzu/strudel/src/branch/a46bd9b36ea7d31c9f1d3fca484297c7da86893f/packages/codemirror/codemirror.mjs#L124) that runs the REPL.
For example, you could use `setCode` to change the code from the outside, `start` / `stop` to toggle playback or `evaluate` to evaluate the code.
diff --git a/packages/tonal/test/tonal.test.mjs b/packages/tonal/test/tonal.test.mjs
index 8dd0e1861..c1155c238 100644
--- a/packages/tonal/test/tonal.test.mjs
+++ b/packages/tonal/test/tonal.test.mjs
@@ -1,6 +1,6 @@
/*
tonal.test.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/tonal/test/tonleiter.test.mjs b/packages/tonal/test/tonleiter.test.mjs
index e1a693579..b53a8f405 100644
--- a/packages/tonal/test/tonleiter.test.mjs
+++ b/packages/tonal/test/tonleiter.test.mjs
@@ -1,6 +1,6 @@
/*
tonleiter.test.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/transpiler/test/transpiler.test.mjs b/packages/transpiler/test/transpiler.test.mjs
index 988479b4f..02970cf43 100644
--- a/packages/transpiler/test/transpiler.test.mjs
+++ b/packages/transpiler/test/transpiler.test.mjs
@@ -1,6 +1,6 @@
/*
transpiler.test.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/packages/xen/test/xen.test.mjs b/packages/xen/test/xen.test.mjs
index 977b0f694..a0982208a 100644
--- a/packages/xen/test/xen.test.mjs
+++ b/packages/xen/test/xen.test.mjs
@@ -1,6 +1,6 @@
/*
xen.test.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/technical.manual.md b/technical.manual.md
index 58f7cd934..6068b48fe 100644
--- a/technical.manual.md
+++ b/technical.manual.md
@@ -17,7 +17,7 @@ More info in the [REPL README](https://codeberg.org/uzu/strudel/src/branch/main/
# High Level Overview
-
+
## 1. End User Code
@@ -48,7 +48,7 @@ mini('c3 [e3 g3]')
This is how it works:
-
+
- The user code is parsed with a [shift parser](https://github.com/shapesecurity/shift-parser-js), generating an AST
- The AST is transformed to resolve the syntax sugar
@@ -171,7 +171,7 @@ Here is an example Hap value with different properties:
```js
{ note: 'a4', s: 'sawtooth', gain: 0.5, cutoff: 267 }
```
-
+
diff --git a/website/src/cx.mjs b/website/src/cx.mjs
index 4e4aea08d..d8ff9eda1 100644
--- a/website/src/cx.mjs
+++ b/website/src/cx.mjs
@@ -1,6 +1,6 @@
/*
cx.js -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/website/src/repl/Repl.jsx b/website/src/repl/Repl.jsx
index e46eb7171..813f63897 100644
--- a/website/src/repl/Repl.jsx
+++ b/website/src/repl/Repl.jsx
@@ -1,6 +1,6 @@
/*
Repl.jsx -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/website/src/repl/components/panel/WelcomeTab.jsx b/website/src/repl/components/panel/WelcomeTab.jsx
index a43f02ad4..b3b167c74 100644
--- a/website/src/repl/components/panel/WelcomeTab.jsx
+++ b/website/src/repl/components/panel/WelcomeTab.jsx
@@ -38,7 +38,7 @@ export function WelcomeTab({ context }) {
, which is a popular live coding language for music, written in Haskell. Strudel is free/open source software:
you can redistribute and/or modify it under the terms of the{' '}
-
+
GNU Affero General Public License
. You can find the source code at{' '}
diff --git a/website/src/repl/tunes.mjs b/website/src/repl/tunes.mjs
index cffe0c0eb..774e04e49 100644
--- a/website/src/repl/tunes.mjs
+++ b/website/src/repl/tunes.mjs
@@ -1,6 +1,6 @@
/*
tunes.mjs -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
diff --git a/website/src/repl/useReplContext.jsx b/website/src/repl/useReplContext.jsx
index 36e8099cb..12621c50a 100644
--- a/website/src/repl/useReplContext.jsx
+++ b/website/src/repl/useReplContext.jsx
@@ -1,6 +1,6 @@
/*
Repl.jsx -
-Copyright (C) 2022 Strudel contributors - see
+Copyright (C) 2022 Strudel contributors - see
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
*/
From d856e567c17c04cad083850955d838e3e328e404 Mon Sep 17 00:00:00 2001
From: alex
Date: Sat, 14 Jun 2025 15:22:27 +0100
Subject: [PATCH 67/74] link back to tech manual in wiki
---
packages/README.md | 2 +-
technical.manual.md | 193 --------------------------------------------
2 files changed, 1 insertion(+), 194 deletions(-)
delete mode 100644 technical.manual.md
diff --git a/packages/README.md b/packages/README.md
index a5b93d321..98938d6c3 100644
--- a/packages/README.md
+++ b/packages/README.md
@@ -2,4 +2,4 @@
Each folder represents one of the @strudel/* packages [published to npm](https://www.npmjs.com/org/strudel).
-To understand how those pieces connect, refer to the [Technical Manual](https://codeberg.org/uzu/strudel/src/branch/main/technical-manual.md) or the individual READMEs.
+To understand how those pieces connect, refer to the [Technical Manual](https://codeberg.org/uzu/strudel/wiki/Technical-Manual) or the individual READMEs.
diff --git a/technical.manual.md b/technical.manual.md
deleted file mode 100644
index 6068b48fe..000000000
--- a/technical.manual.md
+++ /dev/null
@@ -1,193 +0,0 @@
-This document introduces you to Strudel in a technical sense. If you just want to *use* Strudel, have a look at the [Tutorial](https://strudel.tidalcycles.org/tutorial/).
-
-## Strudel Packages
-
-There are different packages for different purposes. They..
-
-- split up the code into smaller chunks
-- can be selectively used to implement some sort of time based system
-
-Please refer to the individual README files in the [packages folder](https://codeberg.org/uzu/strudel/src/branch/main/packages)
-
-## REPL
-
-The [REPL](https://strudel.tidalcycles.org/) is the place where all packages come together to form a live coding system. It can also be seen as a reference implementation for users of the library.
-
-More info in the [REPL README](https://codeberg.org/uzu/strudel/src/branch/main/packages/repl/README.md)
-
-# High Level Overview
-
-
-
-## 1. End User Code
-
-The End User Code is written in JavaScript with added syntax sugar. The [eval package](https://codeberg.org/uzu/strudel/src/branch/main/packages/eval#strudelcycleseval) evaluates the user code
-after a transpilation step, which resolves the syntax sugar. If you don't want the syntax sugar, you can omit the eval package and call the native javascript `eval` instead.
-
-### 🍭 Syntax Sugar
-
-JavaScript Transpilation = converting valid JavaScript to valid JavaScript:
-
-```js
-"c3 [e3 g3]".fast(2)
-```
-
-becomes
-
-```js
-mini('c3 [e3 g3]')
- .withMiniLocation([1, 0, 0], [1, 11, 11]) // source location
- .fast(2);
-```
-
-- double quoted strings and backtick strings are turned into `mini` calls (single quoted strings are left as is)
-- The source location is added by chaining `withMiniLocation`, which enables the real time highlighting later
-- (psuedo) variable names that look like notes (like `c4`, `bb2` or `fs3`) are turned into strings
-- support for top level await
-- operator overloading could be implemented in the future
-
-This is how it works:
-
-
-
-- The user code is parsed with a [shift parser](https://github.com/shapesecurity/shift-parser-js), generating an AST
-- The AST is transformed to resolve the syntax sugar
-- The AST is used to generate code again (shift-codegen)
-
-Shift will most likely be replaced with acorn in the future, see https://codeberg.org/uzu/strudel/issues/174
-
-### Mini Notation
-
-Another important part of the user code is the mini notation, which allows to express rhythms in a short manner.
-
-- the mini notation is [implemented as a PEG grammar](https://codeberg.org/uzu/strudel/src/branch/main/packages/mini/krill.pegjs), living in the [mini package](https://codeberg.org/uzu/strudel/src/branch/main/packages/mini)
-- it is based on [krill](https://github.com/Mdashdotdashn/krill) by Mdashdotdashn
-- the peg grammar is used to generate a parser with [peggyjs](https://peggyjs.org/)
-- the generated parser takes a mini notation string and outputs an AST
-- the AST can then be used to construct a pattern using the regular Strudel API
-
-Here's an example AST:
-
-```json
-{
- "type_": "pattern",
- "arguments_": { "alignment": "h" },
- "source_": [
- {
- "type_": "element", "source_": "c3",
- "location_": { "start": { "offset": 1, "line": 1, "column": 2 }, "end": { "offset": 4, "line": 1, "column": 5 } }
- },
- {
- "type_": "element",
- "location_": { "start": { "offset": 4, "line": 1, "column": 5 }, "end": { "offset": 11, "line": 1, "column": 12 } }
- "source_": {
- "type_": "pattern", "arguments_": { "alignment": "h" },
- "source_": [
- {
- "type_": "element", "source_": "e3",
- "location_": { "start": { "offset": 5, "line": 1, "column": 6 }, "end": { "offset": 8, "line": 1, "column": 9 } }
- },
- {
- "type_": "element", "source_": "g3",
- "location_": { "start": { "offset": 8, "line": 1, "column": 9 }, "end": { "offset": 10, "line": 1, "column": 11 } }
- }
- ]
- },
- }
- ]
-}
-```
-
-which translates to `seq(c3, seq(e3, g3))`
-
-## 2. Querying & Scheduling
-
-When the user code has been evaluated, we hopefully get a Pattern instance, which we can use to query events from.
-These events can then be used to trigger side effects in the real world. On that note, Events are mostly called Hap(s) in the codebase, because JS already has a built in `Event` class.
-
-### Querying
-
-> Querying = Asking a Pattern for Events within a certain time span
-
-```js
-seq('c3', ['e3', 'g3']) // <--- Pattern
- .queryArc(0, 2) // query events within 0 and 2 cycles
- .map((hap) => hap.showWhole()); // make readable
-```
-
-yields
-
-```js
-[
- '0/1 -> 1/2: c3', // cycle 0
- '1/2 -> 3/4: e3',
- '3/4 -> 1/1: g3',
- '1/1 -> 3/2: c3', // cycle 1
- '3/2 -> 7/4: e3',
- '7/4 -> 2/1: g3',
-];
-```
-
-### 🗓️ Scheduling
-
-The scheduler will query events repeatedly, creating a possibly endless loop of time slices.
-Here is a simplified example of how it works
-
-```js
-let step = 0.5; // query interval in seconds
-let tick = 0; // how many intervals have passed
-let pattern = seq('c3', ['e3', 'g3']); // pattern from user
-setInterval(() => {
- const events = pattern.queryArc(tick * step, ++tick * step);
- events.forEach((event) => {
- console.log(event.showWhole());
- const o = getAudioContext().createOscillator();
- o.frequency.value = getFreq(event.value);
- o.start(event.whole.begin);
- o.stop(event.whole.begin + event.duration);
- o.connect(getAudioContext().destination);
- });
-}, step * 1000); // query each "step" seconds
-```
-
-## 3. Sound Output
-
-The third and last step is to use the scheduled events to make sound.
-Patterns are wrapped with param functions to compose different properties of the sound.
-
-```js
-note("[c2(3,8) [ bb1]]") // sets frequency
- .s("") // sound source
- .gain(.5) // turn down volume
- .cutoff(sine.range(200,1000).slow(4)) // modulated cutoff
- .slow(2)
- .out().logValues()`,
- ]}
-/>
-```
-
-Here is an example Hap value with different properties:
-
-```js
-{ note: 'a4', s: 'sawtooth', gain: 0.5, cutoff: 267 }
-```
-
-
-
-
-- Patterns represent just values in time!
-- Suitable for any time based output (music, visuals, movement, .. ?)
-
-### Supported Outputs
-
-At the time of writing this doc, the following outputs are supported:
-
-- Web Audio API `.out()` see [/webaudio](https://codeberg.org/uzu/strudel/src/branch/main/packages/webaudio)
-- MIDI `.midi()` see [/midi](https://codeberg.org/uzu/strudel/src/branch/main/packages/midi)
-- OSC `.osc()` see [/osc](https://codeberg.org/uzu/strudel/src/branch/main/packages/osc)
-- Serial `.serial()` see [/serial](https://codeberg.org/uzu/strudel/src/branch/main/packages/serial)
-- Tone.js `.tone()` (deprecated?) [/tone](https://codeberg.org/uzu/strudel/src/branch/main/packages/tone)
-- WebDirt `.webdirt()` (deprecated?) [/webdirt](https://codeberg.org/uzu/strudel/src/branch/main/packages/webdirt)
-- Speech `.speak()` (experimental) part of [/core](https://codeberg.org/uzu/strudel/src/branch/main/packages/core)
-
-These could change, so make sure to check the [packages folder](https://codeberg.org/uzu/strudel/src/branch/main/packages).
From 9738c90b82dbae40e2bf5ad2e477d464d644ccdc Mon Sep 17 00:00:00 2001
From: Felix Roos
Date: Sat, 14 Jun 2025 16:23:03 +0200
Subject: [PATCH 68/74] even more degithubbing
---
packages/core/test/pattern.test.mjs | 2 +-
packages/repl/README.md | 2 +-
paper/demo-preprocessed.md | 2 +-
paper/demo.md | 2 +-
paper/iclc2023.html | 6 +-
paper/iclc2023.md | 2 +-
.../src/components/Footer/AvatarList.astro | 169 ------------------
website/src/components/Header/Search.tsx | 2 +-
.../RightSidebar/RightSidebar.astro | 1 -
.../src/repl/components/panel/WelcomeTab.jsx | 2 +-
10 files changed, 10 insertions(+), 180 deletions(-)
delete mode 100644 website/src/components/Footer/AvatarList.astro
diff --git a/packages/core/test/pattern.test.mjs b/packages/core/test/pattern.test.mjs
index 696f13fef..45a1e2a98 100644
--- a/packages/core/test/pattern.test.mjs
+++ b/packages/core/test/pattern.test.mjs
@@ -884,7 +884,7 @@ describe('Pattern', () => {
);
});
it('Doesnt drop haps in the 9th cycle', () => {
- // fixed with https://github.com/tidalcycles/strudel/commit/72eeaf446e3d5e186d63cc0d2276f0723cde017a
+ // fixed with https://codeberg.org/uzu/strudel/commit/72eeaf446e3d5e186d63cc0d2276f0723cde017a
expect(sequence(1, 2, 3).ply(2).early(8).firstCycle().length).toBe(6);
});
});
diff --git a/packages/repl/README.md b/packages/repl/README.md
index 3db4cc3f7..5b43b5e79 100644
--- a/packages/repl/README.md
+++ b/packages/repl/README.md
@@ -17,7 +17,7 @@ You can also pin the version like this:
```
This has the advantage that your code will always work, regardless of potential breaking changes in the strudel codebase.
-See [releases](https://github.com/tidalcycles/strudel/releases) for the latest versions.
+See [releases](https://codeberg.org/uzu/strudel/releases) for the latest versions.
## Use Web Component
diff --git a/paper/demo-preprocessed.md b/paper/demo-preprocessed.md
index e22823d90..2f0871e7c 100644
--- a/paper/demo-preprocessed.md
+++ b/paper/demo-preprocessed.md
@@ -201,7 +201,7 @@ interfaces.
The Strudel REPL is available at ,
including an interactive tutorial. The repository is at
-, all the code is open source
+, all the code is open source
under the GPL-3.0 License.
# Acknowledgments
diff --git a/paper/demo.md b/paper/demo.md
index 23fe27754..841fb6064 100644
--- a/paper/demo.md
+++ b/paper/demo.md
@@ -128,7 +128,7 @@ For the future, it is planned to integrate alternative sound engines such as Gli
# Links
The Strudel REPL is available at , including an interactive tutorial.
-The repository is at , all the code is open source under the GPL-3.0 License.
+The repository is at , all the code is open source under the GPL-3.0 License.
# Acknowledgments
diff --git a/paper/iclc2023.html b/paper/iclc2023.html
index a83e075a2..3771f560b 100644
--- a/paper/iclc2023.html
+++ b/paper/iclc2023.html
@@ -374,7 +374,7 @@ by the output.
REPL control flow
@@ -720,8 +720,8 @@ class="header-section-number">11 Links
href="https://strudel.cc"
class="uri">https://strudel.cc, including an
interactive tutorial. The repository is at https://github.com/tidalcycles/strudel, all the code is
+href="https://codeberg.org/uzu/strudel"
+class="uri">https://codeberg.org/uzu/strudel, all the code is
open source under the AGPL-3.0 License.
12 Acknowledgments
diff --git a/paper/iclc2023.md b/paper/iclc2023.md
index 3afb27828..fdc9f0ca4 100644
--- a/paper/iclc2023.md
+++ b/paper/iclc2023.md
@@ -451,7 +451,7 @@ While Haskell's type system makes it a great language for the ongoing developmen
# Links
The Strudel REPL is available at , including an interactive tutorial.
-The repository is at , all the code is open source under the AGPL-3.0 License.
+The repository is at , all the code is open source under the AGPL-3.0 License.
# Acknowledgments
diff --git a/website/src/components/Footer/AvatarList.astro b/website/src/components/Footer/AvatarList.astro
deleted file mode 100644
index 86bbcc875..000000000
--- a/website/src/components/Footer/AvatarList.astro
+++ /dev/null
@@ -1,169 +0,0 @@
----
-// fetch all commits for just this page's path
-type Props = {
- path: string;
-};
-const { path } = Astro.props as Props;
-const resolvedPath = `website/src/pages${path}.mdx`;
-const url = `https://api.github.com/repos/tidalcycles/strudel/commits?path=${resolvedPath}`;
-const commitsURL = `https://github.com/tidalcycles/strudel/commits/main/${resolvedPath}`;
-
-type Commit = {
- author: {
- id: string;
- login: string;
- };
-};
-
-async function getCommits(url: string) {
- try {
- const token = import.meta.env.SNOWPACK_PUBLIC_GITHUB_TOKEN ?? 'hello';
- if (!token) {
- throw new Error('Cannot find "SNOWPACK_PUBLIC_GITHUB_TOKEN" used for escaping rate-limiting.');
- }
-
- const auth = `Basic ${Buffer.from(token, 'binary').toString('base64')}`;
-
- const res = await fetch(url, {
- method: 'GET',
- headers: {
- Authorization: auth,
- 'User-Agent': 'astro-docs/1.0',
- },
- });
-
- const data = await res.json();
-
- if (!res.ok) {
- throw new Error(
- `Request to fetch commits failed. Reason: ${res.statusText}
- Message: ${data.message}`,
- );
- }
-
- return data as Commit[];
- } catch (e) {
- console.warn(`[error] /src/components/AvatarList.astro
- ${(e as any)?.message ?? e}`);
- return [] as Commit[];
- }
-}
-
-function removeDups(arr: Commit[]) {
- const map = new Map();
- for (let item of arr) {
- const author = item.author;
- // Deduplicate based on author.id
- //map.set(author.id, { login: author.login, id: author.id });
- author && map.set(author.id, { login: author.login, id: author.id });
- }
-
- return [...map.values()];
-}
-
-const data = await getCommits(url);
-const unique = removeDups(data);
-const recentContributors = unique.slice(0, 3); // only show avatars for the 3 most recent contributors
-const additionalContributors = unique.length - recentContributors.length; // list the rest of them as # of extra contributors
----
-
-
-
-
-
diff --git a/website/src/components/Header/Search.tsx b/website/src/components/Header/Search.tsx
index c982d80b6..f200dc79f 100644
--- a/website/src/components/Header/Search.tsx
+++ b/website/src/components/Header/Search.tsx
@@ -82,7 +82,7 @@ export default function Search() {
appId={ALGOLIA.appId}
apiKey={ALGOLIA.apiKey}
getMissingResultsUrl={({ query }) => {
- return `https://github.com/tidalcycles/strudel/issues/new?title=Missing doc for ${query}`;
+ return `https://codeberg.org/uzu/strudel/issues/new?title=Missing%20doc%20for${encodeURIComponent(query)}`;
}}
transformItems={(items) => {
return items.map((item) => {
diff --git a/website/src/components/RightSidebar/RightSidebar.astro b/website/src/components/RightSidebar/RightSidebar.astro
index cd501b1a2..28c713022 100644
--- a/website/src/components/RightSidebar/RightSidebar.astro
+++ b/website/src/components/RightSidebar/RightSidebar.astro
@@ -18,5 +18,4 @@ currentPage = currentPage.endsWith('/') ? currentPage.slice(0, -1) : currentPage
diff --git a/website/src/repl/components/panel/WelcomeTab.jsx b/website/src/repl/components/panel/WelcomeTab.jsx
index b3b167c74..cd5fe030a 100644
--- a/website/src/repl/components/panel/WelcomeTab.jsx
+++ b/website/src/repl/components/panel/WelcomeTab.jsx
@@ -42,7 +42,7 @@ export function WelcomeTab({ context }) {
GNU Affero General Public License
. You can find the source code at{' '}
-
+
github
. You can also find licensing info{' '}
From ee7d7830992ee521dac2d511158c0a0f3c133ed0 Mon Sep 17 00:00:00 2001
From: Felix Roos
Date: Sat, 14 Jun 2025 16:27:54 +0200
Subject: [PATCH 69/74] fix homepage link
---
website/src/pages/learn/getting-started.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/website/src/pages/learn/getting-started.mdx b/website/src/pages/learn/getting-started.mdx
index 2d056d3b4..b3348ccda 100644
--- a/website/src/pages/learn/getting-started.mdx
+++ b/website/src/pages/learn/getting-started.mdx
@@ -14,7 +14,7 @@ These pages will introduce you to [Strudel](https://strudel.cc/), a web-based [l
# What is Strudel?
-[Strudel](https://strudel.cc/) is a version of [Tidal Cycles](https://tidalcycles.org) written in [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript), initiated by [Alex McLean](https://slab.org) and [Felix Roos](https://github.com/felixroos) in 2022.
+[Strudel](https://strudel.cc/) is a version of [Tidal Cycles](https://tidalcycles.org) written in [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript), initiated by [Alex McLean](https://slab.org) and [Felix Roos](https://froos.cc/) in 2022.
Tidal Cycles, also known as Tidal, is a language for [algorithmic pattern](https://algorithmicpattern.org), and though it is most commonly used for [making music](https://tidalcycles.org/docs/showcase), it can be used for any kind of pattern making activity, including [weaving](https://www.youtube.com/watch?v=TfEmEsusXjU).
Tidal was first implemented as a library written in the [Haskell](https://www.haskell.org/) functional programming language, and by itself it does not make any sound.
From 2cb22e94b56bde24a461e6c216381c8c3242de11 Mon Sep 17 00:00:00 2001
From: alex
Date: Sat, 14 Jun 2025 23:26:59 +0100
Subject: [PATCH 70/74] move iclc paper under docs/
---
{paper => docs/iclc2023-paper}/Makefile | 0
{paper => docs/iclc2023-paper}/README.md | 0
{paper => docs/iclc2023-paper}/bin/code-filter.py | 0
{paper => docs/iclc2023-paper}/citations.json | 0
{paper => docs/iclc2023-paper}/demo-preprocessed.md | 0
{paper => docs/iclc2023-paper}/demo.md | 0
{paper => docs/iclc2023-paper}/demo.pdf | Bin
{paper => docs/iclc2023-paper}/iclc-reviews.md | 0
{paper => docs/iclc2023-paper}/iclc2023.html | 0
{paper => docs/iclc2023-paper}/iclc2023.md | 0
{paper => docs/iclc2023-paper}/iclc2023.pdf | Bin
{paper => docs/iclc2023-paper}/iclc2023x.pdf | Bin
{paper => docs/iclc2023-paper}/images/cc.png | Bin
.../iclc2023-paper}/images/strudel-screenshot.png | Bin
.../iclc2023-paper}/images/strudel-screenshot2.png | Bin
.../iclc2023-paper}/images/strudelflow.png | Bin
{paper => docs/iclc2023-paper}/inconsolata.sty | 0
{paper => docs/iclc2023-paper}/make.sh | 0
{paper => docs/iclc2023-paper}/pandoc/iclc.html | 0
{paper => docs/iclc2023-paper}/pandoc/iclc.latex | 0
{paper => docs/iclc2023-paper}/pandoc/iclc.sty | 0
.../iclc2023-paper}/paper-preprocessed.md | 0
{paper => docs/iclc2023-paper}/paper.md | 0
{paper => docs/iclc2023-paper}/paper.pdf | Bin
.../iclc2023-paper}/tex/latex-template.tex | 0
.../iclc2023-paper}/tex/sig-alternate.cls | 0
{paper => docs/iclc2023-paper}/tex/waccopyright.sty | 0
27 files changed, 0 insertions(+), 0 deletions(-)
rename {paper => docs/iclc2023-paper}/Makefile (100%)
rename {paper => docs/iclc2023-paper}/README.md (100%)
rename {paper => docs/iclc2023-paper}/bin/code-filter.py (100%)
rename {paper => docs/iclc2023-paper}/citations.json (100%)
rename {paper => docs/iclc2023-paper}/demo-preprocessed.md (100%)
rename {paper => docs/iclc2023-paper}/demo.md (100%)
rename {paper => docs/iclc2023-paper}/demo.pdf (100%)
rename {paper => docs/iclc2023-paper}/iclc-reviews.md (100%)
rename {paper => docs/iclc2023-paper}/iclc2023.html (100%)
rename {paper => docs/iclc2023-paper}/iclc2023.md (100%)
rename {paper => docs/iclc2023-paper}/iclc2023.pdf (100%)
rename {paper => docs/iclc2023-paper}/iclc2023x.pdf (100%)
rename {paper => docs/iclc2023-paper}/images/cc.png (100%)
rename {paper => docs/iclc2023-paper}/images/strudel-screenshot.png (100%)
rename {paper => docs/iclc2023-paper}/images/strudel-screenshot2.png (100%)
rename {paper => docs/iclc2023-paper}/images/strudelflow.png (100%)
rename {paper => docs/iclc2023-paper}/inconsolata.sty (100%)
rename {paper => docs/iclc2023-paper}/make.sh (100%)
rename {paper => docs/iclc2023-paper}/pandoc/iclc.html (100%)
rename {paper => docs/iclc2023-paper}/pandoc/iclc.latex (100%)
rename {paper => docs/iclc2023-paper}/pandoc/iclc.sty (100%)
rename {paper => docs/iclc2023-paper}/paper-preprocessed.md (100%)
rename {paper => docs/iclc2023-paper}/paper.md (100%)
rename {paper => docs/iclc2023-paper}/paper.pdf (100%)
rename {paper => docs/iclc2023-paper}/tex/latex-template.tex (100%)
rename {paper => docs/iclc2023-paper}/tex/sig-alternate.cls (100%)
rename {paper => docs/iclc2023-paper}/tex/waccopyright.sty (100%)
diff --git a/paper/Makefile b/docs/iclc2023-paper/Makefile
similarity index 100%
rename from paper/Makefile
rename to docs/iclc2023-paper/Makefile
diff --git a/paper/README.md b/docs/iclc2023-paper/README.md
similarity index 100%
rename from paper/README.md
rename to docs/iclc2023-paper/README.md
diff --git a/paper/bin/code-filter.py b/docs/iclc2023-paper/bin/code-filter.py
similarity index 100%
rename from paper/bin/code-filter.py
rename to docs/iclc2023-paper/bin/code-filter.py
diff --git a/paper/citations.json b/docs/iclc2023-paper/citations.json
similarity index 100%
rename from paper/citations.json
rename to docs/iclc2023-paper/citations.json
diff --git a/paper/demo-preprocessed.md b/docs/iclc2023-paper/demo-preprocessed.md
similarity index 100%
rename from paper/demo-preprocessed.md
rename to docs/iclc2023-paper/demo-preprocessed.md
diff --git a/paper/demo.md b/docs/iclc2023-paper/demo.md
similarity index 100%
rename from paper/demo.md
rename to docs/iclc2023-paper/demo.md
diff --git a/paper/demo.pdf b/docs/iclc2023-paper/demo.pdf
similarity index 100%
rename from paper/demo.pdf
rename to docs/iclc2023-paper/demo.pdf
diff --git a/paper/iclc-reviews.md b/docs/iclc2023-paper/iclc-reviews.md
similarity index 100%
rename from paper/iclc-reviews.md
rename to docs/iclc2023-paper/iclc-reviews.md
diff --git a/paper/iclc2023.html b/docs/iclc2023-paper/iclc2023.html
similarity index 100%
rename from paper/iclc2023.html
rename to docs/iclc2023-paper/iclc2023.html
diff --git a/paper/iclc2023.md b/docs/iclc2023-paper/iclc2023.md
similarity index 100%
rename from paper/iclc2023.md
rename to docs/iclc2023-paper/iclc2023.md
diff --git a/paper/iclc2023.pdf b/docs/iclc2023-paper/iclc2023.pdf
similarity index 100%
rename from paper/iclc2023.pdf
rename to docs/iclc2023-paper/iclc2023.pdf
diff --git a/paper/iclc2023x.pdf b/docs/iclc2023-paper/iclc2023x.pdf
similarity index 100%
rename from paper/iclc2023x.pdf
rename to docs/iclc2023-paper/iclc2023x.pdf
diff --git a/paper/images/cc.png b/docs/iclc2023-paper/images/cc.png
similarity index 100%
rename from paper/images/cc.png
rename to docs/iclc2023-paper/images/cc.png
diff --git a/paper/images/strudel-screenshot.png b/docs/iclc2023-paper/images/strudel-screenshot.png
similarity index 100%
rename from paper/images/strudel-screenshot.png
rename to docs/iclc2023-paper/images/strudel-screenshot.png
diff --git a/paper/images/strudel-screenshot2.png b/docs/iclc2023-paper/images/strudel-screenshot2.png
similarity index 100%
rename from paper/images/strudel-screenshot2.png
rename to docs/iclc2023-paper/images/strudel-screenshot2.png
diff --git a/paper/images/strudelflow.png b/docs/iclc2023-paper/images/strudelflow.png
similarity index 100%
rename from paper/images/strudelflow.png
rename to docs/iclc2023-paper/images/strudelflow.png
diff --git a/paper/inconsolata.sty b/docs/iclc2023-paper/inconsolata.sty
similarity index 100%
rename from paper/inconsolata.sty
rename to docs/iclc2023-paper/inconsolata.sty
diff --git a/paper/make.sh b/docs/iclc2023-paper/make.sh
similarity index 100%
rename from paper/make.sh
rename to docs/iclc2023-paper/make.sh
diff --git a/paper/pandoc/iclc.html b/docs/iclc2023-paper/pandoc/iclc.html
similarity index 100%
rename from paper/pandoc/iclc.html
rename to docs/iclc2023-paper/pandoc/iclc.html
diff --git a/paper/pandoc/iclc.latex b/docs/iclc2023-paper/pandoc/iclc.latex
similarity index 100%
rename from paper/pandoc/iclc.latex
rename to docs/iclc2023-paper/pandoc/iclc.latex
diff --git a/paper/pandoc/iclc.sty b/docs/iclc2023-paper/pandoc/iclc.sty
similarity index 100%
rename from paper/pandoc/iclc.sty
rename to docs/iclc2023-paper/pandoc/iclc.sty
diff --git a/paper/paper-preprocessed.md b/docs/iclc2023-paper/paper-preprocessed.md
similarity index 100%
rename from paper/paper-preprocessed.md
rename to docs/iclc2023-paper/paper-preprocessed.md
diff --git a/paper/paper.md b/docs/iclc2023-paper/paper.md
similarity index 100%
rename from paper/paper.md
rename to docs/iclc2023-paper/paper.md
diff --git a/paper/paper.pdf b/docs/iclc2023-paper/paper.pdf
similarity index 100%
rename from paper/paper.pdf
rename to docs/iclc2023-paper/paper.pdf
diff --git a/paper/tex/latex-template.tex b/docs/iclc2023-paper/tex/latex-template.tex
similarity index 100%
rename from paper/tex/latex-template.tex
rename to docs/iclc2023-paper/tex/latex-template.tex
diff --git a/paper/tex/sig-alternate.cls b/docs/iclc2023-paper/tex/sig-alternate.cls
similarity index 100%
rename from paper/tex/sig-alternate.cls
rename to docs/iclc2023-paper/tex/sig-alternate.cls
diff --git a/paper/tex/waccopyright.sty b/docs/iclc2023-paper/tex/waccopyright.sty
similarity index 100%
rename from paper/tex/waccopyright.sty
rename to docs/iclc2023-paper/tex/waccopyright.sty
From cc4cad05b2f7fce4f50155a4799a67ea35bd5b2e Mon Sep 17 00:00:00 2001
From: alex
Date: Sat, 14 Jun 2025 23:33:52 +0100
Subject: [PATCH 71/74] add the technical manual again
---
docs/technical-manual/index.md | 197 ++++++++++++++++++++++++++
docs/technical-manual/shiftflow.png | Bin 0 -> 90584 bytes
docs/technical-manual/strudelflow.png | Bin 0 -> 84696 bytes
docs/technical-manual/waa-nodes.png | Bin 0 -> 50450 bytes
4 files changed, 197 insertions(+)
create mode 100644 docs/technical-manual/index.md
create mode 100644 docs/technical-manual/shiftflow.png
create mode 100644 docs/technical-manual/strudelflow.png
create mode 100644 docs/technical-manual/waa-nodes.png
diff --git a/docs/technical-manual/index.md b/docs/technical-manual/index.md
new file mode 100644
index 000000000..16c9a5533
--- /dev/null
+++ b/docs/technical-manual/index.md
@@ -0,0 +1,197 @@
+This document introduces you to Strudel in a technical sense.
+
+It is rather out of date, but there might still be useful info below.
+
+If you just want to *use* Strudel, have a look at the [Tutorial](https://strudel.tidalcycles.org/tutorial/).
+
+## Strudel Packages
+
+There are different packages for different purposes. They..
+
+- split up the code into smaller chunks
+- can be selectively used to implement some sort of time based system
+
+Please refer to the individual README files in the [packages folder](https://codeberg.org/uzu/strudel/src/branch/main/packages)
+
+## REPL
+
+The [REPL](https://strudel.tidalcycles.org/) is the place where all packages come together to form a live coding system. It can also be seen as a reference implementation for users of the library.
+
+More info in the [REPL README](https://codeberg.org/uzu/strudel/src/branch/main/packages/repl/README.md)
+
+# High Level Overview
+
+
+
+## 1. End User Code
+
+The End User Code is written in JavaScript with added syntax sugar. The [eval package](https://github.com/tidalcycles/strudel/tree/main/packages/eval#strudelcycleseval) evaluates the user code
+after a transpilation step, which resolves the syntax sugar. If you don't want the syntax sugar, you can omit the eval package and call the native javascript `eval` instead.
+
+### 🍭 Syntax Sugar
+
+JavaScript Transpilation = converting valid JavaScript to valid JavaScript:
+
+```js
+"c3 [e3 g3]".fast(2)
+```
+
+becomes
+
+```js
+mini('c3 [e3 g3]')
+ .withMiniLocation([1, 0, 0], [1, 11, 11]) // source location
+ .fast(2);
+```
+
+- double quoted strings and backtick strings are turned into `mini` calls (single quoted strings are left as is)
+- The source location is added by chaining `withMiniLocation`, which enables the real time highlighting later
+- (psuedo) variable names that look like notes (like `c4`, `bb2` or `fs3`) are turned into strings
+- support for top level await
+- operator overloading could be implemented in the future
+
+This is how it works:
+
+
+
+- The user code is parsed with a [shift parser](https://github.com/shapesecurity/shift-parser-js), generating an AST
+- The AST is transformed to resolve the syntax sugar
+- The AST is used to generate code again (shift-codegen)
+
+Shift will most likely be replaced with acorn in the future, see https://github.com/tidalcycles/strudel/issues/174
+
+### Mini Notation
+
+Another important part of the user code is the mini notation, which allows to express rhythms in a short manner.
+
+- the mini notation is [implemented as a PEG grammar](https://github.com/tidalcycles/strudel/blob/main/packages/mini/krill.pegjs), living in the [mini package](https://github.com/tidalcycles/strudel/tree/main/packages/mini)
+- it is based on [krill](https://github.com/Mdashdotdashn/krill) by Mdashdotdashn
+- the peg grammar is used to generate a parser with [peggyjs](https://peggyjs.org/)
+- the generated parser takes a mini notation string and outputs an AST
+- the AST can then be used to construct a pattern using the regular Strudel API
+
+Here's an example AST:
+
+```json
+{
+ "type_": "pattern",
+ "arguments_": { "alignment": "h" },
+ "source_": [
+ {
+ "type_": "element", "source_": "c3",
+ "location_": { "start": { "offset": 1, "line": 1, "column": 2 }, "end": { "offset": 4, "line": 1, "column": 5 } }
+ },
+ {
+ "type_": "element",
+ "location_": { "start": { "offset": 4, "line": 1, "column": 5 }, "end": { "offset": 11, "line": 1, "column": 12 } }
+ "source_": {
+ "type_": "pattern", "arguments_": { "alignment": "h" },
+ "source_": [
+ {
+ "type_": "element", "source_": "e3",
+ "location_": { "start": { "offset": 5, "line": 1, "column": 6 }, "end": { "offset": 8, "line": 1, "column": 9 } }
+ },
+ {
+ "type_": "element", "source_": "g3",
+ "location_": { "start": { "offset": 8, "line": 1, "column": 9 }, "end": { "offset": 10, "line": 1, "column": 11 } }
+ }
+ ]
+ },
+ }
+ ]
+}
+```
+
+which translates to `seq(c3, seq(e3, g3))`
+
+## 2. Querying & Scheduling
+
+When the user code has been evaluated, we hopefully get a Pattern instance, which we can use to query events from.
+These events can then be used to trigger side effects in the real world. On that note, Events are mostly called Hap(s) in the codebase, because JS already has a built in `Event` class.
+
+### Querying
+
+> Querying = Asking a Pattern for Events within a certain time span
+
+```js
+seq('c3', ['e3', 'g3']) // <--- Pattern
+ .queryArc(0, 2) // query events within 0 and 2 cycles
+ .map((hap) => hap.showWhole()); // make readable
+```
+
+yields
+
+```js
+[
+ '0/1 -> 1/2: c3', // cycle 0
+ '1/2 -> 3/4: e3',
+ '3/4 -> 1/1: g3',
+ '1/1 -> 3/2: c3', // cycle 1
+ '3/2 -> 7/4: e3',
+ '7/4 -> 2/1: g3',
+];
+```
+
+### 🗓️ Scheduling
+
+The scheduler will query events repeatedly, creating a possibly endless loop of time slices.
+Here is a simplified example of how it works
+
+```js
+let step = 0.5; // query interval in seconds
+let tick = 0; // how many intervals have passed
+let pattern = seq('c3', ['e3', 'g3']); // pattern from user
+setInterval(() => {
+ const events = pattern.queryArc(tick * step, ++tick * step);
+ events.forEach((event) => {
+ console.log(event.showWhole());
+ const o = getAudioContext().createOscillator();
+ o.frequency.value = getFreq(event.value);
+ o.start(event.whole.begin);
+ o.stop(event.whole.begin + event.duration);
+ o.connect(getAudioContext().destination);
+ });
+}, step * 1000); // query each "step" seconds
+```
+
+## 3. Sound Output
+
+The third and last step is to use the scheduled events to make sound.
+Patterns are wrapped with param functions to compose different properties of the sound.
+
+```js
+note("[c2(3,8) [ bb1]]") // sets frequency
+ .s("") // sound source
+ .gain(.5) // turn down volume
+ .cutoff(sine.range(200,1000).slow(4)) // modulated cutoff
+ .slow(2)
+ .out().logValues()`,
+ ]}
+/>
+```
+
+Here is an example Hap value with different properties:
+
+```js
+{ note: 'a4', s: 'sawtooth', gain: 0.5, cutoff: 267 }
+```
+
+
+
+
+- Patterns represent just values in time!
+- Suitable for any time based output (music, visuals, movement, .. ?)
+
+### Supported Outputs
+
+At the time of writing this doc, the following outputs are supported:
+
+- Web Audio API `.out()` see [/webaudio](https://github.com/tidalcycles/strudel/tree/main/packages/webaudio)
+- MIDI `.midi()` see [/midi](https://github.com/tidalcycles/strudel/tree/main/packages/midi)
+- OSC `.osc()` see [/osc](https://github.com/tidalcycles/strudel/tree/main/packages/osc)
+- Serial `.serial()` see [/serial](https://github.com/tidalcycles/strudel/tree/main/packages/serial)
+- Tone.js `.tone()` (deprecated?) [/tone](https://github.com/tidalcycles/strudel/tree/main/packages/tone)
+- WebDirt `.webdirt()` (deprecated?) [/webdirt](https://github.com/tidalcycles/strudel/tree/main/packages/webdirt)
+- Speech `.speak()` (experimental) part of [/core](https://github.com/tidalcycles/strudel/tree/main/packages/core)
+
+These could change, so make sure to check the [packages folder](https://github.com/tidalcycles/strudel/tree/main/packages).
diff --git a/docs/technical-manual/shiftflow.png b/docs/technical-manual/shiftflow.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d91658dcb1d5db29f5c8009dcfadc0d9200b19f
GIT binary patch
literal 90584
zcmeFYXIPV2*EW0sDk=gxq9AqDQA7~108*nU;8;M4fV7~DR3%F2gd`3sN>!=S6%pwo
zA~ht6fOL=&dT60TXaNE#-@ahxexCPz|9`*k9ES$YwcA?fI@h_@4li!%>+$av-3>ty
z|DRVb8$l3X3IuIW*|`J!&w6Kb6L{P8@XBp81RXpE|Ka-6=#P2upIm4oJ#8qrNqiFg
zW1GXp8y6ucKb((wXFJ4o=fR(sFPeCB&GZ|f#K#i{7btE0pP$%rnf>VWvE1N3-XQzX
z4|-9q^L_44^?jY3Hqvd|%aj$NlSP_uEJO~@ifiw>nH5C+im1!vBacQt8HNNxgj+9rfe4+jJAMF$H^)8|>x3um4)$zZUqf1^#P+
z|61U`7Wl6P{%e8%THwDH`2X1gwrXkciuhfIk*s$Ic#G^r`Xh~`_2$|+8hSHn;>iMH
z3$2P4f-AYGS-8*uuZL6HCgAskl6Ny+7L@^w&R;YA5;$0WpJ~M=*45_%@P`nTp0y8t
zd-zN~n$X*b`GoFUE01=YD$3;C@bkN;1b+sWHE!Djzn?!k`?)CEjkzlH=&=5r_WLi)
zR3am5ZBdHN2mY=7)c+$@_!vmn7k8yTI3Ztmi}FgO%~@mJ$d#QFY5Y_%$cou6hr@6@5lFm
zsQ5;V;;RM5etPn$B2o3(*{F`KhammzL-0@Yui-QCxAg