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 #728
- [Bug Fix] chooseWith: prevent pattern from stopping audio when selection is >= 1 or < 0 by @daslyfe in #741
- Fix addivite synthesis phases by @felixroos in #762
- fix: scale offset by @felixroos in #764
- fix zen mode logo overlap by @felixroos in #760
- fix: share copy to clipboard + alert by @felixroos in #774
- fix: style issues by @felixroos in #781
- Fix scope pos + document by @felixroos in #786
- don't use anchor links for reference by @felixroos in #791
- remove unwanted cm6 outline for strudelTheme by @kasparsj in #802
- FIXES: palindrome abc -> abccba by @bwagner in #831
- Bug Fix #119: Clock drift by @daslyfe in #874
- bugfix: sound select indexes out of bounds by @daslyfe in #871
- Error tolerance by @felixroos in #880
- fix: make sure n is never undefined before nanFallback by @felixroos in #881
- fix: invisible selection on vim + emacs mode by @felixroos in #889
- fix: autocomplete / tooltip code example bug by @felixroos in #898
- Fix examples page, piano() and a few workshop imgs by @shiyouganai in #848
- fix: trailing slash confusion by @felixroos in #743
- fix: try different trailing slash behavior by @felixroos in #744
- Fix krill build command in README by @ilesinge in #748
- Fix for #1. Enables named instruments for csoundm. by @gogins in #662
- fix: missing hash for links starting with / by @felixroos in #845
- fix: swatch png src by @felixroos in #846
- Fix edge case with rehype-urls and trailing slashes in image file paths by @shiyouganai in #849
- fix: multiple repls by @felixroos in #813
- Fix chunk, add fastChunk and repeatCycles by @yaxu in #712
- Update tauri.yml workflow file by @vasilymilovidov in #705
- vite-vanilla-repl readme fix by @felixroos in #737
- completely revert config mess by @felixroos in #745
- hopefully fix trainling slashes bug by @felixroos in #753
- Update vite pwa by @felixroos in #772
- Update to Astro 3 by @felixroos in #775
- support multiple named serial connections, change default baudrate by @yaxu in #551
- 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
- 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
- CHANGES: pnpm 8.1.3 to 8.11.0 by @bwagner in #850
- add missing trailing slashes by @felixroos in #860
- move all examples to separate examples folder by @felixroos in #878
- Dependency update by @felixroos in #879
- Update Vite version so hot reload works properly with newest pnpm version by @daslyfe in #892
- prevent vite from complaining about additional exports in jsx files by @daslyfe in #891
- fix some build warnings by @felixroos in #902
- Remove hideHeader for better mobile UI and consistency by @rjulian in #894
- Fix: swatch/[name].png.js static path by @oscarbyrne in #916
- rename @strudel.cycles/* packages to @strudel/* by @felixroos in #917
pick
now accepts lookup tables, with alternate cycle squeezing behaviour as newinhabit
function by @yaxu in #918- Revert "
pick
now accepts lookup tables, with alternate cycle squeezing behaviour as newinhabit
function" by @yaxu in #920 - Fix pattern tab not showing patterns without created date by @daslyfe in #934
New Contributors
- @ilesinge made their first contribution in #748
- @Dsm0 made their first contribution in #773
- @kasparsj made their first contribution in #802
- @atfornes made their first contribution in #818
- @drewgbarnes made their first contribution in #830
- @shiyouganai made their first contribution in #843
- @rjulian made their first contribution in #894
- @fnordomat made their first contribution in #907
- @oscarbyrne made their first contribution in #916
- @geikha made their first contribution in #924
Full Changelog: v0.9.0...v1.0.0