Skip to content

v1.1.0 Bananensplit

Latest
Compare
Choose a tag to compare
@felixroos felixroos released this 03 Jun 03:39
· 192 commits to main since this release
ab10863

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.
Screenshot 2024-06-02 at 11 24 40 PM

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

Full Changelog: v1.0.0...v1.1.0