Compare commits

..

22 Commits

Author SHA1 Message Date
Felix Roos 5a72ea94b1 fix: format 2025-06-30 05:15:30 +02:00
Felix Roos eac6f27ca4 add 1.2.0 release notes 2025-06-29 21:29:11 +02:00
Felix Roos f2330a2307 add 1.1.0 release notes 2025-06-29 20:18:15 +02:00
Felix Roos b1aba294ad hotfix: fix upstream test 2025-06-26 15:39:35 +02:00
froos 63ac80eb79 Merge pull request 'mondo notation' (#1311) from uzu into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1311
2025-06-26 15:29:45 +02:00
froos 860bb58d61 Merge pull request 'allow calling all multiple times' (#1417) from multiple-all-calls into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1417
2025-06-24 06:14:15 +02:00
Felix Roos d58b3e490b fix: reset all transforms before eval 2025-06-24 06:12:21 +02:00
Felix Roos 0003ce174e allow calling all multiple times 2025-06-24 06:06:37 +02:00
froos 8e0f23e081 Merge pull request 'tonal: allow scales without tonic (default to C)' (#1092) from kasparsj/tonal-fix into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1092
2025-06-24 05:53:21 +02:00
Felix Roos 71e60ed8de add back comment 2025-06-24 05:45:36 +02:00
Felix Roos e2a29914c7 don't interpret note as n 2025-06-24 05:43:06 +02:00
Felix Roos a9a3d491a2 Merge branch 'main' into kasparsj/tonal-fix 2025-06-24 05:39:59 +02:00
yaxu a750764f88 Update CONTRIBUTING.md 2025-06-23 11:13:00 +02:00
froos 5b397009ab Merge pull request 'website intro: fix whitespace and code hosting name' (#1400) from trofi/strudel:website-intro-minor into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1400
2025-06-20 20:00:11 +02:00
Sergei Trofimovich e68df9e789 website intro: fix whitespace and code hosting name 2025-06-20 18:33:58 +01:00
yaxu 4d3bbd5057 Update README.md 2025-06-19 17:44:45 +02:00
Kaspars 81ca199a96 Merge branch 'upstream-main' into tonal-fix 2024-06-02 12:39:14 +03:00
Kaspars 8d8b8ab99e codeformat 2024-05-08 10:42:06 +02:00
Kaspars a4f10d5339 bug fix 2024-05-08 10:38:06 +02:00
Kaspars 33a73c37bc fix tests 2024-05-08 00:46:27 +02:00
Kaspars 4e6d39666a codeformat 2024-05-08 00:00:58 +02:00
Kaspars a5b6022506 - fix scale() to allow both n() and note() at the same time
- fix scale() to allow scale names without tonic and then default it to C
2024-05-07 23:56:39 +02:00
8 changed files with 522 additions and 8 deletions
+1 -1
View File
@@ -17,7 +17,7 @@ git remote set-url origin git@codeberg.org:uzu/strudel.git
To get in touch with the contributors, either
- [join the Tidal Discord Channel](https://discord.gg/remJ6gQA) and go to the #strudel channel
- [join the Tidal Discord Channel](https://discord.com/invite/HGEdXmRkzT) and go to the #strudel channel
- Find related discussions on the [tidal club forum](https://club.tidalcycles.org/)
## Ask a Question
+1 -1
View File
@@ -32,7 +32,7 @@ This project is organized into many [packages](./packages), which are also avail
Read more about how to use these in your own project [here](https://strudel.cc/technical-manual/project-start).
You will need to abide by the terms of the [GNU Affero Public Licence v3](LICENSE.md). As such, Strudel code can only be shared within free/open source projects under the same license -- see the license for details.
You will need to abide by the terms of the [GNU Affero Public Licence v3](LICENSE). As such, Strudel code can only be shared within free/open source projects under the same license -- see the license for details.
Licensing info for the default sound banks can be found over on the [dough-samples](https://github.com/felixroos/dough-samples/blob/main/README.md) repository.
+7 -3
View File
@@ -114,8 +114,9 @@ export function repl({
* all(x => x.pianoroll())
* ```
*/
let allTransforms = [];
const all = function (transform) {
allTransform = transform;
allTransforms.push(transform);
return silence;
};
/** Applies a function to each of the running patterns separately. This is intended for future use with upcoming 'stepwise' features. See `all` for a version that applies the function to all the patterns stacked together into a single pattern.
@@ -191,6 +192,7 @@ export function repl({
await injectPatternMethods();
setTime(() => scheduler.now()); // TODO: refactor?
await beforeEval?.({ code });
allTransforms = []; // reset all transforms
shouldHush && hush();
if (mondo) {
@@ -207,8 +209,10 @@ export function repl({
} else if (eachTransform) {
pattern = eachTransform(pattern);
}
if (allTransform) {
pattern = allTransform(pattern);
if (allTransforms.length) {
for (let i in allTransforms) {
pattern = allTransforms[i](pattern);
}
}
if (!isPattern(pattern)) {
const message = `got "${typeof evaluated}" instead of pattern`;
+7
View File
@@ -37,6 +37,13 @@ describe('tonal', () => {
.firstCycleValues.map((h) => h.note),
).toEqual(['C3', 'D3', 'E3']);
});
it('scale without tonic', () => {
expect(
n(seq(0, 1, 2))
.scale('major')
.firstCycleValues.map((h) => h.note),
).toEqual(['C3', 'D3', 'E3']);
});
it('scale with mininotation colon', () => {
expect(
n(seq(0, 1, 2))
+1 -1
View File
@@ -14,7 +14,7 @@ function scaleStep(step, scale) {
scale = scale.replaceAll(':', ' ');
step = Math.ceil(step);
let { intervals, tonic, empty } = Scale.get(scale);
if ((empty && isNote(scale)) || (!empty && !tonic)) {
if ((empty && isNote(scale)) || (empty && !tonic)) {
throw new Error(`incomplete scale. Make sure to use ":" instead of spaces, example: .scale("C:major")`);
} else if (empty) {
throw new Error(`invalid scale "${scale}"`);
@@ -0,0 +1,317 @@
---
title: 'Release Notes v1.1.0'
description: ''
date: '2024-06-02'
tags: ['meta']
author: froos
---
These are the release notes for Strudel 1.1.0 aka "Bananensplit".
The last release was over 19 weeks ago, so a lot of things have happened!
First, here's a little demo, teasing some of the new features:
import { Youtube } from '@src/components/Youtube';
<Youtube client:only="react" id="2Qu5lMHruio" />
Let's write up some of the highlights:
## New DSP Features
### Stereo Supersaw
with spread, unison, and detune parameters
```plaintext
note("d f a a# a d3").fast(2)
.s("supersaw").spread(".8").detune(.3).unison("2 7")
```
### Analog "ladder" filter type
works great for acid basslines and vibey tones
```plaintext
note("{d d d a a# d3 f4}%16".sub(12)).gain(1).s("sawtooth")
.lpf(200).lpenv(slider(1.36,0,8)).lpq(7).distort("1.5:.7")`
.ftype('ladder')
```
### stereo distortion effect
```plaintext
note("{g g a# g g4}%8".add("{0 7 12 0}%8")).lpf(500)
.s("supersaw").dist("4:.2")
```
## Editor Features
### inline viz
The editor now supports multiple visuals within the code, using the `_` prefix for viz functions:
<img
width="595"
alt="Screenshot 2024-06-01 at 01 23 51"
src="https://codeberg.org/uzu/strudel/assets/12023032/978fee85-e533-4da6-a245-d20d0083f57e"
/>
- `._pianoroll()`: inline pianoroll
- `._punchcard()`: inline punchcard
- `._scope()`: inline scope
- `._pitchwheel()`: inline pitchwheel
For more info, check out the new [Visual Feedback Page](https://strudel.cc/learn/visual-feedback/)
### label notation
This new notation simplifies writing patterns at the top level:
```plaintext
d1: s("bd*4")
d2: s("[- hh]*4")
```
This is equivalent to:
```plaintext
stack(
s("bd*4"),
s("[- hh]*4")
)
```
The labels you choose are arbitrary, the above `d1` and `d2` are a typical thing you'd write in tidal, for example `d1 $ s "bd*4"`.
If the same label is used multiple times, the last one wins:
```plaintext
d1: s("bd*4")
d1: s("[- hh]*4") // <-- only this plays
```
There is a special label anonymous label `$`, which can appear multiple times without overriding itself:
```plaintext
// both of these will play:
$: s("bd*4")
$: s("[- hh]*4")
```
You can mute a pattern by prefixing `_`:
```plaintext
_$: s("bd*4") // <-- this one is muted
$: s("[- hh]*4")
```
To run a transformation on all patterns, you can use `all`:
```plaintext
$: s("bd*4")
$: s("[- hh]*4")
all(x=>x.room(.5))
```
This notation is now the recommended way to [play patterns in parallel](https://strudel.cc/workshop/first-notes/#playing-multiple-patterns)
### Clock sync between multiple instances
timing has received a major overhaul, and is now much more accurate on all browsers. Additionally, you can now sync timing across multiple windows.
![Screenshot 2024-06-02 at 11 24 40PM](https://codeberg.org/uzu/strudel/assets/47068718/840be744-a13e-4d7b-ab09-50d3a70b1f85)
### Better sample upload support
you can now upload large amounts of samples much faster across all browsers including on IOS devices. supported filetypes now include: ogg flac mp3 wav aac m4a
### experimental tidal syntax
The new `tidal` function allows you to write strudel patterns in tidal syntax:
```plaintext
await initTidal()
tidal`
d1 $ s "bd*4"
d2 $ s "[- hh]*4"
`
```
As we're looking to improve compatibility with tidal, we're happy to hear feedback.
## breaking changes
This release comes with a bunch of breaking changes. If you find your patterns to sound different, check out the PRs below for guidance on how to update them. Most of these changes shouldn't affect a lot of patterns.
In case of doubt, add the line `// @version 1.0` to your old pattern.
If you're having problems, please let us know!
- remove legacy legato + duration implementations by @felixroos in https://codeberg.org/uzu/strudel/pull/965
- Velocity in value by @felixroos in https://codeberg.org/uzu/strudel/pull/974
- use ireal as default voicing dict by @felixroos https://codeberg.org/uzu/strudel/pull/967
- Color in hap value by @felixroos https://codeberg.org/uzu/strudel/pull/1007
- rename trig -> reset, trigzero -> restart by @felixroos https://codeberg.org/uzu/strudel/pull/1010
- remove dangerous arithmetic feature by @felixroos https://codeberg.org/uzu/strudel/pull/1030
- change fanchor to 0 by @daslyfe https://codeberg.org/uzu/strudel/pull/1107
## superdough features
- replace shape with distort in learn doc by @daslyfe https://codeberg.org/uzu/strudel/pull/982
- Worklet Improvents / fixes by @daslyfe https://codeberg.org/uzu/strudel/pull/963
- supersaw oscillator by @daslyfe https://codeberg.org/uzu/strudel/pull/978
- Add analog-style ladder filter by @daslyfe https://codeberg.org/uzu/strudel/pull/1103
- Calculate phaser modulation phase based on time by @daslyfe https://codeberg.org/uzu/strudel/pull/1110
- rollback phaser by @daslyfe https://codeberg.org/uzu/strudel/pull/1113
## editor / ui features
- 'Enable Bracket Matching' option in Codemirror by @eefano https://codeberg.org/uzu/strudel/pull/956
- REPL sync between windows by @daslyfe https://codeberg.org/uzu/strudel/pull/900
- inline viz / widgets package by @felixroos https://codeberg.org/uzu/strudel/pull/989
- Inline punchcard + spiral by @felixroos https://codeberg.org/uzu/strudel/pull/1008
- More fonts by @felixroos https://codeberg.org/uzu/strudel/pull/1023
- better theme integration for visuals + various fixes by @felixroos https://codeberg.org/uzu/strudel/pull/1024
- add setting for sync flag by @felixroos https://codeberg.org/uzu/strudel/pull/1025
- add closeBrackets setting by @felixroos https://codeberg.org/uzu/strudel/pull/1031
- add font file types to offline cache by @felixroos https://codeberg.org/uzu/strudel/pull/1032
- pitchwheel visual by @felixroos https://codeberg.org/uzu/strudel/pull/1041
- repl: set document.title from @title by @kasparsj https://codeberg.org/uzu/strudel/pull/1090
- Samples tab improvements by @daslyfe https://codeberg.org/uzu/strudel/pull/1102
## language features
- pickOut(), pickRestart(), pickReset() by @eefano https://codeberg.org/uzu/strudel/pull/950
- Auto await samples by @felixroos https://codeberg.org/uzu/strudel/pull/955
- feat: can now invert euclid pulses with negative numbers by @felixroos https://codeberg.org/uzu/strudel/pull/959
- Nested controls by @felixroos https://codeberg.org/uzu/strudel/pull/973
- alias - for ~ by @yaxu https://codeberg.org/uzu/strudel/pull/981
- Beat-oriented functionality by @yaxu https://codeberg.org/uzu/strudel/pull/976
- Labeled statements by @felixroos https://codeberg.org/uzu/strudel/pull/991
- accidentals in scale degrees by @eefano https://codeberg.org/uzu/strudel/pull/1000
- Feature: tactus marking by @yaxu https://codeberg.org/uzu/strudel/pull/1021
- Tactus tidy by @yaxu https://codeberg.org/uzu/strudel/pull/1027
- Wax, wane, taper and taperlist by @yaxu https://codeberg.org/uzu/strudel/pull/1042
- transpose: support all combinations of numbers and strings for notes and intervals by @felixroos https://codeberg.org/uzu/strudel/pull/1048
- anonymous patterns + muting by @felixroos https://codeberg.org/uzu/strudel/pull/1059
- add swing + swingBy by @felixroos https://codeberg.org/uzu/strudel/pull/1038
- Stepwise functions from Tidal by @yaxu https://codeberg.org/uzu/strudel/pull/1060
- Tactus tweaks - fixes for maintaining tactus and highlight locations by @yaxu https://codeberg.org/uzu/strudel/pull/1065
- Fix stepjoin by @yaxu https://codeberg.org/uzu/strudel/pull/1067
- More tactus tidying by @yaxu https://codeberg.org/uzu/strudel/pull/1071
- Tactus calculation toggle and breaking change to tactus calculation in fast/slow/hurry by @yaxu https://codeberg.org/uzu/strudel/pull/1081
- hs2js package / tidal parser by @felixroos https://codeberg.org/uzu/strudel/pull/870
- Add the mousex and mousey signal by @Enelg52 https://codeberg.org/uzu/strudel/pull/1112
- can now access strudelMirror from repl by @felixroos https://codeberg.org/uzu/strudel/pull/1117
## sampler
If you have nodejs installed on your system, you can now use [@strudel/sampler](https://www.npmjs.com/package/@strudel/sampler) to serve samples from disk to the REPL or flok.
- local sample server cli by @felixroos https://codeberg.org/uzu/strudel/pull/1033
- Fix sampler paths by @felixroos https://codeberg.org/uzu/strudel/pull/1034
- Fix sampler windows by @felixroos https://codeberg.org/uzu/strudel/pull/1108
- fix sampler on windows by @geikha https://codeberg.org/uzu/strudel/pull/1109
## docs
- V1 release notes by @felixroos https://codeberg.org/uzu/strudel/pull/935
- Minor documentation error: Update first-sounds.mdx by @mhetrick https://codeberg.org/uzu/strudel/pull/941
- Update synths.mdx by @andresgottlieb https://codeberg.org/uzu/strudel/pull/984
- using strudel in your project guide + cleanup examples by @felixroos https://codeberg.org/uzu/strudel/pull/1006
- Document signals by @ilesinge https://codeberg.org/uzu/strudel/pull/1015
- improve tutorial + custom samples doc by @felixroos https://codeberg.org/uzu/strudel/pull/1053
- fix cr typo on first-sounds.mdx by @cleary https://codeberg.org/uzu/strudel/pull/1068
- fix first sounds typo by @cleary https://codeberg.org/uzu/strudel/pull/1069
- add `<...>` to first-sounds.mdx recap by @cleary https://codeberg.org/uzu/strudel/pull/1070
- add nesting to `off` example variation in pattern-effects.mdx by @cleary https://codeberg.org/uzu/strudel/pull/1075
- fix translation issue in first-effects.mdx by @cleary https://codeberg.org/uzu/strudel/pull/1072
- add signals to recap in first-effects.mdx by @cleary https://codeberg.org/uzu/strudel/pull/1073
- fix docs on alignment.mdx by @diegodorado https://codeberg.org/uzu/strudel/pull/1076
- fix little dub tune example by @lukad https://codeberg.org/uzu/strudel/pull/1104
- clarify `off` in pattern-effects.mdx by @cleary https://codeberg.org/uzu/strudel/pull/1074
- Fixes drawPianoroll import in codemirror example by @giohappy https://codeberg.org/uzu/strudel/pull/1116
- Migrate tutorial fanchor by @felixroos https://codeberg.org/uzu/strudel/pull/1122
## internals
- remove cjs builds by @felixroos https://codeberg.org/uzu/strudel/pull/945
- controls refactoring: simplify exports by @felixroos https://codeberg.org/uzu/strudel/pull/962
- move canvas related helpers from core to new draw package by @felixroos https://codeberg.org/uzu/strudel/pull/971
- remove canvas, externalize samples, delete junk by @felixroos https://codeberg.org/uzu/strudel/pull/1003
- Improve performance of ! (replicate) by @yaxu https://codeberg.org/uzu/strudel/pull/1084
- Benchmarks by @yaxu https://codeberg.org/uzu/strudel/pull/1079
## fixes
- fix midi issue on firefox and added quote error by @Enelg52 https://codeberg.org/uzu/strudel/pull/936
- fix: pianoroll sorting by @felixroos https://codeberg.org/uzu/strudel/pull/938
- account for cps in midi time duration by @daslyfe https://codeberg.org/uzu/strudel/pull/954
- fix script importable packages (web + repl) by @felixroos https://codeberg.org/uzu/strudel/pull/957
- fix: reset global fx on pattern change by @felixroos https://codeberg.org/uzu/strudel/pull/960
- add debounce to logger by @felixroos https://codeberg.org/uzu/strudel/pull/968
- fix for transpose(): preserve hap value object structure by @eefano https://codeberg.org/uzu/strudel/pull/966
- fix: clear hydra on reset by @felixroos https://codeberg.org/uzu/strudel/pull/983
- little fix for withVal by @eefano https://codeberg.org/uzu/strudel/pull/980
- fix: share now shares what's visible instead of active by @felixroos https://codeberg.org/uzu/strudel/pull/985
- Fix pure mini highlight by @yaxu https://codeberg.org/uzu/strudel/pull/994
- fix: await injectPatternMethods by @felixroos https://codeberg.org/uzu/strudel/pull/1012
- update undocumented script by @felixroos https://codeberg.org/uzu/strudel/pull/1013
- eliminate chromium clock jitter by @felixroos https://codeberg.org/uzu/strudel/pull/1004
- Repl sync fixes by @daslyfe https://codeberg.org/uzu/strudel/pull/1014
- hotfix for 1017 by @daslyfe https://codeberg.org/uzu/strudel/pull/1020
- fix cyclist fizzling out by @felixroos https://codeberg.org/uzu/strudel/pull/1046
- Midi Time hotfix for scheduler updates by @daslyfe https://codeberg.org/uzu/strudel/pull/1047
- fix: do not reset cc input values on each eval by @felixroos https://codeberg.org/uzu/strudel/pull/1054
- Fix wchooseCycles not picking the whole pattern by @ilesinge https://codeberg.org/uzu/strudel/pull/1061
- fix OSC timing for recent scheduler updates by @daslyfe https://codeberg.org/uzu/strudel/pull/1062
- clarify license by @yaxu https://codeberg.org/uzu/strudel/pull/1064
- fix failing format test by @daslyfe https://codeberg.org/uzu/strudel/pull/1077
- fix: url parsing with extra params by @felixroos https://codeberg.org/uzu/strudel/pull/1083
- fix: csound + dough timing by @felixroos https://codeberg.org/uzu/strudel/pull/1086
- fix: missing events due to premature worklet cleanup by @felixroos https://codeberg.org/uzu/strudel/pull/1089
- Use sessionStorage for viewingPatternData and activePattern by @kasparsj https://codeberg.org/uzu/strudel/pull/1091
- osc: couple of fixes by @kasparsj https://codeberg.org/uzu/strudel/pull/1093
- web package fixes by @felixroos https://codeberg.org/uzu/strudel/pull/1044
- Fix audio worklets by @daslyfe https://codeberg.org/uzu/strudel/pull/1114
- fix: use full repl in web package by @felixroos https://codeberg.org/uzu/strudel/pull/1119
- [BUG FIX] Audio worklets sometimes dont load by @daslyfe https://codeberg.org/uzu/strudel/pull/1121
## New Contributors
- @mhetrick made their first contribution https://codeberg.org/uzu/strudel/pull/941
- @eefano made their first contribution https://codeberg.org/uzu/strudel/pull/956
- @Enelg52 made their first contribution https://codeberg.org/uzu/strudel/pull/936
- @andresgottlieb made their first contribution https://codeberg.org/uzu/strudel/pull/984
- @cleary made their first contribution https://codeberg.org/uzu/strudel/pull/1068
- @diegodorado made their first contribution https://codeberg.org/uzu/strudel/pull/1076
- @lukad made their first contribution https://codeberg.org/uzu/strudel/pull/1104
- @giohappy made their first contribution https://codeberg.org/uzu/strudel/pull/1116
A huge thanks to all contributors!!!
## Packages
- @strudel/codemirror@1.1.0
- @strudel/core@1.1.0
- @strudel/csound@1.1.0
- @strudel/draw@1.1.0
- @strudel/embed@1.1.0
- hs2js@0.1.0
- @strudel/hydra@1.1.0
- @strudel/midi@1.1.0
- @strudel/mini@1.1.0
- @strudel/osc@1.1.0
- @strudel/repl@1.1.0
- @strudel/sampler@0.1.0
- @strudel/serial@1.1.0
- @strudel/soundfonts@1.1.0
- superdough@1.1.0
- @strudel/tidal@0.1.0
- @strudel/tonal@1.1.0
- @strudel/transpiler@1.1.0
- @strudel/web@1.1.0
- @strudel/webaudio@1.1.0
- @strudel/xen@1.1.0
**Full Changelog**: https://codeberg.org/uzu/strudel/compare/v1.0.0...v1.1.0
@@ -0,0 +1,186 @@
---
title: 'Release Notes v1.2.0'
description: ''
date: '2025-05-01'
tags: ['meta']
author: froos
---
## What's Changed
## highlights
- [stepwise functions](https://strudel.cc/learn/stepwise/) ([PR](https://github.com/tidalcycles/strudel/pull/1262))
- [midimaps](https://strudel.cc/learn/input-output/#midimaps) ([PR](https://github.com/tidalcycles/strudel/pull/1274))
- [spectrum](https://strudel.cc/learn/visual-feedback/#spectrum) ([PR](https://github.com/tidalcycles/strudel/pull/1213))
- [mqtt](https://strudel.cc/learn/input-output/#mqtt) ([PR](https://github.com/tidalcycles/strudel/pull/1224))
- pulse oscillator (todo: https://github.com/tidalcycles/strudel/issues/1336) ([PR](https://github.com/tidalcycles/strudel/pull/1304))
- theme improvements
## breaking changes
- [breaking change] Sample signals from query onset, rather than midpoint by @yaxu in https://github.com/tidalcycles/strudel/pull/1278
- change behaviour of polymeter, and remove polymeterSteps by @yaxu in https://github.com/tidalcycles/strudel/pull/1302
- Polish, rename, and document stepwise functions by @yaxu in https://github.com/tidalcycles/strudel/pull/1262
### superdough
- feat: Create Pulse Oscillator with variable PWM by @daslyfe in https://github.com/tidalcycles/strudel/pull/1304
- add num samples (edited numbers) by @yaxu in https://github.com/tidalcycles/strudel/pull/1309
- Add num samples from 0 up to 20 by @yaxu in https://github.com/tidalcycles/strudel/pull/1310
- feat: add max polyphony feature for superdough by @daslyfe in https://github.com/tidalcycles/strudel/pull/1317
### docs
- doc: visual functions + refactor onPaint by @felixroos in https://github.com/tidalcycles/strudel/pull/1125
- Labeled statements doc by @felixroos in https://github.com/tidalcycles/strudel/pull/1126
- Correct spelling mistakes by @EdwardBetts in https://github.com/tidalcycles/strudel/pull/1183
- remove redundant example for cat, update snapshot by @kdiab in https://github.com/tidalcycles/strudel/pull/1189
- chore: Edit run locally instructions in README.md by @ChinoUkaegbu in https://github.com/tidalcycles/strudel/pull/1206
- suggested changes to voicings.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/1231
- Documentation for all/each, and bugfix for each by @yaxu in https://github.com/tidalcycles/strudel/pull/1233
- Update documentation for param value modification by @gillespi314 in https://github.com/tidalcycles/strudel/pull/1238
- fix docs for beat function by @daslyfe in https://github.com/tidalcycles/strudel/pull/1248
- understand voicings page by @felixroos in https://github.com/tidalcycles/strudel/pull/1230
- add reference package by @felixroos in https://github.com/tidalcycles/strudel/pull/1252
- Stepwise documentation tweaks, with mridangam samples by @yaxu in https://github.com/tidalcycles/strudel/pull/1275
- showcase tweaks by @yaxu in https://github.com/tidalcycles/strudel/pull/1291
- Signpost licenses for source code and samples a bit more, ref #1277 by @yaxu in https://github.com/tidalcycles/strudel/pull/1289
- Fix misplaced ending sentence by @makmanalp in https://github.com/tidalcycles/strudel/pull/1296
- Fix typo pattnr by @ReneNyffenegger in https://github.com/tidalcycles/strudel/pull/1316
- update docs to reflect import sounds tab change by @hpunq in https://github.com/tidalcycles/strudel/pull/1332
### ui improvements
- Udels (MultiFrame Strudel) Revisited by @daslyfe in https://github.com/tidalcycles/strudel/pull/1132
- Create audio target selector for OSC/Superdirt by @daslyfe in https://github.com/tidalcycles/strudel/pull/1160
- Add a search bar to the REPL Reference tab by @netux in https://github.com/tidalcycles/strudel/pull/1165
- Adding search bar (soundtab.jsx) by @Bubobubobubobubo in https://github.com/tidalcycles/strudel/pull/1185
- add 2 new ui settings by @felixroos in https://github.com/tidalcycles/strudel/pull/1200
- Theme glowup by @felixroos in https://github.com/tidalcycles/strudel/pull/1268
- Create Pattern Page Pagination by @daslyfe in https://github.com/tidalcycles/strudel/pull/1287
- feat: Theme improvements by @daslyfe in https://github.com/tidalcycles/strudel/pull/1295
- feat: new themes + theme improvements by @daslyfe in https://github.com/tidalcycles/strudel/pull/1326
- Add new "import-sounds" tab with explanation on folder import by @hpunq in https://github.com/tidalcycles/strudel/pull/1329
- Add Icon to import sample button by @daslyfe in https://github.com/tidalcycles/strudel/pull/1331
- better spacing in zen mode by @felixroos in https://github.com/tidalcycles/strudel/pull/1147
- Screenreader improvements by @yaxu in https://github.com/tidalcycles/strudel/pull/1158
- colorize console + tweak header by @felixroos in https://github.com/tidalcycles/strudel/pull/1203
- Menu Panel Improvements! by @daslyfe in https://github.com/tidalcycles/strudel/pull/1193
- Make panel hover behavior optional by @daslyfe in https://github.com/tidalcycles/strudel/pull/1199
- REPL: solo and sync configuration by @bthj in https://github.com/tidalcycles/strudel/pull/1214
- enhancement: make error messages easier to read by @daslyfe in https://github.com/tidalcycles/strudel/pull/1315
### mqtt
- MQTT support by @yaxu in https://github.com/tidalcycles/strudel/pull/1224
- MQTT - if password isn't provided, prompt for one by @yaxu in https://github.com/tidalcycles/strudel/pull/1249
- MQTT - support adding hap duration and cps metadata to JSON messages by @yaxu in https://github.com/tidalcycles/strudel/pull/1279
- make mqtt topic patternable by @yaxu in https://github.com/tidalcycles/strudel/pull/1280
- Bugfix: update mqtt connections dictionary by @yaxu in https://github.com/tidalcycles/strudel/pull/1281
- mqtt bugfix - connection check by @yaxu in https://github.com/tidalcycles/strudel/pull/1282
### new functions
- Add scramble and shuffle by @yaxu in https://github.com/tidalcycles/strudel/pull/1167
- polyJoin by @yaxu in https://github.com/tidalcycles/strudel/pull/1168
- Add seqPLoop from Tidal by @yaxu in https://github.com/tidalcycles/strudel/pull/1182
- add filter + filterWhen + within by @felixroos in https://github.com/tidalcycles/strudel/pull/1039
- Add bite function by @yaxu in https://github.com/tidalcycles/strudel/pull/1187
- markcss by @felixroos in https://github.com/tidalcycles/strudel/pull/1202
- "beat" function for "step sequencer" style rhythm notation by @daslyfe in https://github.com/tidalcycles/strudel/pull/1237
- Add s_zip for 'cat'-ing patterns together step-by-step, bugfix `steps` by @yaxu in https://github.com/tidalcycles/strudel/pull/1208
- "stretch" function (phase vocoder) by @daslyfe in https://github.com/tidalcycles/strudel/pull/1130
- add basic spectrum function by @felixroos in https://github.com/tidalcycles/strudel/pull/1213
- Add onKey function for custom key commands for patterns by @daslyfe in https://github.com/tidalcycles/strudel/pull/1235
- Add binary and binaryN by @heerman in https://github.com/tidalcycles/strudel/pull/1226
- midimaps by @felixroos in https://github.com/tidalcycles/strudel/pull/1274
- small feat: Add alias for segment and ribbon by @daslyfe in https://github.com/tidalcycles/strudel/pull/1314
- feat: Create scrub function for scrubbing an audio file by @daslyfe in https://github.com/tidalcycles/strudel/pull/1321
- feat: Improve gain curve by @daslyfe in https://github.com/tidalcycles/strudel/pull/1318
- Chop chop by @yaxu in https://github.com/tidalcycles/strudel/pull/1078
### more
- Make `all()` post-stack again, and add `each()` for pre-stack by @yaxu in https://github.com/tidalcycles/strudel/pull/1229
- Add stepBind, and some toplevel aliases for binds and withValue by @yaxu in https://github.com/tidalcycles/strudel/pull/1241
- Make cps patternable by @eefano in https://github.com/tidalcycles/strudel/pull/1001
- Allow wchooseCycles probabilities to be patterned by @yaxu in https://github.com/tidalcycles/strudel/pull/1292
- @strudel/sampler improvements by @felixroos in https://github.com/tidalcycles/strudel/pull/1288
### refactor
- expose comment commands by @felixroos in https://github.com/tidalcycles/strudel/pull/1136
- containerize/seperate out boolean checks for repl types/Repl logic into bespoke components. by @daslyfe in https://github.com/tidalcycles/strudel/pull/1163
- Improve + simplify neocyclist timing by @daslyfe in https://github.com/tidalcycles/strudel/pull/1164
- Make phaser control consistent with superdirt by @daslyfe in https://github.com/tidalcycles/strudel/pull/1178
- Revert "Make phaser control consistent with superdirt" by @daslyfe in https://github.com/tidalcycles/strudel/pull/1179
- make phaser control match superdirt by @daslyfe in https://github.com/tidalcycles/strudel/pull/1180
- refactor sampler by @felixroos in https://github.com/tidalcycles/strudel/pull/1101
- update lockfile + minor versions by @felixroos in https://github.com/tidalcycles/strudel/pull/1198
- Preserve tactus for 'degrade' and friends, and tidy up 'pick' and friends by @yaxu in https://github.com/tidalcycles/strudel/pull/1205
- Apply `all` function to individual patterns rather than final stack by @yaxu in https://github.com/tidalcycles/strudel/pull/1209
- Revert "Fix sometimes" by @yaxu in https://github.com/tidalcycles/strudel/pull/1267
- patchday by @felixroos in https://github.com/tidalcycles/strudel/pull/1264
- Rename repeat back to extend by @yaxu in https://github.com/tidalcycles/strudel/pull/1285
- Send delta in OSC message in seconds, to match tidal/superdirt by @yaxu in https://github.com/tidalcycles/strudel/pull/1323
### fixes
- Fix clock worker dependency path in module builds by @matthewkaney in https://github.com/tidalcycles/strudel/pull/1129
- Fix bug in Fraction.lcm by @yaxu in https://github.com/tidalcycles/strudel/pull/1133
- Fix tactus marking in mininotation by @yaxu in https://github.com/tidalcycles/strudel/pull/1144
- Fix loopAt tactus by @yaxu in https://github.com/tidalcycles/strudel/pull/1145
- Fix OSC clock jitter by @daslyfe in https://github.com/tidalcycles/strudel/pull/1157
- [CORS HOTFIX] by @daslyfe in https://github.com/tidalcycles/strudel/pull/1162
- Fixes fit so it works after a chop or slice by @yaxu in https://github.com/tidalcycles/strudel/pull/1171
- fix sample speed when using splice and fit with superdirt by @daslyfe in https://github.com/tidalcycles/strudel/pull/1172
- handle midin device not found error by @felixroos in https://github.com/tidalcycles/strudel/pull/1146
- Fix serial timing by @yaxu in https://github.com/tidalcycles/strudel/pull/1188
- Fix regression for d1, p1, p(n) by @yaxu in https://github.com/tidalcycles/strudel/pull/1227
- Fix sometimes by @yaxu in https://github.com/tidalcycles/strudel/pull/1243
- Fix sf2 timing by @felixroos in https://github.com/tidalcycles/strudel/pull/1272
- Fix "squeezejoin" and functions using it, including "bite" by @yaxu in https://github.com/tidalcycles/strudel/pull/1286
- Fixes inverted triangle wave by renaming it to "itri", making non-inverted "tri" by @yaxu in https://github.com/tidalcycles/strudel/pull/1283
- Hotfix: prevent undefined pattern code from crashing strudel on load by @daslyfe in https://github.com/tidalcycles/strudel/pull/1297
- Fix test error #1297 by @nkymut in https://github.com/tidalcycles/strudel/pull/1298
- bugfix zoom stepcount by @yaxu in https://github.com/tidalcycles/strudel/pull/1301
- bugfix: Allow single param to be used in the as function by @daslyfe in https://github.com/tidalcycles/strudel/pull/1312
- fix: replace empty spaces in registered sound keys by @daslyfe in https://github.com/tidalcycles/strudel/pull/1319
- FIX: Multichannel Audio by @daslyfe in https://github.com/tidalcycles/strudel/pull/1322
- fix: udels header by @daslyfe in https://github.com/tidalcycles/strudel/pull/1325
- fix: disable astro toolbar by default by @daslyfe in https://github.com/tidalcycles/strudel/pull/1324
- FIX: sound import order by @daslyfe in https://github.com/tidalcycles/strudel/pull/1333`
## New Contributors
- @EdwardBetts made their first contribution in https://github.com/tidalcycles/strudel/pull/1183
- @netux made their first contribution in https://github.com/tidalcycles/strudel/pull/1165
- @kdiab made their first contribution in https://github.com/tidalcycles/strudel/pull/1189
**Full Changelog**: https://github.com/tidalcycles/strudel/compare/v1.1.0...v1.1.1
## packages
- @strudel/codemirror@1.2.0
- @strudel/core@1.2.0
- @strudel/csound@1.2.0
- @strudel/draw@1.2.0
- @strudel/gamepad@1.2.0
- @strudel/hydra@1.2.0
- @strudel/midi@1.2.0
- @strudel/mini@1.2.0
- @strudel/motion@1.2.0
- @strudel/mqtt@1.2.0
- @strudel/osc@1.2.0
- @strudel/reference@1.2.0
- @strudel/repl@1.2.0
- @strudel/sampler@0.2.0
- @strudel/serial@1.2.0
- @strudel/soundfonts@1.2.0
- superdough@1.2.0
- @strudel/tonal@1.2.0
- @strudel/transpiler@1.2.0
- @strudel/web@1.2.0
- @strudel/webaudio@1.2.0
- @strudel/xen@1.2.0
@@ -20,7 +20,7 @@ export function WelcomeTab({ context }) {
</p>
<p>
{/* To learn more about what this all means, check out the{' '} */}
To get started, check out the
To get started, check out the{' '}
<a href={`${baseNoTrailing}/workshop/getting-started/`} target="_blank">
interactive tutorial
</a>
@@ -43,7 +43,7 @@ export function WelcomeTab({ context }) {
</a>
. You can find the source code at{' '}
<a href="https://codeberg.org/uzu/strudel" target="_blank">
github
codeberg
</a>
. You can also find <a href="https://github.com/felixroos/dough-samples/blob/main/README.md">licensing info</a>{' '}
for the default sound banks there. Please consider to{' '}