Strudel Blog
Welcome to the Strudel Blog, where we will keep you updated with the latest changes and things happening in the strudelsphere. You can subscribe to this blog using this rss link
Release Notes v1.0.0
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
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!
- make 0.5hz cps the default by @yaxu in https://github.com/tidalcycles/strudel/pull/931
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 https://github.com/tidalcycles/strudel/pull/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 https://github.com/tidalcycles/strudel/pull/798
- Multichannel audio by @daslyfe in https://github.com/tidalcycles/strudel/pull/820
- Audio device selection by @daslyfe in https://github.com/tidalcycles/strudel/pull/854
- Better convolution reverb by generating impulse responses by @Bubobubobubobubo and @felixroos in https://github.com/tidalcycles/strudel/pull/718
- Add ‘white’, ‘pink’ and ‘brown’ oscillators + refactor synth by @Bubobubobubobubo and @felixroos in https://github.com/tidalcycles/strudel/pull/713
- New noise type: “crackle” by @Bubobubobubobubo in https://github.com/tidalcycles/strudel/pull/806
- Add support for using samples as impulse response buffers for the reverb by @vasilymilovidov in https://github.com/tidalcycles/strudel/pull/717
- Compressor by @felixroos in https://github.com/tidalcycles/strudel/pull/729
- Adding vibrato to Superdough sampler by @Bubobubobubobubo and @felixroos in https://github.com/tidalcycles/strudel/pull/706
- Further Envelope improvements by @daslyfe in https://github.com/tidalcycles/strudel/pull/868
- Add more vowel qualities for the vowels function by @fnordomat in https://github.com/tidalcycles/strudel/pull/907
- pitch envelope by @felixroos in https://github.com/tidalcycles/strudel/pull/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 https://github.com/tidalcycles/strudel/pull/714
- Slider afterthoughts by @felixroos in https://github.com/tidalcycles/strudel/pull/723
- add xfade by @felixroos in https://github.com/tidalcycles/strudel/pull/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 https://github.com/tidalcycles/strudel/pull/699
- add midi clock support by @felixroos in https://github.com/tidalcycles/strudel/pull/710
hydra
hydra, the live coding video synth can now be used directly inside the strudel REPL.
- Hydra integration by @felixroos in https://github.com/tidalcycles/strudel/pull/759
- add options param to initHydra by @kasparsj in https://github.com/tidalcycles/strudel/pull/808
- Hydra fixes and improvements by @atfornes in https://github.com/tidalcycles/strudel/pull/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 https://github.com/tidalcycles/strudel/pull/863
- Vanilla repl 3 by @felixroos in https://github.com/tidalcycles/strudel/pull/865
- more work on vanilla repl: repl web component + package + MicroRepl by @felixroos in https://github.com/tidalcycles/strudel/pull/866
- main repl vanillification by @felixroos in https://github.com/tidalcycles/strudel/pull/873
- final vanillification by @felixroos in https://github.com/tidalcycles/strudel/pull/876
Doc Changes
Plenty of things have been added to the docs, including a showcase of what people have been done with strudel and the new Community Bakery!
show PRs
- Showcase by @felixroos in https://github.com/tidalcycles/strudel/pull/885
- Recipes by @felixroos in https://github.com/tidalcycles/strudel/pull/742
- Document striate function by @ilesinge in https://github.com/tidalcycles/strudel/pull/766
- Document adsr function by @ilesinge in https://github.com/tidalcycles/strudel/pull/767
- Add function params in reference tab by @ilesinge in https://github.com/tidalcycles/strudel/pull/785
- Update first-sounds.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/794
- Update recap.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/797
- Update pattern-effects.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/796
- Update first-effects.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/795
- Document pianoroll by @ilesinge in https://github.com/tidalcycles/strudel/pull/784
- Add doc for euclidLegatoRot, wordfall and slider by @ilesinge in https://github.com/tidalcycles/strudel/pull/801
- Improve documentation for synonym functions by @ilesinge in https://github.com/tidalcycles/strudel/pull/800
- Add and style algolia search by @ilesinge in https://github.com/tidalcycles/strudel/pull/827
- Fix a typo by @drewgbarnes in https://github.com/tidalcycles/strudel/pull/830
- add mastodon link by @felixroos in https://github.com/tidalcycles/strudel/pull/884
- adds a blog by @felixroos in https://github.com/tidalcycles/strudel/pull/911
- community bakery by @felixroos in https://github.com/tidalcycles/strudel/pull/923
- Blog improvements by @felixroos in https://github.com/tidalcycles/strudel/pull/919
- 2 years blog post by @felixroos in https://github.com/tidalcycles/strudel/pull/929
Other Features
There is a lot more
- mini notation: international alphabets support by @ilesinge in https://github.com/tidalcycles/strudel/pull/751
- Add shabda shortcut by @ilesinge in https://github.com/tidalcycles/strudel/pull/740
- add play function by @felixroos in https://github.com/tidalcycles/strudel/pull/758 (superseded by next)
- tidal style d1 … d9 functions + more by @felixroos in https://github.com/tidalcycles/strudel/pull/805
- add vscode bindings by @Dsm0 in https://github.com/tidalcycles/strudel/pull/773
- Implement optional hover tooltip with function documentation by @ilesinge in https://github.com/tidalcycles/strudel/pull/783
- samples loading shortcuts: by @felixroos in https://github.com/tidalcycles/strudel/pull/788
- add option to disable active line highlighting in Code Settings by @kasparsj in https://github.com/tidalcycles/strudel/pull/804
- Color hsl by @felixroos in https://github.com/tidalcycles/strudel/pull/815
- Patterns tab + Refactor Panel by @felixroos in https://github.com/tidalcycles/strudel/pull/769
- patterns tab: import patterns + style by @felixroos in https://github.com/tidalcycles/strudel/pull/852
- Export patterns + ui tweaks by @felixroos in https://github.com/tidalcycles/strudel/pull/855
- Pattern organization by @felixroos in https://github.com/tidalcycles/strudel/pull/858
- Sound Import from local file system by @daslyfe in https://github.com/tidalcycles/strudel/pull/839
- bugfix: suspend and close existing audio context when changing interface by @daslyfe in https://github.com/tidalcycles/strudel/pull/882
- add root mode for voicings by @felixroos in https://github.com/tidalcycles/strudel/pull/887
- scales can now be anchored by @felixroos in https://github.com/tidalcycles/strudel/pull/888
- add dough function for raw dsp by @felixroos in https://github.com/tidalcycles/strudel/pull/707 (experimental)
- support mininotation ’..’ range operator, fixes #715 by @yaxu in https://github.com/tidalcycles/strudel/pull/716
- Add pick and squeeze functions by @daslyfe in https://github.com/tidalcycles/strudel/pull/771
- support , in < > by @felixroos in https://github.com/tidalcycles/strudel/pull/886
- public sharing by @felixroos in https://github.com/tidalcycles/strudel/pull/910
- pick, pickmod, inhabit, inhabitmod by @yaxu in https://github.com/tidalcycles/strudel/pull/921
- Mini-notation additions towards tidal compatibility by @yaxu in https://github.com/tidalcycles/strudel/pull/926
- add pickF and pickmodF by @geikha in https://github.com/tidalcycles/strudel/pull/924
- Make splice cps-aware by @yaxu in https://github.com/tidalcycles/strudel/pull/932
- Refactor cps functions by @felixroos in https://github.com/tidalcycles/strudel/pull/933
- Add useful pattern selection behavior for performing. by @daslyfe in https://github.com/tidalcycles/strudel/pull/897
Other Fixes
show
- fix: finally repair envelopes by @felixroos in https://github.com/tidalcycles/strudel/pull/861
- fix: reverb regenerate loophole by @felixroos in https://github.com/tidalcycles/strudel/pull/726
- fix: reverb roomsize not required by @felixroos in https://github.com/tidalcycles/strudel/pull/731
- fix: reverb sampleRate by @felixroos in https://github.com/tidalcycles/strudel/pull/732
- consume n with scale by @felixroos in https://github.com/tidalcycles/strudel/pull/727
- fix: hashes in urls by @felixroos in https://github.com/tidalcycles/strudel/pull/728
- [Bug Fix] chooseWith: prevent pattern from stopping audio when selection is >= 1 or < 0 by @daslyfe in https://github.com/tidalcycles/strudel/pull/741
- Fix addivite synthesis phases by @felixroos in https://github.com/tidalcycles/strudel/pull/762
- fix: scale offset by @felixroos in https://github.com/tidalcycles/strudel/pull/764
- fix zen mode logo overlap by @felixroos in https://github.com/tidalcycles/strudel/pull/760
- fix: share copy to clipboard + alert by @felixroos in https://github.com/tidalcycles/strudel/pull/774
- fix: style issues by @felixroos in https://github.com/tidalcycles/strudel/pull/781
- Fix scope pos + document by @felixroos in https://github.com/tidalcycles/strudel/pull/786
- don’t use anchor links for reference by @felixroos in https://github.com/tidalcycles/strudel/pull/791
- remove unwanted cm6 outline for strudelTheme by @kasparsj in https://github.com/tidalcycles/strudel/pull/802
- FIXES: palindrome abc -> abccba by @bwagner in https://github.com/tidalcycles/strudel/pull/831
- Bug Fix #119: Clock drift by @daslyfe in https://github.com/tidalcycles/strudel/pull/874
- bugfix: sound select indexes out of bounds by @daslyfe in https://github.com/tidalcycles/strudel/pull/871
- Error tolerance by @felixroos in https://github.com/tidalcycles/strudel/pull/880
- fix: make sure n is never undefined before nanFallback by @felixroos in https://github.com/tidalcycles/strudel/pull/881
- fix: invisible selection on vim + emacs mode by @felixroos in https://github.com/tidalcycles/strudel/pull/889
- fix: autocomplete / tooltip code example bug by @felixroos in https://github.com/tidalcycles/strudel/pull/898
- Fix examples page, piano() and a few workshop imgs by @shiyouganai in https://github.com/tidalcycles/strudel/pull/848
- fix: trailing slash confusion by @felixroos in https://github.com/tidalcycles/strudel/pull/743
- fix: try different trailing slash behavior by @felixroos in https://github.com/tidalcycles/strudel/pull/744
- Fix krill build command in README by @ilesinge in https://github.com/tidalcycles/strudel/pull/748
- Fix for #1. Enables named instruments for csoundm. by @gogins in https://github.com/tidalcycles/strudel/pull/662
- fix: missing hash for links starting with / by @felixroos in https://github.com/tidalcycles/strudel/pull/845
- fix: swatch png src by @felixroos in https://github.com/tidalcycles/strudel/pull/846
- Fix edge case with rehype-urls and trailing slashes in image file paths by @shiyouganai in https://github.com/tidalcycles/strudel/pull/849
- fix: multiple repls by @felixroos in https://github.com/tidalcycles/strudel/pull/813
- Fix chunk, add fastChunk and repeatCycles by @yaxu in https://github.com/tidalcycles/strudel/pull/712
- Update tauri.yml workflow file by @vasilymilovidov in https://github.com/tidalcycles/strudel/pull/705
- vite-vanilla-repl readme fix by @felixroos in https://github.com/tidalcycles/strudel/pull/737
- completely revert config mess by @felixroos in https://github.com/tidalcycles/strudel/pull/745
- hopefully fix trailing slashes bug by @felixroos in https://github.com/tidalcycles/strudel/pull/753
- Update vite pwa by @felixroos in https://github.com/tidalcycles/strudel/pull/772
- Update to Astro 3 by @felixroos in https://github.com/tidalcycles/strudel/pull/775
- support multiple named serial connections, change default baudrate by @yaxu in https://github.com/tidalcycles/strudel/pull/551
- CHANGES: github action checkout v2 -> v4 by @bwagner in https://github.com/tidalcycles/strudel/pull/837
- CHANGES: pin pnpm to version 8.3.1 by @bwagner in https://github.com/tidalcycles/strudel/pull/834
- CHANGES: github action pnpm version from 7 to 8.3.1 by @bwagner in https://github.com/tidalcycles/strudel/pull/835
- ADDS: JetBrains IDE files and directories to .gitignore by @bwagner in https://github.com/tidalcycles/strudel/pull/840
- Prevent 404 on Algolia crawls by @ilesinge in https://github.com/tidalcycles/strudel/pull/838
- Add in fixes from my fork to slashocalypse branch by @shiyouganai in https://github.com/tidalcycles/strudel/pull/843
- improve slashing + base href behavior by @felixroos in https://github.com/tidalcycles/strudel/pull/842
- CHANGES: pnpm 8.1.3 to 8.11.0 by @bwagner in https://github.com/tidalcycles/strudel/pull/850
- add missing trailing slashes by @felixroos in https://github.com/tidalcycles/strudel/pull/860
- move all examples to separate examples folder by @felixroos in https://github.com/tidalcycles/strudel/pull/878
- Dependency update by @felixroos in https://github.com/tidalcycles/strudel/pull/879
- Update Vite version so hot reload works properly with newest pnpm version by @daslyfe in https://github.com/tidalcycles/strudel/pull/892
- prevent vite from complaining about additional exports in jsx files by @daslyfe in https://github.com/tidalcycles/strudel/pull/891
- fix some build warnings by @felixroos in https://github.com/tidalcycles/strudel/pull/902
- Remove hideHeader for better mobile UI and consistency by @rjulian in https://github.com/tidalcycles/strudel/pull/894
- Fix: swatch/[name].png.js static path by @oscarbyrne in https://github.com/tidalcycles/strudel/pull/916
- rename @strudel.cycles/_ packages to @strudel/_ by @felixroos in https://github.com/tidalcycles/strudel/pull/917
pick
now accepts lookup tables, with alternate cycle squeezing behaviour as newinhabit
function by @yaxu in https://github.com/tidalcycles/strudel/pull/918- Revert “
pick
now accepts lookup tables, with alternate cycle squeezing behaviour as newinhabit
function” by @yaxu in https://github.com/tidalcycles/strudel/pull/920 - Fix pattern tab not showing patterns without created date by @daslyfe in https://github.com/tidalcycles/strudel/pull/934
New Contributors
- @ilesinge made their first contribution in https://github.com/tidalcycles/strudel/pull/748
- @Dsm0 made their first contribution in https://github.com/tidalcycles/strudel/pull/773
- @kasparsj made their first contribution in https://github.com/tidalcycles/strudel/pull/802
- @atfornes made their first contribution in https://github.com/tidalcycles/strudel/pull/818
- @drewgbarnes made their first contribution in https://github.com/tidalcycles/strudel/pull/830
- @shiyouganai made their first contribution in https://github.com/tidalcycles/strudel/pull/843
- @rjulian made their first contribution in https://github.com/tidalcycles/strudel/pull/894
- @fnordomat made their first contribution in https://github.com/tidalcycles/strudel/pull/907
- @oscarbyrne made their first contribution in https://github.com/tidalcycles/strudel/pull/916
- @geikha made their first contribution in https://github.com/tidalcycles/strudel/pull/924
Full Changelog: https://github.com/tidalcycles/strudel/compare/v0.9.0…v1.0.0
2 Years of Strudel
Strudel is now 2 years old! This was the first commit to the strudel repo:
commit 38b5a0d5cdf28685b2b5e18d460772b70246207b
Author: Alex McLean <alex@slab.org>
Date: Sat Jan 22 20:24:36 2022 +0000
Initial commit
I have already written these 2 posts about the first year of strudel:
To continue that tradition, let me recap what happened around Strudel in 2023, at least what I have noticed:
ICLC 2023
I presented strudel at the International Conference on Live Coding (ICLC), which took place in April in Utrecht. Here is the (pretty technical) video of my presentation:
For the conference, I wrote a paper with Alex McLean, called Strudel: Live Coding Patterns on the Web. For me personally, this was my first major contact with the live coding scene and it was a very memorable experience!
Workshops and Courses
A lot of workshops have been using strudel in the last year, from many parts of the world: Iceland, UK, Japan, France and the US (probably more I’ve missed). I’ve also given workshops in Switzerland and Germany, where we even had real strudel, thanks to TOPLAP Karlsruhe!
Additionally, there is now a Creative Coding course at Chalmers in Sweden, consisting of “a 10-week series of workshops […] for younger girls to have fun and experiment with code and music”. I was very delighted to see this video of the girls having fun with Strudel:
The course was also encompassed by a study on female empowerement through Creative Coding, read more in Jasmina Maric’s paper “Singing Code”.
Another bigger installment was the (Algo|Afro) Futures programme led by Antonio Roberts, which is “a mentoring programme for early career Black artists who want to explore creative coding and live coding”. For the final concert they recorded this amazing live stream:
I am so happy to see that the project I’ve co-created has had such an impact already, making live coding workshops more easy and accessible. In my opinion, the reasons why people seem to choose strudel for teaching are:
- it does not require an installation, so it even runs on your phone / tablet or a chromebook
- in-code and behind-code visualizations help learners to understand what the system is doing
- the interactive documentation
- the simple javascript syntax, which is very similar to hydra
- tidal’s mini notation for playful expression of rhythms (based on the Bol Processor’s polymetric expressions)
- its range of functions for transforming patterns for those getting deeper into exploring strange rhythms
Performances
People are starting to use Strudel for performances, many of which can be watched in the new Showcase! The above photo comes from the Mars College Department of Future Music
New Features
Let’s talk about some of the major features that landed since last year.
Audio Engine Improved
The audio engine has gotten a lot of attention! Once integrated into Strudel itself, the engine has been pulled out and named superdough, the name being based on SuperDirt, which is the audio engine of Tidal. Superdough is now also used by topos, a creation of Raphaël Forment, who helped me implement a bunch of new features. Lately, Jade Rowland has also developed many synthesis features into superdough! Here is a non-exhaustive list of new features:
- filter envelopes + 24db filter option
- pitch envelopes
- fm synthesis
- wavetable synthesis
- phaser
- vibrato
- noise
- an integration of the zzfx synth
- compressor
- multichannel audio / audio device selection
Here’s an example that shows off filter envelopes:
// "acidic tooth" @by eddyflux setcps(1) stack( note("[<g1 f1>/8](<3 5>,8)") .clip(perlin.range(.15,1.5)) .release(.1) .s("sawtooth") .lpf(sine.range(400,800).slow(16)) .lpq(cosine.range(6,14).slow(3)) .lpenv(sine.mul(4).slow(4)) .lpd(.2).lpa(.02) .ftype('24db') .rarely(add(note(12))) .room(.2).shape(.3).postgain(.5) .superimpose(x=>x.add(note(12)).delay(.5).bpf(1000)) .gain("[.2 1@3]*2") // fake sidechain , stack( s("bd*2").mask("<0@4 1@16>"), s("hh*8").gain(saw.mul(saw.fast(2))).clip(sine) .mask("<0@8 1@16>") ).bank('RolandTR909') )
Import Sounds
In the “sounds” tab, you can now press “import sounds” to select sounds from your local disk, allowing you to use your own samples without the need to upload them! Keep in mind that if you share a pattern that uses local samples that the samples will fail to load on other people’s machines..
Community Bakery / Patterns Tab
You can now share your patterns publicly to the Community Bakery, via the “Share” button! The Community Patterns are also listed in the new “patterns”, where you can also save your own patterns locally!
Quality of Life Improvements
You can now change the theme and font of the editor:
You can now enable autocompletion in the settings:
If you enable tooltips, you will get the same info by hovering the mouse over functions while holding the ctrl key!
Another handy thing is that Strudel now has offline support! Even samples will work once you have played them once. More info
New Visualizations
There is now a new .spiral()
visualization that renders events in a spiral, elevating the cyclical nature of time (+ swirl also means Strudel in german).
Ah yes and you see one of the less readable fonts in this screenshot too :)
The .scope()
function renders you an oscilloscope:
The pianoroll also got some more options, including the ability to set labels:
Sliders
The slider
is the first of a family of functions that render UI widgets inline:
note("<c eb g bb>*8") .s("sawtooth").lpenv(2).lpq(8) .lpf(slider(500, 100, 2000, 1))
Sliders are especially useful for gradual changes like fading things in and out by hand, which is not very practical with just code. The fact that the slider is inside the code and also changes the code itself, makes it feel connected to the rest of the system + doesn’t distract or obstruct from the code. Other widgets will come for sure.
More Voicings
One of my personal goals that got me involved with live coding in the first place is to be able to generate good sounding chord voicings on the fly. Strudel now supports most chord symbols:
chord("<C^9 C7b9 Fm9 Db^7>/2") .dict('ireal').voicing() .s("sawtooth") .lpf(400).lpa(.5).lpenv(4) .phaser(4).room(.5)
So far, this is only documented briefly, a more in-depth guide will follow!
Multiplayer / Collaborative Coding
The collaborative live coding editor flok had strudel support early on, thanks to Damián Silvani. Later, I’ve added support for multiple strudel instances, which was merged to the official version just a few days ago. This photo shows a flok jam I did with my workshop participants in basel:
The cool thing about flok is that you can jam with people on the other side of the planet! Here is a recording of the first session we organized over the discord server:
Better MIDI integration
The midi integration has gotten a few new features:
- clock out to sync your midi devices / DAW to the strudel clock (better doc coming soon)
- cc output to send cc values to your gear
- cc input to control strudel via MIDI (better doc coming soon)
Here is a little demo of me fiddling with a midi controller, changing a piano pattern:
Experimental Features
- You can now run hydra inside strudel + you can even run strudel in hydra, thanks to Olivia Jack and Ámbar Tenorio Fornés! Read more here
- There is now a VSCode Plugin thanks to roipoussiere! It allows you run patterns from a
.strudel
file inside VSCode. - Strudel can now be downloaded as a desktop app, thanks to vasilymilovidov who has wrapped the REPL with tauri. You can download it on the releases page (scroll down to Assets). The performance is not optimal on MacOS and Linux, which is why it is still considered experimental
Stats
Let’s end the recap with some naked numbers:
Releases
- 0.0.2 Schwindlig
- 0.1.0 Stürmisch
- 0.0.3 Maelstrom - state of last strudel post
- 0.0.4 Gischt
- 0.3.0 Donauwelle
- 0.4.0 Brandung
- 0.5.0 Wirbel
- 0.6.0 Zimtschnecke - state after 1 year
- 0.7.0 Zuckerguss
- 0.8.0 Himbeermuffin
- 0.9.0 Bananenbrot
- 0.10.0 Kuchenboden
- 0.11.0 Kuchengabel
- 1.0.0 Geburtstagskuchen - now!
Repo Stats
- 3399 commits (+1521)
- 427 stars (+243)
- 90 forks (+45)
- 163 open issues (+110), 186 closed (+100)
- 20 open PRs (+18), 515 closed (+292)
- 32 contributors (+17)
- 12 releases (+4)
Thank you 💗
A big thanks to everyone contributing to this project in one way or another, be it by writing code, fixing typos, asking questions or making sounds! I am very grateful for how all of this came together and I’m looking forward to year 3! If you have some spare cash to support the tidal project, we’d be happy if you can insert some coins here.
Release Notes v0.9.0
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
Related PRs:
- superdough: encapsulates web audio output by @felixroos in https://github.com/tidalcycles/strudel/pull/664
- basic fm by @felixroos in https://github.com/tidalcycles/strudel/pull/669
- Wave Selection and Global Envelope on the FM Synth Modulator by @Bubobubobubobubo in https://github.com/tidalcycles/strudel/pull/683
- control osc partial count with n by @felixroos in https://github.com/tidalcycles/strudel/pull/674
- ZZFX Synth support by @Bubobubobubobubo in https://github.com/tidalcycles/strudel/pull/684
- Adding filter envelopes and filter order selection by @Bubobubobubobubo in https://github.com/tidalcycles/strudel/pull/692
- Adding loop points and thus wavetable synthesis by @Bubobubobubobubo in https://github.com/tidalcycles/strudel/pull/698
- Adding vibrato to base oscillators by @Bubobubobubobubo in https://github.com/tidalcycles/strudel/pull/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 https://github.com/tidalcycles/strudel/pull/685
- add sleep timer + improve message iterating by @daslyfe in https://github.com/tidalcycles/strudel/pull/688
- fix MIDI CC messages by @vasilymilovidov in https://github.com/tidalcycles/strudel/pull/690
- Direct OSC Support in Tauri by @daslyfe in https://github.com/tidalcycles/strudel/pull/694
- Add logging from tauri by @daslyfe in https://github.com/tidalcycles/strudel/pull/697
- fix osc bundle timestamp glitches caused by drifting clock by @daslyfe in https://github.com/tidalcycles/strudel/pull/666
- Midi time fixes by @daslyfe in https://github.com/tidalcycles/strudel/pull/668
- [Bug Fix] Account for numeral notation when converting to midi by @daslyfe in https://github.com/tidalcycles/strudel/pull/656
- [Bug Fix] Midi: Don’t treat note 0 as false by @daslyfe in https://github.com/tidalcycles/strudel/pull/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 https://github.com/tidalcycles/strudel/pull/677 (demo)
- Pianoroll improvements by @felixroos in https://github.com/tidalcycles/strudel/pull/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 https://github.com/tidalcycles/strudel/pull/647 (demo)
- ireal voicings by @felixroos in https://github.com/tidalcycles/strudel/pull/653 (demo)
Adaptive Highlighting
Thanks to @mindofmatthew , the highlighting will adapt to edits instantly! Related PRs:
- More work on highlight IDs by @mindofmatthew in https://github.com/tidalcycles/strudel/pull/636
- Adaptive Highlighting by @felixroos in https://github.com/tidalcycles/strudel/pull/634
UI Changes
- teletext theme + fonts by @felixroos in https://github.com/tidalcycles/strudel/pull/681 (featured in video at the top)
- togglable panel position by @felixroos in https://github.com/tidalcycles/strudel/pull/667
Other New Features
- slice: list mode by @felixroos in https://github.com/tidalcycles/strudel/pull/645 (demo)
- add emoji support by @felixroos in https://github.com/tidalcycles/strudel/pull/680 (demo)
Articles
- Understand pitch by @felixroos in https://github.com/tidalcycles/strudel/pull/652
Other Fixes & Enhancements
- fix: out of range error by @felixroos in https://github.com/tidalcycles/strudel/pull/630
- fix: update canvas size on window resize by @felixroos in https://github.com/tidalcycles/strudel/pull/631
- FIXES: TODO in rotateChroma by @bwagner in https://github.com/tidalcycles/strudel/pull/650
- snapshot tests: sort haps by part by @felixroos in https://github.com/tidalcycles/strudel/pull/637
- Delete old packages by @felixroos in https://github.com/tidalcycles/strudel/pull/639
- update vitest by @felixroos in https://github.com/tidalcycles/strudel/pull/651
- fix: welcome message for latestCode by @felixroos in https://github.com/tidalcycles/strudel/pull/659
- fix: always run previous trigger by @felixroos in https://github.com/tidalcycles/strudel/pull/660
New Contributors
- @daslyfe made their first contribution in https://github.com/tidalcycles/strudel/pull/656
- @Bubobubobubobubo made their first contribution in https://github.com/tidalcycles/strudel/pull/683
Full Changelog: https://github.com/tidalcycles/strudel/compare/v0.8.0…v0.9.0
A big thanks to all the contributors!
Release Notes v0.8.0
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
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()
:
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 https://github.com/tidalcycles/strudel/pull/537
- improve initial loading + wait before eval by @felixroos in https://github.com/tidalcycles/strudel/pull/538
- do not reset cps before eval #517 by @felixroos in https://github.com/tidalcycles/strudel/pull/539
- feat: add loader bar to animate loading state by @felixroos in https://github.com/tidalcycles/strudel/pull/542
- add firacode font by @felixroos in https://github.com/tidalcycles/strudel/pull/544
- fix: allow whitespace at the end of a mini pattern by @felixroos in https://github.com/tidalcycles/strudel/pull/547
- fix: reset time on stop by @felixroos in https://github.com/tidalcycles/strudel/pull/548
- fix: load soundfonts in prebake by @felixroos in https://github.com/tidalcycles/strudel/pull/550
- fix: colorable highlighting by @felixroos in https://github.com/tidalcycles/strudel/pull/553
- fix: make soundfonts import dynamic by @felixroos in https://github.com/tidalcycles/strudel/pull/556
- add basic triads and guidetone voicings by @felixroos in https://github.com/tidalcycles/strudel/pull/557
- Patchday by @felixroos in https://github.com/tidalcycles/strudel/pull/559
- Vanilla JS Refactoring by @felixroos in https://github.com/tidalcycles/strudel/pull/563
- repl: add option to display line numbers by @roipoussiere in https://github.com/tidalcycles/strudel/pull/582
- learn/tonal: fix typo in “scaleTran[s]pose” by @srenatus in https://github.com/tidalcycles/strudel/pull/585
- Music metadata by @roipoussiere in https://github.com/tidalcycles/strudel/pull/580
- New Workshop by @felixroos in https://github.com/tidalcycles/strudel/pull/587
- Fix option dot by @felixroos in https://github.com/tidalcycles/strudel/pull/596
- fix: allow f for flat notes like tidal by @felixroos in https://github.com/tidalcycles/strudel/pull/593
- fix: division by zero by @felixroos in https://github.com/tidalcycles/strudel/pull/591
- Solmization added by @dariacotocu in https://github.com/tidalcycles/strudel/pull/570
- improve cursor by @felixroos in https://github.com/tidalcycles/strudel/pull/597
- enable auto-completion by @roipoussiere in https://github.com/tidalcycles/strudel/pull/588
- add ratio function by @felixroos in https://github.com/tidalcycles/strudel/pull/602
- editor: enable line wrapping by @roipoussiere in https://github.com/tidalcycles/strudel/pull/581
- tonal fixes by @felixroos in https://github.com/tidalcycles/strudel/pull/607
- fix: flatten scale lists by @felixroos in https://github.com/tidalcycles/strudel/pull/605
- clip now works like legato in tidal by @felixroos in https://github.com/tidalcycles/strudel/pull/598
- fix: doc links by @felixroos in https://github.com/tidalcycles/strudel/pull/612
- tauri desktop app by @vasilymilovidov in https://github.com/tidalcycles/strudel/pull/613
- add spiral viz by @felixroos in https://github.com/tidalcycles/strudel/pull/614
- patterning ui settings by @felixroos in https://github.com/tidalcycles/strudel/pull/606
- Fix typo on packages.mdx by @paikwiki in https://github.com/tidalcycles/strudel/pull/520
- cps dependent functions by @felixroos in https://github.com/tidalcycles/strudel/pull/620
- desktop: play samples from disk by @felixroos in https://github.com/tidalcycles/strudel/pull/621
- fix: midi clock drift by @felixroos in https://github.com/tidalcycles/strudel/pull/627
New Contributors
- @roipoussiere made their first contribution in https://github.com/tidalcycles/strudel/pull/582
- @srenatus made their first contribution in https://github.com/tidalcycles/strudel/pull/585
- @dariacotocu made their first contribution in https://github.com/tidalcycles/strudel/pull/570
- @vasilymilovidov made their first contribution in https://github.com/tidalcycles/strudel/pull/613
- @paikwiki made their first contribution in https://github.com/tidalcycles/strudel/pull/520
Full Changelog: https://github.com/tidalcycles/strudel/compare/v0.7.0…v0.8.0
Release Notes v0.7.0
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 https://github.com/tidalcycles/strudel/pull/403
- update csound + fix sound output by @felixroos in https://github.com/tidalcycles/strudel/pull/404
- fix: share url on subpath by @felixroos in https://github.com/tidalcycles/strudel/pull/405
- add shabda doc by @felixroos in https://github.com/tidalcycles/strudel/pull/407
- Update effects.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/410
- improve effects doc by @felixroos in https://github.com/tidalcycles/strudel/pull/409
- google gtfo by @felixroos in https://github.com/tidalcycles/strudel/pull/413
- improve samples doc by @felixroos in https://github.com/tidalcycles/strudel/pull/411
- PWA with offline support by @felixroos in https://github.com/tidalcycles/strudel/pull/417
- add caching strategy for missing file types + cache all samples loaded from github by @felixroos in https://github.com/tidalcycles/strudel/pull/419
- add more offline caching by @felixroos in https://github.com/tidalcycles/strudel/pull/421
- add cdn.freesound to cache list by @felixroos in https://github.com/tidalcycles/strudel/pull/425
- minirepl: add keyboard shortcuts by @felixroos in https://github.com/tidalcycles/strudel/pull/429
- Themes by @felixroos in https://github.com/tidalcycles/strudel/pull/431
- autocomplete preparations by @felixroos in https://github.com/tidalcycles/strudel/pull/427
- Fix anchors by @felixroos in https://github.com/tidalcycles/strudel/pull/433
- Update code.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/436
- Update mini-notation.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/437
- Update synths.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/438
- FIXES: Warning about jsxBracketSameLine deprecation by @bwagner in https://github.com/tidalcycles/strudel/pull/461
- Composable functions by @yaxu in https://github.com/tidalcycles/strudel/pull/390
- weave and weaveWith by @yaxu in https://github.com/tidalcycles/strudel/pull/465
- slice and splice by @yaxu in https://github.com/tidalcycles/strudel/pull/466
- fix: osc should not return a promise by @felixroos in https://github.com/tidalcycles/strudel/pull/472
- FIXES: freqs instead of pitches by @bwagner in https://github.com/tidalcycles/strudel/pull/464
- Update input-output.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/471
- settings tab with vim / emacs modes + additional themes and fonts by @felixroos in https://github.com/tidalcycles/strudel/pull/467
- fix: hash links by @felixroos in https://github.com/tidalcycles/strudel/pull/473
- midi cc support by @felixroos in https://github.com/tidalcycles/strudel/pull/478
- Fix array args by @felixroos in https://github.com/tidalcycles/strudel/pull/480
- docs: packages + offline by @felixroos in https://github.com/tidalcycles/strudel/pull/482
- Update mini-notation.mdx by @yaxu in https://github.com/tidalcycles/strudel/pull/365
- Revert “Another attempt at composable functions - WIP (#390)” by @felixroos in https://github.com/tidalcycles/strudel/pull/484
- fix app height by @felixroos in https://github.com/tidalcycles/strudel/pull/485
- add algolia creds + optimize sidebar for crawling by @felixroos in https://github.com/tidalcycles/strudel/pull/488
- refactor react package by @felixroos in https://github.com/tidalcycles/strudel/pull/490
- react style fixes by @felixroos in https://github.com/tidalcycles/strudel/pull/491
- implement cps in scheduler by @felixroos in https://github.com/tidalcycles/strudel/pull/493
- Add control aliases by @yaxu in https://github.com/tidalcycles/strudel/pull/497
- fix: nano-repl highlighting by @felixroos in https://github.com/tidalcycles/strudel/pull/501
- Reinstate slice and splice by @yaxu in https://github.com/tidalcycles/strudel/pull/500
- can now use : as a replacement for space in scales by @felixroos in https://github.com/tidalcycles/strudel/pull/502
- Support list syntax in mininotation by @yaxu in https://github.com/tidalcycles/strudel/pull/512
- update react to 18 by @felixroos in https://github.com/tidalcycles/strudel/pull/514
- add arrange function by @felixroos in https://github.com/tidalcycles/strudel/pull/508
- Update README.md by @bwagner in https://github.com/tidalcycles/strudel/pull/474
- add 2 illegible fonts by @felixroos in https://github.com/tidalcycles/strudel/pull/518
- registerSound API + improved sounds tab + regroup soundfonts by @felixroos in https://github.com/tidalcycles/strudel/pull/516
- fix: envelopes in chrome by @felixroos in https://github.com/tidalcycles/strudel/pull/521
- Update samples.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/524
- Update intro.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/525
- fix(footer): fix link to tidalcycles by @revolunet in https://github.com/tidalcycles/strudel/pull/529
- FIXES: alias pm for polymeter by @bwagner in https://github.com/tidalcycles/strudel/pull/527
- Maintain random seed state in parser, not globally by @ijc8 in https://github.com/tidalcycles/strudel/pull/531
- feat: add freq support to gm soundfonts by @felixroos in https://github.com/tidalcycles/strudel/pull/534
- Update lerna by @felixroos in https://github.com/tidalcycles/strudel/pull/535
New Contributors
- @revolunet made their first contribution in https://github.com/tidalcycles/strudel/pull/529
- @ijc8 made their first contribution in https://github.com/tidalcycles/strudel/pull/531
Full Changelog: https://github.com/tidalcycles/strudel/compare/v0.6.0…v0.7.0
Release Notes v0.6.0
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 https://github.com/tidalcycles/strudel/pull/308
- ICLC2023 paper WIP by @yaxu in https://github.com/tidalcycles/strudel/pull/306
- fix: copy share link to clipboard was broken for some browsers by @felixroos in https://github.com/tidalcycles/strudel/pull/311
- Jsdoc component by @felixroos in https://github.com/tidalcycles/strudel/pull/312
- object support for .scale by @felixroos in https://github.com/tidalcycles/strudel/pull/307
- Astro build by @felixroos in https://github.com/tidalcycles/strudel/pull/315
- Reference tab sort by @felixroos in https://github.com/tidalcycles/strudel/pull/318
- tutorial updates by @jarmitage in https://github.com/tidalcycles/strudel/pull/320
- support notes without octave by @felixroos in https://github.com/tidalcycles/strudel/pull/323
- mini repl improvements by @felixroos in https://github.com/tidalcycles/strudel/pull/324
- fix: workaround Object.assign globalThis by @felixroos in https://github.com/tidalcycles/strudel/pull/326
- add examples route by @felixroos in https://github.com/tidalcycles/strudel/pull/327
- add my-patterns by @felixroos in https://github.com/tidalcycles/strudel/pull/328
- my-patterns build + deploy by @felixroos in https://github.com/tidalcycles/strudel/pull/329
- my-patterns: fix paths + update readme by @felixroos in https://github.com/tidalcycles/strudel/pull/330
- improve displaying ‘s’ in pianoroll by @felixroos in https://github.com/tidalcycles/strudel/pull/331
- fix: can now multiply floats in mini notation by @felixroos in https://github.com/tidalcycles/strudel/pull/332
- Embed mode improvements by @felixroos in https://github.com/tidalcycles/strudel/pull/333
- testing + docs docs by @felixroos in https://github.com/tidalcycles/strudel/pull/334
- animate mvp by @felixroos in https://github.com/tidalcycles/strudel/pull/335
- Tidy parser, implement polymeters by @yaxu in https://github.com/tidalcycles/strudel/pull/336
- animation options by @felixroos in https://github.com/tidalcycles/strudel/pull/337
- move /my-patterns to /swatch by @yaxu in https://github.com/tidalcycles/strudel/pull/338
- more animate functions + mini repl fix by @felixroos in https://github.com/tidalcycles/strudel/pull/340
- Patternify euclid, fast, slow and polymeter step parameters in mininotation by @yaxu in https://github.com/tidalcycles/strudel/pull/341
- fixes #346 by @felixroos in https://github.com/tidalcycles/strudel/pull/347
- Fix prebake base path by @felixroos in https://github.com/tidalcycles/strudel/pull/345
- Fix Bjorklund by @yaxu in https://github.com/tidalcycles/strudel/pull/343
- docs: tidal comparison + add global fx + add missing sampler fx by @felixroos in https://github.com/tidalcycles/strudel/pull/356
- Fix .out(), renaming webaudio’s out() to webaudio() by @yaxu in https://github.com/tidalcycles/strudel/pull/361
- Support for multiple mininotation operators by @yaxu in https://github.com/tidalcycles/strudel/pull/350
- doc structuring by @felixroos in https://github.com/tidalcycles/strudel/pull/360
- add https to url by @urswilke in https://github.com/tidalcycles/strudel/pull/364
- document more functions + change arp join by @felixroos in https://github.com/tidalcycles/strudel/pull/369
- improve new draw logic by @felixroos in https://github.com/tidalcycles/strudel/pull/372
- Draw fixes by @felixroos in https://github.com/tidalcycles/strudel/pull/377
- update my-patterns instructions by @felixroos in https://github.com/tidalcycles/strudel/pull/384
- docs: use note instead of n to mitigate confusion by @felixroos in https://github.com/tidalcycles/strudel/pull/385
- add run + test + docs by @felixroos in https://github.com/tidalcycles/strudel/pull/386
- Rename a to angle by @felixroos in https://github.com/tidalcycles/strudel/pull/387
- document csound by @felixroos in https://github.com/tidalcycles/strudel/pull/391
- Notes are not essential :) by @yaxu in https://github.com/tidalcycles/strudel/pull/393
- add ribbon + test + docs by @felixroos in https://github.com/tidalcycles/strudel/pull/388
- Add tidal-drum-patterns to examples by @urswilke in https://github.com/tidalcycles/strudel/pull/379
- add pattern methods hurry, press and pressBy by @yaxu in https://github.com/tidalcycles/strudel/pull/397
- proper builds + use pnpm workspaces by @felixroos in https://github.com/tidalcycles/strudel/pull/396
- fix: minirepl styles by @felixroos in https://github.com/tidalcycles/strudel/pull/398
- can now await initAudio + initAudioOnFirstClick by @felixroos in https://github.com/tidalcycles/strudel/pull/399
- release webaudio by @felixroos in https://github.com/tidalcycles/strudel/pull/400
New Contributors
- @jarmitage made their first contribution in https://github.com/tidalcycles/strudel/pull/320
- @urswilke made their first contribution in https://github.com/tidalcycles/strudel/pull/364
Full Changelog: https://github.com/tidalcycles/strudel/compare/v0.5.0…v0.6.0
Release Notes v0.5.0
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 https://github.com/tidalcycles/strudel/pull/254
- fix tutorial bugs by @felixroos in https://github.com/tidalcycles/strudel/pull/263
- fix performance bottleneck by @felixroos in https://github.com/tidalcycles/strudel/pull/266
- Tidying up core by @yaxu in https://github.com/tidalcycles/strudel/pull/256
- tonal update with fixed memory leak by @felixroos in https://github.com/tidalcycles/strudel/pull/272
- add eslint by @felixroos in https://github.com/tidalcycles/strudel/pull/271
- release version bumps by @felixroos in https://github.com/tidalcycles/strudel/pull/273
- Support sending CRC16 bytes with serial messages by @yaxu in https://github.com/tidalcycles/strudel/pull/276
- add licenses / credits to all tunes + remove some by @felixroos in https://github.com/tidalcycles/strudel/pull/277
- add basic csound output by @felixroos in https://github.com/tidalcycles/strudel/pull/275
- do not recompile orc by @felixroos in https://github.com/tidalcycles/strudel/pull/278
- implement collect + arp function by @felixroos in https://github.com/tidalcycles/strudel/pull/281
- Switch ‘operators’ from .whatHow to .what.how by @yaxu in https://github.com/tidalcycles/strudel/pull/285
- Fancy hap show, include part in snapshots by @yaxu in https://github.com/tidalcycles/strudel/pull/291
- Reorganise pattern.mjs with a ‘toplevel first’ regime by @yaxu in https://github.com/tidalcycles/strudel/pull/286
- add prettier task by @felixroos in https://github.com/tidalcycles/strudel/pull/296
- Move stuff to new register function by @felixroos in https://github.com/tidalcycles/strudel/pull/295
- can now add bare numbers to numeral object props by @felixroos in https://github.com/tidalcycles/strudel/pull/287
- update vitest by @felixroos in https://github.com/tidalcycles/strudel/pull/297
- remove whitespace from highlighted region by @felixroos in https://github.com/tidalcycles/strudel/pull/298
- .defragmentHaps() for merging touching haps that share a whole and value by @yaxu in https://github.com/tidalcycles/strudel/pull/299
- fix whitespace trimming by @felixroos in https://github.com/tidalcycles/strudel/pull/300
- add freq support to sampler by @felixroos in https://github.com/tidalcycles/strudel/pull/301
- add lint + prettier check before test by @felixroos in https://github.com/tidalcycles/strudel/pull/305
- Updated csoundm to use the register facility . by @gogins in https://github.com/tidalcycles/strudel/pull/303
New Contributors
- @gogins made their first contribution in https://github.com/tidalcycles/strudel/pull/303
Full Changelog: https://github.com/tidalcycles/strudel/compare/v0.4.0…v0.5.0
Release Notes v0.4.0
What’s Changed
- new transpiler based on acorn by @felixroos in https://github.com/tidalcycles/strudel/pull/249
- Webaudio build by @felixroos in https://github.com/tidalcycles/strudel/pull/250
- Repl refactoring by @felixroos in https://github.com/tidalcycles/strudel/pull/255
Full Changelog: https://github.com/tidalcycles/strudel/compare/v0.3.0…v0.4.0
Release Notes v0.3.0
Package Versions
- @strudel.cycles/core@0.3.1
- @strudel.cycles/eval@0.3.1
- @strudel.cycles/midi@0.3.1
- @strudel.cycles/mini@0.3.1
- @strudel.cycles/react@0.3.1
- @strudel.cycles/soundfonts@0.3.1
- @strudel.cycles/tonal@0.3.1
- @strudel.cycles/tone@0.3.1
- @strudel.cycles/webaudio@0.3.1
- @strudel.cycles/webdirt@0.3.1
- @strudel.cycles/xen@0.3.1
What’s Changed
- Fix numbers in sampler by @felixroos in https://github.com/tidalcycles/strudel/pull/196
- document random functions by @felixroos in https://github.com/tidalcycles/strudel/pull/199
- add rollup-plugin-visualizer to build by @felixroos in https://github.com/tidalcycles/strudel/pull/200
- add vowel to .out by @felixroos in https://github.com/tidalcycles/strudel/pull/201
- Coarse crush shape by @felixroos in https://github.com/tidalcycles/strudel/pull/205
- Webaudio guide by @felixroos in https://github.com/tidalcycles/strudel/pull/207
- Even more docs by @felixroos in https://github.com/tidalcycles/strudel/pull/212
- Just another docs PR by @felixroos in https://github.com/tidalcycles/strudel/pull/215
- sampler features + fixes by @felixroos in https://github.com/tidalcycles/strudel/pull/217
- samples now have envelopes by @felixroos in https://github.com/tidalcycles/strudel/pull/218
- encapsulate webaudio output by @felixroos in https://github.com/tidalcycles/strudel/pull/219
- Fix squeeze join by @yaxu in https://github.com/tidalcycles/strudel/pull/220
- Feedback Delay by @felixroos in https://github.com/tidalcycles/strudel/pull/213
- support negative speeds by @felixroos in https://github.com/tidalcycles/strudel/pull/222
- focus tweak for squeezeJoin - another go at fixing #216 by @yaxu in https://github.com/tidalcycles/strudel/pull/221
- Reverb by @felixroos in https://github.com/tidalcycles/strudel/pull/224
- fix fastgap for events that go across cycle boundaries by @yaxu in https://github.com/tidalcycles/strudel/pull/225
- Core util tests by @mystery-house in https://github.com/tidalcycles/strudel/pull/226
- Refactor tunes away from tone by @felixroos in https://github.com/tidalcycles/strudel/pull/230
- Just another docs branch by @felixroos in https://github.com/tidalcycles/strudel/pull/228
- Patternify range by @yaxu in https://github.com/tidalcycles/strudel/pull/231
- Out by default by @felixroos in https://github.com/tidalcycles/strudel/pull/232
- Fix zero length queries WIP by @yaxu in https://github.com/tidalcycles/strudel/pull/234
- add vcsl sample library by @felixroos in https://github.com/tidalcycles/strudel/pull/235
- fx on stereo speakers by @felixroos in https://github.com/tidalcycles/strudel/pull/236
- Tidal drum machines by @felixroos in https://github.com/tidalcycles/strudel/pull/237
- Object arithmetic by @felixroos in https://github.com/tidalcycles/strudel/pull/238
- Load samples from url by @felixroos in https://github.com/tidalcycles/strudel/pull/239
- feat: support github: links by @felixroos in https://github.com/tidalcycles/strudel/pull/240
- in source example tests by @felixroos in https://github.com/tidalcycles/strudel/pull/242
- Readme + TLC by @felixroos in https://github.com/tidalcycles/strudel/pull/244
- patchday by @felixroos in https://github.com/tidalcycles/strudel/pull/246
- Some tunes by @felixroos in https://github.com/tidalcycles/strudel/pull/247
- snapshot tests on shared snippets by @felixroos in https://github.com/tidalcycles/strudel/pull/243
- General purpose scheduler by @felixroos in https://github.com/tidalcycles/strudel/pull/248
New Contributors
- @mystery-house made their first contribution in https://github.com/tidalcycles/strudel/pull/226
Full Changelog: https://github.com/tidalcycles/strudel/compare/v0.0.4…v0.3.0
Release Notes v0.0.4
What’s Changed
- Webaudio rewrite by @felixroos in https://github.com/tidalcycles/strudel/pull/138
- Fix createParam() by @yaxu in https://github.com/tidalcycles/strudel/pull/140
- Soundfont Support by @felixroos in https://github.com/tidalcycles/strudel/pull/139
- Serial twiddles by @yaxu in https://github.com/tidalcycles/strudel/pull/141
- Pianoroll Object Support by @felixroos in https://github.com/tidalcycles/strudel/pull/142
- flash effect on ctrl enter by @felixroos in https://github.com/tidalcycles/strudel/pull/144
- can now generate short link for sharing by @felixroos in https://github.com/tidalcycles/strudel/pull/146
- Sampler optimizations and more by @felixroos in https://github.com/tidalcycles/strudel/pull/148
- Final update to demo.pdf by @yaxu in https://github.com/tidalcycles/strudel/pull/151
- add webdirt drum samples to prebake for general availability by @larkob in https://github.com/tidalcycles/strudel/pull/150
- update to tutorial documentation by @larkob in https://github.com/tidalcycles/strudel/pull/162
- add chooseInWith/chooseCycles by @yaxu in https://github.com/tidalcycles/strudel/pull/166
- fix: jsdoc comments by @felixroos in https://github.com/tidalcycles/strudel/pull/169
- Pianoroll fixes by @felixroos in https://github.com/tidalcycles/strudel/pull/163
- Talk fixes by @felixroos in https://github.com/tidalcycles/strudel/pull/164
- Amend shapeshifter to allow use of dynamic import by @debrisapron in https://github.com/tidalcycles/strudel/pull/171
- add more shapeshifter flags by @felixroos in https://github.com/tidalcycles/strudel/pull/99
- Replace react-codemirror6 with @uiw/react-codemirror by @felixroos in https://github.com/tidalcycles/strudel/pull/173
- fix some annoying bugs by @felixroos in https://github.com/tidalcycles/strudel/pull/177
- incorporate elements of randomness to the mini notation by @bpow in https://github.com/tidalcycles/strudel/pull/165
- replace mocha with vitest by @felixroos in https://github.com/tidalcycles/strudel/pull/175
- scheduler improvements by @felixroos in https://github.com/tidalcycles/strudel/pull/181
- Fix codemirror bug by @felixroos in https://github.com/tidalcycles/strudel/pull/186
- wait for prebake to finish before evaluating by @felixroos in https://github.com/tidalcycles/strudel/pull/189
- fix regression: old way of setting frequencies was broken by @felixroos in https://github.com/tidalcycles/strudel/pull/190
- Soundfont file support by @felixroos in https://github.com/tidalcycles/strudel/pull/183
- change “stride”/“offset” of successive degradeBy/chooseIn by @bpow in https://github.com/tidalcycles/strudel/pull/185
New Contributors
- @larkob made their first contribution in https://github.com/tidalcycles/strudel/pull/150
- @debrisapron made their first contribution in https://github.com/tidalcycles/strudel/pull/171
- @bpow made their first contribution in https://github.com/tidalcycles/strudel/pull/165
Full Changelog: https://github.com/tidalcycles/strudel/compare/v0.0.3…v0.0.4
Release Notes v0.0.3
What’s Changed
- Add chunk, chunkBack and iterBack by @yaxu in https://github.com/tidalcycles/strudel/pull/25
- Update tutorial.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/37
- Update tutorial.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/38
- Compose by @felixroos in https://github.com/tidalcycles/strudel/pull/40
- Fix polymeter by @yaxu in https://github.com/tidalcycles/strudel/pull/44
- First run at squeezeBind, ref #32 by @yaxu in https://github.com/tidalcycles/strudel/pull/48
- Implement
chop()
by @yaxu in https://github.com/tidalcycles/strudel/pull/50 - OSC and SuperDirt support by @yaxu in https://github.com/tidalcycles/strudel/pull/27
- More functions by @yaxu in https://github.com/tidalcycles/strudel/pull/56
- More functions by @yaxu in https://github.com/tidalcycles/strudel/pull/61
- Separate out strudel.mjs, make index.mjs aggregate module by @yaxu in https://github.com/tidalcycles/strudel/pull/62
- Speech output by @felixroos in https://github.com/tidalcycles/strudel/pull/67
- use new fixed version of osc-js package by @felixroos in https://github.com/tidalcycles/strudel/pull/68
- First effort at rand() by @yaxu in https://github.com/tidalcycles/strudel/pull/69
- More randomness, fix
rand
, and addbrand
,irand
andchoose
by @yaxu in https://github.com/tidalcycles/strudel/pull/70 - webaudio package by @felixroos in https://github.com/tidalcycles/strudel/pull/26
- Port
perlin
noise,rangex
, andpalindrome
by @yaxu in https://github.com/tidalcycles/strudel/pull/73 - More random functions by @yaxu in https://github.com/tidalcycles/strudel/pull/74
- Try to fix appLeft / appRight by @yaxu in https://github.com/tidalcycles/strudel/pull/75
- Basic webserial support by @yaxu in https://github.com/tidalcycles/strudel/pull/80
- Webaudio in REPL by @felixroos in https://github.com/tidalcycles/strudel/pull/77
- add
striate()
by @yaxu in https://github.com/tidalcycles/strudel/pull/76 - Tidy up a couple of old files by @mindofmatthew in https://github.com/tidalcycles/strudel/pull/84
- Add pattern composers, implements #82 by @yaxu in https://github.com/tidalcycles/strudel/pull/83
- Fiddles with cat/stack by @yaxu in https://github.com/tidalcycles/strudel/pull/90
- Paper by @felixroos in https://github.com/tidalcycles/strudel/pull/98
- Change to Affero GPL by @yaxu in https://github.com/tidalcycles/strudel/pull/101
- Work on Codemirror 6 highlighting by @mindofmatthew in https://github.com/tidalcycles/strudel/pull/102
- Codemirror 6 by @felixroos in https://github.com/tidalcycles/strudel/pull/97
- Tune tests by @felixroos in https://github.com/tidalcycles/strudel/pull/104
- /embed package: web component for repl by @felixroos in https://github.com/tidalcycles/strudel/pull/106
- Reset, Restart and other composers by @felixroos in https://github.com/tidalcycles/strudel/pull/88
- Embed style by @felixroos in https://github.com/tidalcycles/strudel/pull/109
- In source doc by @yaxu in https://github.com/tidalcycles/strudel/pull/105
.brak()
,.inside()
and.outside()
by @yaxu in https://github.com/tidalcycles/strudel/pull/112- loopAt by @yaxu in https://github.com/tidalcycles/strudel/pull/114
- Osc timing improvements by @yaxu in https://github.com/tidalcycles/strudel/pull/113
- react package + vite build by @felixroos in https://github.com/tidalcycles/strudel/pull/116
- In source doc by @felixroos in https://github.com/tidalcycles/strudel/pull/117
- fix: #108 by @felixroos in https://github.com/tidalcycles/strudel/pull/123
- fix: #122 ctrl enter would add newline by @felixroos in https://github.com/tidalcycles/strudel/pull/124
- Webdirt by @felixroos in https://github.com/tidalcycles/strudel/pull/121
- Fix link to contributing to tutorial docs by @stephendwolff in https://github.com/tidalcycles/strudel/pull/129
- Pianoroll enhancements by @felixroos in https://github.com/tidalcycles/strudel/pull/131
- add createParam + createParams by @felixroos in https://github.com/tidalcycles/strudel/pull/110
- remove cycle + delta from onTrigger by @felixroos in https://github.com/tidalcycles/strudel/pull/135
- Scheduler improvements by @felixroos in https://github.com/tidalcycles/strudel/pull/134
- add onTrigger helper by @felixroos in https://github.com/tidalcycles/strudel/pull/136
New Contributors
- @bwagner made their first contribution in https://github.com/tidalcycles/strudel/pull/37
- @mindofmatthew made their first contribution in https://github.com/tidalcycles/strudel/pull/84
- @stephendwolff made their first contribution in https://github.com/tidalcycles/strudel/pull/129
Full Changelog: https://github.com/tidalcycles/strudel/compare/v0.0.2…v0.0.3
Release Notes v0.0.3
What’s Changed
- Add chunk, chunkBack and iterBack by @yaxu in https://github.com/tidalcycles/strudel/pull/25
- Update tutorial.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/37
- Update tutorial.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/38
- Compose by @felixroos in https://github.com/tidalcycles/strudel/pull/40
- Fix polymeter by @yaxu in https://github.com/tidalcycles/strudel/pull/44
- First run at squeezeBind, ref #32 by @yaxu in https://github.com/tidalcycles/strudel/pull/48
- Implement
chop()
by @yaxu in https://github.com/tidalcycles/strudel/pull/50 - OSC and SuperDirt support by @yaxu in https://github.com/tidalcycles/strudel/pull/27
- More functions by @yaxu in https://github.com/tidalcycles/strudel/pull/56
- More functions by @yaxu in https://github.com/tidalcycles/strudel/pull/61
- Separate out strudel.mjs, make index.mjs aggregate module by @yaxu in https://github.com/tidalcycles/strudel/pull/62
- Speech output by @felixroos in https://github.com/tidalcycles/strudel/pull/67
- use new fixed version of osc-js package by @felixroos in https://github.com/tidalcycles/strudel/pull/68
- First effort at rand() by @yaxu in https://github.com/tidalcycles/strudel/pull/69
- More randomness, fix
rand
, and addbrand
,irand
andchoose
by @yaxu in https://github.com/tidalcycles/strudel/pull/70 - webaudio package by @felixroos in https://github.com/tidalcycles/strudel/pull/26
- Port
perlin
noise,rangex
, andpalindrome
by @yaxu in https://github.com/tidalcycles/strudel/pull/73 - More random functions by @yaxu in https://github.com/tidalcycles/strudel/pull/74
- Try to fix appLeft / appRight by @yaxu in https://github.com/tidalcycles/strudel/pull/75
- Basic webserial support by @yaxu in https://github.com/tidalcycles/strudel/pull/80
- Webaudio in REPL by @felixroos in https://github.com/tidalcycles/strudel/pull/77
- add
striate()
by @yaxu in https://github.com/tidalcycles/strudel/pull/76 - Tidy up a couple of old files by @mindofmatthew in https://github.com/tidalcycles/strudel/pull/84
- Add pattern composers, implements #82 by @yaxu in https://github.com/tidalcycles/strudel/pull/83
- Fiddles with cat/stack by @yaxu in https://github.com/tidalcycles/strudel/pull/90
- Paper by @felixroos in https://github.com/tidalcycles/strudel/pull/98
- Change to Affero GPL by @yaxu in https://github.com/tidalcycles/strudel/pull/101
- Work on Codemirror 6 highlighting by @mindofmatthew in https://github.com/tidalcycles/strudel/pull/102
- Codemirror 6 by @felixroos in https://github.com/tidalcycles/strudel/pull/97
- Tune tests by @felixroos in https://github.com/tidalcycles/strudel/pull/104
- /embed package: web component for repl by @felixroos in https://github.com/tidalcycles/strudel/pull/106
- Reset, Restart and other composers by @felixroos in https://github.com/tidalcycles/strudel/pull/88
- Embed style by @felixroos in https://github.com/tidalcycles/strudel/pull/109
- In source doc by @yaxu in https://github.com/tidalcycles/strudel/pull/105
.brak()
,.inside()
and.outside()
by @yaxu in https://github.com/tidalcycles/strudel/pull/112- loopAt by @yaxu in https://github.com/tidalcycles/strudel/pull/114
- Osc timing improvements by @yaxu in https://github.com/tidalcycles/strudel/pull/113
New Contributors
- @bwagner made their first contribution in https://github.com/tidalcycles/strudel/pull/37
- @mindofmatthew made their first contribution in https://github.com/tidalcycles/strudel/pull/84
Full Changelog: https://github.com/tidalcycles/strudel/compare/v0.0.2…@strudel.cycles/core@0.1.0
Release Notes v0.0.2
What’s Changed
- Most work done as commits to main
- repl + reify functions by @felixroos in https://github.com/tidalcycles/strudel/pull/2
- Fix path by @yaxu in https://github.com/tidalcycles/strudel/pull/3
- update readme for local dev by @kindohm in https://github.com/tidalcycles/strudel/pull/4
- Patternify all the things by @yaxu in https://github.com/tidalcycles/strudel/pull/5
- krill parser + improved repl by @felixroos in https://github.com/tidalcycles/strudel/pull/6
- fixed editor crash by @felixroos in https://github.com/tidalcycles/strudel/pull/7
- timeCat by @yaxu in https://github.com/tidalcycles/strudel/pull/8
- Bugfix every, and create more top level functions by @yaxu in https://github.com/tidalcycles/strudel/pull/9
- Failing test for
when
WIP by @yaxu in https://github.com/tidalcycles/strudel/pull/10 - Added mask() and struct() by @yaxu in https://github.com/tidalcycles/strudel/pull/11
- Add continuous signals (sine, cosine, saw, etc) by @yaxu in https://github.com/tidalcycles/strudel/pull/13
- add apply and layer, and missing div/mul methods by @yaxu in https://github.com/tidalcycles/strudel/pull/15
- higher latencyHint by @felixroos in https://github.com/tidalcycles/strudel/pull/16
- test: 📦 Add missing dependency and a CI check, to prevent oversights ;p by @puria in https://github.com/tidalcycles/strudel/pull/17
- fix: 💄 Enhance visualisation of the Tutorial on mobile by @puria in https://github.com/tidalcycles/strudel/pull/19
- Stateful queries and events (WIP) by @yaxu in https://github.com/tidalcycles/strudel/pull/14
- Fix resolveState by @yaxu in https://github.com/tidalcycles/strudel/pull/22
- added _asNumber + interpret numbers as midi by @felixroos in https://github.com/tidalcycles/strudel/pull/21
- Update package.json by @ChiakiUehira in https://github.com/tidalcycles/strudel/pull/23
- packaging by @felixroos in https://github.com/tidalcycles/strudel/pull/24
New Contributors
- @felixroos made their first contribution in https://github.com/tidalcycles/strudel/pull/2
- @kindohm made their first contribution in https://github.com/tidalcycles/strudel/pull/4
- @puria made their first contribution in https://github.com/tidalcycles/strudel/pull/17
- @ChiakiUehira made their first contribution in https://github.com/tidalcycles/strudel/pull/23
Full Changelog: https://github.com/tidalcycles/strudel/commits/2a0d8c3f77ff7b34e82602e2d02400707f367316