github tidalcycles/strudel v1.1.0
v1.1.0 Bananensplit

7 months ago

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:

strudel11.mp4

Let's write up some of the highlights:

New DSP Features

Stereo Supersaw

with spread, unison, and detune parameters

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

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

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:

Screenshot 2024-06-01 at 01 23 51
  • ._pianoroll(): inline pianoroll
  • ._punchcard(): inline punchcard
  • ._scope(): inline scope
  • ._pitchwheel(): inline pitchwheel

For more info, check out the new Visual Feedback Page

label notation

This new notation simplifies writing patterns at the top level:

d1: s("bd*4")
d2: s("[- hh]*4")

This is equivalent to:

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:

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:

// both of these will play:
$: s("bd*4")
$: s("[- hh]*4")

You can mute a pattern by prefixing _:

_$: s("bd*4") // <-- this one is muted
$: s("[- hh]*4")

To run a transformation on all patterns, you can use all:

$: s("bd*4")
$: s("[- hh]*4")
all(x=>x.room(.5))

This notation is now the recommended way to play patterns in parallel

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.

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:

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!

superdough features

editor / ui features

language features

sampler

If you have nodejs installed on your system, you can now use @strudel/sampler to serve samples from disk to the REPL or flok.

docs

internals

fixes

New Contributors

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: v1.0.0...v1.1.0

Don't miss a new strudel release

NewReleases is sending notifications on new releases.