Releases: tidalcycles/strudel
v1.1.0 Bananensplit
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:
._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!
- remove legacy legato + duration implementations by @felixroos in #965
- Velocity in value by @felixroos in #974
- use ireal as default voicing dict by @felixroos in #967
- Color in hap value by @felixroos in #1007
- rename trig -> reset, trigzero -> restart by @felixroos in #1010
- remove dangerous arithmetic feature by @felixroos in #1030
- change fanchor to 0 by @daslyfe in #1107
superdough features
- replace shape with distort in learn doc by @daslyfe in #982
- Worklet Improvents / fixes by @daslyfe in #963
- supersaw oscillator by @daslyfe in #978
- Add analog-style ladder filter by @daslyfe in #1103
- Calculate phaser modulation phase based on time by @daslyfe in #1110
- rollback phaser by @daslyfe in #1113
editor / ui features
- 'Enable Bracket Matching' option in Codemirror by @eefano in #956
- REPL sync between windows by @daslyfe in #900
- inline viz / widgets package by @felixroos in #989
- Inline punchcard + spiral by @felixroos in #1008
- More fonts by @felixroos in #1023
- better theme integration for visuals + various fixes by @felixroos in #1024
- add setting for sync flag by @felixroos in #1025
- add closeBrackets setting by @felixroos in #1031
- add font file types to offline cache by @felixroos in #1032
- pitchwheel visual by @felixroos in #1041
- repl: set document.title from @title by @kasparsj in #1090
- Samples tab improvements by @daslyfe in #1102
language features
- pickOut(), pickRestart(), pickReset() by @eefano in #950
- Auto await samples by @felixroos in #955
- feat: can now invert euclid pulses with negative numbers by @felixroos in #959
- Nested controls by @felixroos in #973
- alias - for ~ by @yaxu in #981
- Beat-oriented functionality by @yaxu in #976
- Labeled statements by @felixroos in #991
- accidentals in scale degrees by @eefano in #1000
- Feature: tactus marking by @yaxu in #1021
- Tactus tidy by @yaxu in #1027
- Wax, wane, taper and taperlist by @yaxu in #1042
- transpose: support all combinations of numbers and strings for notes and intervals by @felixroos in #1048
- anonymous patterns + muting by @felixroos in #1059
- add swing + swingBy by @felixroos in #1038
- Stepwise functions from Tidal by @yaxu in #1060
- Tactus tweaks - fixes for maintaining tactus and highlight locations by @yaxu in #1065
- Fix stepjoin by @yaxu in #1067
- More tactus tidying by @yaxu in #1071
- Tactus calculation toggle and breaking change to tactus calculation in fast/slow/hurry by @yaxu in #1081
- hs2js package / tidal parser by @felixroos in #870
- Add the mousex and mousey signal by @Enelg52 in #1112
- can now access strudelMirror from repl by @felixroos in #1117
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.
- local sample server cli by @felixroos in #1033
- Fix sampler paths by @felixroos in #1034
- Fix sampler windows by @felixroos in #1108
- fix sampler on windows by @geikha in #1109
docs
- V1 release notes by @felixroos in #935
- Minor documentation error: Update first-sounds.mdx by @mhetrick in #941
- Update synths.mdx by @andresgottlieb in #984
- using strudel in your project guide + cleanup examples by @felixroos in #1006
- Document signals by @ilesinge in #1015
- improve tutorial + custom samples doc by @felixroos in #1053
- fix cr typo on first-sounds.mdx by @cleary in #1068
- fix first sounds typo by @cleary in #1069
- add
<...>
to first-sounds.mdx recap by @...
v1.0.0 Geburtstagskuchen
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.
If you generally need a heads up on what happened to Strudel in the last year, read the 2023 recap (you might need to hard refresh your browser to see it)
v1-teaser.mp4
A lot has happened since then, and also since the last release 16 weeks ago.
Let me write up some of the highlights:
Breaking Change
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!
New Domain
Strudel is now available under 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 #768
Strudel on Mastodon
Strudel now has a mastodon presence: https://social.toplap.org/@strudel
New Audio Engine Features
superdough, the audio engine of strudel has gotten some new features:
- Create phaser effect by @daslyfe in #798
- Multichannel audio by @daslyfe in #820
- Audio device selection by @daslyfe in #854
- Better convolution reverb by generating impulse responses by @Bubobubobubobubo and @felixroos in #718
- Add 'white', 'pink' and 'brown' oscillators + refactor synth by @Bubobubobubobubo and @felixroos in #713
- New noise type: "crackle" by @Bubobubobubobubo in #806
- Add support for using samples as impulse response buffers for the reverb by @vasilymilovidov in #717
- Compressor by @felixroos in #729
- Adding vibrato to Superdough sampler by @Bubobubobubobubo and @felixroos in #706
- Further Envelope improvements by @daslyfe in #868
- Add more vowel qualities for the vowels function by @fnordomat in #907
- pitch envelope by @felixroos in #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 #714
- Slider afterthoughts by @felixroos in #723
- add xfade by @felixroos in #780
Improved MIDI integration
Pattern params can now be controlled with cc messages + you can now send a MIDI clock to sync your DAW with strudel.
- Midi in by @felixroos in #699
- add midi clock support by @felixroos in #710
hydra
hydra, the live coding video synth can now be used directly inside the strudel REPL.
- Hydra integration by @felixroos in #759
- add options param to initHydra by @kasparsj in #808
- Hydra fixes and improvements by @atfornes in #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 #863
- Vanilla repl 3 by @felixroos in #865
- more work on vanilla repl: repl web component + package + MicroRepl by @felixroos in #866
- main repl vanillification by @felixroos in #873
- final vanillification by @felixroos in #876
Doc Changes
Plenty of things have been added to the docs, including a showcase of what people have been done with strudel.
- Showcase by @felixroos in #885
- Recipes by @felixroos in #742
- Document striate function by @ilesinge in #766
- Document adsr function by @ilesinge in #767
- Add function params in reference tab by @ilesinge in #785
- Update first-sounds.mdx by @bwagner in #794
- Update recap.mdx by @bwagner in #797
- Update pattern-effects.mdx by @bwagner in #796
- Update first-effects.mdx by @bwagner in #795
- Document pianoroll by @ilesinge in #784
- Add doc for euclidLegatoRot, wordfall and slider by @ilesinge in #801
- Improve documentation for synonym functions by @ilesinge in #800
- Add and style algolia search by @ilesinge in #827
- Fix a typo by @drewgbarnes in #830
- add mastodon link by @felixroos in #884
- adds a blog by @felixroos in #911
- community bakery by @felixroos in #923
- Blog improvements by @felixroos in #919
- 2 years blog post by @felixroos in #929
Other Features
There is a lot more:
- mini notation: international alphabets support by @ilesinge in #751
- Add shabda shortcut by @ilesinge in #740
- add play function by @felixroos in #758 (superseded by next)
- tidal style d1 ... d9 functions + more by @felixroos in #805
- add vscode bindings by @Dsm0 in #773
- Implement optional hover tooltip with function documentation by @ilesinge in #783
- samples loading shortcuts: by @felixroos in #788
- add option to disable active line highlighting in Code Settings by @kasparsj in #804
- Color hsl by @felixroos in #815
- Patterns tab + Refactor Panel by @felixroos in #769
- patterns tab: import patterns + style by @felixroos in #852
- Export patterns + ui tweaks by @felixroos in #855
- Pattern organization by @felixroos in #858
- Sound Import from local file system by @daslyfe in #839
- bugfix: suspend and close exisiting audio context when changing interface by @daslyfe in #882
- add root mode for voicings by @felixroos in #887
- scales can now be anchored by @felixroos in #888
- add dough function for raw dsp by @felixroos in #707 (experimental)
- support mininotation '..' range operator, fixes #715 by @yaxu in #716
- Add pick and squeeze functions by @daslyfe in #771
- support , in < > by @felixroos in #886
- public sharing by @felixroos in #910
- pick, pickmod, inhabit, inhabitmod by @yaxu in #921
- Mini-notation additions towards tidal compatibility by @yaxu in #926
- add pickF and pickmodF by @geikha in #924
- Make splice cps-aware by @yaxu in #932
- Refactor cps functions by @felixroos in #933
- Add useful pattern selection behavior for performing. by @daslyfe in #897
Other Fixes
- fix: finally repair envelopes by @felixroos in #861
- fix: reverb regenerate loophole by @felixroos in #726
- fix: reverb roomsize not required by @felixroos in #731
- fix: reverb sampleRate by @felixroos in #732
- consume n with scale by @felixroos in #727
- fix: hashes in urls by @felixroos in https://github.com/tidalcycle...
Kuchengabel
This is another maintenance release preparing for 1.0.0
This release marks the move to @strudel/* package names, more info here:
- rename @strudel.cycles/* packages to @strudel/* by @felixroos in #917
Kuchenboden
This is a maintenance release, preparing for 1.0.0 ..
When 1.0.0 will be released, I will duplicate the changelog and structure it properly, introducing new features etc...
For transparency reasons, I will still drop the changelog from 0.9.0 to 0.10.0 here:
What's Changed
- Update tauri.yml workflow file by @vasilymilovidov in #705
- add dough function for raw dsp by @felixroos in #707
- add midi clock support by @felixroos in #710
- Midi in by @felixroos in #699
- widgets by @felixroos in #714
- support mininotation '..' range operator, fixes #715 by @yaxu in #716
- Add 'white', 'pink' and 'brown' oscillators + refactor synth by @Bubobubobubobubo in #713
- Slider afterthoughts by @felixroos in #723
- Better convolution reverb by generating impulse responses by @Bubobubobubobubo in #718
- fix: reverb regenerate loophole by @felixroos in #726
- consume n with scale by @felixroos in #727
- fix: hashes in urls by @felixroos in #728
- Compressor by @felixroos in #729
- fix: reverb roomsize not required by @felixroos in #731
- fix: reverb sampleRate by @felixroos in #732
- Add support for using samples as impulse response buffers for the reverb by @vasilymilovidov in #717
- vite-vanilla-repl readme fix by @felixroos in #737
- Recipes by @felixroos in #742
- [Bug Fix] chooseWith: prevent pattern from stopping audio when selection is >= 1 or < 0 by @daslyfe in #741
- fix: trailing slash confusion by @felixroos in #743
- fix: try different trailing slash behavior by @felixroos in #744
- completely revert config mess by @felixroos in #745
- Fix krill build command in README by @ilesinge in #748
- hopefully fix trainling slashes bug by @felixroos in #753
- mini notation: international alphabets support by @ilesinge in #751
- Add shabda shortcut by @ilesinge in #740
- add play function by @felixroos in #758
- Hydra integration by @felixroos in #759
- Fix addivite synthesis phases by @felixroos in #762
- fix: scale offset by @felixroos in #764
- fix zen mode logo overlap by @felixroos in #760
- Document striate function by @ilesinge in #766
- replace strudel.tidalcycles.org with strudel.cc by @felixroos in #768
- Update vite pwa by @felixroos in #772
- Add pick and squeeze functions by @daslyfe in #771
- Document adsr function by @ilesinge in #767
- Fix chunk, add fastChunk and repeatCycles by @yaxu in #712
- fix: share copy to clipboard + alert by @felixroos in #774
- add vscode bindings by @Dsm0 in #773
- Update to Astro 3 by @felixroos in #775
- add xfade by @felixroos in #780
- fix: style issues by @felixroos in #781
- Add function params in reference tab by @ilesinge in #785
- Implement optional hover tooltip with function documentation by @ilesinge in #783
- Fix scope pos + document by @felixroos in #786
- samples loading shortcuts: by @felixroos in #788
- don't use anchor links for reference by @felixroos in #791
- Update first-sounds.mdx by @bwagner in #794
- Update recap.mdx by @bwagner in #797
- Update pattern-effects.mdx by @bwagner in #796
- Update first-effects.mdx by @bwagner in #795
- Document pianoroll by @ilesinge in #784
- Adding vibrato to Superdough sampler by @Bubobubobubobubo in #706
- Fix for #1. Enables named instruments for csoundm. by @gogins in #662
- support multiple named serial connections, change default baudrate by @yaxu in #551
- Create phaser effect by @daslyfe in #798
- remove unwanted cm6 outline for strudelTheme by @kasparsj in #802
- tidal style d1 ... d9 functions + more by @felixroos in #805
- add option to disable active line highlighting in Code Settings by @kasparsj in #804
- Add doc for euclidLegatoRot, wordfall and slider by @ilesinge in #801
- fix: multiple repls by @felixroos in #813
- Color hsl by @felixroos in #815
- New noise type: "crackle" by @Bubobubobubobubo in #806
- Improve documentation for synonym functions by @ilesinge in #800
- add options param to initHydra by @kasparsj in #808
- Hydra fixes and improvements by @atfornes in #818
- Add and style algolia search by @ilesinge in #827
- Fix a typo by @drewgbarnes in #830
- FIXES: palindrome abc -> abccba by @bwagner in #831
- CHANGES: github action checkout v2 -> v4 by @bwagner in #837
- CHANGES: pin pnpm to version 8.3.1 by @bwagner in #834
- CHANGES: github action pnpm version from 7 to 8.3.1 by @bwagner in #835
- ADDS: JetBrains IDE files and directories to .gitignore by @bwagner in #840
- Multichannel audio by @daslyfe in #820
- Prevent 404 on Algolia crawls by @ilesinge in #838
- Add in fixes from my fork to slashocalypse branch by @shiyouganai in #843
- improve slashing + base href behavior by @felixroos in #842
- fix: missing hash for links starting with / by @felixroos in #845
- fix: swatch png src by @felixroos in #846
- Fix examples page, piano() and a few workshop imgs by @shiyouganai in #848
- Fix edge case with rehype-urls and trailing slashes in image file paths by @shiyouganai in #849
- CHANGES: pnpm 8.1.3 to 8.11.0 by @bwagner in #850
- Patterns tab + Refactor Panel by @felixroos in #769
- patterns tab: import patterns + style by @felixroos in #852
- Export patterns + ui tweaks by @felixroos in #855
- Pattern organization by @felixroos in #858
- Sound Import from local file system by @daslyfe in #839
- add missing trailing slashes by @felixroos in #860
- fix: finally repair envelopes by @felixroos in #861
- Vanilla repl 2 by @felixroos in #863
- Vanilla repl 3 by @felixroos in #865
- more work on vanilla repl: repl web component + package + MicroRepl by @felixroos in #866
- main repl vanillification by @felixroos in #873
- Bug Fix #119: Clock drift by @daslyfe in #874
- final vanillification by @felixroos in #876
- move all examples to separate examples folder by @felixroos in #878
- Dependency update by @felixroos in https://github.com/tidalc...
Bananenbrot
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!
Let me write up some of the highlights:
Improved Synth Engine
The synth engine has gotten a lot of love + a name: superdough encapsulates the web audio based synth / sampler / fx engine into a reusable package, which is already used by Topos.
Main new features include:
- filter envelopes
- FM Synthesis
- looping samples, allowing wavetable synthesis
- vibrato
- an integration of ZZFX
strudel-envelopes.mov
Related PRs:
- superdough: encapsulates web audio output by @felixroos in #664
- basic fm by @felixroos in #669
- Wave Selection and Global Envelope on the FM Synth Modulator by @Bubobubobubobubo in #683
- control osc partial count with n by @felixroos in #674
- ZZFX Synth support by @Bubobubobubobubo in #684
- Adding filter envelopes and filter order selection by @Bubobubobubobubo in #692
- Adding loop points and thus wavetable synthesis by @Bubobubobubobubo in #698
- Adding vibrato to base oscillators by @Bubobubobubobubo in #693
Desktop App Improvements
Thanks to @daslyfe and @vasilymilovidov , the desktop app now has its own rust based MIDI and OSC integrations,
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. These are the related PRs:
- Create Midi Integration for Tauri Desktop app by @daslyfe in #685
- add sleep timer + improve message iterating by @daslyfe in #688
- fix MIDI CC messages by @vasilymilovidov in #690
- Direct OSC Support in Tauri by @daslyfe in #694
- Add logging from tauri by @daslyfe in #697
- fix osc bundle timestamp glitches caused by drifting clock by @daslyfe in #666
- Midi time fixes by @daslyfe in #668
- [Bug Fix] Account for numeral notation when converting to midi by @daslyfe in #656
- [Bug Fix] Midi: Don't treat note 0 as false by @daslyfe in #657
Visuals
- 2 new FFT based vizualisations have now landed: scope and fscope (featured in the video at the top).
- pianoroll has new options, see PR
Related PRs:
- Scope by @felixroos in #677 (demo)
- Pianoroll improvements by @felixroos in #679 (demo)
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 #647 (demo)
- ireal voicings by @felixroos in #653 (demo)
Adaptive Highlighting
Thanks to @mindofmatthew , the highlighting will adapt to edits instantly! Related PRs:
- More work on highlight IDs by @mindofmatthew in #636
- Adaptive Highlighting by @felixroos in #634
UI Changes
- teletext theme + fonts by @felixroos in #681 (featured in video at the top)
- togglable panel position by @felixroos in #667
Other New Features
- slice: list mode by @felixroos in #645 (demo)
- add emoji support by @felixroos in #680 (demo)
Articles
- Understand pitch by @felixroos in #652
Other Fixes & Enhancements
- fix: out of range error by @felixroos in #630
- fix: update canvas size on window resize by @felixroos in #631
- FIXES: TODO in rotateChroma by @bwagner in #650
- snapshot tests: sort haps by part by @felixroos in #637
- Delete old packages by @felixroos in #639
- update vitest by @felixroos in #651
- fix: welcome message for latestCode by @felixroos in #659
- fix: always run previous trigger by @felixroos in #660
New Contributors
- @daslyfe made their first contribution in #656
- @Bubobubobubobubo made their first contribution in #683
Full Changelog: v0.8.0...v0.9.0
A big thanks to all the contributors!
Himbeermuffin
These are the release notes for Strudel 0.8.0 aka "Himbeermuffin"!
Go to Tidal Club Forum for this Release
Let me write up some of the highlights:
Desktop App
Besides the REPL (https://strudel.tidalcycles.org/), Strudel is now also distributed as a Desktop App via https://tauri.app/! Thanks to vasilymilovidov!
edit: the desktop app performance on linux is currently not that great.. the web REPL runs much smoother (using firefox or chromium)
The desktop App has the same features as the webapp, with the additional ability to load samples from disk. It is currently not documented yet, but you can do something like
await samples('~/music/xxx')
s("my_sound")
You have to start with ~/music/
, followed by an arbitrary folder path that is expected to be present in the systems audio directory.
When you first run it, the app will create a strudel.json file in that directory to map out the available samples.
I would be very happy to collect some feedback on how it works across different platforms & systems!
Spiral Visualization
Also still undocumented, but you can now visualize patterns as a spiral via .spiral()
:
strudel-disk.mov
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.
More settings
In the settings tab, you can now toggle:
- line numbers
- auto-complete
- line wrapping
Thanks to roipoussiere!
More
Scroll down to see the full list of Changes!
A big thanks to all the contributors!
Package Versions
- @strudel.cycles/core: 0.8.2
- @strudel.cycles/mini: 0.8.2
- @strudel.cycles/transpiler: 0.8.2
- @strudel.cycles/webaudio: 0.8.2
- @strudel.cycles/soundfonts: 0.8.2
- @strudel.cycles/react: 0.8.0
- @strudel.cycles/midi: 0.8.0
- @strudel.cycles/osc: 0.8.0
- @strudel.cycles/csound: 0.8.0
- @strudel.cycles/serial: 0.8.0
- @strudel.cycles/tonal: 0.8.2
- @strudel.cycles/xen: 0.8.0
- @strudel/codemirror: 0.8.4
- @strudel/web: 0.8.3
What's Changed
- fix period key for dvorak + remove duplicated code by @felixroos in #537
- improve initial loading + wait before eval by @felixroos in #538
- do not reset cps before eval #517 by @felixroos in #539
- feat: add loader bar to animate loading state by @felixroos in #542
- add firacode font by @felixroos in #544
- fix: allow whitespace at the end of a mini pattern by @felixroos in #547
- fix: reset time on stop by @felixroos in #548
- fix: load soundfonts in prebake by @felixroos in #550
- fix: colorable highlighting by @felixroos in #553
- fix: make soundfonts import dynamic by @felixroos in #556
- add basic triads and guidetone voicings by @felixroos in #557
- Patchday by @felixroos in #559
- Vanilla JS Refactoring by @felixroos in #563
- repl: add option to display line numbers by @roipoussiere in #582
- learn/tonal: fix typo in "scaleTran[s]pose" by @srenatus in #585
- Music metadata by @roipoussiere in #580
- New Workshop by @felixroos in #587
- Fix option dot by @felixroos in #596
- fix: allow f for flat notes like tidal by @felixroos in #593
- fix: division by zero by @felixroos in #591
- Solmization added by @dariacotocu in #570
- improve cursor by @felixroos in #597
- enable auto-completion by @roipoussiere in #588
- add ratio function by @felixroos in #602
- editor: enable line wrapping by @roipoussiere in #581
- tonal fixes by @felixroos in #607
- fix: flatten scale lists by @felixroos in #605
- clip now works like legato in tidal by @felixroos in #598
- fix: doc links by @felixroos in #612
- tauri desktop app by @vasilymilovidov in #613
- add spiral viz by @felixroos in #614
- patterning ui settings by @felixroos in #606
- Fix typo on packages.mdx by @paikwiki in #520
- cps dependent functions by @felixroos in #620
- desktop: play samples from disk by @felixroos in #621
- fix: midi clock drift by @felixroos in #627
New Contributors
- @roipoussiere made their first contribution in #582
- @srenatus made their first contribution in #585
- @dariacotocu made their first contribution in #570
- @vasilymilovidov made their first contribution in #613
- @paikwiki made their first contribution in #520
Full Changelog: v0.7.0...v0.8.0
Zuckerguss
Package Versions
- @strudel.cycles/core@0.7.2
- @strudel.cycles/transpiler@0.7.1
- @strudel.cycles/mini@0.7.2
- @strudel.cycles/tonal@0.7.1
- @strudel.cycles/xen@0.7.1
- @strudel.cycles/tone@0.7.1
- @strudel.cycles/webaudio@0.7.1
- @strudel.cycles/react@0.7.1
- @strudel.cycles/osc@0.7.1
- @strudel.cycles/serial@0.7.1
- @strudel.cycles/midi@0.7.1
- @strudel.cycles/csound@0.7.1
What's Changed
- pin @csound/browser to 6.18.3 + bump by @felixroos in #403
- update csound + fix sound output by @felixroos in #404
- fix: share url on subpath by @felixroos in #405
- add shabda doc by @felixroos in #407
- Update effects.mdx by @bwagner in #410
- improve effects doc by @felixroos in #409
- google gtfo by @felixroos in #413
- improve samples doc by @felixroos in #411
- PWA with offline support by @felixroos in #417
- add caching strategy for missing file types + cache all samples loaded from github by @felixroos in #419
- add more offline caching by @felixroos in #421
- add cdn.freesound to cache list by @felixroos in #425
- minirepl: add keyboard shortcuts by @felixroos in #429
- Themes by @felixroos in #431
- autocomplete preparations by @felixroos in #427
- Fix anchors by @felixroos in #433
- Update code.mdx by @bwagner in #436
- Update mini-notation.mdx by @bwagner in #437
- Update synths.mdx by @bwagner in #438
- FIXES: Warning about jsxBracketSameLine deprecation by @bwagner in #461
- Composable functions by @yaxu in #390
- weave and weaveWith by @yaxu in #465
- slice and splice by @yaxu in #466
- fix: osc should not return a promise by @felixroos in #472
- FIXES: freqs instead of pitches by @bwagner in #464
- Update input-output.mdx by @bwagner in #471
- settings tab with vim / emacs modes + additional themes and fonts by @felixroos in #467
- fix: hash links by @felixroos in #473
- midi cc support by @felixroos in #478
- Fix array args by @felixroos in #480
- docs: packages + offline by @felixroos in #482
- Update mini-notation.mdx by @yaxu in #365
- Revert "Another attempt at composable functions - WIP (#390)" by @felixroos in #484
- fix app height by @felixroos in #485
- add algolia creds + optimize sidebar for crawling by @felixroos in #488
- refactor react package by @felixroos in #490
- react style fixes by @felixroos in #491
- implement cps in scheduler by @felixroos in #493
- Add control aliases by @yaxu in #497
- fix: nano-repl highlighting by @felixroos in #501
- Reinstate slice and splice by @yaxu in #500
- can now use : as a replacement for space in scales by @felixroos in #502
- Support list syntax in mininotation by @yaxu in #512
- update react to 18 by @felixroos in #514
- add arrange function by @felixroos in #508
- Update README.md by @bwagner in #474
- add 2 illegible fonts by @felixroos in #518
- registerSound API + improved sounds tab + regroup soundfonts by @felixroos in #516
- fix: envelopes in chrome by @felixroos in #521
- Update samples.mdx by @bwagner in #524
- Update intro.mdx by @bwagner in #525
- fix(footer): fix link to tidalcycles by @revolunet in #529
- FIXES: alias pm for polymeter by @bwagner in #527
- Maintain random seed state in parser, not globally by @ijc8 in #531
- feat: add freq support to gm soundfonts by @felixroos in #534
- Update lerna by @felixroos in #535
New Contributors
- @revolunet made their first contribution in #529
- @ijc8 made their first contribution in #531
Full Changelog: v0.6.0...v0.7.0
Zimtschnecke
Package Versions
- @strudel.cycles/core@0.6.8
- @strudel.cycles/eval@0.6.2
- @strudel.cycles/transpiler@0.6.0
- @strudel.cycles/mini@0.6.0
- @strudel.cycles/tonal@0.6.0
- @strudel.cycles/tone@0.6.0
- @strudel.cycles/xen@0.6.0
- @strudel.cycles/webaudio@0.6.1
- @strudel.cycles/react@0.6.0
- @strudel.cycles/osc@0.6.0
- @strudel.cycles/midi@0.6.0
- @strudel.cycles/webdirt@0.6.0
- @strudel.cycles/serial@0.6.0
- @strudel.cycles/soundfonts@0.6.0
- @strudel.cycles/csound@0.6.0
What's Changed
- support freq in pianoroll by @felixroos in #308
- ICLC2023 paper WIP by @yaxu in #306
- fix: copy share link to clipboard was broken for some browers by @felixroos in #311
- Jsdoc component by @felixroos in #312
- object support for .scale by @felixroos in #307
- Astro build by @felixroos in #315
- Reference tab sort by @felixroos in #318
- tutorial updates by @jarmitage in #320
- support notes without octave by @felixroos in #323
- mini repl improvements by @felixroos in #324
- fix: workaround Object.assign globalThis by @felixroos in #326
- add examples route by @felixroos in #327
- add my-patterns by @felixroos in #328
- my-patterns build + deploy by @felixroos in #329
- my-patterns: fix paths + update readme by @felixroos in #330
- improve displaying 's' in pianoroll by @felixroos in #331
- fix: can now multiply floats in mini notation by @felixroos in #332
- Embed mode improvements by @felixroos in #333
- testing + docs docs by @felixroos in #334
- animate mvp by @felixroos in #335
- Tidy parser, implement polymeters by @yaxu in #336
- animation options by @felixroos in #337
- move /my-patterns to /swatch by @yaxu in #338
- more animate functions + mini repl fix by @felixroos in #340
- Patternify euclid, fast, slow and polymeter step parameters in mininotation by @yaxu in #341
- fixes #346 by @felixroos in #347
- Fix prebake base path by @felixroos in #345
- Fix Bjorklund by @yaxu in #343
- docs: tidal comparison + add global fx + add missing sampler fx by @felixroos in #356
- Fix .out(), renaming webaudio's out() to webaudio() by @yaxu in #361
- Support for multiple mininotation operators by @yaxu in #350
- doc structuring by @felixroos in #360
- add https to url by @urswilke in #364
- document more functions + change arp join by @felixroos in #369
- improve new draw logic by @felixroos in #372
- Draw fixes by @felixroos in #377
- update my-patterns instructions by @felixroos in #384
- docs: use note instead of n to mitigate confusion by @felixroos in #385
- add run + test + docs by @felixroos in #386
- Rename a to angle by @felixroos in #387
- document csound by @felixroos in #391
- Notes are not essential :) by @yaxu in #393
- add ribbon + test + docs by @felixroos in #388
- Add tidal-drum-patterns to examples by @urswilke in #379
- add pattern methods hurry, press and pressBy by @yaxu in #397
- proper builds + use pnpm workspaces by @felixroos in #396
- fix: minirepl styles by @felixroos in #398
- can now await initAudio + initAudioOnFirstClick by @felixroos in #399
- release webaudio by @felixroos in #400
New Contributors
- @jarmitage made their first contribution in #320
- @urswilke made their first contribution in #364
Full Changelog: v0.5.0...v0.6.0
Wirbel
Package Versions
- @strudel.cycles/core@0.5.0
- @strudel.cycles/osc@0.4.0
- @strudel.cycles/serial@0.3.0
- @strudel.cycles/csound@0.5.1
- @strudel.cycles/eval@0.5.0
- @strudel.cycles/midi@0.5.0
- @strudel.cycles/mini@0.5.0
- @strudel.cycles/react@0.5.0
- @strudel.cycles/soundfonts@0.5.0
- @strudel.cycles/tonal@0.5.0
- @strudel.cycles/tone@0.5.0
- @strudel.cycles/transpiler@0.5.0
- @strudel.cycles/webaudio@0.5.0
- @strudel.cycles/webdirt@0.5.0
- @strudel.cycles/xen@0.5.0
What's Changed
- Binaries by @felixroos in #254
- fix tutorial bugs by @felixroos in #263
- fix performance bottleneck by @felixroos in #266
- Tidying up core by @yaxu in #256
- tonal update with fixed memory leak by @felixroos in #272
- add eslint by @felixroos in #271
- release version bumps by @felixroos in #273
- Support sending CRC16 bytes with serial messages by @yaxu in #276
- add licenses / credits to all tunes + remove some by @felixroos in #277
- add basic csound output by @felixroos in #275
- do not recompile orc by @felixroos in #278
- implement collect + arp function by @felixroos in #281
- Switch 'operators' from .whatHow to .what.how by @yaxu in #285
- Fancy hap show, include part in snapshots by @yaxu in #291
- Reorganise pattern.mjs with a 'toplevel first' regime by @yaxu in #286
- add prettier task by @felixroos in #296
- Move stuff to new register function by @felixroos in #295
- can now add bare numbers to numeral object props by @felixroos in #287
- update vitest by @felixroos in #297
- remove whitespace from highlighted region by @felixroos in #298
- .defragmentHaps() for merging touching haps that share a whole and value by @yaxu in #299
- fix whitespace trimming by @felixroos in #300
- add freq support to sampler by @felixroos in #301
- add lint + prettier check before test by @felixroos in #305
- Updated csoundm to use the register facility . by @gogins in #303
New Contributors
Full Changelog: v0.4.0...v0.5.0
Brandung
What's Changed
- new transpiler based on acorn by @felixroos in #249
- Webaudio build by @felixroos in #250
- Repl refactoring by @felixroos in #255
Full Changelog: v0.3.0...v0.4.0