Compare commits

...

5501 Commits

Author SHA1 Message Date
Switch Angel AKA Jade Rose bf21c4cf02 Merge branch 'main' into glossing/basic-node-pool 2026-01-10 22:58:28 +01:00
Jade (Rose) Rowland 741ff3f3f0 fix import 2026-01-10 16:55:53 -05:00
Jade (Rose) Rowland 4476921069 use releasenode 2026-01-10 16:46:11 -05:00
Aria 8c5e4a5780 Merge pull request 'Allow top level distortions for the purpose of FX' (#1884) from glossing/naked-distorts into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1884
2026-01-10 20:52:39 +01:00
Aria 34ae1bb305 Merge branch 'main' into glossing/naked-distorts 2026-01-10 20:38:34 +01:00
Aria 0cf11adc2c Allow naked distortions for the purpose of FX 2026-01-10 13:07:54 -06:00
Jade (Rose) Rowland 7a5020aa71 format 2026-01-10 01:42:43 -05:00
Jade (Rose) Rowland a205f7d873 rm dead code 2026-01-10 01:42:06 -05:00
Jade (Rose) Rowland 0e9c50bf0a fix import 2026-01-10 01:39:39 -05:00
Jade (Rose) Rowland e837c516c5 merge main 2026-01-10 01:37:14 -05:00
Jade (Rose) Rowland 3b2e9fa0b4 wip 2026-01-10 01:22:50 -05:00
Jade (Rose) Rowland 6a47139e0d wip 2026-01-10 01:07:09 -05:00
Aria f7f8c56c0a Merge pull request 'Bake in scaling by freq for FM with a gain node' (#1878) from glossing/fm-modulation into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1878
2026-01-09 03:43:35 +01:00
Aria c7e88e1ff2 Merge branch 'main' into glossing/fm-modulation 2026-01-09 03:31:26 +01:00
Aria f6a43f1b10 Make the scaling by freq in FM a separate node so that modulators behave like the fm control 2026-01-08 20:28:53 -06:00
Aria a3b183d304 Merge pull request 'Bug fix: Properly handle subcontrols' (#1877) from glossing/subcontrols into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1877
2026-01-09 02:53:37 +01:00
Aria f7175c0505 Properly handle subcontrols 2026-01-08 19:40:50 -06:00
Aria e26040d154 Merge pull request 'Feat: Add ability to turn mini parsing off with mini-off decorator' (#1786) from glossing/disable-mini into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1786
2026-01-07 20:06:17 +01:00
Aria 17a1b75e5b Merge branch 'main' into glossing/disable-mini 2026-01-07 19:22:35 +01:00
Aria 7df9688bb9 Merge pull request 'Bug Fix: Update loopStart/End to not be offset' (#1826) from glossing/sample-looping-bugfix into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1826
2026-01-07 19:22:22 +01:00
Aria d557bb59f0 Merge branch 'main' into glossing/disable-mini 2026-01-06 21:40:05 +01:00
Aria 679e81eb0f Merge branch 'main' into glossing/sample-looping-bugfix 2026-01-06 21:39:52 +01:00
yaxu 37dd834398 Update README.md 2026-01-06 16:33:06 +01:00
yaxu 959e8ac7bc Update README.md 2026-01-06 16:31:51 +01:00
Aria 16524ca805 Merge pull request 'Update modulator docstrings and allow ids to be patterns' (#1874) from glossing/pattern-ids-for-modulators into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1874
2026-01-06 06:35:47 +01:00
Aria b4b0194455 Update docstrings and allow modulator ids to be patterns 2026-01-05 23:17:40 -06:00
Alex McLean fd472a64d9 Merge pull request 'Fix doc link in @strudel/osc README.md' (#1872) from forrcaho/strudel:main into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1872
2026-01-04 17:14:10 +01:00
Forrest Cahoon 58094973b0 Fix doc link in @strudel/osc README.md 2026-01-04 09:39:17 -06:00
Aria db49b37780 Merge pull request 'Make stretch modulatable' (#1870) from glossing/stretch-node into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1870
2026-01-04 02:01:05 +01:00
Aria bf243c04b9 Make stretch modulatable 2026-01-03 18:27:11 -06:00
Aria bc05cffdbc Merge pull request 'Make pan modulatable' (#1865) from glossing/pan-fx into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1865
2026-01-02 18:44:52 +01:00
Aria 7b1e02e8cf Make pan modulatable 2026-01-02 11:43:27 -06:00
Alex McLean 257f09da4f Merge pull request 'Fix transpilation example to have same mini-notation' (#1850) from JesCoding/strudel:jescoding-patch-1 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1850
2026-01-01 21:42:19 +01:00
Alex McLean ecd58fa501 Merge pull request 'fix: missing punctuation' (#1860) from eddyflux/strudel:fix-missing-punctuation into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1860
2026-01-01 21:39:03 +01:00
Aria c4ece4932e Merge pull request 'Fix formatting of docstring' (#1864) from glossing/fx-docstring into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1864
2026-01-01 20:20:33 +01:00
Aria 5c9855bf12 Merge branch 'main' into glossing/fx-docstring 2026-01-01 20:08:54 +01:00
Aria e54b9c3a32 Fix formatting of docstring 2026-01-01 13:07:38 -06:00
Aria 6afe0dc714 Merge pull request 'Feat: FX Chains' (#1861) from glossing/multifx-new into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1861
2026-01-01 19:52:14 +01:00
Aria ebaf7624f9 Fix lfos for vowels, phasers; fix ir index; more informative error message 2026-01-01 12:02:54 -06:00
Aria 882bcc513f Typos and some examples 2025-12-31 15:17:06 -06:00
Aria aec33710b7 Working version 2025-12-31 14:58:31 -06:00
eddyflux d41ebf190b fix: missing punctuation 2025-12-30 00:22:51 +01:00
Aria 7953fa61e4 Merge pull request 'Bugfix: Fix modulator clamping when min/max not specified' (#1859) from glossing/clamp-bugfix into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1859
2025-12-29 21:59:10 +01:00
Aria 6051b922c0 Fix clamping when min/max not specified 2025-12-29 14:45:49 -06:00
Aria 367e07da0c Merge pull request 'Feature: LFOs and Envelopes' (#1507) from glossing/strudel:glossing/lfo-anything into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1507
2025-12-29 20:54:10 +01:00
Aria 0edede106a Fixes for zzfx and soundfonts 2025-12-29 13:28:26 -06:00
Aria b6264a1513 Merge branch 'main' into glossing/lfo-anything 2025-12-29 20:00:29 +01:00
Aria 680b7d78ec Lots of examples; use id instead of index; waveshaper clamping; one mode for synth 2025-12-29 12:59:48 -06:00
Aria e79b4b8ccb Refactor modulators 2025-12-29 10:41:20 -06:00
Aria 98367868ac Handle min/max when target is LFO; fix vib and tremolo 2025-12-29 10:22:48 -06:00
froos 616bc64e70 Merge pull request 'Fix AudioContext change detection. Use AudioNode.context' (#1858) from jeromew/strudel:fix-scope into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1858
2025-12-29 16:07:16 +01:00
jeromew c0f4f47150 Fix AudioContext change detection. Use AudioNode.context 2025-12-29 14:04:40 +00:00
Aria b4496fcc24 More control mapping tweaks 2025-12-28 21:43:08 -05:00
Aria 48f6a41683 Extend to FM, vibrato, etc 2025-12-28 20:13:15 -05:00
froos 7bce739068 Merge pull request 'Say that @license should use SPDX identifier' (#1817) from Wuzzy/strudel:clarify_at_license into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1817
2025-12-28 22:58:37 +01:00
froos 06f9c2dfb5 Merge pull request 'Expose Vim object in order to create custom keybindings' (#1816) from JohnBjrk/strudel:expose-vim-for-custom-keybindings into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1816
2025-12-28 22:56:05 +01:00
Felix Roos 30fe5b47e3 hotfix: fix scope and friends #1847 2025-12-28 22:42:42 +01:00
Alex McLean 1823993e7c Merge branch 'main' into jescoding-patch-1 2025-12-28 17:53:50 +01:00
froos 1935195e9a Merge pull request 'dough repl fixes' (#1855) from vanillarepl into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1855
2025-12-28 14:20:02 +01:00
Felix Roos 300a1bbfd5 fix: actually load code from url 2025-12-28 14:07:27 +01:00
froos 2f43dcab0c Merge pull request 'add basic dough repl' (#1749) from vanillarepl into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1749
2025-12-28 13:40:28 +01:00
Felix Roos 125eece223 fix: import 2025-12-28 13:20:22 +01:00
Felix Roos 53e49952d8 persist code in hash 2025-12-28 13:10:57 +01:00
Felix Roos e286ab2830 no default samples for now + add doughsamples to scope 2025-12-28 13:10:37 +01:00
Felix Roos e4e2d60b28 Merge branch 'main' into vanillarepl 2025-12-28 12:58:45 +01:00
Aria 99bec835f8 Merge branch 'main' into glossing/lfo-anything 2025-12-27 20:54:39 -05:00
JesCoding d349d2a0cd Fix transpilation example to have same mini-notation
This was introduced in https://codeberg.org/uzu/strudel/commit/66f8ca72c1b364f72f25b8cff041cac13b380432
2025-12-24 10:38:21 +01:00
Wuzzy c7a2c2bb9c Say that @license should use SPDX identifier 2025-12-21 10:47:01 +01:00
froos 5a51b4ec71 Merge pull request 'Document "-" in mini-notation' (#1818) from Wuzzy/strudel:dashtilde into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1818
2025-12-20 22:27:50 +01:00
froos 3922defab9 Merge pull request 'simplify envValAtTime and remove asymmetric behavior (fix #1653)' (#1815) from pulu/strudel:remove-env-asymmetry into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1815
2025-12-20 22:20:26 +01:00
John Björk a9752fb2a4 Exposing Vim from codemirror-vim
Docs for adding keybindings

Only expose Vim from keybindings
2025-12-20 17:20:38 +01:00
froos 0a2f2eaa3d Merge pull request 'fix: visual block selection mode for vim bindings' (#1839) from Dsm0/strudel:visual-block-mode-fix into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1839
2025-12-19 08:11:49 +01:00
Dsm0 0de212c12f fix visual block mode 2025-12-18 22:55:44 -08:00
froos b376b2616a Merge pull request '[perf] Add audiograph await debugAudiograph() feature' (#1763) from jeromew/strudel:audiograph into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1763
2025-12-19 01:03:52 +01:00
froos 56ecb006fa Merge pull request 'Feature: non-realtime exporting' (#1674) from BANanaD3V/strudel:feat/non-realtime-exporting into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1674
2025-12-19 00:45:39 +01:00
Aria 2748189f18 Merge pull request 'Fix: wrong warning in build environments' (#1835) from jeromew/strudel:onenced-warning into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1835
Reviewed-by: Aria <glossing@noreply.codeberg.org>
2025-12-14 19:33:36 +01:00
Alex McLean 63d254daf4 Merge pull request 'delta -> tight/tightx/loose refinements' (#1832) from delta into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1832
2025-12-14 15:09:10 +01:00
jeromew 34991e9602 Fix: wrong warning in build environments 2025-12-14 11:27:41 +00:00
Aria 8df5c80d82 Merge pull request 'Improved randomness' (#1505) from glossing/strudel:glossing/random into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1505
2025-12-14 01:07:35 +01:00
Aria e0344dbd67 Simple seeding for this first iteration 2025-12-13 17:49:19 -06:00
Aria 931d684b19 Merge branch 'main' into glossing/random 2025-12-13 17:28:44 -06:00
Aria 4a7344595d Make legacy the default 2025-12-13 17:28:42 -06:00
Aria 18b3c66eb8 Clean up error messages 2025-12-13 17:15:06 -06:00
Aria 63de46ae96 Update docstrings 2025-12-13 16:44:36 -06:00
Aria c598059dc7 Clean up old code 2025-12-13 16:26:50 -06:00
Aria dec037bed5 Bus fix 2025-12-13 16:23:47 -06:00
Aria 29f7f5c1f8 Allow lfos to modulate other lfos without clamping 2025-12-13 16:07:19 -06:00
Aria bae5571df0 Cleanup 2025-12-13 15:32:27 -06:00
Aria 4b08dd8447 Unify lfo functions 2025-12-13 15:20:51 -06:00
Aria 11e3da0552 Parity with other LFO (sync and dcoffset) 2025-12-13 15:08:48 -06:00
Aria ef2ee0969a Restore old lfo to avoid unifying right now 2025-12-13 14:59:14 -06:00
Aria 12f9af227c Merge branch 'main' into glossing/lfo-upgrades 2025-12-13 14:54:17 -06:00
Aria dc5f6827f9 Change names, cleanup 2025-12-13 14:50:27 -06:00
Aria 8baecf78b9 Add note 2025-12-13 11:37:37 -06:00
alex 8eeebf1e4f try renaming to per / perx / cyclesPer 2025-12-13 16:30:51 +00:00
alex c7789a09e3 Merge branch 'delta' of ssh://codeberg.org/uzu/strudel into delta 2025-12-12 16:50:48 +00:00
alex a53385aa11 delint 2025-12-12 16:50:24 +00:00
Alex McLean 0a5fb8ca1d Merge branch 'main' into delta 2025-12-12 17:49:14 +01:00
alex 99e4999e6a snapshot 2025-12-12 15:46:19 +00:00
alex cd071cb7c0 separate out signal tests, add tests for tight, tightx, loose 2025-12-12 15:46:04 +00:00
alex 8e1fba0436 rename delta to loose, add inverse tight, and exponential tightx 2025-12-12 15:45:36 +00:00
Felix Roos f4df4f679f Merge branch 'main' of https://codeberg.org/uzu/strudel 2025-12-12 15:12:45 +01:00
Alex McLean 1d2a3bdb9c Merge pull request 'Add delta signal for representing the duration of events in patterns that are combined with it' (#1831) from delta into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1831
2025-12-12 10:28:25 +01:00
alex c6e0f0533e add delta 2025-12-11 23:32:10 +00:00
Aria 415b6d5f1d Fix name collision and move modulators into controls to avoid circular import test failure 2025-12-11 15:48:45 -06:00
Aria 4169b764c3 Simpler control handling 2025-12-11 15:28:48 -06:00
Aria e7d1613bfb Broken tests, but otherwise working 2025-12-11 14:42:16 -06:00
Aria 45aa1f5384 Control cleanup 2025-12-11 12:52:40 -06:00
Aria 3a17aeabf3 Some cleanup 2025-12-11 11:41:40 -06:00
Aria 2aeba2e53f Working version of bus 2025-12-11 11:37:20 -06:00
Alex McLean 3608f1ca25 Merge pull request 'Feature: stateful timeline function for jumping between timelines' (#1669) from alternative-timeline into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1669
2025-12-11 18:00:48 +01:00
alex 37990b459f bugfix and tweak doc 2025-12-11 16:51:25 +00:00
alex a34e58aa09 Merge branch 'alternative-timeline' of ssh://codeberg.org/uzu/strudel into alternative-timeline 2025-12-11 16:39:22 +00:00
alex 8cbe4b945c Respond to glossing's review 2025-12-11 16:39:08 +00:00
Alex McLean 6f9a1470e7 Merge branch 'main' into alternative-timeline 2025-12-11 17:19:03 +01:00
Alex McLean 8a3719752f Merge pull request 'Updates relating to LLM, github, etc' (#1830) from llm-guidance into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1830
2025-12-11 16:37:57 +01:00
alex 96835be056 tweaks 2025-12-11 15:07:57 +00:00
alex 960f1de9d2 tweaks 2025-12-11 12:16:54 +00:00
alex 12884cba3a Updates relating to LLM, github, etc 2025-12-11 12:09:26 +00:00
Alex McLean 20c513d649 Merge pull request 'fix .as so it doesn't set undefined values' (#1827) from fix-as into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1827
2025-12-10 15:32:43 +01:00
alex e89414e400 fix .as so it doesn't set undefined values 2025-12-10 09:19:12 +00:00
Aria a79491dd16 Update loopbegin/end to not be offset 2025-12-08 16:32:54 -06:00
Aria 765de9daf3 Merge pull request '[perf] propagate onceEnded and releaseAudioNode' (#1809) from jeromew/strudel:fix-perf12 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1809
Reviewed-by: Aria <glossing@noreply.codeberg.org>
2025-12-08 19:27:30 +01:00
jeromew 132dea8478 Merge branch 'main' into fix-perf12 2025-12-08 18:54:51 +01:00
jeromew b889d19493 Merge branch 'fix-perf12' of https://codeberg.org/jeromew/strudel into fix-perf12 2025-12-08 17:32:47 +00:00
jeromew 71d36b79ed Improve getOscillator/noiseMix release 2025-12-08 17:31:34 +00:00
Aria d7bf5db8be Merge pull request 'Feat: Add channel support to midi in' (#1775) from glossing/midin-channels into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1775
2025-12-07 21:51:39 +01:00
Aria 48231ea12a Merge branch 'main' into glossing/midin-channels 2025-12-07 21:23:57 +01:00
Aria c8a442234e Merge pull request 'Feat: Transient shaper' (#1777) from glossing/transient-processor into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1777
2025-12-07 21:23:42 +01:00
Aria efda32eedb Merge branch 'main' into glossing/transient-processor 2025-12-07 20:29:50 +01:00
Aria 95d04d1149 Merge branch 'main' into glossing/midin-channels 2025-12-07 20:29:39 +01:00
Aria 358b1e3f56 Make sure processor turns off; fix array sizes for JIT 2025-12-07 13:28:57 -06:00
Aria fe7e8f7add Clearer docstring 2025-12-07 13:21:06 -06:00
Aria 45d329d3d1 Merge pull request 'Add vel as a synonym for velocity & update a few docstrings' (#1781) from glossing/controls-various into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1781
2025-12-07 19:15:42 +01:00
Aria 5e99393f5a Merge branch 'main' into glossing/controls-various 2025-12-07 18:54:18 +01:00
Aria 9650c8eb50 Merge pull request '[perf] fix phaser leak of unused biquads' (#1800) from jeromew/strudel:fix-perf10 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1800
Reviewed-by: Aria <glossing@noreply.codeberg.org>
2025-12-07 18:53:03 +01:00
Aria fab8d2193d Merge branch 'main' into glossing/midin-channels 2025-12-07 18:45:16 +01:00
Aria 150835aa4d Merge branch 'main' into glossing/transient-processor 2025-12-07 18:45:11 +01:00
Aria 76237016a3 Merge branch 'main' into glossing/controls-various 2025-12-07 18:45:02 +01:00
Aria 6f4d8ebacf Merge branch 'main' into fix-perf10 2025-12-07 18:44:47 +01:00
Aria 4374bdf1bd Merge branch 'main' into fix-perf12 2025-12-07 18:44:38 +01:00
Aria 3cecf4a50e Merge pull request 'Bug fix: Remove failing tests due to shabda removal' (#1820) from glossing/shabda-test-fix into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1820
2025-12-07 18:42:49 +01:00
Aria 16b5faf333 Removing failing tests due to shabda removal 2025-12-07 11:23:55 -06:00
Aria c4826b7dfb Merge branch 'main' into glossing/midin-channels 2025-12-07 18:11:59 +01:00
Aria bd61c1dc7e Merge branch 'main' into glossing/transient-processor 2025-12-07 18:11:50 +01:00
Aria ceb3aa797d Merge branch 'main' into glossing/controls-various 2025-12-07 18:11:39 +01:00
Aria 9b3277da1c Merge branch 'main' into fix-perf10 2025-12-07 18:09:00 +01:00
Wuzzy 53c101005c Document "-" in mini-notation 2025-12-07 00:12:40 +01:00
Aria 82ca77be9d Working version 2025-12-06 12:02:11 -06:00
miranda 173e359a65 simplify envValAtTime and remove asymmetric behavior (fix #1653) 2025-12-06 17:46:16 +02:00
Aria ad43259353 Switch to omod 2025-12-05 13:39:52 -06:00
Aria 32924b3fcf Merge branch 'main' into glossing/lfo-anything 2025-12-05 10:47:17 -06:00
Aria 4c99f4866b Use setvalueattime to pin values and prevent bleed 2025-12-04 22:50:28 -06:00
Aria d50af71ba1 Merge branch 'main' into glossing/basic-node-pool 2025-12-04 14:20:41 -06:00
Aria 0664f90178 Remove old comment 2025-12-04 13:07:13 -06:00
Aria 4321814d36 Working version for compressor, filter, supersaw, wavetable 2025-12-04 13:04:33 -06:00
Aria 6610713018 Working version of supersaw, almost on wavetable 2025-12-04 12:40:28 -06:00
Aria 600ab0a83e WIP with compressors, filters, heavy worklets 2025-12-04 12:17:07 -06:00
jeromew 1225d04437 codeformat 2025-12-04 15:29:21 +00:00
jeromew f6f507dd29 propagate releaseAudioNode in packages 2025-12-04 15:26:59 +00:00
jeromew c7586e96ff Add comment on end worklet param 2025-12-04 13:20:17 +00:00
jeromew 46291bf85c Difuse the onceEnded mechanism 2025-12-04 13:17:20 +00:00
jeromew d7e240e2dc Add PeriodicWave & VowelNode support 2025-12-04 12:56:54 +00:00
jeromew 0b711e879c Improve naming & backward compat 2025-12-04 08:23:36 +00:00
Aria e01621d0cc Merge pull request 'Feature: Eight FMs' (#1628) from glossing/strudel:glossing/fmsss into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1628
2025-12-03 18:27:27 +01:00
Aria 196f70ab6b Formatting 2025-12-03 11:13:21 -06:00
Aria 1d4f2b81d8 Switch back to explicit exports and use new release mechanism 2025-12-03 11:12:30 -06:00
Aria d28c8dac8e Merge branch 'main' into glossing/fmsss 2025-12-03 10:42:35 -06:00
Aria eb18648a2a Merge pull request '[perf] release unused AudioBufferSourceNode + releaseAudioNode' (#1805) from jeromew/strudel:fix-perf11 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1805
Reviewed-by: Aria <glossing@noreply.codeberg.org>
2025-12-03 17:35:03 +01:00
jeromew 25c20296a1 Tone down log message when a pure orphan node is found 2025-12-02 13:58:09 +00:00
jeromew 2db30a710b Fix codeformat 2025-12-02 13:54:27 +00:00
jeromew 71d1fe99e4 Fix special case for FeedbackDelayNode 2025-12-02 13:51:16 +00:00
jeromew 0ec9826de5 onceEnded mechanism to clean audioNode.onended callbacks 2025-12-02 09:29:50 +00:00
jeromew af7855402f Accept non-instanciated nodes for better developer experience 2025-12-01 20:43:55 +00:00
jeromew 68b1cb87ca [perf] release unused AudioBufferSourceNode + releaseAudioNode 2025-12-01 15:29:19 +00:00
jeromew 05ed16e158 Add stop-leak detection. Stoppable nodes that are not stopped 2025-11-30 17:50:56 +00:00
jeromew 24b69ad1bc [perf] Add audiograph await debugAudiograph(); tool 2025-11-30 14:09:03 +00:00
Nikita 5bddb6f48d Move export UI to the panel 2025-11-30 10:13:16 +03:00
Nikita c5250d7794 Add info comment about ascending time order 2025-11-30 10:12:55 +03:00
Nikita 7d890156f4 Fix haps not being sorted by time 2025-11-30 10:12:55 +03:00
Nikita 8f9967c76d Format 2025-11-30 10:12:55 +03:00
Nikita 91ebdd5ea6 Better progress bar UI 2025-11-30 10:12:55 +03:00
Nikita fc74dcdb1a More bug fixes 2025-11-30 10:12:51 +03:00
jeromew b65cc2128f [perf] fix phaser leak of unused biquads 2025-11-29 14:47:03 +00:00
froos 7a3e0fd3fe Merge pull request 'added export to getSuperdoughAudioController() so that its possible to route superdough audio through other webaudio applications.' (#1796) from ndr0n/strudel:exportSuperdoughAudioController into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1796
2025-11-29 01:00:41 +01:00
Alex McLean 4061dd4cf8 Merge pull request 'add revv() for reversing whole patterns' (#1791) from revv into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1791
2025-11-28 23:26:19 +01:00
alex b523205590 Merge branch 'revv' of ssh://codeberg.org/uzu/strudel into revv 2025-11-28 22:03:32 +00:00
alex 956598da18 snapshot 2025-11-28 22:03:21 +00:00
Alex McLean e011f3b982 Merge branch 'main' into revv 2025-11-28 22:37:03 +01:00
alex cb591815ed fix copy paste errors 2025-11-28 21:35:35 +00:00
Alex McLean 6a4fd27f5b Merge branch 'main' into exportSuperdoughAudioController 2025-11-28 22:32:10 +01:00
Aria d30df8d4cf Merge pull request '[perf] Disconnect lfos for phaser and filters' (#1787) from glossing/perf-lfos into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1787
2025-11-28 20:19:14 +01:00
Aria e10cd22c26 Merge branch 'main' into glossing/perf-lfos 2025-11-28 19:59:51 +01:00
Aria 18dc4944bf Typos and cleanup 2025-11-28 12:36:23 -06:00
Felix Roos d84db1e663 hotfix: auto deploy to warm.strudel.cc when main changes 2025-11-28 10:02:57 +01:00
ndr0n a6008e2700 added export to getSuperdoughAudioController() so that its possible to route superdough audio on external application integrations. 2025-11-28 04:03:48 +00:00
froos 2f8cabbb6b Merge pull request 'fix: return silence when no pattern is returned' (#1795) from fix-empty-pattern into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1795
2025-11-27 23:08:50 +01:00
Felix Roos ec26392509 fix: return silence when no pattern is returned 2025-11-27 22:53:38 +01:00
froos 30cd486f37 Merge pull request 'fix(tool/dbpatch): add missing package name' (#1765) from peterpf/strudel:bugfix/add-package-name-for-dbpatch into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1765
2025-11-27 22:47:01 +01:00
froos cde0520ed9 Merge pull request 'add CHANGELOG.md + basic script to generate' (#1794) from changelog into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1794
2025-11-27 22:38:04 +01:00
Felix Roos 405338e4f0 add CHANGELOG.md + basic script to generate 2025-11-27 22:25:32 +01:00
froos afbcaa54d0 Merge pull request '[perf] in noise, let noiseMix do the disconnect when it exists' (#1783) from jeromew/strudel:fix-perf9 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1783
2025-11-27 22:03:51 +01:00
froos 6a1c6081e0 Merge pull request 'Bug Fix: Retries for sounds tab' (#1754) from glossing/sounds-tab-preview into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1754
2025-11-27 22:01:00 +01:00
Felix Roos 3c4ba667c8 cleanup 2025-11-27 21:29:37 +01:00
Felix Roos 7fcb5262b8 Merge remote-tracking branch 'origin/main' into glossing/sounds-tab-preview 2025-11-27 21:14:22 +01:00
Felix Roos b824c45ba4 Merge remote-tracking branch 'origin/main' into glossing/sounds-tab-preview 2025-11-27 21:11:50 +01:00
froos e47e6c87fc Merge pull request '[hydra] return the hydra object when await initHydra(..) is called' (#1784) from jeromew/strudel:return-hydra into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1784
2025-11-27 20:36:44 +01:00
froos 69b5ba89cb Merge pull request 'Use errorLogger for query and tonal errors' (#1782) from glossing/query-error into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1782
2025-11-27 20:36:12 +01:00
froos 33a51761ce Merge pull request '[perf] level 5 connect-leak on vowel' (#1779) from jeromew/strudel:fix-perf7 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1779
2025-11-27 20:27:09 +01:00
Alex McLean f4b1baac87 add revv() for reversing whole patterns 2025-11-27 15:34:18 +00:00
Peter Egger d217119391 fix(tool/dbpatch): add missing package name 2025-11-26 19:48:48 +01:00
Switch Angel AKA Jade Rose d5d6284a90 Merge pull request 'feat: add prebake script import button for loading .strudel files' (#1774) from pre_eval into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1774
2025-11-26 08:23:37 +01:00
Switch Angel AKA Jade Rose fb790de26c Merge branch 'main' into pre_eval 2025-11-26 08:05:05 +01:00
Aria ec6f6a1f1c Merge pull request 'Fix Sampler port trampling' (#1717) from Dayglo/strudel:fix-port-trampling into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1717
Reviewed-by: Aria <glossing@noreply.codeberg.org>
2025-11-26 07:39:27 +01:00
W-A-James a126bc9b86 Fix lint 2025-11-25 22:20:55 -05:00
Aria a5c7fcc136 Add back options code (will resolve in another PR) 2025-11-25 22:16:23 -05:00
Aria d70b758065 Remove base url from sample server and properly handle url schemes 2025-11-25 22:16:11 -05:00
W-A-James 9fdba6374c remove extraneous eslint ignore directive 2025-11-25 22:14:19 -05:00
W-A-James af90baea33 Fix trampling of port env variable 2025-11-25 22:14:15 -05:00
Aria 692359309f Typo and formatting 2025-11-25 17:31:11 -06:00
Aria d65b908bda Disconnect lfos for phaser and filters 2025-11-25 17:27:37 -06:00
Aria 743e239e52 Merge pull request 'Feat: Hook up octave and fix example' (#1773) from glossing/hook-up-octave into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1773
2025-11-25 20:59:08 +01:00
Aria f44a96a5ce Merge branch 'main' into glossing/hook-up-octave 2025-11-25 20:50:49 +01:00
Aria b94a686394 Merge pull request '[perf] fix connect-leak in tremolo param' (#1780) from jeromew/strudel:fix-perf8 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1780
Reviewed-by: Aria <glossing@noreply.codeberg.org>
2025-11-25 20:48:07 +01:00
Aria 728552b669 Merge branch 'main' into fix-perf8 2025-11-25 20:30:18 +01:00
Aria 8b427bc1dd Add oct synonym 2025-11-25 13:19:39 -06:00
Aria 8529516c66 Add ability to turn mini parsing off with midi-off decorator 2025-11-25 13:05:27 -06:00
Aria ae47d767ce Merge branch 'main' into glossing/hook-up-octave 2025-11-25 20:02:43 +01:00
jeromew ab64451d65 [hydra] return the hydra object when await initHydra(..) is called 2025-11-25 10:49:30 +00:00
jeromew 89da9bbdb0 [perf] in noise, let noiseMix do the disconnect when it exists 2025-11-25 10:31:53 +00:00
Aria 2bc208d8f5 Use errorLogger for query and tonal errors 2025-11-24 19:05:42 -06:00
Aria 39e7f70079 Remove synonym 2025-11-24 18:44:29 -06:00
Aria 7e5a907ce5 Add a few more functions to autocomplete 2025-11-24 18:41:25 -06:00
Aria d7afb8a6c0 Add register example 2025-11-24 18:01:20 -06:00
Aria a278f21f1b Allow register in autocomplete, add vel as synonym for velocity, fix some controls 2025-11-24 17:52:00 -06:00
Switch Angel AKA Jade Rose cfeff26d42 Merge pull request 'filter modulation improvements!' (#1769) from filter_mod_improvements into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1769
2025-11-24 17:51:19 +01:00
jeromew e60ecba393 Merge branch 'fix-perf8' of https://codeberg.org/jeromew/strudel into fix-perf8 2025-11-24 16:36:14 +00:00
jeromew f0d49e0e22 [perf] fix connect-leak from audioworklet=>param in lfo/tremolo 2025-11-24 16:35:48 +00:00
Jade (Rose) Rowland 7ee6b933cc add tests 2025-11-24 11:33:21 -05:00
jeromew a3947d1ccf [perf] fix connect-leak from audioworklet=>param in lfo/tremolo 2025-11-24 16:33:20 +00:00
Jade (Rose) Rowland e86850b6d8 frequency mod 2025-11-24 11:19:49 -05:00
jeromew 89a6efb69e [perf] level 5 connect-leak on vowel 2025-11-24 16:10:00 +00:00
Jade (Rose) Rowland 31c694b596 Merge branch 'main' into filter_mod_improvements 2025-11-24 10:44:11 -05:00
Jade (Rose) Rowland 7a4babf6e1 format 2025-11-24 10:40:16 -05:00
Jade (Rose) Rowland d5e5ab83ac fix style 2025-11-24 10:39:37 -05:00
Aria 36587ae747 Switch back to original version 2025-11-23 22:55:36 -06:00
Aria 6c01c16a0c Fix typo 2025-11-23 22:39:21 -06:00
Aria be36898803 Formatting and examples 2025-11-23 22:29:33 -06:00
Aria df047fd48d Optimizations 2025-11-23 22:28:10 -06:00
Aria 68840de188 Working version 2025-11-23 20:58:28 -06:00
Aria 020a6bc75f First pass at transient processor 2025-11-23 20:31:31 -06:00
Jade (Rose) Rowland 20016fd9aa update hash 2025-11-23 20:25:13 -05:00
Aria 7bc6fcbf2a Add channel support to midi in 2025-11-23 18:24:48 -06:00
Switch Angel AKA Jade Rose 132a124644 Merge pull request 'Add o as a synonym for orbit' (#1766) from jade/orbitsynonym into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1766
Reviewed-by: Aria <glossing@noreply.codeberg.org>
2025-11-24 01:20:52 +01:00
Jade (Rose) Rowland 4caacb0de1 only eval if script 2025-11-23 19:12:28 -05:00
Jade (Rose) Rowland 8325b4cfc4 Merge branch 'main' into jade/orbitsynonym 2025-11-23 19:06:16 -05:00
Jade (Rose) Rowland 3b2df0b725 synonym: 2025-11-23 19:05:57 -05:00
Jade (Rose) Rowland f80fdbc38a Merge branch 'pre_eval' of ssh://codeberg.org/uzu/strudel into pre_eval 2025-11-23 18:59:26 -05:00
Jade (Rose) Rowland 3a7b237765 change variable name 2025-11-23 18:59:16 -05:00
Switch Angel AKA Jade Rose f5af55b63b Merge branch 'main' into pre_eval 2025-11-24 00:47:37 +01:00
Jade (Rose) Rowland d5dfbd7aa4 cleanup 2025-11-23 18:45:13 -05:00
Jade (Rose) Rowland 6221099af8 working 2025-11-23 18:09:38 -05:00
froos 22f1512697 Merge pull request '[perf] fix connect-leak in fm modulation' (#1758) from jeromew/strudel:fix-perf6 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1758
2025-11-23 22:23:24 +01:00
Aria 6c0d550b6b Fix example 2025-11-23 12:25:40 -06:00
Aria cf12e3e1d8 Hook up the octave control 2025-11-23 12:21:55 -06:00
froos 9a05a679aa Merge pull request 'Fix interoperability issue between all and await initHydra()' (#1663) from jeromew/strudel:jeromew-hydra-all into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1663
2025-11-23 09:47:22 +01:00
Switch Angel AKA Jade Rose 321e76166a Merge branch 'main' into filter_mod_improvements 2025-11-23 06:35:22 +01:00
Jade (Rose) Rowland bde17594ce test 2025-11-23 00:33:52 -05:00
Jade (Rose) Rowland 7bbb653963 fixed 2025-11-22 23:42:20 -05:00
Jade (Rose) Rowland 30e672a027 wip 2025-11-22 22:49:23 -05:00
Aria f7f3aa7668 Merge pull request 'Bug fix: Swap l/r gains with temp variable' (#1768) from glossing/stereo-bug into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1768
2025-11-23 04:23:04 +01:00
Aria adc3a9ac6c Swap with temp variable 2025-11-22 20:51:30 -06:00
Switch Angel AKA Jade Rose 2518b2aed2 Merge pull request 'FIX: prevent LFO filter modulation from popping from negative values' (#1767) from lpmod_improvements into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1767
2025-11-23 00:52:27 +01:00
Jade (Rose) Rowland 1d5f3a4f30 prevent filter modulation pops 2025-11-22 18:21:24 -05:00
Jade (Rose) Rowland 2efd56e331 add synonym 2025-11-22 18:10:28 -05:00
Switch Angel AKA Jade Rose 5fa6cb4653 Merge pull request 'prefix "S" for solo' (#1481) from solo into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1481
2025-11-23 00:03:31 +01:00
Jade (Rose) Rowland 19fd0fc649 rm unessecary file 2025-11-22 17:17:41 -05:00
Jade (Rose) Rowland e72e26eb81 add comment 2025-11-22 17:11:17 -05:00
Jade (Rose) Rowland 1c4b05d55f solo search n = 1 2025-11-22 16:40:31 -05:00
jeromew d453c861d3 Merge branch 'fix-perf6' of https://codeberg.org/jeromew/strudel into fix-perf6 2025-11-21 09:01:02 +00:00
jeromew f637b8b0dd [perf] fix connect-leak in fm modulation 2025-11-21 09:00:17 +00:00
Aria 06bf17f444 Merge pull request 'Bug Fix: Use frac due to negative frequencies from FM' (#1759) from glossing/droponelettertosaveears into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1759
2025-11-21 01:56:10 +01:00
Aria 21543956c6 Also for wavetable 2025-11-20 18:30:53 -06:00
Aria 4758effdc6 Use frac due to negative frequencies from FM 2025-11-20 18:22:44 -06:00
Aria 0e3840aff4 Merge branch 'main' into glossing/lfo-anything 2025-11-20 14:40:39 -06:00
Aria a929b36770 Remove room 2025-11-20 14:06:45 -06:00
froos 6f58e74bea Merge pull request '[perf] fix connect-leak added by #1742 when noise() is not used' (#1757) from jeromew/strudel:fix-perf5 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1757
2025-11-20 19:48:15 +01:00
jeromew 907f03f3bf [perf] fix connect-leak in fm modulation 2025-11-20 17:40:51 +00:00
jeromew 0435711051 [perf] fix connect-leak added by #1742 when noise() is not used 2025-11-20 17:36:00 +00:00
froos 8f6718b9e8 Merge pull request '[perf] fix connect-leak in delay effect' (#1755) from jeromew/strudel:fix-perf4 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1755
2025-11-20 14:50:59 +01:00
froos aa77255d98 Merge pull request '[perf] fix connect leak when .noise() is in the mix' (#1742) from jeromew/strudel:fix-perf3 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1742
2025-11-20 14:49:40 +01:00
jeromew 7267990e20 Fix codeformat 2025-11-20 13:35:37 +00:00
jeromew 387e5db0fe Merge branch 'fix-perf3' of https://codeberg.org/jeromew/strudel into fix-perf3 2025-11-20 13:24:03 +00:00
jeromew d9f63b8dfa [perf] fix connect leak when .noise() is in the mix 2025-11-20 13:21:09 +00:00
jeromew 8ed72b4573 [perf] fix connect-leak in delay effect 2025-11-20 13:05:41 +00:00
Aria 2794541dad Clean up send nodes and remove offset 2025-11-19 20:52:51 -06:00
Aria 3e118ce0a8 Fully working version 2025-11-19 20:11:02 -06:00
Aria c3ad0d1789 Fix for curve params 2025-11-19 20:01:17 -06:00
Aria 19b710c401 Mostly working version 2025-11-19 19:44:02 -06:00
Aria 74488f8480 Stray log message 2025-11-19 18:41:56 -06:00
Aria 8144ec46bd Attempt system for sounds tab previews 2025-11-19 18:35:35 -06:00
Aria 0dbca05de0 Ready for testing 2025-11-19 17:24:33 -06:00
Aria f8796d039f Add param guesses 2025-11-19 17:18:38 -06:00
Aria 442f487973 Another major cleanup 90% of first pass 2025-11-19 17:10:05 -06:00
Aria 7ccdefe1c6 Huge overhaul for config part 1 2025-11-19 16:33:08 -06:00
Aria b73f624058 Trying out alias approach 2025-11-19 15:41:29 -06:00
Aria e4466082eb Merge branch 'main' into glossing/upgrading-lfospr 2025-11-19 15:10:02 -06:00
Aria 29b6729246 First pass at improving controls 2025-11-19 15:03:11 -06:00
Felix Roos dd2c808cd7 hotfix: reduce sounds-tab click to play latency 2025-11-19 21:55:35 +01:00
Aria b3df7f438f Merge branch 'main' into glossing/lfo-anything 2025-11-19 14:43:47 -06:00
Alex McLean 389a63a850 Merge pull request 'wchooseCycles has now notes in an example' (#1748) from scrappy_fiddler/strudel:documentation into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1748
2025-11-18 23:52:43 +01:00
Aria 654c1a86f0 Simplify declarations via globalThis; fix cleanup/stop 2025-11-18 16:02:33 -06:00
Felix Roos 3b1c75d3de fix: linting errors 2025-11-17 23:18:31 +01:00
Felix Roos 48407c309c add basic dough repl 2025-11-17 23:10:10 +01:00
scrappy_fiddler 99beb4454d update snapshot with note example 2025-11-17 20:49:26 +01:00
scrappy_fiddler 30cc46ea66 wchooseCycles has now notes in an example 2025-11-17 20:04:40 +01:00
Aria ac3f477f30 Merge branch 'main' into glossing/fmsss 2025-11-16 22:32:38 -06:00
Aria ea7dc7a732 Merge pull request 'Feature: Partials' (#1659) from glossing/strudel:glossing/partials into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1659
2025-11-17 05:31:53 +01:00
Aria 573cd1ae41 Merge branch 'main' into glossing/fmsss 2025-11-16 22:23:31 -06:00
Aria 641bd2f356 Properly patternify everything 2025-11-16 22:20:17 -06:00
Aria f5ed6dbe79 Top level functions 2025-11-16 20:28:22 -06:00
Aria 7a3bea6f90 Working version 2025-11-16 19:38:59 -06:00
Aria cc10122b71 Testing out approach to allow list patterns in partials 2025-11-16 19:20:42 -06:00
Aria b66c0d18b3 Merge branch 'main' into glossing/partials 2025-11-16 18:44:04 -06:00
Aria 17af92b2df Merge branch 'main' into glossing/random 2025-11-16 15:32:15 -06:00
Aria e90aa5202d Export withseed 2025-11-16 15:28:10 -06:00
Aria fb7f686519 Add seeding 2025-11-16 15:22:34 -06:00
froos 0331c91b80 Merge pull request 'README: update superdough documentation' (#1741) from TristanMlct/strudel:update-readme-superdough into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1741
2025-11-16 22:06:12 +01:00
Aria 4d5ebfc204 Merge pull request 'Feature: Envelope worklet' (#1524) from glossing/strudel:glossing/snappy-envs into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1524
2025-11-16 22:00:42 +01:00
Aria aca500ba73 Merge branch 'main' into glossing/random 2025-11-16 14:42:20 -06:00
Aria 921cb17d33 Merge branch 'main' into glossing/snappy-envs 2025-11-16 14:39:40 -06:00
Aria 832fd04a3d Merge pull request 'Worklet optimizations' (#1730) from glossing/optimizations into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1730
Reviewed-by: Switch Angel AKA Jade Rose <daslyfe@noreply.codeberg.org>
2025-11-16 21:08:53 +01:00
Aria d9c21489f8 Merge branch 'main' into glossing/optimizations 2025-11-16 20:13:31 +01:00
Aria 3962558c09 Some final tweaks 2025-11-16 13:12:47 -06:00
jeromew bfa8fa3c75 [perf] fix connect leak when .noise() is in the mix 2025-11-16 09:23:11 +00:00
Tristan Mlct 91799f2014 README: update superdough documentation 2025-11-15 15:06:44 +01:00
froos f6bb3869de Merge pull request '[perf] disconnect Offline AudioNode connections in generateReverb' (#1740) from jeromew/strudel:fix-perf2 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1740
2025-11-15 14:59:28 +01:00
froos b9e9c9e9e6 Merge pull request '[perf] disconnect send effect AudioNode when room is used' (#1736) from jeromew/strudel:fix-perf1 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1736
2025-11-15 14:57:46 +01:00
jeromew 92d87093e0 [perf] disconnect Offline AudioNode connections in generateReverb 2025-11-15 13:39:24 +00:00
jeromew 3e05525dc2 [perf] disconnect send effect AudioNode when room is used 2025-11-14 22:06:39 +00:00
Aria 22807b3833 Use weak references for sound sources 2025-11-14 16:05:09 -06:00
froos 0960741156 Merge pull request '[supradough] fix: unstable filter' (#1593) from supradough-filter-fix into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1593
2025-11-12 21:22:33 +01:00
Alex McLean bbb977afcc Merge pull request 'Fix link syntax in project-start' (#1724) from Kissaki/strudel:kissaki-patch-1 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1724
2025-11-12 21:12:06 +01:00
Alex McLean 81a4981a68 Merge pull request 'Fix web README sample code' (#1725) from Kissaki/strudel:kissaki-patch-2 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1725
2025-11-12 21:06:12 +01:00
Alex McLean 90d82c8988 Merge pull request 'Fix typo: 'studel' -> 'strudel'' (#1726) from drhayes/strudel:main into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1726
2025-11-12 20:59:39 +01:00
Aria 2875814a36 Square instead of self-multiply; more voices; more cleanup 2025-11-12 13:56:14 -06:00
Aria 157b05536a Final cleanup 2025-11-12 13:36:01 -06:00
Aria f8c9425569 Simplify spread 2025-11-12 13:13:37 -06:00
Aria be3a88b09c Optimize phase wrap; make voices k-rate 2025-11-12 12:23:40 -06:00
Aria aabf122161 Further optimizations, including detuner 2025-11-12 11:53:38 -06:00
Aria 3c6de3be6d First pass of worklets optimizations 2025-11-12 10:48:20 -06:00
froos 15f7b7c1a2 Merge pull request 'fix for node 24 support in tests - #1718' (#1719) from ausav/strudel:ausav.nodever into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1719
2025-11-12 15:23:36 +01:00
froos b6e382508f Merge pull request 'soundAlias example fix' (#1720) from PepsiiMan/strudel:docfix into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1720
2025-11-11 09:00:47 +01:00
drhayes 3e7ae88043 Fix typo: 'studel' -> 'strudel' 2025-11-10 17:02:55 +01:00
froos 897a2016d0 Merge pull request 'fix: Make Supradough package build' (#1711) from munshkr/strudel:fix/1702-supradough-build into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1711
2025-11-10 08:18:35 +01:00
froos 7a1c1a75b1 Merge pull request 'added docs for spaces in scale names' (#1715) from ondras/strudel:scale-docs into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1715
2025-11-10 08:18:00 +01:00
ondras 7f06f11e96 Merge branch 'main' into scale-docs 2025-11-10 08:08:04 +01:00
Switch Angel AKA Jade Rose 5acb00795e Merge pull request 'Feature: LFOs for Filters' (#1636) from glossing/strudel:glossing/filter-lfo into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1636
2025-11-10 02:44:00 +01:00
Switch Angel AKA Jade Rose f4b68fa2e6 Merge branch 'main' into glossing/filter-lfo 2025-11-10 02:20:20 +01:00
PepsiiMan 1b37f1ed1d soundAlias example fix 2025-11-06 15:33:06 +01:00
ondras f8943dbc94 Merge branch 'main' into scale-docs 2025-11-06 08:16:34 +01:00
Ondřej Žára a3f82f90a9 test fix 2025-11-06 08:15:55 +01:00
Switch Angel AKA Jade Rose 670f75b7e8 Merge pull request 'improvement: sync midi messages to audio context clock' (#1708) from sync_midi_timing into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1708
2025-11-05 17:06:59 +01:00
Jade (Rose) Rowland 79875ebc50 fix branch 2025-11-05 01:26:36 -05:00
Switch Angel AKA Jade Rose a1bd905c06 Merge branch 'main' into sync_midi_timing 2025-11-05 07:25:06 +01:00
Alex Victoria 247bf9b930 fix for node 24 support #1718 2025-11-04 20:54:21 -06:00
froos 8f24ce223f Merge pull request 'Add stick button mappings to gamepad implementation and improve docs' (#1696) from kaosuryoko/strudel:gamepad-stick-button into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1696
2025-11-04 19:36:13 +01:00
froos 51648d3e6e Merge pull request 'Refactor sound stopping and triggering logic in SoundsTab component' (#1688) from IJOL/strudel:bugfix/multi-sample-loading into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1688
2025-11-04 19:29:34 +01:00
froos d4e67e1c20 Merge pull request 'Add setting to toggle pattern auto-start on pattern change' (#1690) from moumar/strudel:pattern-auto-start-setting into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1690
2025-11-04 19:13:20 +01:00
froos edf4739cc6 Merge pull request 'Voicings JSDoc' (#1686) from sharkeys_lunchbox/strudel:main into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1686
2025-11-04 18:58:50 +01:00
froos 3e636bd6f0 Merge branch 'main' into main 2025-11-04 18:55:34 +01:00
Ondřej Žára 4df2cc3086 added docs for spaces in scale names 2025-11-03 22:03:39 +01:00
moumar 809eb7132c codeformat 2025-11-02 15:20:31 +01:00
froos dd6429007e Merge branch 'main' into bugfix/multi-sample-loading 2025-11-02 14:56:30 +01:00
froos e211d5a6bb Merge branch 'main' into pattern-auto-start-setting 2025-11-02 14:44:31 +01:00
Damián Silvani 404d9999f3 fix: Update github.com links 2025-11-02 09:21:40 -03:00
Damián Silvani bc1c83ed64 fix: Add missing vite.config.js to supradough package 2025-11-02 09:21:25 -03:00
Jade (Rose) Rowland 91e1cc136e working 2025-11-01 23:34:10 -04:00
Switch Angel AKA Jade Rose 92e3a80e65 Merge pull request 'FIX: Loading local samples uses too much memory' (#1706) from jade/fix_sample_loading into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1706
2025-11-01 07:50:39 +01:00
Jade (Rose) Rowland 4f046ae883 cf 2025-11-01 02:40:40 -04:00
Jade (Rose) Rowland 2b575d50b9 temporarily disable sample autocomplete 2025-11-01 02:39:43 -04:00
Jade (Rose) Rowland 7b92874909 fix broken array 2025-11-01 01:55:05 -04:00
Jade (Rose) Rowland 10bfe32a2d rm console 2025-11-01 01:48:42 -04:00
Jade (Rose) Rowland a41b07c67a fixed build 2025-11-01 01:44:32 -04:00
Jade (Rose) Rowland 20027d7208 Merge branch 'jade/fix_sample_loading' of ssh://codeberg.org/uzu/strudel into jade/fix_sample_loading 2025-11-01 01:32:35 -04:00
Jade (Rose) Rowland f38792c569 format 2025-11-01 01:32:24 -04:00
Switch Angel AKA Jade Rose 2c2bfd7070 Merge branch 'main' into jade/fix_sample_loading 2025-11-01 06:31:25 +01:00
Jade (Rose) Rowland 484c5e6cdd working 2025-11-01 01:26:25 -04:00
Jason Dufair a036c4f921 Merge remote-tracking branch 'upstream/main' 2025-10-30 18:57:36 -04:00
froos 4c35f6a77b Merge pull request 'Bug Fix: Handle scale-for-notes when n also supplied' (#1625) from glossing/strudel:glossing/scale-with-note-and-n into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1625
2025-10-28 22:58:24 +01:00
froos e92f4938cd Merge branch 'main' into glossing/scale-with-note-and-n 2025-10-28 22:54:34 +01:00
froos 12204c9053 Merge pull request 'Repurpose vim shortcuts for usability' (#1624) from dtricks/strudel:feat/vim-shortcuts into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1624
2025-10-28 22:51:15 +01:00
froos 980bf17059 Merge branch 'main' into feat/vim-shortcuts 2025-10-28 22:38:04 +01:00
froos f2009a33aa Merge pull request 'Add support for euclidian in mondo with bd&3:8' (#1630) from TristanCacqueray/strudel:mondian into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1630
2025-10-28 22:35:19 +01:00
froos a65a68b828 Merge branch 'main' into mondian 2025-10-28 22:20:41 +01:00
alex cbe7aaacfb Publish
- @strudel/codemirror@1.2.6
 - @strudel/core@1.2.5
 - @strudel/csound@1.2.6
 - @strudel/draw@1.2.5
 - @strudel/gamepad@1.2.5
 - @strudel/hydra@1.2.5
 - @strudel/midi@1.2.6
 - @strudel/mini@1.2.5
 - @strudel/mondo@1.1.5
 - @strudel/motion@1.2.5
 - @strudel/mqtt@1.2.5
 - @strudel/osc@1.3.0
 - @strudel/repl@1.2.7
 - @strudel/serial@1.2.5
 - @strudel/soundfonts@1.2.6
 - superdough@1.2.6
 - supradough@1.2.4
 - @strudel/tonal@1.2.5
 - @strudel/transpiler@1.2.5
 - @strudel/web@1.2.6
 - @strudel/webaudio@1.2.6
 - @strudel/xen@1.2.5
2025-10-27 15:38:32 +00:00
Jason Dufair c0e7971be7 Merge remote-tracking branch 'upstream/main' 2025-10-27 09:26:47 -04:00
Alex McLean 35014b5190 Merge pull request 'Use bunny cdn for all samples and json files' (#1701) from bunny-cdn into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1701
2025-10-27 10:42:06 +01:00
alex 9ff0449ca3 use json files in dough-samples via bunny cdn 2025-10-27 09:24:17 +00:00
kaosuryoko b491c42af5 Merge branch 'main' into gamepad-stick-button 2025-10-27 00:36:50 +01:00
alex 8398385dcd piano via bunnycdn 2025-10-26 22:18:37 +00:00
Alex McLean 629c2b9301 Merge pull request 'degithub - switch some samples to bunnycdn' (#1697) from bunny-cdn into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1697
2025-10-26 22:52:53 +01:00
alex 5cc93996ce degithub 2025-10-26 21:49:10 +00:00
Greg Ervin ee43d85f29 Add stick button mappings to gamepad implementation and improve docs 2025-10-26 13:31:13 -05:00
Alex McLean 7cef558440 Merge pull request 'Fix ZZFX example' (#1685) from moumar/strudel:fix-zzfx-example into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1685
2025-10-26 17:09:20 +01:00
Alex McLean c261fb6dd6 Merge branch 'main' into fix-zzfx-example 2025-10-26 17:08:56 +01:00
moumar fcd83cce55 Re-evaluate pattern if activated 2025-10-26 14:07:36 +01:00
moumar fddf2ff2a7 Set pattern auto-start to true by default 2025-10-26 14:06:31 +01:00
Jason Dufair 6d4787ee33 Test snapshot 2025-10-24 09:21:04 -04:00
Jason Dufair 1a362bd8ea Fix example 2025-10-24 09:19:02 -04:00
BANanaD3V 03d2f363f1 Merge branch 'main' into feat/non-realtime-exporting 2025-10-24 13:09:09 +02:00
Nikita ff370cf86f Reapply realtimeOptions after export 2025-10-24 14:07:57 +03:00
moumar 28056deb66 Fix ZZFX example
ZZFX example did not produce any sound out of the box, fixed by updating
tremolo param.
2025-10-23 23:15:53 +02:00
moumar 20bbda30f8 Add setting to toggle pattern auto-start on pattern change 2025-10-23 23:15:21 +02:00
Nikita 9cbeaef88d Format 2025-10-23 22:21:40 +03:00
Nikita ca936aada7 Fix incorrect duration calculation 2025-10-23 21:46:13 +03:00
Ignacio Ortega a8c613b7eb Refactor sound stopping and triggering logic in SoundsTab component 2025-10-23 19:04:29 +02:00
Jason Dufair fd0a910bfb Voicings JSDoc 2025-10-23 11:11:21 -04:00
Nikita fe70a2df43 Format 2025-10-23 17:08:11 +03:00
Nikita 6baca67cd3 Fix maxPolyphony and multiChannelOrbits not applying to export 2025-10-23 17:07:53 +03:00
yaxu 7071dec775 revert 39e2221c29
revert add _processParts()
2025-10-23 16:07:42 +02:00
Alex McLean 3d55567445 Merge branch 'main' of ssh://codeberg.org/uzu/strudel 2025-10-23 15:05:50 +01:00
Alex McLean 39e2221c29 add _processParts() 2025-10-23 15:05:39 +01:00
BANanaD3V 85f6454340 Merge branch 'main' into feat/non-realtime-exporting 2025-10-23 16:05:09 +02:00
Alex McLean b8ce920f50 Merge pull request 'Make osc port and host configurable. Changes dependencies.' (#1682) from multiosc into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1682
2025-10-23 15:56:00 +02:00
yaxu ccb5ec1685 Add action to deploy 'beta' version to warm.strudel.cc 2025-10-23 10:41:29 +02:00
yaxu b09230fe90 Update .forgejo/workflows/deploy.yml 2025-10-23 10:40:08 +02:00
yaxu 8f7b439dce Move deploy location to deploy/strudel.cc 2025-10-23 10:39:26 +02:00
Aria c823a37c93 Merge pull request 'Adds back shape to superdough' (#1672) from glossing/strudel:glossing/return-shape-to-sd into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1672
2025-10-23 03:47:30 +02:00
Aria 0c9f535ff5 Merge branch 'main' into glossing/return-shape-to-sd 2025-10-23 03:44:44 +02:00
froos fb5884ab81 Merge pull request 'Fix sampler.mjs githubPath' (#1684) from jeromew/strudel:fix-githubpath into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1684
2025-10-22 22:15:17 +02:00
Nikita 16f885c010 Use errorLogger instead 2025-10-22 23:09:30 +03:00
jeromew ea91d30ce4 Add semicolon 2025-10-22 21:52:53 +02:00
Nikita 5a70599aac Ignore superdough errors when exporting, instead skip sound. 2025-10-22 22:48:04 +03:00
jeromew f0bd5bffaa Fix sampler.mjs githubPath
PR https://codeberg.org/uzu/strudel/pulls/1679 introduced a subtle bug when both other and subpath are empty. The url should not end with '//'
2025-10-22 21:39:08 +02:00
Nikita 7b74a902a2 Remove unneeded imports 2025-10-22 20:05:03 +03:00
Nikita 95700e1196 Fix wavetables breaking after playback 2025-10-22 20:00:36 +03:00
Alex McLean ac37b6a029 Merge pull request 'Fix onPaint for widgets' (#1658) from fix-onpaint into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1658
2025-10-22 16:20:49 +02:00
Nikita e7578be6c5 Remove preloading code and instead await superdough 2025-10-22 17:16:05 +03:00
Nikita 28df4259b8 Merge remote-tracking branch 'upstream/main' into feat/non-realtime-exporting 2025-10-22 16:21:34 +03:00
Nikita 5e27358fe8 Better preloading 2025-10-22 16:19:58 +03:00
froos a986688874 Merge pull request 'Fix a bug introduced by #4e17cfbdd6' (#1679) from milliganf/strudel:main into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1679
2025-10-22 15:19:11 +02:00
froos 4ab8c256b2 Merge branch 'main' into main 2025-10-22 15:18:53 +02:00
alex 06ea5a36e2 Make osc port and host configurable. Changes dependencies. 2025-10-22 10:15:48 +01:00
Nikita daea207aff Better sample loading 2025-10-21 22:42:01 +03:00
Nikita 92d3fe496d Bug fixes 2025-10-21 21:00:30 +03:00
Nikita 98031676d6 Add an EOL character to package.json 2025-10-21 16:44:42 +03:00
Nikita 498624f6fe Make server.js a normal file 2025-10-21 16:35:33 +03:00
Nikita bf702c3b2a Reviewed changes 2025-10-21 16:30:18 +03:00
froos 6e4dae4dfa Merge branch 'main' into feat/non-realtime-exporting 2025-10-21 14:24:09 +02:00
froos 98f5a56ef6 Merge pull request 'feature/autocomplete-sound-names' (#1564) from drdozer/strudel:feature/autocomplete-sound-names into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1564
2025-10-20 22:37:14 +02:00
milliganf 46af6ed9ef Fix a bug introduced by #4e17cfbdd6
When there's no subpath for a Github path, the URL should end with a '/'. Otherwise when we concatenate values on from a sample map it doesn't separate the base URL from the filename.

Signed-off-by: milliganf <m.h.freeson@outlook.com>
2025-10-20 22:30:58 +02:00
froos 752940b3ab Merge branch 'main' into feature/autocomplete-sound-names 2025-10-20 22:17:45 +02:00
froos c727534d29 Merge pull request 'add replicate + use it for ! in mondo' (#1436) from JoStro/strudel:main into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1436
2025-10-20 21:58:11 +02:00
Felix Roos 20e5fdedfb fix: use replicate for ! in mondo 2025-10-20 21:38:43 +02:00
Felix Roos 188f0e9098 snapshot 2025-10-20 21:35:28 +02:00
Felix Roos c2a5562bad add new flavour under replicate 2025-10-20 21:24:13 +02:00
froos 57f2a97b7b Merge branch 'main' into main 2025-10-20 21:21:08 +02:00
Nikita a8ea9a1b63 Update lockfile 2025-10-20 21:26:40 +03:00
Nikita a2b76bde14 Format 2025-10-20 21:24:54 +03:00
Nikita 0f652e8b5b Remove webaudio from core dependencies 2025-10-20 21:24:27 +03:00
Nikita 2a0635879c Format 2025-10-20 20:58:27 +03:00
Nikita f5fc0ff9d1 Remove resetGlobalEffects from AudioContext 2025-10-20 20:58:01 +03:00
Nikita 7774364ac7 Add webaudio as a workspace dependency 2025-10-20 20:36:36 +03:00
Nikita 329289fc35 Revert refreshing deps 2025-10-20 20:33:25 +03:00
Nikita 8b3c0d2a4a Refresh deps 2025-10-20 20:27:31 +03:00
Nikita 120b46c4a5 Add webaudio as a cyclist dependency (do we want that?) 2025-10-20 20:24:42 +03:00
Nikita 4bdaf577c0 Format 2025-10-20 20:22:16 +03:00
Nikita 428a4b3dd7 Revert workletsUrl to use ?audioworklet 2025-10-20 20:21:23 +03:00
Nikita ff83994733 Better export UI 2025-10-20 20:19:52 +03:00
Nikita 418bca79b2 Disable button when exporting & min start cycle is 0 2025-10-19 23:05:33 +03:00
Nikita b3715dc5df WIP export UI 2025-10-19 23:02:20 +03:00
Nikita 9a47e0f11e close() doesn't exist for OfflineAudioContext 2025-10-19 19:47:23 +03:00
Nikita 908c0e44ff Fix worklets not loading 2025-10-19 19:44:53 +03:00
Nikita 920776fdfe Re-init audio before and after export 2025-10-19 15:10:31 +03:00
Nikita 0fbde61b2d WIP non-realtime exporting 2025-10-19 14:38:50 +03:00
Aria 4c49cd9297 More examples 2025-10-18 11:24:56 -05:00
Aria 70d2da81d8 Merge branch 'main' into glossing/fmsss 2025-10-18 11:01:23 -05:00
Aria 72423c3a25 Adds back shape to superdough 2025-10-18 10:41:33 -05:00
alex 92a82ce4bd delint 2025-10-18 10:49:15 +01:00
alex b2ce4591d9 sort exports and add impure.mjs 2025-10-18 10:42:55 +01:00
alex 1be9f40574 timeline feature 2025-10-18 10:42:35 +01:00
Felix Roos 105db2a4ca fix: tonal import in autocomplete + add tonal to codemirror package dependencies 2025-10-18 08:49:31 +02:00
froos be61d08cc6 Merge branch 'main' into feature/autocomplete-sound-names 2025-10-18 08:41:15 +02:00
Switch Angel AKA Jade Rose 6e58c973af Merge pull request 'Bug Fix: Wavetable: phase wrapping at 1 and detune' (#1620) from glossing/strudel:glossing/wrap-phase-typo into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1620
2025-10-18 04:29:19 +02:00
Switch Angel AKA Jade Rose 2473a5391d Merge branch 'main' into glossing/wrap-phase-typo 2025-10-17 04:55:25 +02:00
Aria c02def03b6 Don't tag when scale fails, allow mixed sharps and flats, simplify scale function 2025-10-16 16:26:33 -05:00
froos 4e17cfbdd6 Merge pull request 'github samples: default to "samples" if repository is not specified' (#1644) from prezmop/strudel:main into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1644
2025-10-16 20:26:26 +02:00
prezmop 83c7e63432 update docs 2025-10-16 18:20:22 +02:00
prezmop 909e0154fe default to samples if repo not found 2025-10-16 18:20:13 +02:00
froos ef4e21ac40 Merge pull request 'Docs: add example of custom chained function' (#1642) from dariusk/strudel:main into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1642
2025-10-16 17:33:39 +02:00
froos 857c82e260 Merge branch 'main' into main 2025-10-16 17:25:07 +02:00
froos 0d5dc1f8c1 Merge branch 'main' into glossing/scale-with-note-and-n 2025-10-16 17:19:07 +02:00
jeromew 47c85f8540 fix interoperability of all with hydra
Hydra add methods on Array.prototype which breaks the Array enumeration with for...in.
Use for...of instead
cf https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of#difference_between_for...of_and_for...in for details on the issue

without this fix, it is impossible to use both `await initHydra()` and `all` in the same strudel code. Strudel errors with "Error: got "undefined" instead of pattern."

example code: https://strudel.cc/#YXdhaXQgaW5pdEh5ZHJhKCkKCmFsbChwaWFub3JvbGwpCgokOiBzKCJiZCIp
2025-10-16 14:06:33 +02:00
Aria fd03d1fdfb Update conditional to allow to control user waveforms 2025-10-15 15:14:31 -05:00
Aria 35016b5847 Mention range in docstring 2025-10-15 14:56:20 -05:00
Aria 0fe7edc157 Some examples 2025-10-15 14:53:07 -05:00
Aria d6de160224 Merge branch 'main' into glossing/partials 2025-10-15 13:19:57 -05:00
alex ba93bd1bc5 Fix onPaint for widgets 2025-10-15 18:54:02 +01:00
Aria 3c1a8c8bdb Format 2025-10-14 11:41:11 -05:00
Aria b7e941c649 Merge branch 'main' into glossing/wrap-phase-typo 2025-10-14 11:40:29 -05:00
Aria ac7e9c6978 Typos on envelope values 2025-10-14 11:37:41 -05:00
Aria c13a726129 Merge branch 'main' into glossing/filter-lfo 2025-10-14 11:24:49 -05:00
Switch Angel AKA Jade Rose ded91fab7d Merge pull request 'Feature: Distortion Modes' (#1561) from glossing/strudel:glossing/distortion-modes into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1561
2025-10-13 07:26:50 +02:00
Switch Angel AKA Jade Rose f40d079543 Merge pull request 'Feature: Wavetable FM' (#1623) from glossing/strudel:glossing/wavetable-fm into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1623
2025-10-13 07:05:56 +02:00
Switch Angel AKA Jade Rose d5833dd475 Merge branch 'main' into glossing/wavetable-fm 2025-10-13 07:05:24 +02:00
Switch Angel AKA Jade Rose 99b3c04a76 Merge branch 'main' into glossing/filter-lfo 2025-10-13 07:04:51 +02:00
Switch Angel AKA Jade Rose e3658ec30e Merge pull request 'fix: repair REPL sample sources and URL concat (#1640)' (#1646) from erikfox/strudel:fix-repl-sample-sources-1640 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1646
2025-10-12 20:43:41 +02:00
Erik Fox 72eaf96b4f fix: repair REPL sample sources and URL concat (#1640) 2025-10-12 12:30:36 -04:00
Darius Kazemi 9c5c71c31a Removing semicolon to be more idiomatic;;; 2025-10-11 17:52:26 -07:00
Darius Kazemi af53bab259 Fixing some syntax and a typo 2025-10-11 17:50:58 -07:00
Darius Kazemi 0065db8569 Docs: add example of custom chained function
This adds a subsection to the "Understand/Coding Syntax" documentation that shows a simple example of converting the previous chain of effects into a custom, reusable chained function. There's also a prompt for the reader to experiment.
2025-10-11 17:40:55 -07:00
Alex McLean 7eebf3a466 Merge pull request 'Add control-metadata' (#1634) from control-metadata into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1634
2025-10-10 11:25:00 +02:00
Aria 57fac57677 Remove todo 2025-10-09 22:23:28 -05:00
Aria a3b803c3f3 First pass 2025-10-09 18:28:59 -05:00
Aria 6f703e48e7 Merge branch 'main' into glossing/wrap-phase-typo 2025-10-08 16:44:35 -05:00
Alex McLean 64f16c4f33 placate format gods 2025-10-08 15:35:34 +01:00
Alex McLean ffbbc43c89 add cyclist version to the query metadata 2025-10-08 15:34:51 +01:00
Alex McLean 086596c47c fix setControls to do union with existing controls 2025-10-08 14:52:00 +01:00
Alex McLean fdde05e751 add pattern id to query state controls 2025-10-08 14:51:21 +01:00
Alex McLean 694162a7b1 fix purity of 'withState' so it returns a new pattern 2025-10-08 14:13:33 +01:00
Felix Roos 319a2d7289 fix: tests 2025-10-07 23:05:00 +02:00
Felix Roos 3a7d50924d refactor: add op_precedence to express & with desugar_ops 2025-10-07 22:59:50 +02:00
Alex McLean cbcb25b063 Merge pull request 'Fix MQTT: change the trigger handler to match new hap' (#1629) from jurrchen/strudel:bugfix/mqtt-hap-sig into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1629
2025-10-07 22:59:38 +02:00
Felix Roos f33db5f07f - refactor bjork -> bjorklund
- refactor e -> bjork
- flip & desugared arguments
2025-10-07 22:35:29 +02:00
Tristan de Cacqueray b7fa440bda mondough: interpret & 2025-10-07 18:10:24 +02:00
Tristan de Cacqueray 3dc9b3524c mondo: add & sugar 2025-10-07 17:19:27 +02:00
dtricks f48f8e46e5 fix empty catches 2025-10-06 15:53:44 +02:00
dtricks a79fc3db5b remove unnecessary comments 2025-10-06 15:53:44 +02:00
dtricks 30a2e14959 weird permission change 2025-10-06 15:53:44 +02:00
dtricks cfe17fcba5 wrong unicode char 2025-10-06 15:53:44 +02:00
dtricks 46ba165c7e remove gcc 2025-10-06 15:53:44 +02:00
dtricks 73a9834959 codeformat 2025-10-06 15:53:44 +02:00
dtricks be9368e8a2 feat(codemirror): add Vim :w evaluate, :q stop, and gc/gcc toggle comment via custom events; docs: add Vim shortcuts page and link from REPL manual 2025-10-06 15:53:44 +02:00
Aria 1ae773acc4 Merge branch 'main' into glossing/wrap-phase-typo 2025-10-05 18:21:05 -05:00
Aria 39a73f2499 Merge branch 'main' into glossing/scale-with-note-and-n 2025-10-05 18:20:30 -05:00
froos 53c504f260 Merge branch 'main' into feature/autocomplete-sound-names 2025-10-05 21:50:45 +02:00
Jieren Chen 0d08225983 change the trigger handler to match new hap 2025-10-05 21:45:23 +02:00
froos 00872bd1de Merge pull request 'Fix case sensitivity for synonym search' (#1618) from vvolhejn/strudel:vv/fix-case-sensitivity into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1618
2025-10-05 21:42:18 +02:00
Aria cc4452ce58 Working version of partials and phases 2025-10-04 20:33:25 -05:00
Aria 11dd8a318a Cleanup 2025-10-04 02:13:42 -05:00
Aria 3ef6c7c921 Handle scale-for-notes when n also supplied 2025-10-04 02:07:35 -05:00
Aria 120f89d57f Handle detune in the presence of pitch envelope 2025-10-04 01:37:57 -05:00
Aria bd73d96847 Cleanup 2025-10-03 18:49:49 -05:00
Aria 7cf9db4872 Big matrix refactor 2025-10-03 18:20:41 -05:00
Aria c9381a11f9 Working version 2025-10-03 17:21:05 -05:00
Aria d496919fe5 Import 2025-10-02 22:48:41 -05:00
Aria f369de13d7 Hook up FM to wavetables 2025-10-02 22:45:48 -05:00
Dr Mathew R Pocock 908a703b7f Merge branch 'main' into feature/autocomplete-sound-names 2025-10-02 10:32:16 +02:00
Aria 99e14dae5c Consistency 2025-10-02 01:12:42 -05:00
Aria ac582b4d40 Wrap properly when phase === 1 2025-10-02 01:06:29 -05:00
Václav Volhejn b7d98dd370 Fix case sensitivity for synonym search 2025-10-01 21:53:28 +02:00
Alex McLean 0ecacae71e format 2025-10-01 12:02:09 +01:00
yaxu 8cd497abb2 Update website/src/pages/technical-manual/project-start.mdx 2025-10-01 12:54:58 +02:00
Switch Angel AKA Jade Rose 070055d2ef Merge pull request 'Optimize wavetable synth' (#1613) from glossing/strudel:glossing/wavetable-optimizations into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1613
2025-10-01 08:56:33 +02:00
Switch Angel AKA Jade Rose e500ebe268 Merge branch 'main' into glossing/wavetable-optimizations 2025-10-01 08:54:53 +02:00
Aria 72298c5f03 Docstring cleanup 2025-10-01 00:45:26 -05:00
Aria c885d84785 Add comment 2025-10-01 00:39:44 -05:00
Aria a14bf4d97b Add aliases for distort types 2025-10-01 00:36:59 -05:00
Aria c5f1085bd9 WIP 2025-09-30 23:51:59 -05:00
Aria ccbf28f2db Merge branch 'main' into glossing/distortion-modes 2025-09-30 23:25:57 -05:00
Aria 3a7ec18d46 Move invsr to constructor 2025-09-30 23:19:55 -05:00
Aria a2b8407fbb Add back mipmaps; add caching 2025-09-30 23:08:28 -05:00
Switch Angel AKA Jade Rose ac1fd88d8d Merge pull request 'fix: pattern switching' (#1616) from fix_pattern_Switching into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1616
2025-10-01 02:02:30 +02:00
Jade (Rose) Rowland 9f8143e062 format 2025-09-30 19:46:53 -04:00
Jade (Rose) Rowland cdc5e5f3f3 working 2025-09-30 19:45:30 -04:00
Aria bad498a1e5 Remove unused var 2025-09-30 16:21:28 -07:00
Switch Angel AKA Jade Rose f4cf77f5c6 Merge branch 'main' into solo 2025-09-30 08:09:37 +02:00
Aria 4de0c11f8c Remove mipmaps, fix clamping of parameters 2025-09-29 14:15:50 -07:00
Dr Mathew R Pocock 97af50222f Merge branch 'main' into feature/autocomplete-sound-names 2025-09-29 18:10:12 +02:00
Switch Angel AKA Jade Rose f360d394a7 Merge pull request 'fix wavetable JSON' (#1611) from fix_JSON into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1611
2025-09-29 02:10:53 +02:00
Jade (Rose) Rowland 48718daea8 add_vgame 2025-09-28 19:57:19 -04:00
Jade (Rose) Rowland 8d45016ccf working 2025-09-28 19:11:13 -04:00
Switch Angel AKA Jade Rose ec69f6fd77 Merge pull request 'rename wavetable controls to match existing naming conventions' (#1610) from wavetable_controls into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1610
2025-09-28 21:28:15 +02:00
Jade (Rose) Rowland d94f145649 fix vib 2025-09-28 15:23:58 -04:00
Jade (Rose) Rowland bf3fe605d9 fix unison gain 2025-09-28 15:21:06 -04:00
Jade (Rose) Rowland 54ebc97ddc fix tests 2025-09-28 15:07:35 -04:00
Jade (Rose) Rowland c689874bb4 simplify modulators 2025-09-28 14:57:12 -04:00
Jade (Rose) Rowland 23d4bfa9d9 rename controls 2025-09-28 09:19:39 -04:00
Switch Angel AKA Jade Rose 91eb50f1c1 Merge pull request '<Warn: Don't merge until tables uploaded> Feature: Wavetable synth improvements' (#1607) from glossing/strudel:glossing/wavetable-synth into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1607
2025-09-27 23:28:12 +02:00
Aria 5838ade740 Merge branch 'main' into glossing/wavetable-synth 2025-09-27 13:17:05 -07:00
Aria 917d01c47d Add LFOs and envelopes 2025-09-27 12:48:37 -07:00
Switch Angel AKA Jade Rose 0a51718df3 Merge pull request 'wavetable improvements' (#1608) from wt_improvements into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1608
2025-09-27 21:43:09 +02:00
Jade (Rose) Rowland 774372a339 format 2025-09-27 15:29:55 -04:00
Jade (Rose) Rowland 626a99ba5b supports old documented way of loading wavetables: 2025-09-27 15:22:54 -04:00
Aria 8c3ee6db6b Missed deletion 2025-09-27 11:07:04 -07:00
Aria c5c05ebadc Clean up to align with other PR 2025-09-27 11:02:57 -07:00
Aria a8918d55fb Actually update normalizer 2025-09-27 10:45:30 -07:00
Aria 07e3ddbe40 Merge branch 'main' into glossing/distortion-modes 2025-09-27 10:25:51 -07:00
Jade (Rose) Rowland a9957b45e5 suppoert existing wt_ api 2025-09-27 13:22:21 -04:00
Jade (Rose) Rowland 4bd103e612 gain adj 2025-09-27 11:31:43 -04:00
Aria 466234bad6 Merge branch 'main' into glossing/wavetable-synth 2025-09-26 21:22:45 -07:00
Aria 97beaec25a Added examples, fixed samplerate issue on import, added to settings tab, fixed spread, added default wavetables, change default phaserand to 0 2025-09-26 20:46:10 -07:00
Jade (Rose) Rowland 2b3b638943 sample source for WT 2025-09-26 21:47:45 -05:00
Switch Angel AKA Jade Rose e1629e8383 Merge pull request 'create orbit based DJ filter' (#1603) from djf into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1603
2025-09-26 08:48:45 +02:00
Jade (Rose) Rowland 266cb614a8 add better example 2025-09-25 23:44:32 -07:00
Jade (Rose) Rowland dfc4a0818c res adjust 2025-09-25 23:39:08 -07:00
Jade (Rose) Rowland 236ff577a6 Merge branch 'main' into djf 2025-09-25 23:18:22 -07:00
Switch Angel AKA Jade Rose 66a32ac45d Merge pull request 'Feature: Wavetable synth' (#1525) from glossing/strudel:glossing/wavetable-synth into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1525
2025-09-26 08:15:48 +02:00
Aria 8b2c35b7a3 Cleanup 2025-09-25 01:10:41 -07:00
Aria f8f42565ae Typo - add back slight delay in cleanup 2025-09-25 00:40:25 -07:00
Aria 96981c3c1d A bit more cleanup 2025-09-25 00:36:28 -07:00
Aria bd8d207a3d Typo 2025-09-25 00:17:13 -07:00
Aria e3741ae8fa Add control over phase randomization and fix a bug with supersaw 2025-09-25 00:05:50 -07:00
Switch Angel AKA Jade Rose ef87f65bef Merge branch 'main' into glossing/wavetable-synth 2025-09-25 07:21:17 +02:00
Aria b3537a9acb Some cleanup 2025-09-24 22:17:30 -07:00
Aria d3d9f23c3c Remove unnecessary defaulting 2025-09-24 22:06:53 -07:00
Jade (Rose) Rowland c474b8c92e rm comment 2025-09-24 20:33:51 -07:00
Jade (Rose) Rowland da81ba00fb adjust control range 2025-09-24 20:32:45 -07:00
Aria f0669ce3ba Move algorithm into constructor 2025-09-24 17:32:03 -07:00
Jade (Rose) Rowland 28c94efaa9 format 2025-09-24 00:24:25 -07:00
Jade (Rose) Rowland 0633954e24 working 2025-09-24 00:23:05 -07:00
Switch Angel AKA Jade Rose cedf09168f Merge pull request 'fix: time signal' (#1583) from fix_time into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1583
2025-09-23 13:28:19 +02:00
Switch Angel AKA Jade Rose 3373225f53 Merge branch 'main' into fix_time 2025-09-23 13:13:51 +02:00
Jade (Rose) Rowland 1eb9dc73fa fix duck 2025-09-22 00:34:57 -04:00
Jade (Rose) Rowland fdcdc3aaa0 rm deadcode 2025-09-22 00:13:59 -04:00
Jade (Rose) Rowland da926805b3 rm dead code 2025-09-22 00:12:48 -04:00
Jade (Rose) Rowland 82893ffc22 fix import 2025-09-22 00:11:02 -04:00
Jade (Rose) Rowland beafd9c700 format 2025-09-22 00:07:06 -04:00
Jade (Rose) Rowland c5bd2a7487 working 2025-09-21 23:54:04 -04:00
Kissaki 4d39f36868 Fix web README sample code
Looks like the code was copied, and then the wrong string was replaced when creating this code sample.
2025-09-21 18:31:59 +02:00
Kissaki c64aa3bf01 Fix link syntax in project-start 2025-09-21 18:27:05 +02:00
Dr Mathew R Pocock b4d57f12fe Merge branch 'main' into feature/autocomplete-sound-names 2025-09-21 18:13:40 +02:00
froos 118086aff5 Merge pull request 'mondo: fix all + setcpm + setcps' (#1600) from mondo-fixes into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1600
2025-09-21 16:16:05 +02:00
Felix Roos 452827630b move unpure up 2025-09-21 16:13:09 +02:00
Felix Roos 86248328cc fix: mondo setcps / setcpm 2025-09-21 16:09:10 +02:00
Felix Roos 8833d623f7 fix: all function in mondo 2025-09-21 16:06:28 +02:00
froos 3fff4609a0 Merge pull request 'fix: osc error message' (#1597) from osc-debug-flag into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1597
2025-09-19 21:59:42 +02:00
Dr Mathew R Pocock 98a1573e27 Merge branch 'main' into feature/autocomplete-sound-names 2025-09-18 22:54:41 +02:00
Matthew Pocock 7080490c68 Merge handlers and cache regexes in autocomplete
- Merged scalePreColonHandler and scaleAfterColonHandler into single scaleHandler
- Merged modePreColonHandler and modeAfterColonHandler into single modeHandler
- Cached all regex patterns as constants above their respective handler functions
- Eliminated regex compilation overhead on every keystroke/navigation event
- Improved code maintainability by reducing duplication between similar handlers
- Preserved exact same functionality while improving performance

Each handler now follows a consistent pattern of checking after-colon context
first (more specific) then pre-colon context, with all regex patterns
pre-compiled for better performance during intensive autocomplete sessions.
2025-09-18 21:52:40 +01:00
froos e2b5b92a0c Merge pull request 'osc: --debug flag to see incoming messages' (#1595) from osc-debug-flag into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1595
2025-09-18 21:09:55 +02:00
Felix Roos 1c3e07afd3 fix: rephrase error message + bump to 1.2.10 2025-09-18 20:40:25 +02:00
Felix Roos c54fa7d266 chore: bump osc to 1.2.8 2025-09-18 20:39:05 +02:00
Felix Roos a25f763796 docs: add --debug flag to readme 2025-09-18 20:37:19 +02:00
Felix Roos 91ad3d729f feat: osc add --debug flag to log messages + log errors 2025-09-18 20:36:40 +02:00
Felix Roos a0c2edad30 fix: add clamp function 2025-09-18 10:54:41 +02:00
Felix Roos 82c9047195 fix: unstable filter 2025-09-18 10:47:23 +02:00
Matthew Pocock f51ad2cb7e Merge branch 'main' into feature/autocomplete-sound-names 2025-09-17 23:08:06 +01:00
froos 4cb0488839 Merge pull request 'simplify osc usage' (#1588) from osc-server-via-npx into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1588
2025-09-17 14:12:09 +02:00
Felix Roos 663229ecde bump osc to 1.2.8 2025-09-17 13:50:02 +02:00
Felix Roos cdb623cb66 overhaul osc readme 2025-09-17 13:39:35 +02:00
Felix Roos 28d7e0e489 export osc function to be able to do all(osc) 2025-09-17 13:39:28 +02:00
Felix Roos aba594b72a fix: bin field 2025-09-17 12:52:42 +02:00
Felix Roos 5d7c6c3e4b fix: add node shebang + bump osc to 1.2.6 2025-09-17 12:47:41 +02:00
Felix Roos 820744dc27 bump osc to 1.2.5 2025-09-17 12:42:11 +02:00
Felix Roos 5445f0812f configurable port for osc bridge + add bin field 2025-09-17 12:41:46 +02:00
Dr Mathew R Pocock 49868fc119 Merge branch 'main' into feature/autocomplete-sound-names 2025-09-16 21:00:40 +02:00
Jade (Rose) Rowland a68c784753 rm unessecary change 2025-09-16 11:55:31 -04:00
Jade (Rose) Rowland f2b2f9f959 format 2025-09-16 11:53:19 -04:00
Jade (Rose) Rowland 53dd53553a Merge branch 'main' into fix_time 2025-09-16 11:52:54 -04:00
Jade (Rose) Rowland 89b7eac789 fix test 2025-09-16 11:52:36 -04:00
Jade (Rose) Rowland 9cdba1a50e Working 2025-09-16 11:36:21 -04:00
Switch Angel AKA Jade Rose 98b7003504 Merge pull request 'dev: logger errors to console in dev mode' (#1585) from devlog into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1585
2025-09-16 16:59:57 +02:00
Matthew Pocock cb2dc6304f Merge branch 'feature/autocomplete-sound-names' of ssh://codeberg.org/drdozer/strudel into feature/autocomplete-sound-names 2025-09-16 14:51:50 +01:00
Matthew Pocock edb6c0db2e Reordered handlers to be a bit more organised. 2025-09-16 14:45:22 +01:00
Dr Mathew R Pocock a46a055246 Merge branch 'main' into feature/autocomplete-sound-names 2025-09-16 15:42:35 +02:00
Jade (Rose) Rowland 9a8f8a051c rm comment 2025-09-16 01:48:37 -04:00
Jade (Rose) Rowland 3eb40ee7d3 working in dev 2025-09-16 01:44:01 -04:00
Jade (Rose) Rowland 4cc453c640 fix test 2025-09-15 22:09:05 -04:00
Jade (Rose) Rowland 74e27ca94f coerce in correct place 2025-09-15 21:57:56 -04:00
Jade (Rose) Rowland 7dfd7dbcdc rmconsole 2025-09-15 21:47:40 -04:00
Jade (Rose) Rowland 2cba1dcb31 working 2025-09-15 21:46:37 -04:00
Switch Angel AKA Jade Rose 48a6a12648 Merge pull request 'Bug Fix / Feature: Updates to duck to avoid clicks and allow configuration over release/attack' (#1514) from glossing/strudel:glossing/ducking-click into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1514
2025-09-16 03:19:36 +02:00
Dr Mathew R Pocock 71dd45cd4b Merge branch 'main' into feature/autocomplete-sound-names 2025-09-16 02:13:26 +02:00
froos 6bbf7cbe32 Merge pull request 'Feat: Enhance scale function to quantize notes to a named scale' (#1492) from glossing/strudel:glossing/scale-for-notes into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1492
2025-09-15 23:36:30 +02:00
froos 9f36b73081 Merge pull request 'add tic80 font' (#1579) from tic80font into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1579
2025-09-15 22:52:13 +02:00
Matthew Pocock 6ebe84e096 Added completion for chord. 2025-09-15 21:34:15 +01:00
Felix Roos a7e485992e add tic80 font 2025-09-15 20:54:39 +02:00
Matthew Pocock cb011c8bb0 Add autocomplete for mode function
- Added modePreColonHandler for autocomplete of mode values (below, above, duck, root)
- Added modeAfterColonHandler for pitch name completion after colon in mode:anchor syntax
- Follows same pattern as sound/bank/scale handlers for complex expressions
- Supports expressions like '<above [below root]>' with proper fragment matching
- Uses regex pattern (?:[\s\[\{\()<])([\w:]*)$ to handle delimited expressions
2025-09-15 18:44:30 +01:00
drdozer c8875b29c1 Improve autocompletion behavior
- Refactored handlers to use consistent early return pattern for better readability
- Added blocking behavior for unquoted contexts (sound(, scale(, bank()) to guide users toward correct syntax instead of showing irrelevant fallback completions
- Fixed soundHandler to show all sounds when fragment is empty (e.g., sound(""))
- Simplified bankHandler by removing complex quote handling logic in favor of consistent blocking pattern
- Made scale handler regex patterns consistent (removed leading dots)
- All handlers now follow same structure: block unquoted contexts, provide completions for quoted contexts
2025-09-15 14:27:59 +01:00
drdozer 978616833a Merged autocomplete.mjs conflict. 2025-09-15 13:01:16 +01:00
Aria ab74ccfe7c Merge branch 'main' into glossing/ducking-click 2025-09-14 18:28:00 -05:00
Aria 92b2013cf6 Correctly handle silences for non-notes 2025-09-14 17:04:39 -05:00
froos 2e97fb7be2 Merge pull request 'supradough: fix delay + add some jsdoc types' (#1578) from supradough-fixes into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1578
2025-09-15 00:00:18 +02:00
Felix Roos df1934f87b add some typechecking + fix delay 2025-09-14 23:54:51 +02:00
froos d3472feb5c Merge pull request 'added plyWith/plyWithClassic functions' (#1571) from Dsm0/strudel:add_plyWith into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1571
2025-09-14 12:42:57 +02:00
Dsm0 addb6db1c7 updated names + snapshot 2025-09-14 02:21:25 -07:00
froos 566d590453 Merge pull request 'feat: sound alias' (#1494) from Antipathie/strudel:feature/592-sound-alias into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1494
2025-09-14 10:39:11 +02:00
froos e57bd98da0 Merge branch 'main' into feature/592-sound-alias 2025-09-14 10:34:47 +02:00
Dsm0 f5c4373f99 added plyWith/plyWithClassic functions 2025-09-13 17:21:19 -07:00
froos e762291bb7 Merge pull request 'Bug Fix: Allow penv values to be falsy' (#1559) from glossing/strudel:glossing/penv-with-zeros into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1559
2025-09-14 01:20:14 +02:00
Felix Roos 9da027d377 hotfix: format 2025-09-14 01:11:34 +02:00
froos 96dccdc38b Merge pull request 'Update website/src/pages/workshop/first-sounds.mdx' (#1566) from fesmith/strudel:main into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1566
2025-09-14 01:10:47 +02:00
Felix Roos d6254294b0 fix: bring back tests on external PRs (push doesn't cut it for forks) 2025-09-14 01:09:30 +02:00
froos 339c1bb573 Merge pull request 'fix: autocomplete-styles + html rendering' (#1570) from autocomplete-styles into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1570
2025-09-14 01:07:47 +02:00
Felix Roos 9782795761 fix: autocomplete container style 2025-09-14 01:04:48 +02:00
Felix Roos 2d2b238da9 fix: use template element for string to html 2025-09-14 01:03:14 +02:00
froos f0839e02eb Merge pull request 'Feature: Synonyms in autocomplete and reference' (#1535) from glossing/strudel:glossing/synonyms-in-autocomplete into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1535
2025-09-14 00:49:16 +02:00
Felix Roos a9f7d825c8 hotfix: format 2025-09-14 00:40:54 +02:00
Aria 709b654ed3 Add synonyms to autocomplete 2025-09-13 16:21:09 -05:00
drdozer c265595536 Merge branch 'feature/autocomplete-sound-names' of ssh://codeberg.org/drdozer/strudel into feature/autocomplete-sound-names 2025-09-13 21:36:48 +01:00
drdozer 1670aebad8 Updated the gitignore rules for vscode. 2025-09-13 21:36:24 +01:00
drdozer 39460eb100 Commiting lockfile. 2025-09-13 21:36:24 +01:00
drdozer cd659ac2a1 feat: sound autocomplete matches anywhere in name using includes() 2025-09-13 21:36:24 +01:00
drdozer ed182d4b3f Updated the codemirror packages to be able to access additional imports. 2025-09-13 21:36:24 +01:00
drdozer 90614612e2 feat: add E# and B# to pitchNames for complete enharmonic coverage 2025-09-13 21:36:24 +01:00
drdozer 6b6d4b86a6 refactor: modularize autocomplete context handlers using strategy array 2025-09-13 21:36:24 +01:00
drdozer 0b67473bd3 refactor: modularize autocomplete context handlers using strategy array 2025-09-13 21:36:24 +01:00
drdozer d87ce960d2 feat: implement context-aware autocomplete
Adds context-sensitive autocompletion for:
- Sound names in s("...") and sound("...") after the opening quote or after whitespace/bracket
- Bank names in bank("...") with quote handling and live filtering
- Scale types in .scale("...") after the colon, inserting colon-form for multi-word names
- Pitch names (C, C#, Db, etc.) for scale keys on explicit completion (Ctrl+Space) before the colon
- Blocks fallback completions in scale context before colon to avoid function list cross-talk
2025-09-13 21:36:24 +01:00
Aria 23aa8ef509 Add ability for LFOs to target.. other lfos :devil emoji: 2025-09-13 14:49:36 -05:00
Aria 945b325336 Codeformat, example tests 2025-09-13 14:33:32 -05:00
Aria 502f0b5c23 Merge branch 'main' into glossing/lfo-anything 2025-09-13 14:32:41 -05:00
Aria 69b034349a Codeformat 2025-09-13 14:30:05 -05:00
Aria ed00686804 Codeformat 2025-09-13 14:29:28 -05:00
Aria e10c469749 Merge branch 'main' into glossing/ducking-click 2025-09-13 14:28:35 -05:00
Aria 5f7e10733a Merge branch 'main' into glossing/distortion-modes 2025-09-13 14:23:17 -05:00
froos d81a214c74 Merge pull request 'Docs: add xen package examples' (#1446) from dudymas/strudel:docs/xen/added-tune into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1446
2025-09-13 20:01:47 +02:00
froos e57f240e70 Merge branch 'main' into docs/xen/added-tune 2025-09-13 20:00:35 +02:00
Felix Roos e18296e760 hotfix: word 2025-09-13 19:52:07 +02:00
froos c145355ccc Merge pull request 'Update website/src/pages/learn/code.mdx' (#1391) from anecondev/strudel:main into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1391
2025-09-13 19:51:09 +02:00
fesmith 352a3c39d7 Update website/src/pages/workshop/first-sounds.mdx 2025-09-13 00:00:36 +02:00
drdozer c85a4d4fc1 Merge branch 'feature/autocomplete-sound-names' of ssh://codeberg.org/drdozer/strudel into feature/autocomplete-sound-names 2025-09-12 12:12:02 +01:00
drdozer 7676641c9e Commiting lockfile. 2025-09-12 12:11:36 +01:00
Dr Mathew R Pocock 260d2e499e Merge branch 'main' into feature/autocomplete-sound-names 2025-09-12 13:04:11 +02:00
Felix Roos a46617f3f0 hotfix: use ?audioworklet for supradough worklet import 2025-09-12 10:16:37 +02:00
Felix Roos d164b5e7f5 Revert "Revert "Merge pull request 'supradough poc' (#1362) from supradough into main""
This reverts commit c0bf86d11e.
2025-09-12 10:08:55 +02:00
Felix Roos c0bf86d11e Revert "Merge pull request 'supradough poc' (#1362) from supradough into main"
This reverts commit 6f06683d70, reversing
changes made to 637d714ab2.
2025-09-11 23:19:22 +02:00
Switch Angel AKA Jade Rose 6f06683d70 Merge pull request 'supradough poc' (#1362) from supradough into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1362
2025-09-11 22:52:29 +02:00
drdozer e3409e52d0 Merge branch 'feature/autocomplete-sound-names' of ssh://codeberg.org/drdozer/strudel into feature/autocomplete-sound-names 2025-09-11 21:38:53 +01:00
drdozer 41d6f1b5da feat: sound autocomplete matches anywhere in name using includes() 2025-09-11 21:37:35 +01:00
Dr Mathew R Pocock aca4601734 Merge branch 'main' into feature/autocomplete-sound-names 2025-09-11 21:22:16 +02:00
drdozer 2a00fcdf5d Updated the codemirror packages to be able to access additional imports. 2025-09-11 19:01:22 +01:00
drdozer 9200a67a60 feat: add E# and B# to pitchNames for complete enharmonic coverage 2025-09-11 19:00:05 +01:00
drdozer 80fe5b8140 refactor: modularize autocomplete context handlers using strategy array 2025-09-11 18:59:50 +01:00
drdozer 085e839bfe refactor: modularize autocomplete context handlers using strategy array 2025-09-11 18:59:26 +01:00
drdozer 7ff7e8852b feat: implement context-aware autocomplete
Adds context-sensitive autocompletion for:
- Sound names in s("...") and sound("...") after the opening quote or after whitespace/bracket
- Bank names in bank("...") with quote handling and live filtering
- Scale types in .scale("...") after the colon, inserting colon-form for multi-word names
- Pitch names (C, C#, Db, etc.) for scale keys on explicit completion (Ctrl+Space) before the colon
- Blocks fallback completions in scale context before colon to avoid function list cross-talk
2025-09-11 18:42:23 +01:00
Felix Roos 637d714ab2 Publish
- @strudel/mondo@1.1.4
2025-09-11 19:14:00 +02:00
Felix Roos c42d00f048 hotfix: export mondo getLocations 2025-09-11 19:11:45 +02:00
Felix Roos 702e558d1a Publish
- @strudel/mondo@1.1.3
2025-09-11 17:30:38 +02:00
froos bcc2e8f759 Merge pull request 'fix: exclude mondough dependencies' (#1563) from fix-mondo-package into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1563
2025-09-11 17:29:34 +02:00
Felix Roos 27339715b7 fix: exclude mondough dependencies 2025-09-11 17:22:06 +02:00
Felix Roos 5e2e6411e5 Publish
- @strudel/codemirror@1.2.5
 - @strudel/repl@1.2.6
2025-09-11 08:26:20 +02:00
Aria 9848740e18 Formatting and tests 2025-09-10 21:39:02 -05:00
Aria 51b150b829 Optimize folding for audio rate 2025-09-10 21:27:56 -05:00
froos 0fac16e769 Merge pull request 'add basicSetup for keybindings' (#1462) from Dsm0/strudel:codemirror-keymap-fix into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1462
2025-09-11 00:27:20 +02:00
Felix Roos d0ce82e3cd Publish
- @strudel/codemirror@1.2.4
 - @strudel/core@1.2.4
 - @strudel/csound@1.2.5
 - @strudel/draw@1.2.4
 - @strudel/gamepad@1.2.4
 - @strudel/hydra@1.2.4
 - @strudel/midi@1.2.5
 - @strudel/mini@1.2.4
 - @strudel/mondo@1.1.2
 - @strudel/motion@1.2.4
 - @strudel/mqtt@1.2.4
 - @strudel/osc@1.2.4
 - @strudel/repl@1.2.5
 - @strudel/sampler@0.2.3
 - @strudel/serial@1.2.4
 - @strudel/soundfonts@1.2.5
 - superdough@1.2.5
 - @strudel/tonal@1.2.4
 - @strudel/transpiler@1.2.4
 - @strudel/web@1.2.5
 - @strudel/webaudio@1.2.5
 - @strudel/xen@1.2.4
2025-09-10 23:08:16 +02:00
Switch Angel AKA Jade Rose e82629de2e Merge pull request 'feat: add delete user samples button for convenience' (#1556) from delete_samples_button into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1556
2025-09-10 17:25:25 +02:00
Aria 38ce593c60 Allow penv values to be falsy 2025-09-09 20:47:09 -05:00
Switch Angel AKA Jade Rose 8a91549a7b Merge branch 'main' into delete_samples_button 2025-09-09 06:42:38 +02:00
froos cc27d482cd Merge pull request 'Fix formatting of REPL footnote' (#1547) from ddbeck/strudel:fix-footnote into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1547
2025-09-08 08:54:00 +02:00
Switch Angel AKA Jade Rose 37e640470b Merge pull request 'fix: OSC' (#1557) from fixosc into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1557
2025-09-08 05:38:07 +02:00
Jade (Rose) Rowland 5e5e7730c1 rm errorlogger console 2025-09-07 23:29:24 -04:00
Jade (Rose) Rowland 89e7d52308 fixed 2025-09-07 23:28:18 -04:00
Jade (Rose) Rowland 99bb227cf4 format 2025-09-07 22:48:04 -04:00
Jade (Rose) Rowland 70e776e799 cleanup div 2025-09-07 22:44:09 -04:00
Jade (Rose) Rowland 66aad0004a fix formatting 2025-09-07 22:43:13 -04:00
Jade (Rose) Rowland a968545458 change sound background to distinguish action buttons 2025-09-07 22:41:03 -04:00
Jade (Rose) Rowland 5414bbe85d only show button on user samples 2025-09-07 22:27:48 -04:00
Jade (Rose) Rowland e7e80bfd83 working 2025-09-07 22:21:03 -04:00
froos c57f5bb429 Merge pull request 'Add examples for ? and | operators to documentation' (#1532) from james-collapse/strudel:mininotation-randomness-docs into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1532
2025-09-07 22:47:10 +02:00
froos f2608e712b Merge pull request 'Signal flow documentation' (#1504) from glossing/strudel:glossing/signal-flow-documentation into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1504
Reviewed-by: Switch Angel AKA Jade Rose <daslyfe@noreply.codeberg.org>
2025-09-07 21:48:18 +02:00
froos 34b41fc26f Merge pull request 'Allow flattening of dirs with sample server' (#1529) from glossing/strudel:glossing/sample-server-with-flat into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1529
2025-09-07 21:27:28 +02:00
Switch Angel AKA Jade Rose f6e171fed8 Merge pull request 'fix: prevent orbit clicking by defining max number of channels in an orbit' (#1552) from orbitfix into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1552
2025-09-07 21:05:23 +02:00
Jade (Rose) Rowland 2511dcc09e working 2025-09-07 15:02:13 -04:00
Aria 798eb22d9a Use currentTime for exact scheduling 2025-09-06 10:09:44 -05:00
Daniel D. Beck 977420e74d Fix formatting of REPL footnote 2025-09-06 15:33:08 +02:00
Aria 9c108862ef Corrected piping 2025-09-05 22:09:50 -05:00
Felix Roos 2fbdc9fdd7 hotfix: formatting 2025-09-06 00:43:03 +02:00
Felix Roos 0a96fa5896 hotfix: comment out tauri stuff to fix osc 2025-09-06 00:42:36 +02:00
Aria 46a45b4596 Some missing cleanup 2025-09-04 20:51:06 -05:00
Aria 1205573bc6 Merge branch 'main' into glossing/wavetable-synth 2025-09-04 20:31:01 -05:00
Aria 2ccbb0596d Codeformat 2025-09-04 20:27:32 -05:00
Aria 862b88b6c4 Some typos and cleanup 2025-09-04 20:27:05 -05:00
Aria 9b1c23d49f Some tuning experimentally and adding back chebyshev 2025-09-04 20:05:28 -05:00
Aria 42ab65abdb Move things around to allow selection by name and avoid circular imports; fixed chebyshev 2025-09-04 11:47:01 -05:00
Aria bb982e6b9b First pass at modes 2025-09-03 21:55:48 -05:00
james-collapse 3e0e903d38 Merge branch 'main' into mininotation-randomness-docs 2025-09-03 20:19:54 +02:00
James Walker 591c3fe08f Add documentation for ?n in mini-notation 2025-09-03 19:16:47 +01:00
Antipathie 56b1ea3fa5 Add soundAlias function 2025-09-03 00:47:45 +02:00
Aria c199b51645 Update autocomplete name to be the label and update ref to use main name as a synonym 2025-09-02 16:29:01 -05:00
Aria 8d2a368da9 Add some more synonyms to controls docs 2025-09-02 16:14:50 -05:00
Aria 052d09e892 Add synonyms to reference 2025-09-02 16:14:38 -05:00
Aria 439a7dc5e6 Include synonyms in autocomplete 2025-09-02 16:05:40 -05:00
froos 06ebcbff8c Merge pull request 'Padding for tooltips, preserving linebreaks in descriptions, not closing autocompletes on click' (#1521) from glossing/strudel:glossing/tooltip-padding-and-paragraphs into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1521
2025-09-02 08:42:41 +02:00
Aria 4e2e790864 Set delay and reverb nodes properly 2025-09-01 20:45:53 -05:00
Aria 4f3b40bd7b Merge branch 'main' into glossing/ducking-click 2025-09-01 20:45:00 -05:00
James Walker 142160d79a Add examples for ? and | operators 2025-09-01 21:08:06 +01:00
Switch Angel AKA Jade Rose ff2c59a2a6 Merge pull request 'Update "restore defaults" to not delete patterns' (#1519) from glossing/strudel:glossing/dont-delete-patterns-on-default into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1519
2025-09-01 17:50:08 +02:00
Aria 9b9176325b Update restore defaults to not delete patterns 2025-09-01 17:50:08 +02:00
Jade (Rose) Rowland b8e1b8d7ac Merge branch 'main' into supradough 2025-08-31 22:42:07 -04:00
Switch Angel AKA Jade Rose e84c39837f Merge pull request 'feat: add the ability to control the speed and start time of the reverb IR' (#1501) from irspeed into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1501
2025-08-31 19:10:02 +02:00
Jade (Rose) Rowland 6527c68cda Merge branch 'main' into irspeed 2025-08-31 12:51:28 -04:00
Aria 6a09f54b25 Add vibrato to list of continuous modulators 2025-08-31 01:03:09 -05:00
yaxu dc6b766ab7 Update README.md 2025-08-30 12:47:06 +02:00
yaxu 9eb3c9410d Add verify link to mastodon a/c 2025-08-30 12:46:00 +02:00
Aria e4070b86f8 More descriptive variables and comments 2025-08-29 14:33:14 -05:00
Aria 189e650a73 Add flat flag, automatic json saving; filter out non-audio at base dir 2025-08-29 12:18:28 -05:00
Aria fe46e1da53 Update docstring to include new warp modes; save sample server for a separate PR 2025-08-28 16:28:33 -05:00
Aria d1869c18ba Remove internal LFO 2025-08-28 16:25:10 -05:00
Aria 02cd79a6d9 Add wavetable oscillator with scanning, warps, and detune 2025-08-28 16:25:10 -05:00
Aria 9eeb6da3e6 Codeformat 2025-08-28 14:54:09 -05:00
Aria 869141b0a3 Parity with old adsr 2025-08-28 00:31:37 -05:00
Aria ea017e7622 Working version 2025-08-27 20:11:00 -05:00
Aria 763f900c69 First pass at envelopes with curves 2025-08-27 19:19:54 -05:00
Aria cd7865a66f Merge branch 'main' into glossing/lfo-anything 2025-08-27 16:28:26 -05:00
Aria 9c8e39d83d Add.. a lot of doc strings 2025-08-27 16:27:36 -05:00
Aria a5886bb9d4 Use white-space instead; fix scrolling; don't close autocomplete tooltips on click 2025-08-26 14:14:00 -05:00
Aria 877bc95a58 Switch to more specific class and fix p->div 2025-08-26 12:54:39 -05:00
Aria 18b1739b89 Add a space after paragraphs in descriptions and add padding to hover tooltips 2025-08-26 12:53:38 -05:00
Aria 022ac95bbd Typo 2025-08-26 12:09:12 -05:00
Aria b3e25cfc52 Merge branch 'main' into glossing/ducking-click 2025-08-26 12:08:58 -05:00
Aria 3d25aa1b91 Rename params, more examples 2025-08-26 12:06:10 -05:00
Aria 0a4b6a01b3 Merge branch 'main' into glossing/random 2025-08-24 21:19:49 -05:00
Aria b3e433291c Turn back on silent 2025-08-24 21:15:47 -05:00
Aria 969c9663ef Update tests for new randomness 2025-08-24 21:15:11 -05:00
Aria 5e4e678800 Test bleed, some docstrings 2025-08-24 21:14:57 -05:00
Switch Angel AKA Jade Rose b54139376e Merge pull request 'Bug Fix: Duck on Mobile / Safari' (#1503) from glossing/strudel:glossing/ducks-on-mobile into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1503
2025-08-25 02:31:21 +02:00
Aria d64a0ef0eb Lint requires no empty blocks: pass comment 2025-08-25 02:31:21 +02:00
Aria 659071a4ee Ensure zeroGain is cleaned up after use; move start/stop to after callback assigned for safety 2025-08-25 02:31:21 +02:00
Aria 64f7bc4442 Working version of duck on iOS safari 2025-08-25 02:31:21 +02:00
Aria b8423f0ed1 Add docstring 2025-08-24 12:01:12 -05:00
Aria 5d5159a08f Add option to use old random and a benchmark 2025-08-24 11:56:11 -05:00
Aria 1e96d59ac8 Merge branch 'main' into glossing/random 2025-08-24 11:05:57 -05:00
Alex McLean 8c97f2e2d0 Merge pull request 'fix benchmarks' (#1517) from fix-bench into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1517
2025-08-23 18:39:52 +02:00
alex b8c98736c5 fix benchmarks 2025-08-23 17:29:15 +01:00
Aria b8c46d6b26 Added some description and examples of multi-accidentals and negative octaves 2025-08-22 13:23:41 -05:00
Aria 79453ac2c3 Allow negatives and multi-accidentals 2025-08-22 13:17:13 -05:00
Aria b08890bd9e Working version with note names 2025-08-22 11:25:13 -05:00
Aria 938c92fda2 Merge branch 'main' into glossing/scale-for-notes 2025-08-21 15:58:43 -05:00
Aria a0fc52b1ec Final tweaks 2025-08-21 14:42:52 -05:00
Aria 9a9fe83f9c Example tests 2025-08-21 14:13:01 -05:00
froos 0693a32736 Merge pull request 'add --json flag to @strudel/sampler to generate a strudel.json' (#1513) from strudeljson-generate into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1513
2025-08-21 20:57:31 +02:00
Felix Roos 42a903ecc0 add --yes flag to readme, making sure first run works 2025-08-21 20:36:42 +02:00
Felix Roos da283eb55a doc: generate strudel.json 2025-08-21 20:36:17 +02:00
Felix Roos b12707316a bump @strudel/sampler to 0.2.1 2025-08-21 20:30:32 +02:00
Felix Roos 66aa3ac1da add --json flag to strudel sampler 2025-08-21 20:30:02 +02:00
Aria bf5d9917ab Codeformat and examples 2025-08-21 13:20:12 -05:00
Aria 4f15d681b0 Add release parameter, avoid clicks, some cleanup 2025-08-21 13:12:36 -05:00
froos d81b1ab65c Merge pull request 'remove hs2js postinstall' (#1510) from remove-postinstall into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1510
2025-08-21 10:04:28 +02:00
Felix Roos 8465517c76 remove hs2js postinstall 2025-08-21 10:00:41 +02:00
Felix Roos 215ab87809 fix: prettier 2025-08-21 09:41:21 +02:00
Aria 6a9739bed5 Code format and a typo on lfoNum 2025-08-20 13:39:24 -05:00
Aria d8f0d70908 Big refactor; start envelope at current value 2025-08-20 13:22:37 -05:00
Aria e25eab11ad Working version of envelopes 2025-08-20 10:47:57 -05:00
Aria efb337677c Fully working version with multiple LFOs 2025-08-20 10:08:36 -05:00
froos e5fe998327 Merge pull request 'Docs: Small additions to Learn Docs and fixed refrences to function Documentation' (#1502) from fyynn/strudel:main into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1502
2025-08-20 15:15:31 +02:00
froos 6f75a0a62b Merge pull request 'fix: repl autocomplete not rendering correctly' (#1480) from robase/strudel:fix-repl-autocomplete-styles into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1480
2025-08-20 12:31:36 +02:00
froos 0464845262 Merge pull request 'BUG FIX: make 'midin' initialization work with multiple controllers' (#1469) from cbabraham/strudel:fix/midi-init-bug into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1469
2025-08-20 12:10:00 +02:00
Aria 4a70ac5a99 Working version of LFOs 2025-08-20 00:38:25 -05:00
Aria 554d6118c6 Merge branch 'main' into glossing/random 2025-08-19 19:10:18 -05:00
Aria 03271ec5fb Remove stray comments 2025-08-19 18:15:24 -05:00
Aria a0760f9468 Merge branch 'main' into glossing/random 2025-08-19 17:46:09 -05:00
Aria e490774294 Mention order of effects 2025-08-19 16:06:18 -05:00
Aria 34e8a57472 Typos grammar etc 2025-08-19 11:32:07 -05:00
Aria 59c8d70714 Code format 2025-08-19 11:27:56 -05:00
Aria ce7cff2c3b Clean up wording on orbit routing 2025-08-19 11:26:25 -05:00
Aria 32fe73aba2 Update effects documentation to include information on signal flow 2025-08-19 11:10:34 -05:00
fyynn d6ee10e05c fixed new scrub refrence 2025-08-19 00:44:46 +02:00
fyynn 36441e7b73 Fixing hush refrence to code documentation
Signed-off-by: fyynn <fyynn@noreply.codeberg.org>
2025-08-19 00:25:31 +02:00
fyynn 189daa3942 Added Refrence to arp() arpWidth() to Docs
Signed-off-by: fyynn <fyynn@noreply.codeberg.org>
2025-08-19 00:21:32 +02:00
fyynn d009b9592e Added Refrence to arp() arpWidth() and hush to Docs
Signed-off-by: fyynn <fyynn@noreply.codeberg.org>
2025-08-19 00:09:41 +02:00
fyynn f7f1bd63e8 Adding the Duck/Sidechain effect to Learn Docs (learn/effects.mdx)
Added the duck Effect to the section global effects.

Signed-off-by: fyynn <fyynn@noreply.codeberg.org>
2025-08-18 23:49:43 +02:00
fyynn 7d24e45692 Added scrub() to Learn Docs
Signed-off-by: fyynn <fyynn@noreply.codeberg.org>
2025-08-18 23:36:39 +02:00
Jade (Rose) Rowland cf55d4c8d1 rm var 2025-08-18 11:49:11 -04:00
Jade (Rose) Rowland f17a4d045f Publish
- @strudel/codemirror@1.2.3
 - @strudel/core@1.2.3
 - @strudel/csound@1.2.4
 - @strudel/draw@1.2.3
 - @strudel/embed@1.1.1
 - @strudel/gamepad@1.2.3
 - @strudel/hydra@1.2.3
 - @strudel/midi@1.2.4
 - @strudel/mini@1.2.3
 - mondolang@1.1.1
 - @strudel/mondo@1.1.1
 - @strudel/motion@1.2.3
 - @strudel/mqtt@1.2.3
 - @strudel/osc@1.2.3
 - @strudel/reference@1.2.1
 - @strudel/repl@1.2.4
 - @strudel/serial@1.2.3
 - @strudel/soundfonts@1.2.4
 - superdough@1.2.4
 - @strudel/tonal@1.2.3
 - @strudel/transpiler@1.2.3
 - @strudel/web@1.2.4
 - @strudel/webaudio@1.2.4
 - @strudel/xen@1.2.3
2025-08-18 11:46:29 -04:00
Jade (Rose) Rowland e7e636886d add tests 2025-08-17 17:21:36 -04:00
Alex McLean 8e1e83f3cf Merge pull request 'euclidish' (#1482) from euclidish into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1482
2025-08-17 23:18:45 +02:00
alex 2d64b538e7 Merge branch 'main' into euclidish 2025-08-17 22:16:58 +01:00
alex b717615558 optimise euclidish, creating new morph function in the process 2025-08-17 22:13:26 +01:00
Jade (Rose) Rowland e9aef9e4d4 working 2025-08-17 16:49:10 -04:00
Switch Angel AKA Jade Rose 8c4f10464b Merge pull request 'feat: Create a duck (sidechain) orbit effect' (#1470) from pump into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1470
2025-08-17 06:37:22 +02:00
Jade (Rose) Rowland 018649c4f3 fix test 2025-08-16 23:42:14 -04:00
Jade (Rose) Rowland 5ff59a878d fix lookahead 2025-08-16 23:38:03 -04:00
Jade (Rose) Rowland a20468b85f minor changes 2025-08-16 23:19:34 -04:00
Jade (Rose) Rowland 9648e35de2 Merge branch 'main' into pump 2025-08-16 23:06:36 -04:00
Switch Angel AKA Jade Rose cd344cefe0 Merge pull request 'Bug Fix: Restore log functionality after onTrigger arg removal' (#1491) from glossing/strudel:glossing/fix-log into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1491
Reviewed-by: Switch Angel AKA Jade Rose <daslyfe@noreply.codeberg.org>
2025-08-17 04:40:14 +02:00
Switch Angel AKA Jade Rose 1f6a313f02 Merge pull request 'Bug Fix: Handle zero appearing first in FM's ADSR' (#1496) from glossing/strudel:glossing/fix-fm-with-adsr-zeros into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1496
Reviewed-by: Switch Angel AKA Jade Rose <daslyfe@noreply.codeberg.org>
2025-08-17 04:33:38 +02:00
Switch Angel AKA Jade Rose 5cbeb227d8 Merge pull request 'Bug Fix: FM (and vibrato) for Supersaws' (#1495) from glossing/strudel:glossing/fix-fm-for-supersaw into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1495
Reviewed-by: Switch Angel AKA Jade Rose <daslyfe@noreply.codeberg.org>
2025-08-17 04:27:18 +02:00
Aria 058d950121 Working version of updated randomness 2025-08-15 22:57:59 -05:00
Aria c8c6a2ce08 Add example test and update fastChunk test (which was previously broken) 2025-08-15 13:34:43 -05:00
Aria 2ab2cc5fc8 Add example tests 2025-08-15 13:27:08 -05:00
Aria 3dd667e825 Fix for a zero appearing (first) in FM's ADSR 2025-08-10 17:11:59 -05:00
Alex McLean 482ebb695a Merge branch 'main' into euclidish 2025-08-10 20:49:27 +02:00
Aria 218952b8b6 Use the per-sample frequency and properly wrap polyBlep 2025-08-09 16:25:11 -05:00
Aria 2e8a8b50df Seemingly working version of supersaw FM and light cleanup 2025-08-08 22:27:05 -05:00
robase 612efad3eb clean up comments 2025-08-07 09:25:01 +02:00
robase e7839a09a1 fix: tooltip should respect themes 2025-08-07 09:25:01 +02:00
robase 3292f88810 fix: repl autocomplete not rendering correctly 2025-08-07 09:25:01 +02:00
Aria a4c040e101 Add new tests, organize old tests, fix issue with note 2025-08-06 12:37:55 -05:00
Aria 7046c1f546 Cleanup and simplification; improved docstrings 2025-08-06 10:17:48 -05:00
Aria a4ab8e1b06 First pass at extending scale function to include notes 2025-08-06 00:45:01 -05:00
Aria f22f89347e Final docstring cleanup & adding hap tag to logValues for consistency 2025-08-05 22:40:11 -05:00
Aria de15d79edf Add doscstrings and move stringifyValues into its own function for reuse 2025-08-05 22:29:59 -05:00
Aria 23e5358ae4 Formatting 2025-08-05 20:46:00 -05:00
Aria 3b6777e259 Fix signature of functions in log and logValues and add tests 2025-08-05 19:05:17 -05:00
Alex McLean ed5bf3b3fc Merge pull request 'Fix incorrect stack Mini Notation' (#1484) from samyk/strudel:main into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1484
2025-08-04 07:51:29 +02:00
daslyfe b089328da3 Merge pull request 'fix: regression caused by incorrectly exported alias for transpose and scaleTranspose' (#1489) from fixtest into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1489
2025-08-03 18:57:45 +02:00
daslyfe 784c711870 Merge branch 'main' into pump 2025-08-03 18:57:19 +02:00
Jade (Rose) Rowland 34b10b6c84 codeformat 2025-08-03 12:56:16 -04:00
Jade (Rose) Rowland 450f9685f3 fixed export 2025-08-03 12:54:19 -04:00
daslyfe 03090e399c Merge pull request 'Add strans and scaleTrans as synonyms of scaleTranspose' (#1488) from TodePond/strudel:lu/strans into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1488
2025-08-03 18:34:12 +02:00
Lu Wilson ed58d26da6 Merge branch 'main' into lu/strans 2025-08-03 16:14:33 +02:00
daslyfe e3605590e5 Merge pull request 'Add trans alias for transpose' (#1487) from TodePond/strudel:lu/trans into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1487
2025-08-02 18:18:25 +02:00
Lu[ke] Wilson d55ef8e843 add strans too 2025-08-02 10:26:36 +01:00
Lu[ke] Wilson efc2333360 add synonyms for scaleTranspose 2025-08-02 10:25:28 +01:00
Lu Wilson 92626e7c20 Merge branch 'main' into lu/trans 2025-08-02 11:18:37 +02:00
Lu[ke] Wilson ad113b3888 document ability to specify an array of names 2025-08-02 10:17:48 +01:00
Lu[ke] Wilson 39c45bc2b2 pass an array of names instead 2025-08-02 10:17:33 +01:00
daslyfe 899af88bd9 Merge branch 'main' into pump 2025-08-02 05:32:13 +02:00
Jade (Rose) Rowland c2b8cc4b82 webtimeout 2025-08-01 23:29:50 -04:00
daslyfe 40ed7b5382 Merge pull request 'feat: Create Accurate 909 bass drum synthesizer' (#1478) from 909bd into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1478
2025-08-02 03:27:24 +02:00
daslyfe 5d829419ba Merge branch 'main' into 909bd 2025-08-02 03:24:29 +02:00
daslyfe e26da854c0 Merge pull request 'feat: Add fmwave control and ability to fm with noise' (#1472) from noisefm into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1472
2025-08-02 03:23:48 +02:00
daslyfe a28b7a2d5a Merge branch 'main' into noisefm 2025-08-02 02:49:15 +02:00
daslyfe 83c776d70f Merge branch 'main' into 909bd 2025-08-02 02:49:00 +02:00
Lu[ke] Wilson 051efdc13b flyby improvement: add dec synonym to docs 2025-08-01 09:39:33 +01:00
Lu[ke] Wilson ef3cd56b0d add synonym to docs 2025-08-01 09:39:21 +01:00
Lu[ke] Wilson 9017085fa3 add trans alias for transpose 2025-08-01 09:36:36 +01:00
daslyfe cdbbe079db Merge pull request 'hotfix: uzu kit JSON should be in the repo to avoid offline loading errors' (#1485) from samplemaphotfix into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1485
2025-07-30 00:22:40 +02:00
Jade (Rose) Rowland d6045c943b working 2025-07-29 18:20:13 -04:00
samyk 6ee9dea2ff Fix incorrect stack Mini Notation 2025-07-28 20:26:34 +02:00
alex 03cbe4b6d4 delint 2025-07-28 15:48:09 +02:00
alex 784ee576da fixes 2025-07-28 15:33:18 +02:00
alex ee3e1217b4 add euclidish 2025-07-28 15:24:19 +02:00
Jade (Rose) Rowland 30c80119e9 works 2025-07-28 01:20:42 -04:00
Felix Roos 7f103e77e3 prefix "S" for solo 2025-07-28 04:05:21 +02:00
Jade (Rose) Rowland 973ae4c7da change 909bd to sbd 2025-07-27 15:02:00 -04:00
Jade (Rose) Rowland 4d13b981f1 variable srate 2025-07-27 01:28:50 -04:00
Jade (Rose) Rowland 7691403fd0 prevent clicks 2025-07-27 01:22:59 -04:00
Jade (Rose) Rowland 3b6e3624be working 2025-07-27 01:07:45 -04:00
Jade (Rose) Rowland 51f0bab1f8 duckarray 2025-07-26 12:54:59 -04:00
Jade (Rose) Rowland dae1560c40 description 2025-07-25 00:00:23 -04:00
Jade (Rose) Rowland 82f0dbb750 add another example 2025-07-24 23:59:38 -04:00
Jade (Rose) Rowland fb7d76a2ab working 2025-07-24 23:50:27 -04:00
Jade (Rose) Rowland 26225e4ea7 Merge branch 'main' into pump 2025-07-23 23:40:48 -04:00
daslyfe ab12c6ae0a Merge pull request 'feat: make uzu-drumkit the default drumkit' (#1422) from jade/uzudrumkit into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1422
2025-07-24 05:28:23 +02:00
Jade (Rose) Rowland 4a894b0be2 frmt 2025-07-23 23:25:14 -04:00
Jade (Rose) Rowland 4ad305550e Merge branch 'jade/uzudrumkit' of ssh://codeberg.org/uzu/strudel into jade/uzudrumkit 2025-07-23 23:16:39 -04:00
Jade (Rose) Rowland cf5c502a05 rm unessecary json 2025-07-23 23:16:14 -04:00
Jade (Rose) Rowland 2415210be6 fix lint 2025-07-23 18:41:20 -04:00
Jade (Rose) Rowland fe18aa770d test 2025-07-23 18:34:34 -04:00
Chandler Abraham 2eda047108 Merge branch 'main' of https://codeberg.org/uzu/strudel into fix/midi-init-bug 2025-07-22 21:52:03 -07:00
Chandler Abraham c8cf1dc712 fix(midi): ensure midin initializes device state correctly
The midin function only initialized the refs object for a device on the initial MIDI setup. This caused an error if a second MIDI device was connected in the same session, as its refs object would not exist, leading to a 'cannot read properties of undefined' error when accessed.

This commit fixes the issue by ensuring that the refs object for a given MIDI input is initialized every time  is called, not just on the first call.
2025-07-22 21:49:40 -07:00
daslyfe e136e95375 Merge branch 'main' into jade/uzudrumkit 2025-07-23 03:06:08 +02:00
daslyfe a26559fd3d Merge branch 'main' into supradough 2025-07-22 06:35:59 +02:00
daslyfe 004c0baa59 Merge pull request 'FIX: PWM modulation' (#1467) from pwfix into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1467
2025-07-21 07:16:17 +02:00
daslyfe 5f44ae9c4b Merge branch 'main' into pwfix 2025-07-21 07:13:55 +02:00
Jade (Rose) Rowland 66828e17d3 working 2025-07-21 01:11:04 -04:00
Jade (Rose) Rowland b2f90ecb3b fix def skew 2025-07-20 23:56:30 -04:00
Jade (Rose) Rowland ccf2a6de52 fixing.. 2025-07-20 23:38:16 -04:00
Jade (Rose) Rowland 9416f317d4 fixing... 2025-07-20 23:29:01 -04:00
Jade (Rose) Rowland 75b6f59212 fix 2025-07-20 23:26:17 -04:00
daslyfe 84238c8999 Merge pull request 'Tremolo modulation' (#1095) from daslyfe/gainmod into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1095
2025-07-19 17:16:21 +02:00
daslyfe 2d855cf5e8 Merge branch 'main' into daslyfe/gainmod 2025-07-19 04:06:31 +02:00
Jade (Rose) Rowland dd04d49c75 fix test 2025-07-18 22:04:18 -04:00
Jade (Rose) Rowland 34874862ab change params 2025-07-18 22:03:33 -04:00
Dsm0 5448fc6077 removed duplication and unnecessary keymappings in codemirror config 2025-07-16 15:17:34 -07:00
Dsm0 06fafbd8eb Ensure no default extensions conflict with extensions in defaultSettings 2025-07-16 15:03:55 -07:00
Dsm0 10156f0067 add basicSetup for keybindings 2025-07-15 19:13:24 -07:00
Felix Roos 5632d83afb fix: supradough onTrigger after breaking change 2025-07-16 02:21:39 +02:00
Felix Roos a32473d570 Merge remote-tracking branch 'origin/main' into supradough 2025-07-15 22:26:46 +02:00
froos 0361bc629f Merge pull request 'fix: can now use def in mondough' (#1461) from mondo-def-fix into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1461
2025-07-15 09:39:32 +02:00
Felix Roos 1fdd87a4f3 doc: def 2025-07-15 09:35:24 +02:00
Felix Roos 16e9aca222 fix: can now use def in mondough 2025-07-15 09:33:14 +02:00
froos 4a3d5ca44f Merge pull request 'fixed keybinding presedence issue' (#1456) from Dsm0/strudel:keyboard_binding_presedence_fix into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1456
2025-07-11 11:10:23 +02:00
froos 6c0e8a0833 Merge pull request 'added multicursor support on ctrl/cmd + click' (#1457) from Dsm0/strudel:multicursor-on-click into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1457
2025-07-11 11:09:04 +02:00
Jade (Rose) Rowland 7336ff0ded Merge branch 'daslyfe/gainmod' of ssh://codeberg.org/uzu/strudel into daslyfe/gainmod 2025-07-10 23:19:19 -04:00
Jade (Rose) Rowland 735f57e276 working 2025-07-10 23:18:57 -04:00
Dsm0 eb4f1f69f6 pnpm codeformat 2025-07-10 17:28:56 -07:00
Dsm0 e7e321fe03 added multicursor support on ctrl/cmd + click 2025-07-10 15:03:22 -07:00
Dsm0 bf3de368f0 added codemirror as an option + removed fallback on defaults 2025-07-10 12:11:10 -07:00
Dsm0 d645cc6fe5 fixed keybinding presedence issue 2025-07-09 13:28:22 -07:00
froos 6fe11be218 Merge pull request 'added tab-indent setting' (#1454) from Dsm0/strudel:tab-indentation into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1454
2025-07-09 09:39:45 +02:00
Felix Roos cf7fc23981 add new am examples to doc 2025-07-09 09:33:28 +02:00
Felix Roos bfdfab0a00 fix: @synonym -> @synonyms 2025-07-09 09:33:11 +02:00
Jade (Rose) Rowland edb347e85a format 2025-07-08 22:24:54 -04:00
Jade (Rose) Rowland 63fcce79e0 default cycle 2025-07-08 21:24:27 -04:00
Dsm0 8defdc424c added tab-indent setting 2025-07-08 17:57:24 -07:00
Felix Roos 16b2fc0632 Merge remote-tracking branch 'origin/main' into daslyfe/gainmod 2025-07-08 15:49:39 +02:00
froos d0a544d7a7 Merge pull request 'ontrigger-refactoring' (#1442) from ontrigger-refactoring into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1442
2025-07-08 15:48:40 +02:00
Jade (Rose) Rowland 9b3c6b9f94 c 2025-07-08 00:46:39 -04:00
Jade (Rose) Rowland 6327e17feb remove unessecary cyclist changes 2025-07-08 00:44:57 -04:00
Jade (Rose) Rowland 15fe2734e9 Merge branch 'daslyfe/gainmod' of ssh://codeberg.org/uzu/strudel into daslyfe/gainmod 2025-07-08 00:30:40 -04:00
Jade (Rose) Rowland 1dd1ce254f rm deadcode 2025-07-08 00:30:00 -04:00
daslyfe 3ea91adfd6 Merge branch 'main' into daslyfe/gainmod 2025-07-08 06:29:27 +02:00
Jade (Rose) Rowland ce5f425142 fully implemented 2025-07-08 00:26:15 -04:00
Felix Roos 671a22fc22 chore: add link to contributors 2025-07-07 23:28:41 +02:00
froos 976955dae3 Merge pull request 'fix: remove first gm_synth_bass_1, as it doesn't work in safari' (#1452) from gm_synth_bass_1 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1452
2025-07-07 23:14:24 +02:00
Felix Roos a6ad58a375 fix: remove first gm_synth_bass_1, as it doesn't work in safari 2025-07-07 23:12:15 +02:00
Felix Roos 681eed3d0e revert add logo 2025-07-07 22:23:40 +02:00
Felix Roos 81a9811803 add logo 2025-07-07 22:23:16 +02:00
Felix Roos 72b582c605 fix: remove github contributor avatars 2025-07-07 22:20:04 +02:00
froos 2f0891d4e5 Merge pull request 'fix: minor doc changes' (#1435) from Aurel300/strudel:fix/minor-docs into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1435
2025-07-07 00:06:15 +02:00
Felix Roos a7a283a99e doc: add version tagging guide to contributing.md 2025-07-06 17:00:33 +02:00
Jade (Rose) Rowland d9e44dcda6 sync without cyclist changes 2025-07-06 00:59:39 -04:00
dudymas e87bb4376f Merge branch 'main' into docs/xen/added-tune 2025-07-05 20:28:09 +02:00
dudymas 0722cf7ded feat(xen/tunejs): support sending a custom tuning 2025-07-05 13:43:42 -04:00
dudymas 37fde8f3e8 docs(website/learn/xen): discussed strumming 2025-07-05 13:43:09 -04:00
Alex McLean acd5661106 Merge pull request 'Fix randrun and deps including shuffle. Fixes #1441' (#1447) from fix-randrun into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1447
2025-07-05 12:53:44 +02:00
froos b0b2b6a120 Merge pull request 'add setDefault + resetDefaults to superdough' (#1433) from set-default-default into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1433
2025-07-05 12:15:51 +02:00
Felix Roos 664d76cf1b resetDefaults when editor is reset 2025-07-05 11:32:16 +02:00
alex a901e2e387 snapshot 2025-07-05 10:28:20 +01:00
Felix Roos 82b14b5292 fix: lint 2025-07-05 11:13:40 +02:00
alex 05bcd5e32f Fix randrun and deps including shuffle. Fixes #1441 2025-07-05 09:01:48 +01:00
Jade (Rose) Rowland 077556e7cb Merge remote-tracking branch 'origin/ontrigger-refactoring' into daslyfe/gainmod 2025-07-05 00:45:58 -04:00
Jade (Rose) Rowland 4cc2de9b7e wip 2025-07-05 00:39:23 -04:00
dudymas 8655c5b73c Merge branch 'main' into docs/xen/added-tune 2025-07-05 00:50:57 +02:00
dudymas 31c1450edc docs(website/learn/xen): add tune() examples 2025-07-04 18:50:21 -04:00
dudymas cbb4207bab chore(docker): basic support added 2025-07-04 18:50:21 -04:00
froos b0c0a393a1 Merge pull request 'disable fm for supersaw' (#1443) from supersaw-no-fm into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1443
2025-07-04 22:36:18 +02:00
Felix Roos 168269a839 disable fm for supersaw 2025-07-04 22:29:18 +02:00
Felix Roos 34771f03d4 some clarification comments 2025-07-04 22:17:23 +02:00
JoStro f5ae50c3ce Modify extend to better match behavior of ! operator 2025-07-01 22:07:22 +01:00
Aurel Bílý 504fe9ed40 document setcps in cycles reference 2025-07-01 13:45:36 +02:00
froos caf6686d01 Merge pull request 'corrected minor spelling mistake (#1425)' (#1434) from tj-mueller/strudel_1425:spelling_mistake_1425 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1434
2025-06-30 13:28:09 +02:00
tj-mueller c063fb6b1c correct rd to cr 2025-06-30 11:51:39 +02:00
Felix Roos e3680b96de refactor: remove first param of all onTrigger calls 2025-06-30 10:18:54 +02:00
Jade (Rose) Rowland 688e275e0c merge 2025-06-30 00:50:02 -04:00
Felix Roos 2e33569786 add setDefault + resetDefaults to superdough 2025-06-30 05:48:08 +02:00
froos 46fe6d3c4d Merge pull request 'Add browser cache explanation in samples.mdx' (#1369) from wyan/patch-1 into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1369
2025-06-30 05:26:10 +02:00
froos 9220b95677 Merge branch 'main' into wyan/patch-1 2025-06-30 05:24:26 +02:00
froos 5b27b19972 Merge pull request 'add-release-notes' (#1432) from add-release-notes into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1432
2025-06-30 05:18:41 +02:00
Felix Roos 5a72ea94b1 fix: format 2025-06-30 05:15:30 +02:00
Felix Roos eac6f27ca4 add 1.2.0 release notes 2025-06-29 21:29:11 +02:00
Felix Roos f2330a2307 add 1.1.0 release notes 2025-06-29 20:18:15 +02:00
Jade Rose db413881db Merge pull request 'feat: delaytime in cycles' (#1341) from daslyfe/jade/delaycycle into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1341
2025-06-28 20:30:48 +02:00
Jade (Rose) Rowland 77bab433e0 cf 2025-06-28 14:06:16 -04:00
daslyfe f8cc1c2022 Merge branch 'main' into daslyfe/jade/delaycycle 2025-06-28 20:01:57 +02:00
froos e0bf9ea4d6 Merge pull request 'Case insensitive search in the reference tab' (#1420) from kdiab/strudel:main into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1420
2025-06-28 13:44:47 +02:00
Alex McLean 374661eb23 Merge pull request 'add unjoin, into and chunkinto' (#1418) from add-unjoin into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1418
2025-06-28 00:04:12 +02:00
alex df06248c54 snapshot 2025-06-27 22:59:01 +01:00
alex 27073d6c17 format 2025-06-27 22:56:19 +01:00
alex f44caf9096 tests and tweaks, and add chunkBackInto 2025-06-27 22:51:47 +01:00
alex ff5b11f5ed test + bugfix for chunkinto 2025-06-27 22:44:15 +01:00
Alex McLean 719c70a598 Merge branch 'main' into add-unjoin 2025-06-27 22:40:40 +02:00
Jade (Rose) Rowland 7a53f6c021 add test 2025-06-27 15:56:37 -04:00
Jade (Rose) Rowland 09d05abd70 delaysync 2025-06-27 15:54:39 -04:00
Jade (Rose) Rowland 3acc364a03 Merge branch 'main' into daslyfe/jade/delaycycle 2025-06-27 15:53:48 -04:00
Jade (Rose) Rowland 2dd528134a fix json 2025-06-27 02:52:04 -04:00
Jade (Rose) Rowland fef50e654c working 2025-06-27 02:38:43 -04:00
Felix Roos b1aba294ad hotfix: fix upstream test 2025-06-26 15:39:35 +02:00
froos 63ac80eb79 Merge pull request 'mondo notation' (#1311) from uzu into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1311
2025-06-26 15:29:45 +02:00
Felix Roos 82e3f9b837 fix: js example 2025-06-26 14:59:24 +02:00
Khalid e19fd24447 Case insensitive search in the reference tab 2025-06-25 08:44:12 -04:00
alex fe9a91d1e4 add unjoin, into and chunkinto 2025-06-24 23:22:42 +01:00
froos 860bb58d61 Merge pull request 'allow calling all multiple times' (#1417) from multiple-all-calls into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1417
2025-06-24 06:14:15 +02:00
Felix Roos d58b3e490b fix: reset all transforms before eval 2025-06-24 06:12:21 +02:00
Felix Roos 0003ce174e allow calling all multiple times 2025-06-24 06:06:37 +02:00
froos 8e0f23e081 Merge pull request 'tonal: allow scales without tonic (default to C)' (#1092) from kasparsj/tonal-fix into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1092
2025-06-24 05:53:21 +02:00
Felix Roos 71e60ed8de add back comment 2025-06-24 05:45:36 +02:00
Felix Roos e2a29914c7 don't interpret note as n 2025-06-24 05:43:06 +02:00
Felix Roos a9a3d491a2 Merge branch 'main' into kasparsj/tonal-fix 2025-06-24 05:39:59 +02:00
yaxu a750764f88 Update CONTRIBUTING.md 2025-06-23 11:13:00 +02:00
froos 5b397009ab Merge pull request 'website intro: fix whitespace and code hosting name' (#1400) from trofi/strudel:website-intro-minor into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1400
2025-06-20 20:00:11 +02:00
Sergei Trofimovich e68df9e789 website intro: fix whitespace and code hosting name 2025-06-20 18:33:58 +01:00
yaxu 4d3bbd5057 Update README.md 2025-06-19 17:44:45 +02:00
Felix Roos 15f3321b04 fix: extend in some situations, like [[bd]@3 bd] 2025-06-19 11:33:22 +02:00
froos 67bfedb317 Merge branch 'main' into uzu 2025-06-19 10:21:04 +02:00
Alex McLean c0184dd827 Merge pull request 'fix stepcat #1396' (#1398) from fix-stepcat into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1398
2025-06-19 10:15:06 +02:00
Alex McLean 09fdc45ff2 Merge branch 'main' into fix-stepcat 2025-06-19 10:08:08 +02:00
alex c01b4c651c don't trash lists passed to timecat 2025-06-19 09:06:53 +01:00
froos 634eed1d82 Merge pull request 'deprecate cpm + refactor docs to use setcpm' (#1397) from reference-improvements into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1397
2025-06-19 09:52:36 +02:00
froos 01810f379f Merge branch 'main' into reference-improvements 2025-06-19 09:47:01 +02:00
alex f3c4afaa54 apt install zstd for caching 2025-06-19 08:42:33 +01:00
alex a8757fecc8 avoid double action for PRs, try turning on pnpm cache 2025-06-19 08:39:05 +01:00
alex a1d181d609 format 2025-06-19 08:27:41 +01:00
alex 440f1cb081 reify arguments of stepcat 2025-06-19 08:27:23 +01:00
alex 95193b0bfd a test for #1396 2025-06-19 08:18:20 +01:00
Felix Roos 66673d211e fix: cpm -> setcpm 2025-06-19 09:13:48 +02:00
Felix Roos 64ab3c9ba7 fix: tests 2025-06-19 09:12:05 +02:00
Felix Roos 6c4aa12c60 refactor: replace .cpm with setcpm calls
+ doc setcpm
2025-06-19 09:09:45 +02:00
daslyfe a8f2537e31 Merge pull request 'feat: 3 new codemirror themes' (#1394) from jade/themes into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1394
2025-06-19 02:49:08 +02:00
Jade (Rose) Rowland 7e6876c282 comment 2025-06-18 20:44:09 -04:00
Felix Roos 1cc15c7e8d fix: fall back to silence when empty
removes annoying error
2025-06-18 22:25:05 +02:00
Felix Roos 10ac7c353c use + and - as late / early
+ add some extra error handling
2025-06-18 22:07:16 +02:00
Felix Roos 9412bf60bf add e as euclid that accepts a list 2025-06-18 22:06:18 +02:00
Felix Roos c751bb7e5f allow _ as silence 2025-06-18 21:36:34 +02:00
Felix Roos 28cd7c1681 Merge branch 'main' into uzu 2025-06-18 21:26:51 +02:00
Jade (Rose) Rowland 011139eff8 arch2 2025-06-18 20:12:36 +02:00
Jade (Rose) Rowland 184cb746f3 arch 2025-06-18 19:55:30 +02:00
anecondev 5efcd14f40 Update website/src/pages/learn/code.mdx
Correct "appended" to "prepended"
2025-06-18 17:07:13 +02:00
alex 351314ccdf rename .github to .forgejo 2025-06-15 09:23:29 +01:00
Felix Roos e52017c0d8 fix: reference tab critical fail 2025-06-15 10:12:17 +02:00
alex b253d437d3 Merge branch 'main' of ssh://codeberg.org/uzu/strudel 2025-06-15 08:06:12 +01:00
alex bebbe30b50 codeformat 2025-06-15 08:03:23 +01:00
alex 489d3f8d4d Merge branch 'reorganise-docs' 2025-06-15 08:01:44 +01:00
alex cc4cad05b2 add the technical manual again 2025-06-14 23:33:52 +01:00
alex 2cb22e94b5 move iclc paper under docs/ 2025-06-14 23:26:59 +01:00
Felix Roos ee7d783099 fix homepage link 2025-06-14 16:27:54 +02:00
Felix Roos 9becd0a3f0 Merge branch 'main' of https://codeberg.org/uzu/strudel 2025-06-14 16:23:36 +02:00
Felix Roos 9738c90b82 even more degithubbing 2025-06-14 16:23:03 +02:00
Alex McLean f7b58f2e3e Merge pull request 'link back to tech manual in wiki' (#1382) from techmanual-wiki into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1382
2025-06-14 16:22:59 +02:00
alex d856e567c1 link back to tech manual in wiki 2025-06-14 15:22:27 +01:00
Felix Roos a7f044e1aa more degithubbing 2025-06-14 16:17:22 +02:00
froos 1f7d78c6ce Merge pull request 'degithub-links' (#1380) from degithub-links into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1380
2025-06-14 14:55:36 +02:00
Felix Roos 4137f39495 Merge remote-tracking branch 'origin/main' into degithub-links 2025-06-14 14:48:54 +02:00
Felix Roos 0163c8ba25 replace remaining links to old github repo 2025-06-14 14:47:16 +02:00
Felix Roos 912b3270aa use yt for gh video assets + replace release asset links 2025-06-14 14:35:19 +02:00
Felix Roos 2bc3d69fb0 replace github links in release notes 2025-06-14 14:01:11 +02:00
froos 8051e56d13 Merge branch 'main' into supradough 2025-06-14 00:35:52 +02:00
yaxu aa20526963 Update .github/workflows/test.yml 2025-06-13 17:33:47 +02:00
yaxu 47de9e45ff Update .github/workflows/deploy.yml 2025-06-13 17:31:33 +02:00
yaxu 0c193238c5 Update .github/workflows/deploy.yml 2025-06-13 17:31:03 +02:00
yaxu 3428e18e7d Update .github/workflows/deploy.yml 2025-06-13 17:26:37 +02:00
yaxu 8fba92f447 Update .github/workflows/deploy.yml 2025-06-13 17:10:37 +02:00
yaxu 38e7fe606c Update .github/workflows/deploy.yml 2025-06-13 16:47:40 +02:00
Alex McLean 59e7584bf7 Merge pull request 'fix euclidLegatoRot' (#1378) from bwagner/strudel:fix-euclidLegatoRot into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1378
2025-06-13 15:24:40 +02:00
Bernhard Wagner 7f50bcebd2 avoid floating point inaccuracy by using Fraction 2025-06-13 10:28:03 +02:00
Bernhard Wagner d7b83e200c fix issue #1368 euclidLegatoRot 2025-06-13 10:21:36 +02:00
Alex McLean db33707e52 Merge pull request 'remove-ms' (#1377) from remove-ms into main
Reviewed-on: https://codeberg.org/uzu/strudel/pulls/1377
2025-06-13 10:07:50 +02:00
Alex McLean 78fca9695c Merge branch 'main' into remove-ms 2025-06-13 09:23:42 +02:00
alex 3dbae7907c ignore .pnpm-store 2025-06-13 08:22:46 +01:00
alex dcac254790 missing double quotes 2025-06-13 08:17:55 +01:00
Alex McLean 000114fcc8 Merge branch 'main' into remove-ms 2025-06-13 09:08:13 +02:00
alex 062201d1dc fix json 2025-06-13 08:07:35 +01:00
yaxu 8c8e914170 Update .github/workflows/test.yml 2025-06-13 08:53:53 +02:00
yaxu 1141b1803b Update .github/workflows/test.yml 2025-06-13 00:08:39 +02:00
yaxu fec38bd5d2 Update .github/workflows/test.yml 2025-06-13 00:07:24 +02:00
alex a3d9d68c45 less github 2025-06-12 18:00:39 +01:00
alex 990f1c6ece degithub 2025-06-12 17:29:29 +01:00
alex c0ae12f32f add codeberg repo update command 2025-06-12 17:26:19 +01:00
Alex McLean 307e5ea2d7 less github 2025-06-12 14:45:35 +01:00
Alex McLean 5fdea7fd80 github > strudel 2025-06-12 14:36:45 +01:00
Alex McLean 580447d00a move technical manual from https://github.com/tidalcycles/strudel/wiki/Technical-Manual 2025-06-12 14:15:07 +01:00
Alex McLean b6e67f3474 > codeberg 2025-06-12 14:12:42 +01:00
Alex McLean 84efa664ca Update README.md 2025-06-12 13:39:00 +01:00
Alex McLean 94746b5fae Update README.md 2025-06-12 13:37:58 +01:00
Jade (Rose) Rowland c1fa5d0855 Merge pull request #1375 from tidalcycles/jade/share_fat
Share fat URL
2025-06-12 10:25:48 +02:00
Jade (Rose) Rowland 372542dcd8 working 2025-06-12 10:23:21 +02:00
Felix Roos 239987af0b snapshot 2025-06-12 10:23:06 +02:00
Felix Roos 8363ba5a41 format 2025-06-12 10:22:35 +02:00
Felix Roos 30f7127a92 Merge remote-tracking branch 'origin/main' into supradough 2025-06-12 10:22:08 +02:00
Felix Roos 694a22af85 hotfix: bring back loading code + fill in default pattern later 2025-06-12 09:51:04 +02:00
Felix Roos ef3b9a68e3 hotfix: leave out part about shuffle in welcome tab 2025-06-12 09:21:57 +02:00
Felix Roos 40ba5d4465 hotfix: don't load patterns from db 2025-06-12 09:11:19 +02:00
Felix Roos 79f7938b33 hotfix: add default code 2025-06-12 08:51:03 +02:00
Felix Roos 2c9f9d785f hotfix: close bakery 2025-06-12 08:39:27 +02:00
Felix Roos 14193abe03 improve export: add stereo + measure performance + add bigger pattern for testing 2025-06-12 02:26:50 +02:00
Felix Roos 3caf08e199 up latency 2025-06-12 02:26:08 +02:00
Felix Roos 5cbd38a3e8 improve filter performance making it accept hz directly 2025-06-12 02:25:46 +02:00
Felix Roos bbd7ed0f27 lazy sample loading 2025-06-12 02:25:04 +02:00
Jade (Rose) Rowland 43504d16b6 add chorus 2025-06-10 16:03:42 +02:00
Alice Wyan 1b7fbecf50 Fix style issue 2025-06-10 13:20:21 +02:00
Jade (Rose) Rowland 7e8206dcbc pitched delay 2025-06-10 12:31:21 +02:00
Felix Roos 3963b807eb fix: calling doughsamples multiple times 2025-06-09 22:32:41 +02:00
Felix Roos e99adffc56 vibrato 2025-06-09 22:29:35 +02:00
Felix Roos c9f494d865 fix: node export 2025-06-09 22:10:09 +02:00
Alice Wyan 117cf7e18a Update samples.mdx 2025-06-09 19:45:21 +02:00
Felix Roos e8254735bb apply speed to synths and samples + add normalize flag (for fit) 2025-06-09 19:35:50 +02:00
Jade (Rose) Rowland 3d30007756 supersaw 2025-06-09 15:55:44 +02:00
Jade (Rose) Rowland aeaed50446 gaincurve 2025-06-09 15:18:47 +02:00
Alice Wyan ae15bb7274 Add browser cache explanation in samples.mdx
Several users (including me) have been bitten by this, so it's perhaps worth mentioning in the docs that the strudel.json file gets cached by the browser and doesn't reload properly unless forced.
2025-06-09 15:03:41 +02:00
Felix Roos 3ac0fdf619 rudimentary sample map loading (doughsamples) 2025-06-09 11:07:57 +02:00
Felix Roos d1b6b6be85 fix: hpf 2025-06-09 09:54:24 +02:00
Felix Roos 1081fc69e9 refactor: stereo sample support + channelwise fx 2025-06-09 09:52:29 +02:00
Felix Roos 73ef43dd2c move things around in init
+ shorten things
2025-06-08 22:56:55 +02:00
Jade (Rose) Rowland 181e51ef0e adjustable envelope curves 2025-06-08 20:26:20 +02:00
Jade (Rose) Rowland 1167fdb910 Merge branch 'supradough' of https://github.com/tidalcycles/strudel into supradough 2025-06-08 19:25:47 +02:00
Jade (Rose) Rowland ec9109dd89 exponential lerp 2025-06-08 19:24:55 +02:00
Felix Roos 55aef18851 buffers can now be repitched (still with aliasing) 2025-06-08 14:43:23 +02:00
Felix Roos 356d4360ec fix: scheduling + sample playback 2025-06-08 09:05:14 +02:00
Felix Roos 0f2aa9569b half working samples 2025-06-08 02:04:49 +02:00
Felix Roos ac7ee376e5 pitch envelope 2025-06-08 00:43:58 +02:00
Felix Roos ab052ce1ac fix: polyblepped sawtooth + fm = death 2025-06-07 23:15:09 +02:00
Felix Roos 5988e3d3b4 fix: hot reloading for dough.mjs (see comment) 2025-06-07 22:42:48 +02:00
Felix Roos 2f2bf5bf29 fix: note2midi for notes without octave 2025-06-07 22:36:54 +02:00
Felix Roos b000f2297d fm 2025-06-07 20:31:47 +02:00
Felix Roos 77463a199a add square alias for pulse 2025-06-07 13:26:43 +02:00
Felix Roos e54449f5f7 white brown pink noise + crackle alias for dust 2025-06-07 13:24:06 +02:00
Felix Roos d743570546 set delay time and feedback from voice 2025-06-07 13:12:35 +02:00
Felix Roos 1dac69635d feedback delay (still hard coded feedback / time values) 2025-06-07 10:40:34 +02:00
Felix Roos 49f38aeddb remove log 2025-06-06 16:26:17 +02:00
Felix Roos 43c05cb504 move supradough to separate package 2025-06-06 16:17:05 +02:00
Felix Roos ccc90d547c ignore dough-export to fix checks 2025-06-06 15:47:19 +02:00
Felix Roos 998a010247 better filter envelopes 2025-06-06 11:21:01 +02:00
Felix Roos e4cd5dc552 rough filter envelope implementation 2025-06-06 10:55:38 +02:00
Felix Roos 6cf0b6f651 hpf + bpf 2025-06-06 10:12:49 +02:00
Felix Roos 794bf86904 distort 2025-06-06 09:56:41 +02:00
Felix Roos 9ed690ce45 pulse osc + velocity 2025-06-06 09:37:40 +02:00
Felix Roos 623bf93368 panning 2025-06-06 08:50:02 +02:00
Felix Roos 0cc18a6468 crush (might be wrong) 2025-06-06 08:27:47 +02:00
Felix Roos 87598e10d1 coarse 2025-06-06 08:17:20 +02:00
Jade (Rose) Rowland 5a88a6daa6 Merge pull request #1364 from tidalcycles/dosomething
feat: onTriggerTime for interfacing with random APIs and doing illegal things on event time
2025-06-05 19:39:16 +01:00
Felix Roos ccec7e725a poc: render pattern audio with node script 2025-06-05 11:04:55 +02:00
Felix Roos f0e6c5483c handle invalid spawns + remove logs 2025-06-05 10:30:53 +02:00
Felix Roos 2cbd35f6d2 refactor: make webaudio glue as minimal as possible 2025-06-05 10:26:14 +02:00
Felix Roos 930dabe4d6 dough as a singleton worklet with voice allocation 2025-06-05 09:54:44 +02:00
Jade (Rose) Rowland 9350d826a3 Merge pull request #1363 from tidalcycles/berlinnoise
feat: berlin noise
2025-06-05 00:08:18 +01:00
Jade (Rose) Rowland ff4b7ca171 fix volume 2025-06-04 01:08:36 +01:00
Jade (Rose) Rowland 5129fa6677 fix click 2025-06-04 00:48:32 +01:00
Jade (Rose) Rowland df923174ed working 2025-06-03 01:22:37 +01:00
Jade (Rose) Rowland cde943d737 fix test 2025-06-02 13:02:41 +01:00
Jade (Rose) Rowland f363bd6bcc Merge branch 'main' into berlinnoise 2025-06-02 12:58:33 +01:00
Jade (Rose) Rowland e0a21a936b berlin 2025-06-02 12:57:37 +01:00
Felix Roos 5336569c25 proper lpf mapping + remove redundant worklet params, 2025-06-01 21:20:28 +02:00
Felix Roos 483843bd0a begin supradough 2025-06-01 18:06:36 +02:00
Felix Roos b312ff63a9 Publish
- @strudel/codemirror@1.2.2
 - @strudel/core@1.2.2
 - @strudel/csound@1.2.3
 - @strudel/draw@1.2.2
 - @strudel/gamepad@1.2.2
 - @strudel/hydra@1.2.2
 - @strudel/midi@1.2.3
 - @strudel/mini@1.2.2
 - @strudel/motion@1.2.2
 - @strudel/mqtt@1.2.2
 - @strudel/osc@1.2.2
 - @strudel/repl@1.2.3
 - @strudel/serial@1.2.2
 - @strudel/soundfonts@1.2.3
 - superdough@1.2.3
 - @strudel/tonal@1.2.2
 - @strudel/transpiler@1.2.2
 - @strudel/web@1.2.3
 - @strudel/webaudio@1.2.3
 - @strudel/xen@1.2.2
2025-05-29 23:58:35 +02:00
Jade (Rose) Rowland 93bc353b6b Merge pull request #1359 from tidalcycles/bytebeat_fixes_3
Fix bytebeat sample offset
2025-05-29 14:36:43 +02:00
Jade (Rose) Rowland 14a0dea826 fixtest 2025-05-29 14:35:37 +02:00
Jade (Rose) Rowland 009f5445be codeformat 2025-05-29 14:33:25 +02:00
Jade (Rose) Rowland 3d37c73103 fixed 2025-05-29 14:32:52 +02:00
Alex McLean 0b0f9fe13b preserve stepcount in chunks (#1358)
* preserve stepcount in chunks
* format
2025-05-29 12:14:18 +02:00
Jade (Rose) Rowland 1d189763b2 Merge pull request #1357 from tidalcycles/bbfixes_2
Byte Beat improvements -> 2
2025-05-29 02:34:30 +02:00
Jade (Rose) Rowland a4b55776d2 test 2025-05-29 02:33:06 +02:00
Jade (Rose) Rowland 0287be547a bbstart 2025-05-29 02:27:55 +02:00
Jade (Rose) Rowland 6a83ede33d Merge pull request #1356 from tidalcycles/bb_fixes
Bytebeat improvements
2025-05-28 16:40:32 +02:00
Jade (Rose) Rowland 1e3f546918 bb waveforms 2025-05-28 16:36:53 +02:00
Jade (Rose) Rowland faa60be211 Merge pull request #1354 from tidalcycles/jade/bytebeats
feat: Byte Beats!
2025-05-27 17:42:38 +02:00
Jade (Rose) Rowland dde2b9c6f8 working 2025-05-27 17:41:32 +02:00
Jade (Rose) Rowland 382dce65df working 2025-05-27 17:39:55 +02:00
Jade (Rose) Rowland 63f4f202f1 working 2025-05-27 17:35:35 +02:00
Jade (Rose) Rowland 366637026b bbs 2025-05-27 17:34:53 +02:00
Jade (Rose) Rowland 608dfd515e WIP oscillations 2025-05-27 14:37:55 +02:00
Felix Roos 9bd7b66228 Publish
- @strudel/codemirror@1.2.1
 - @strudel/core@1.2.1
 - @strudel/csound@1.2.2
 - @strudel/draw@1.2.1
 - @strudel/gamepad@1.2.1
 - @strudel/hydra@1.2.1
 - @strudel/midi@1.2.2
 - @strudel/mini@1.2.1
 - @strudel/motion@1.2.1
 - @strudel/mqtt@1.2.1
 - @strudel/osc@1.2.1
 - @strudel/repl@1.2.2
 - @strudel/serial@1.2.1
 - @strudel/soundfonts@1.2.2
 - superdough@1.2.2
 - @strudel/tonal@1.2.1
 - @strudel/transpiler@1.2.1
 - @strudel/web@1.2.2
 - @strudel/webaudio@1.2.2
 - @strudel/xen@1.2.1
2025-05-24 11:30:02 +02:00
Jade (Rose) Rowland 5e4eb7fc53 gain 2025-05-20 21:53:10 +01:00
Jade (Rose) Rowland 45bccf13ff add test 2025-05-20 21:47:43 +01:00
Jade (Rose) Rowland 65f1760fad format 2025-05-20 21:45:14 +01:00
Jade (Rose) Rowland b8d2d02466 bb 2025-05-20 21:41:40 +01:00
Jade (Rose) Rowland 058cb36640 structure 2025-05-20 20:28:52 +01:00
Nachito 5c3501caa4 fix: typo on docs causing problems with autocompletion. (#1350)
* fix: scramble and shuffle comments

* fix: comments on themes,docs, tests and more
2025-05-18 20:43:04 +01:00
Jade (Rose) Rowland 1341bd9c92 Merge pull request #1343 from daslyfe/pw
feat: Create pulsewidth (pw) and pulsewidth lfo parameters
2025-05-14 19:12:06 -04:00
Jade (Rose) Rowland 760d1abec0 remove n 2025-05-14 19:10:59 -04:00
Jade (Rose) Rowland 2b44fc48a4 Merge pull request #1344 from daslyfe/multichannelorbits
feat: Multi Channel Orbits
2025-05-14 12:25:16 -04:00
Henré Botha 99779171f5 Fix typo (#1346) 2025-05-13 16:45:29 +01:00
Jade (Rose) Rowland 64ebfb57c3 lint 2025-05-07 11:30:42 -04:00
Jade (Rose) Rowland 099d321dbd format 2025-05-07 11:25:34 -04:00
Jade (Rose) Rowland 59bdfd2cb8 format 2025-05-07 11:12:05 -04:00
Jade (Rose) Rowland 56d3436fda asconst 2025-05-07 01:08:00 -04:00
Jade (Rose) Rowland 440ce0cd3b format 2025-05-06 02:14:35 -04:00
Jade (Rose) Rowland 98346261ed lint 2025-05-06 01:13:50 -04:00
Jade (Rose) Rowland 38e4718826 lint 2025-05-06 01:09:20 -04:00
Jade (Rose) Rowland 38908baccd working 2025-05-06 01:06:37 -04:00
alex 1b3b07842e format again.. 2025-05-03 21:57:01 +01:00
alex 98efd72ab4 delint 2025-05-03 20:59:05 +01:00
alex 1eb5f6a995 format 2025-05-03 20:38:43 +01:00
alex 9b10dc8535 change pipe symbol from '.' to '#' 2025-05-03 20:37:44 +01:00
Felix Roos 2951a60fac fix: rests at the end 2025-05-03 11:44:02 +02:00
Jade (Rose) Rowland 94257e81ee lint 2025-05-02 23:44:55 -04:00
Jade (Rose) Rowland 006ce9d1da delaytime 2025-05-02 23:33:58 -04:00
Felix Roos 607a6121bc rename mondo package to mondolang 2025-05-02 16:20:23 +02:00
Felix Roos 4208c79c09 fix: ! and @ operators 2025-05-02 15:13:04 +02:00
Felix Roos 7565354274 superdough: fallback to triangle when non-string is given 2025-05-02 08:54:34 +02:00
Felix Roos ffe831d24b mondo: strings now get type "string" to be discernable from plain variables 2025-05-02 08:53:55 +02:00
Felix Roos 60dd8bd763 tweak again 2025-05-02 08:35:16 +02:00
Felix Roos 29e5833c8c tweak 2025-05-02 08:32:46 +02:00
Felix Roos e3a6444f41 mondo: support line comments 2025-05-02 08:30:09 +02:00
Felix Roos 30fd4c5dec Merge branch 'main' into uzu 2025-05-02 08:16:52 +02:00
Felix Roos 8d02d4270a Publish
- @strudel/repl@1.2.1
 - @strudel/web@1.2.1
2025-05-02 00:03:18 +02:00
Felix Roos 9cf1cd2656 revert web + repl versions for next try 2025-05-02 00:02:50 +02:00
Felix Roos 4c079b6ebe Merge pull request #1339 from tidalcycles/fix-web-pkg-build
Fix web + repl package builds
2025-05-02 00:01:27 +02:00
Felix Roos e9e2e881e5 fix: repl package build 2025-05-01 23:58:49 +02:00
Felix Roos 685b4f172b fix: duplicate key 2025-05-01 23:57:09 +02:00
Felix Roos 53e50d81b0 also use worklet plugin in web package 2025-05-01 23:56:29 +02:00
Felix Roos 8f58d5788f Publish
- @strudel/csound@1.2.1
 - @strudel/midi@1.2.1
 - @strudel/repl@1.2.1
 - @strudel/soundfonts@1.2.1
 - superdough@1.2.1
 - vite-plugin-bundle-audioworklet@0.1.1
 - @strudel/web@1.2.1
 - @strudel/webaudio@1.2.1
2025-05-01 23:54:13 +02:00
Felix Roos 306a6db8dc hotfix: remove broken tauri workflow 2025-05-01 23:52:36 +02:00
Felix Roos 757d78252b Merge pull request #1338 from tidalcycles/fix-worklet-bundling
fix: superdough worklets bundling
2025-05-01 23:50:56 +02:00
Felix Roos 6f2e026e4a fix: import in vitest config 2025-05-01 23:49:47 +02:00
Felix Roos 22f114be59 update metadata 2025-05-01 23:35:20 +02:00
Felix Roos f993056fb1 fix: tests -> use vite plugin in tests as well 2025-05-01 23:30:14 +02:00
Felix Roos fdbbcd2dd2 add vite-plugin-bundle-audioworklet and use it both from website and superdough 2025-05-01 23:26:04 +02:00
Felix Roos 7bec92ca99 fix: superdough worklets bundling 2025-05-01 23:13:32 +02:00
Felix Roos 5702914661 Publish
- @strudel/reference@1.2.0
2025-05-01 12:52:12 +02:00
Felix Roos f2a9e2d4e6 hotfix: downgrade reference to be able to get 1.2.0 2025-05-01 12:51:54 +02:00
Felix Roos 6398b5fb38 hotfix: make broken hs2js + tidal packages private to opt out of release
- some issue with the build command
2025-05-01 12:48:43 +02:00
Felix Roos 9ceebd4679 hotfix: reference package vite config 2025-05-01 12:47:56 +02:00
Felix Roos 177f5c1431 Publish
- @strudel/codemirror@1.2.0
 - @strudel/core@1.2.0
 - @strudel/csound@1.2.0
 - @strudel/draw@1.2.0
 - @strudel/gamepad@1.2.0
 - hs2js@0.2.0
 - @strudel/hydra@1.2.0
 - @strudel/midi@1.2.0
 - @strudel/mini@1.2.0
 - @strudel/motion@1.2.0
 - @strudel/mqtt@1.2.0
 - @strudel/osc@1.2.0
 - @strudel/reference@1.2.0
 - @strudel/repl@1.2.0
 - @strudel/sampler@0.2.0
 - @strudel/serial@1.2.0
 - @strudel/soundfonts@1.2.0
 - superdough@1.2.0
 - @strudel/tidal@0.2.0
 - @strudel/tonal@1.2.0
 - @strudel/transpiler@1.2.0
 - @strudel/web@1.2.0
 - @strudel/webaudio@1.2.0
 - @strudel/xen@1.2.0
2025-05-01 12:39:24 +02:00
Felix Roos 2da03ab46f Merge remote-tracking branch 'origin/main' into uzu 2025-05-01 11:15:24 +02:00
Felix Roos 243adda3dd mondo: more sicp tests 2025-05-01 10:56:33 +02:00
Jade (Rose) Rowland d6c2a88496 Merge pull request #1333 from daslyfe/jade/soundimportorder
FIX: sound import order
2025-04-27 16:25:53 -04:00
Jade (Rose) Rowland 3ee7d0cd4f lint 2025-04-27 16:21:14 -04:00
Jade (Rose) Rowland 53d43dc44c working 2025-04-27 16:19:58 -04:00
Jade (Rose) Rowland 637c619345 Merge pull request #1332 from hpunq/import-sounds-docs
update docs to reflect import sounds tab change
2025-04-27 12:39:49 -04:00
Jade (Rose) Rowland 47fb441feb Merge pull request #1318 from daslyfe/jade/gaincurve
feat: Improve gain curve
2025-04-27 12:38:26 -04:00
hpunq d02b1fc05c update docs to reflect import sounds tab change 2025-04-27 11:05:06 +01:00
Jade (Rose) Rowland 480b5ff58b fix vel 2025-04-27 02:38:10 -04:00
Jade (Rose) Rowland c088c0c9d2 def 2025-04-27 02:21:49 -04:00
Jade (Rose) Rowland f32abac06f reset gaincurve 2025-04-27 02:20:53 -04:00
Jade (Rose) Rowland 697f0a82e6 Merge branch 'main' into jade/gaincurve 2025-04-27 02:10:30 -04:00
Jade (Rose) Rowland 98970417c3 Merge pull request #1331 from tidalcycles/BRANCH_NAME
Add Icon to import sample button
2025-04-27 01:54:49 -04:00
Jade (Rose) Rowland b5d48b2f0b Merge pull request #1329 from hpunq/sample-ui
Add new "import-sounds" tab with explanation on folder import
2025-04-27 01:53:40 -04:00
Jade (Rose) Rowland c48aba50f0 button size and icon 2025-04-27 01:51:41 -04:00
hpunq f539930509 formatted code with prettier 2025-04-26 01:04:11 +01:00
hpunq 759cdb6276 add new import sounds tab with explanation and hyperlinks 2025-04-24 13:53:42 +01:00
hpunq 3dae2a80ab change import sounds label to import sounds folder 2025-04-24 13:51:44 +01:00
Jade (Rose) Rowland 7cc44a8829 Merge pull request #1326 from daslyfe/origin/jade/newthemes
feat: new themes + theme improvements
2025-04-21 18:04:37 -04:00
Jade (Rose) Rowland 90506f9e61 Merge pull request #1321 from daslyfe/jade/slit
feat: Create scrub function for scrubbing an audio file
2025-04-20 12:24:15 -04:00
Jade (Rose) Rowland c852b5fab0 fix lint 2025-04-19 16:21:11 -04:00
Jade (Rose) Rowland bd08b74ebc fixed strudel bool 2025-04-19 16:10:38 -04:00
Jade (Rose) Rowland 8f4dcb6bc6 Merge pull request #1325 from daslyfe/jade/udelsconfig
fix: udels header
2025-04-18 01:17:33 -04:00
Jade (Rose) Rowland 17e1ebeb93 udelsconfig 2025-04-18 01:02:13 -04:00
Jade (Rose) Rowland ad25ce7b21 working 2025-04-18 01:01:10 -04:00
Jade (Rose) Rowland 6e3aa693d5 format 2025-04-17 23:35:10 -04:00
Jade (Rose) Rowland 2968017300 disabled 2025-04-17 23:32:20 -04:00
Alex McLean ab76b4424a send delta in seconds, to match tidal/superdirt (#1323) 2025-04-11 08:18:57 +01:00
Jade (Rose) Rowland b64daf6284 Merge pull request #1322 from daslyfe/jade/fixmultichannelaudio
FIX: Multichannel Audio
2025-04-08 00:08:57 -04:00
Jade (Rose) Rowland 2b69004eb4 lint 2025-04-08 00:04:22 -04:00
Jade (Rose) Rowland a32bb58fb3 rm dependency 2025-04-08 00:01:34 -04:00
Jade (Rose) Rowland 9e233fe587 var name 2025-04-07 23:55:34 -04:00
Jade (Rose) Rowland b1090a1dd8 rm deadcode 2025-04-07 23:52:15 -04:00
Jade (Rose) Rowland 344d9ca1a8 working 2025-04-07 23:43:29 -04:00
Jade (Rose) Rowland b92a28242e Merge pull request #1317 from daslyfe/jade/voicemax
feat: add max polyphony feature for superdough
2025-04-07 22:18:03 -04:00
Jade (Rose) Rowland 695ac6a5d3 var 2025-04-06 16:34:14 -04:00
Jade (Rose) Rowland a468201822 add tests 2025-04-06 16:32:37 -04:00
Jade (Rose) Rowland 05ea9c86fb working 2025-04-06 16:08:42 -04:00
Jade (Rose) Rowland 6e29210bdc Merge pull request #1315 from daslyfe/jade/readableerror
enhancement: make error messages easier to read
2025-04-05 15:12:05 -04:00
Felix Roos 7fc21d55d7 mondo: rational number test 2025-04-04 10:04:22 +02:00
Jade (Rose) Rowland e81345ca2f Merge pull request #1319 from daslyfe/jade/bug/replace_white_spaces_in_sounds
fix: replace empty spaces in registered sound keys
2025-04-04 00:26:57 -04:00
Felix Roos d5ef686fe0 mondo: sicp 100 2025-04-04 00:45:00 +02:00
Felix Roos d4733a30ab mondo: add half interval method example 2025-04-03 17:30:03 +02:00
Felix Roos 989bd0990e mondo: let expressions 2025-04-03 17:01:36 +02:00
Jade (Rose) Rowland 6b8ee8ad11 lint 2025-04-03 01:05:26 -04:00
Jade (Rose) Rowland c2d4b529f6 working 2025-04-03 00:59:46 -04:00
Felix Roos 60d09adb44 mondo: more tests 2025-04-02 22:33:18 +02:00
Felix Roos b2588e8c93 fix: lint 2025-04-02 22:11:06 +02:00
Felix Roos 39d2784441 mondo: more sicp tests
+ support special form for function def (might remove later)
+ support multiple expressions in fn body
+ support lexical scoping
2025-04-02 22:09:17 +02:00
Felix Roos aa70246afc mondo: more sicp 2025-04-01 23:24:47 +02:00
Felix Roos f6ffdd6ae6 mondo: move +- to ops
+ add "raw" to parsed pairs
+ implement match + if
+ add more sicp examples
2025-04-01 22:31:42 +02:00
Felix Roos 077aac1888 mondo: add some examples from sicp book 2025-04-01 21:50:03 +02:00
Felix Roos 94a3a60e49 mondo: remember pair locations
+ allow passing a scope to MondoRunner.run
+ make def a side effect
+ proper lambda with multiple args + closure
2025-04-01 21:49:28 +02:00
Jade (Rose) Rowland 999c0b2349 lint 2025-03-31 00:21:01 -04:00
Jade (Rose) Rowland 5ed28d6168 gain curve func 2025-03-31 00:17:26 -04:00
Jade (Rose) Rowland bceb37e8ea rm comment 2025-03-30 20:32:19 -04:00
Jade (Rose) Rowland 2f4cba4e94 format 2025-03-30 20:26:44 -04:00
Jade (Rose) Rowland d8e4055c6e settings panel 2025-03-30 20:22:24 -04:00
Jade (Rose) Rowland 6f9bcc53dc ramp cut audio node 2025-03-30 16:33:47 -04:00
Felix Roos f2372e7a41 mondo: refactor evaluate function into bits 2025-03-30 17:55:37 +02:00
Felix Roos a0fb8fb37f mondo: def node 2025-03-30 11:43:01 +02:00
Felix Roos b4027fd92a fix: mondo dont mutate (breaks lambdas) 2025-03-30 11:42:50 +02:00
Jade (Rose) Rowland 8962e5a4f0 max poly 2025-03-30 01:35:25 -04:00
Jade (Rose) Rowland e55b7c6ce3 mostly working 2025-03-30 00:55:12 -04:00
Felix Roos c9cafa37fd mondo: improve mondo package api + update readme 2025-03-29 21:33:51 +01:00
Felix Roos 2e017e46f9 trim readme 2025-03-29 20:17:09 +01:00
Felix Roos c9f58220a3 remove minor change 2025-03-29 19:55:29 +01:00
Felix Roos e9de45993e signal: remove signal synonyms for now 2025-03-29 19:54:04 +01:00
Jade (Rose) Rowland 9b4574c7b0 Merge pull request #1314 from daslyfe/jade/alias
small feat: Add alias for segment and ribbon
2025-03-26 12:01:04 -04:00
Rene Nyffenegger 6d355a803a Fix typo pattnr (#1316) 2025-03-26 13:54:15 +00:00
Felix Roos 6b2b8b5124 fix: test 2025-03-26 09:30:49 +01:00
Felix Roos 64a6dacc1e mondo: patternable function names 2025-03-26 09:27:02 +01:00
Felix Roos 1738e4d538 fix: lint 2025-03-26 03:55:54 +01:00
Felix Roos abc7a1e48d mondo: this is the way 2025-03-26 03:55:00 +01:00
Felix Roos 7716fdb98e mondo: refactor
- rename MondoRunner.call => .evaluate
- can now evaluate leafs
- remove .( because it's confusing and half baked
- support (.) as id function
2025-03-26 03:22:23 +01:00
Felix Roos 2938bfd88f mondo: add highly impractical .(. notation for local infix application 2025-03-26 02:46:26 +01:00
Jade (Rose) Rowland dee75bc759 update tests 2025-03-24 01:32:48 -04:00
Jade (Rose) Rowland dc8e5d5394 lint 2025-03-24 01:28:43 -04:00
Jade (Rose) Rowland 282180ef1c style update 2025-03-24 01:28:31 -04:00
Jade (Rose) Rowland 3eea908636 fix doc 2025-03-24 00:33:00 -04:00
Jade (Rose) Rowland bfbd920b1d fix doc 2025-03-24 00:18:26 -04:00
Jade (Rose) Rowland 739fb8562f update test 2025-03-24 00:15:36 -04:00
Jade (Rose) Rowland cbd448e934 update docs 2025-03-24 00:09:46 -04:00
Felix Roos 222e479e30 mondo: more docs 2025-03-23 23:18:57 +01:00
Felix Roos 92b5b6538f mondo: improve doc 2025-03-23 23:12:52 +01:00
Felix Roos 3a19e23473 mondo: doc 2025-03-23 22:49:56 +01:00
Felix Roos dd5743ab8c mondo: bring back $ for stacking 2025-03-23 22:49:23 +01:00
Felix Roos 51e3aa257c mondolang function for mondo repl + fix rests 2025-03-23 22:49:03 +01:00
Felix Roos 5eabcf0618 mondo mode for StrudelMirror / repl / mini repl 2025-03-23 22:47:33 +01:00
Felix Roos b192c6823c Merge pull request #1312 from daslyfe/jade/bug/as_single_param
bugfix: Allow single param to be used in the as function
2025-03-23 20:05:31 +01:00
Felix Roos 6d21456423 mondo: allow # character in plain values (for sharps) 2025-03-23 11:18:18 +01:00
Felix Roos bca16cdf99 mondo: rename resolve_ -> desugar_ 2025-03-22 23:51:23 +01:00
Felix Roos 492271d786 mondo: support $ tidal style 2025-03-22 23:28:57 +01:00
Jade (Rose) Rowland dccfefacd7 test 2025-03-22 12:06:43 -04:00
Jade (Rose) Rowland 38876e135b fixed 2025-03-22 11:54:10 -04:00
Felix Roos f71db4aeed mondo: flip pipe order: now pining to the end of the function... 2025-03-21 23:50:14 +01:00
Felix Roos 5d4ef46ac7 mondo cleanup 2025-03-21 22:43:39 +01:00
Felix Roos bd93e44154 mondo: fix combination of | and , 2025-03-21 22:34:53 +01:00
Felix Roos 6fd89ddee7 mondo: add | and ? 2025-03-21 11:10:43 +01:00
Felix Roos cf1f4ec35c fix: patterns without structure would error on draw 2025-03-21 11:10:25 +01:00
Felix Roos 12bb82d295 add chooseIn + chooseOut 2025-03-21 11:10:06 +01:00
Felix Roos f652c2ca86 Merge pull request #1244 from nkymut/add-program-change
Add MIDI Program Change, SysEx, NRPN, PitchBend and AfterTouch Output
2025-03-20 23:35:17 +01:00
Felix Roos c33cfc78c5 waveform aliases: tri, sqr, saw, sin 2025-03-20 21:19:47 +01:00
Felix Roos ac6472a43a mondo: mondo as minilang (inactive) 2025-03-20 21:19:21 +01:00
Felix Roos 989fdfa20b transpiler: add mechanism to register custom mini language 2025-03-20 21:18:32 +01:00
Felix Roos 05ae31838e add sin sqr cos aliases 2025-03-20 18:01:41 +01:00
Felix Roos c691916cbf mondo: generic bracket names + simplify call handler + refactor mondough 2025-03-20 17:55:40 +01:00
Felix Roos e16295623d mondo: use stepcat for curly braces 2025-03-20 14:09:32 +01:00
Felix Roos 9626f3cc9a mondo add % for pace 2025-03-20 13:24:31 +01:00
Felix Roos 432e8dcccc mondo: support ! and @, also express seq and cat with stepcat 2025-03-20 13:15:48 +01:00
Felix Roos d2e93a99f1 fix: lint 2025-03-20 10:24:22 +01:00
Felix Roos 3505732afa mondo: add .. operator 2025-03-20 09:34:47 +01:00
Felix Roos 55a5f1d62a transpiler cleanup 2025-03-20 09:10:54 +01:00
Felix Roos 3657e2fd65 mondo: change default markcss 2025-03-20 09:10:45 +01:00
Felix Roos 65a7b3030e fix: markcss can now override styles (like color) 2025-03-20 09:10:12 +01:00
Felix Roos 208706fb52 simplify mondo: ":" is just another operator 2025-03-20 09:09:29 +01:00
Felix Roos e04f250adb mondo: proper lambda functions with local scope 2025-03-19 18:16:37 +01:00
Felix Roos 4f6c4bb95f Merge pull request #1040 from fnordomat/soundfont-url
WIP: make soundfont base url configurable
2025-03-19 17:32:30 +01:00
Felix Roos 642ddcdb59 support : in mondo 2025-03-19 17:03:17 +01:00
Felix Roos 88ca54461e rename @strudel/mondough to @strudel/mondo 2025-03-19 00:15:53 +01:00
Felix Roos 129fd7d6b0 add notes 2025-03-19 00:13:06 +01:00
Felix Roos 7db52b3dc2 mondo improvements:
- add second string type
- add $ as alias for stack
- simplify leaf handling
2025-03-18 22:33:14 +01:00
Alex McLean f5bb88a696 Add num samples from 0 up to 20 (#1310)
* re-edited numbers
* num samples up to 20
* add freesound license
2025-03-18 19:07:08 +00:00
Alex McLean b27c9dbf37 add num samples (edited numbers) (#1309) 2025-03-17 09:38:54 +00:00
Felix Roos 40f6489111 reify variables 2025-03-16 23:30:41 +01:00
Felix Roos 118b619b74 mondo: support - ~ in plain type + simplify errors 2025-03-16 23:10:52 +01:00
Felix Roos 2dd445c102 mondo: support variables 2025-03-16 23:10:23 +01:00
Felix Roos 3c3832dbce superdough: native support for rest symbols - ~ in s 2025-03-16 23:08:31 +01:00
Felix Roos 9b8761bc45 fix: top-level functions arp/arpWith 2025-03-16 22:31:40 +01:00
Felix Roos 77ade0758e mondo: slightly improve error handling 2025-03-16 22:07:03 +01:00
Felix Roos 902012759a fix:support negative numbers 2025-03-16 21:24:22 +01:00
Felix Roos ea61627963 fix: lint error 2025-03-16 21:05:04 +01:00
Felix Roos 95526ac99c fix: formatting 2025-03-16 21:04:28 +01:00
Felix Roos b0da353115 mondo highlighting 2025-03-16 21:04:05 +01:00
Felix Roos fae59a6bcd feat: add mondough package to run strudel via mondo 2025-03-16 10:49:18 +01:00
Felix Roos 11196fb1e6 breaking: refactor controls
- multiple args wont be interpreted as sequence anymore
- you can now pass value, pat to set value to pat
2025-03-16 10:48:38 +01:00
Felix Roos e782dc09dd export strudelScope for mondo to use 2025-03-16 10:47:32 +01:00
Felix Roos e3df504423 rename uzu to mondo 2025-03-16 02:01:16 +01:00
Felix Roos b71b1354c3 uzu: stacks now work within () + write more tests 2025-03-16 00:51:59 +01:00
Felix Roos dbe3915368 fix: lint errors 2025-03-15 10:35:22 +01:00
Felix Roos 62705da3de begin uzu package 2025-03-15 10:29:23 +01:00
nkymut 5fcb96f73c codeformat 2025-03-11 23:33:45 +08:00
nkymut 17df418935 Update Documentation 2025-03-11 23:30:21 +08:00
nkymut 2ccb95aec0 Refactor: Consolidate configuration variables into midiConfig object
- add options argument to .midi
- add midiConfig object with properties
2025-03-11 23:29:37 +08:00
nkymut 3c2692bdda remove debugging artifacts 2025-03-09 06:06:59 +08:00
nkymut 756a65016d Merge branch 'add-program-change' of https://github.com/nkymut/strudel into add-program-change 2025-03-09 05:37:44 +08:00
nkymut a18d485283 Merge branch 'main' of https://github.com/tidalcycles/strudel into add-program-change 2025-03-09 05:34:18 +08:00
Felix Roos fcf6450ff0 Merge pull request #1288 from tidalcycles/sampler-improvements
@strudel/sampler improvements
2025-03-08 22:17:46 +01:00
Felix Roos 09dd374722 Merge branch 'main' into add-program-change 2025-03-08 22:08:03 +01:00
Felix Roos 9c9ce50b03 Merge pull request #1223 from nkymut/gamepad-pr
Add Gamepad module
2025-03-08 21:56:50 +01:00
Felix Roos edc2903106 fix: relative imports 2025-03-04 21:35:32 +01:00
Alex McLean b15843f3a7 change behaviour of polymeter, and remove polymeterSteps (#1302)
* change behaviour of polymeter, and remove polymeterSteps

* format
2025-03-04 18:17:37 +00:00
Jade (Rose) Rowland 86333ab6f6 Merge pull request #1304 from daslyfe/jade/pwm
feat: Create Pulse Oscillator  with variable PWM
2025-03-03 21:36:57 -05:00
Jade (Rose) Rowland 003e3b790d bounds 2025-03-03 21:29:30 -05:00
Jade (Rose) Rowland 4048ced7e6 format 2025-03-03 21:27:05 -05:00
Jade (Rose) Rowland 64b99f5a8c gain adj 2025-03-03 21:26:42 -05:00
Jade (Rose) Rowland b4af840240 docs 2025-03-03 21:05:23 -05:00
Jade (Rose) Rowland 8a502e886e vibrato working 2025-03-03 20:36:31 -05:00
Jade (Rose) Rowland c7ee90922f pwm 2025-03-03 01:32:04 -05:00
Jade (Rose) Rowland 530339ed8f Merge pull request #1295 from daslyfe/jade/uwu2000
feat: Theme improvements
2025-03-02 11:08:31 -05:00
Alex McLean fece4e8b57 bugfix zoom stepcount (#1301)
* bugfix zoom stepcount
2025-03-02 10:58:46 +00:00
Jade (Rose) Rowland afdcd42039 atomify log 2025-02-28 19:48:58 -05:00
Jade (Rose) Rowland 690b8648a8 Merge pull request #1298 from nkymut/fixtesterror
Fix test error #1297
2025-02-28 10:01:20 -05:00
Yuta Nakayama 7c1e968d41 Fix test error #1297 2025-02-28 19:13:46 +08:00
Jade (Rose) Rowland c0b3187029 Merge pull request #1297 from daslyfe/jade/fix/importerror
Hotfix: prevent undefined pattern code from crashing strudel on load
2025-02-27 20:53:41 -05:00
Jade (Rose) Rowland af1f7658c7 Merge branch 'main' into jade/fix/importerror 2025-02-27 20:47:24 -05:00
Jade (Rose) Rowland b531962b1f fixed 2025-02-27 20:42:40 -05:00
Jade (Rose) Rowland 8867a843ac fallback 2025-02-27 20:17:06 -05:00
Mehmet Ali "Mali" Akmanalp 6e972f4380 Fix misplaced ending sentence (#1296) 2025-02-27 07:24:58 +00:00
Jade (Rose) Rowland 65282bf5ea lint 2025-02-24 22:26:22 -05:00
Jade (Rose) Rowland 3df9744d79 theme attr 2025-02-24 22:24:29 -05:00
Jade (Rose) Rowland 5a5bbfc8da lint 2025-02-24 22:22:03 -05:00
Jade (Rose) Rowland f66478b9da button hover color 2025-02-24 22:15:38 -05:00
Jade (Rose) Rowland 904c213d03 foreground text color 2025-02-24 22:03:50 -05:00
Jade (Rose) Rowland d9c3f051b9 Merge branch 'main' into jade/uwu2000 2025-02-24 20:12:12 -05:00
Alex McLean 470a345296 Signpost licenses for source code and samples a bit more, ref #1277 (#1289)
* Signpost licenses for source code and samples a bit more, ref #1277

* format
2025-02-23 09:54:13 +00:00
Alex McLean 0925ea56dd Allow wchooseCycles probabilities to be patterned (#1292)
* allow wchooseCycles probabilities to be patterned
2025-02-23 09:52:27 +00:00
Jade (Rose) Rowland 1f233b9e7d Merge pull request #1287 from daslyfe/jade/supabasequery
Create Pattern Page Pagination
2025-02-21 20:18:57 -05:00
Jade (Rose) Rowland 5c5d411588 lint 2025-02-21 20:11:39 -05:00
Jade (Rose) Rowland bbb88a2302 accessibility 2025-02-21 20:03:17 -05:00
Alex McLean 64c94b3623 showcase tweaks (#1291) 2025-02-21 21:38:10 +00:00
Jade (Rose) Rowland 42c2262576 working 2025-02-21 14:41:01 -05:00
Jade (Rose) Rowland 4959bff060 font settings 2025-02-21 11:06:21 -05:00
Jade (Rose) Rowland 1ded398468 fixed style 2025-02-21 01:31:06 -05:00
Felix Roos b016720696 sampler: support serving any file (like strudel.json) 2025-02-20 23:37:59 +01:00
Felix Roos c639e44ca7 fix: dont bail when ip cannot be determined (happens when no wifi) 2025-02-20 23:07:45 +01:00
Jade (Rose) Rowland b664bd3d1f girl 2025-02-20 00:54:33 -05:00
Jade (Rose) Rowland dfb7d7bb7f prettier 2025-02-18 11:13:33 -05:00
Jade (Rose) Rowland 3e6a45cf8b fix offset 2025-02-18 11:10:15 -05:00
Jade (Rose) Rowland f47f5c1344 prettier 2025-02-18 10:52:48 -05:00
Jade (Rose) Rowland 47f65da621 remove unesseccary code 2025-02-18 10:47:48 -05:00
Jade (Rose) Rowland c210ea3f89 fix paginator 2025-02-18 10:41:16 -05:00
Jade (Rose) Rowland 50f076084f working 2025-02-18 01:48:17 -05:00
Jade (Rose) Rowland 5cd98880ca reorganize panels 2025-02-17 12:22:45 -05:00
Alex McLean aabc82bedd Fixes inverted triangle wave by renaming it to itri, making non-inverted tri (#1283)
* add itri / itri2 .. but should tri and itri be swapped??

* swap tri/tri2 with itri/itri2. Add some basic docs for bipolar signals
2025-02-11 15:34:23 +00:00
Alex McLean 84581b22aa Fix for squeezejoin and functions using it, including bite (#1286) 2025-02-11 09:02:34 +00:00
Alex McLean 3575fc3cc8 rename repeat back to extend (#1285) 2025-02-09 15:18:28 +00:00
nkymut 43523b73c4 codeformat 2025-02-09 15:12:14 +08:00
nkymut b98ebc696d remove midimap JSDoc 2025-02-09 12:19:30 +08:00
nkymut f802f18d68 refactor(midi): extract MIDI message handlers into dedicated functions
- Move MIDI API logic into separate functions following #1274 (sendCC, sendProgramChange, sendPitchBend, etc.)
2025-02-09 10:56:51 +08:00
nkymut 919c2854d5 Merge branch 'main' of https://github.com/tidalcycles/strudel into add-program-change 2025-02-09 10:53:03 +08:00
Alex McLean cf8203a4db mqtt bugfix - connection check (#1282) 2025-02-07 17:11:52 +00:00
Alex McLean cda79f3e5c Bugfix: update mqtt connections dictionary (#1281) 2025-02-07 16:38:28 +00:00
Alex McLean 07b0a2e0f0 Make mqtt topic patternable (#1280) 2025-02-07 10:39:53 +00:00
Felix Roos 5e81b542dc Merge pull request #1274 from tidalcycles/midimaps
midimaps
2025-02-07 11:07:32 +01:00
nkymut 451cdcc3a9 fix sendChannelAfterTouch -> sendChannelAftertouch 2025-02-07 04:39:24 +08:00
nkymut 5ff1d35272 'miditouch' change sendKeyAfterTouch to sendChannelAfterTouch 2025-02-07 00:08:31 +08:00
Alex McLean 8bde61fa27 allow duration and cps metadata to be added to mqtt messages (#1279) 2025-02-06 14:59:03 +00:00
Felix Roos efd4071637 remove midisounds for now 2025-02-06 13:51:53 +01:00
Alex McLean 981ad1e242 Add DOI 2025-02-06 09:06:24 +00:00
Alex McLean 49e9b84962 [breaking change] Sample signals from query onset, rather than midpoint (#1278)
This changes almost everything involving signals, including all use of random numbers.
2025-02-05 15:10:53 +00:00
nkymut 54c5454306 edit README.md 2025-02-05 08:17:42 +08:00
nkymut 9b279ff671 update 'midicmd' in README.md 2025-02-05 08:11:39 +08:00
nkymut 20dcae68c1 add sysex handler to midicmd 2025-02-05 07:42:06 +08:00
nkymut 52d1443cf8 Add midicmd JSdoc 2025-02-05 07:41:24 +08:00
Felix Roos 848edb1f69 doc: midisounds 2025-02-03 22:56:51 +01:00
Felix Roos 88fb0b3b75 fix: pnpm check 2025-02-03 22:45:19 +01:00
Felix Roos dc8becc610 chore: delete old files 2025-02-03 22:44:56 +01:00
Felix Roos e99f229b57 doc: defaultmidimap + midimaps 2025-02-03 22:37:59 +01:00
Felix Roos c810a02a79 - add defaultmidimap function
- add midisounds function
- add midiport control
2025-02-03 21:55:57 +01:00
nkymut ed7dc4ef6e codeformat 2025-02-04 02:49:47 +08:00
nkymut 4636d824fa remove experimental code 2025-02-03 08:40:39 +08:00
Alex McLean 018d1ccd31 Stepwise documentation tweaks, with mridangam samples (#1275)
* add mridangam sample bank
* stepwise documentation tweaks
2025-02-02 23:55:36 +00:00
Felix Roos d86df33b8c allow loading midimap from url 2025-02-02 23:49:17 +01:00
Felix Roos b74d5becd5 allow passing ccn numbers directly to midimapped control name 2025-02-02 23:37:20 +01:00
Felix Roos b87b2aff9a simplify more 2025-02-02 22:18:56 +01:00
Felix Roos 95b1548e5f simplify 2025-02-02 22:16:11 +01:00
Felix Roos 0b1bc74c3b feat: basic midimap handling 2025-02-02 22:01:53 +01:00
Alex McLean ce9d23049a Polish, rename, and document stepwise functions (#1262)
* polish, rename, and document stepwise functions: `pace`, `take`, `drop`, `expand`, `contract`, `repeat`, `zip`, `grow`, `shrink`, and `tour`
2025-02-02 20:26:44 +00:00
Felix Roos 0338c5b222 Merge pull request #1272 from tidalcycles/fix-sf2-timing
Fix sf2 timing
2025-02-01 22:57:00 +01:00
Felix Roos 1bf74024d4 fix: sf2 soundfont timing 2025-02-01 22:54:20 +01:00
Felix Roos 63ee218d53 fix: make sure ac is defined 2025-02-01 22:54:06 +01:00
Felix Roos 3d37478577 Merge pull request #1245 from TodePond/lu/add-drum-suffixes
Add bank aliasing and case insensitivity
2025-02-01 22:32:59 +01:00
Felix Roos 9d5d86bb09 docs: use mask instead of gain, so you see what's active 2025-01-31 14:13:47 +01:00
Felix Roos e2b7c3a62b chore: remove obsolete snapshots 2025-01-31 11:05:12 +01:00
Felix Roos 1fb68af5af chore: pnpm i 2025-01-31 11:01:40 +01:00
Felix Roos b611c9c2b4 chore: revert to main package lock 2025-01-31 11:00:07 +01:00
Felix Roos ceb466ab9c chore: update vite 2025-01-31 10:58:27 +01:00
Felix Roos d09809ed12 Merge branch 'main' into gamepad-pr 2025-01-31 10:55:12 +01:00
Felix Roos f558b4b8f6 hotfix: update action versions 2025-01-31 09:45:36 +01:00
Felix Roos f26a2af38e Merge pull request #1217 from nkymut/devicemotion
Add Device Motion module
2025-01-31 09:39:54 +01:00
Felix Roos 75f5f45652 fix: bring back examples test
+ ignore device motion examples
2025-01-31 08:40:16 +01:00
Felix Roos 5cef1a8cf9 refactor: simplify test runtime 2025-01-31 08:40:00 +01:00
Felix Roos bcb1da826e fix: doc example 2025-01-31 08:26:09 +01:00
Felix Roos 1f5f1a63a6 docs: cpm -> setcpm 2025-01-31 08:23:52 +01:00
Felix Roos 44828e2047 docs: move dev info down 2025-01-31 08:22:04 +01:00
Felix Roos bcef67e5a1 chore: bump vite + update lockfile 2025-01-31 08:19:26 +01:00
Felix Roos b4ef786108 Merge branch 'main' into devicemotion 2025-01-31 08:16:31 +01:00
Felix Roos d03fc43f03 docs: add info on how to test repl package 2025-01-30 21:03:05 +01:00
Felix Roos ca00f7c5d0 Merge branch 'main' into lu/add-drum-suffixes 2025-01-29 15:46:21 +01:00
Felix Roos dbbe2d7c98 Merge pull request #1247 from tidalcycles/get-control
add "as" function + getControlName
2025-01-29 15:40:00 +01:00
Felix Roos 1058c272a4 doc: add as to controls page 2025-01-29 15:34:14 +01:00
Felix Roos 81e97a5643 Merge branch 'main' into get-control 2025-01-29 15:31:33 +01:00
Felix Roos f105ea6677 Merge pull request #1268 from tidalcycles/theme-glowup
Theme glowup
2025-01-29 15:30:04 +01:00
Felix Roos 6307f755f7 Merge branch 'main' into theme-glowup 2025-01-29 15:24:45 +01:00
Felix Roos fac698e39c Merge pull request #1264 from tidalcycles/housekeeping
patchday
2025-01-29 15:22:18 +01:00
Felix Roos d54022a65a fix: build error -> workbox max file size limit 2025-01-29 15:19:49 +01:00
Felix Roos 892a686462 fix: react 19 error 2025-01-29 14:52:44 +01:00
Felix Roos fbf9d06d84 Merge remote-tracking branch 'origin/main' into housekeeping 2025-01-29 14:50:49 +01:00
Felix Roos 06415d7f14 fix: error 2025-01-29 00:05:29 +01:00
Felix Roos d353eff1f6 comment out xcode theme 2025-01-29 00:03:39 +01:00
Felix Roos ce5add4a56 improve vscodeDark 2025-01-29 00:03:16 +01:00
Felix Roos 212a478161 improve sublime theme 2025-01-28 23:30:48 +01:00
Felix Roos 33b31fb434 rename okaidia to monokai + improve it 2025-01-28 23:30:33 +01:00
Felix Roos b51dacb11c improve material dark theme 2025-01-28 23:19:37 +01:00
Felix Roos 1e59b4efa4 improve gruvbox dark 2025-01-28 23:06:24 +01:00
Felix Roos e31a9965d5 improve github dark theme 2025-01-28 22:52:48 +01:00
Felix Roos 6c537cb134 improve duotoneDark 2025-01-28 22:47:59 +01:00
Felix Roos 6062a2e757 glow up android studio theme 2025-01-28 22:47:50 +01:00
Felix Roos ac83ff8817 theme glowup 2025-01-28 00:34:25 +01:00
Felix Roos b55661b21e migrate remaining themes 2025-01-28 00:33:44 +01:00
Alex McLean 638e247a5f Revert "Fix sometimes (#1243)" (#1267)
This reverts commit 00b0341839.
2025-01-28 00:00:03 +01:00
Felix Roos ff4d4357b2 format 2025-01-27 09:10:13 +01:00
Felix Roos 1460defa42 5 more themes 2025-01-27 09:08:30 +01:00
Felix Roos 1053c7eb38 4 more themes 2025-01-27 08:55:39 +01:00
Felix Roos c09b590cf6 4 more themes 2025-01-27 08:45:56 +01:00
Felix Roos 63f9f6cba0 5 more themes 2025-01-27 08:34:54 +01:00
Felix Roos 9112a0c4f5 migrate 5 more themes 2025-01-27 08:21:56 +01:00
Felix Roos e754070a59 abcdef + androidstudio 2025-01-27 00:03:37 +01:00
Felix Roos afa202e2a8 migrate custom themes awa from @uiw/codemirror-themes 2025-01-26 23:48:27 +01:00
Felix Roos fc3d7ade11 remove uiw codemirror themes to fix site
+ todo: refactor themes to not use uiw package
2025-01-26 23:05:17 +01:00
Lu Wilson d192201e07 Update website/public/tidal-drum-machines-alias.json 2025-01-26 17:01:47 +00:00
Lu[ke] Wilson c9bdfe57dd add more aliases 2025-01-26 16:51:11 +00:00
Lu[ke] Wilson 7e1c6c1c22 setup default aliasing 2025-01-26 16:43:04 +00:00
Lu[ke] Wilson 5d3778fb27 allow aliasing via a path 2025-01-26 16:37:51 +00:00
Lu[ke] Wilson f362f1c9f6 add comments and case insensitivity 2025-01-26 16:28:33 +00:00
Lu[ke] Wilson fd68ad9bde add docs and allow arrays of aliases 2025-01-26 16:08:54 +00:00
Lu[ke] Wilson 7222c29c55 fix and overload 2025-01-26 15:54:25 +00:00
Lu[ke] Wilson 234beff00e revert manual bank aliases 2025-01-26 15:34:12 +00:00
Lu[ke] Wilson 90fe4d3816 set by value so it actually updates 2025-01-26 14:58:58 +00:00
Felix Roos 5a188f7461 cleanup 2025-01-26 15:50:44 +01:00
Felix Roos 5d98fd2ab3 remove unused check task 2025-01-26 15:46:13 +01:00
Felix Roos 46400effb7 fix: lint error 2025-01-26 15:45:54 +01:00
Lu[ke] Wilson 710da1d28d improve function 2025-01-26 14:30:47 +00:00
Felix Roos f4b8753171 fix: tailwind setup for real now 2025-01-26 14:58:23 +01:00
Felix Roos aa1efcc7ea ignore ts error 2025-01-26 14:58:03 +01:00
Felix Roos 3e721d91a5 update all the things again 2025-01-26 14:51:08 +01:00
Felix Roos badbcdcf25 update codemirror package 2025-01-26 14:42:23 +01:00
Felix Roos 4f35027d9f update pnpm version in workflows 2025-01-26 14:38:48 +01:00
Felix Roos de7c652706 chore: update test action versions 2025-01-26 14:35:55 +01:00
Felix Roos 0e59a233ed chore: remove vite-plugin-pwa dependency
- its only used for typings
- it creates problems with peerDependencies
- just let it die
2025-01-26 14:32:28 +01:00
Felix Roos b3e0f180b3 update pnpm action-setup 2025-01-26 13:30:56 +01:00
Lu[ke] Wilson a2c896f765 fix repeated calls 2025-01-26 12:30:37 +00:00
Felix Roos c7cd03a2aa migrate eslint 2025-01-26 13:24:51 +01:00
Lu[ke] Wilson e6604491a9 add aliasbank function 2025-01-26 12:21:26 +00:00
Felix Roos 1d7f755b89 chore: update website packages 2025-01-26 13:06:48 +01:00
Lu[ke] Wilson 4f6e38f714 Merge remote-tracking branch 'origin/main' into lu/add-drum-suffixes 2025-01-26 11:28:10 +00:00
nkymut 23ed342635 prettier! 2025-01-26 02:11:13 +08:00
nkymut 443760c0d1 update documentation 2025-01-26 02:09:37 +08:00
nkymut bb56ed479f Refactor gamepad polling to use Strudel's signal system
- Replace requestAnimationFrame polling with signal
- individual signals for buttons and axes from baseSignal
- Remove window message-based gamepad state handling for toggleButtons
- Add module-level state storage to keep button state across strudel code update
2025-01-26 02:04:13 +08:00
nkymut c5d7f95441 add testsnapshot 2025-01-25 10:01:58 +08:00
nkymut 3ffe3957ba Prettier! 2025-01-25 08:00:49 +08:00
nkymut 3189b365c8 fix midibend and miditouch 2025-01-25 03:27:46 +08:00
nkymut e19d059c0f update documents 2025-01-25 02:29:44 +08:00
nkymut b8b999eab5 add midibend, miditouch 2025-01-25 02:28:56 +08:00
nkymut 393d17a41b fix test error
- add mock 'midin' and 'sysex'
- typo in sysex example
2025-01-25 01:12:38 +08:00
Felix Roos 35911f3082 update tailwind 2025-01-24 15:55:42 +01:00
Felix Roos 024f424bf5 update mini package 2025-01-24 15:50:26 +01:00
Felix Roos 1b8ccc05e1 update main package + core package + vite / vitest 2025-01-24 15:45:49 +01:00
Felix Roos 77267a80e3 Merge pull request #1252 from tidalcycles/reference-package
add reference package
2025-01-24 15:32:48 +01:00
Felix Roos 0ca540b671 add reference readme 2025-01-24 15:22:23 +01:00
Alex McLean 5731ae0cdc support all(pianoroll) and all(pianoroll({labels: true})) (#1234) 2025-01-24 14:16:55 +00:00
Felix Roos 5d562e8cd6 add reference package 2025-01-24 14:31:29 +01:00
Alex McLean 9432f780f2 MQTT - if password isn't provided, prompt for one
Helpful for cases where you don't want to risk putting a password in the code.
2025-01-24 11:13:49 +00:00
nkymut d06a75a2cd Add cc to midicmd, add API Reference for midi related controls 2025-01-24 05:37:11 +08:00
nkymut 57c48f0c45 Add 'sysex' control
- sysex(id, data) and both arguments are patternable
2025-01-23 08:30:06 +08:00
nkymut a4792e29f5 update ProgramChange from pc to progNum
- add progNum keyword handler
- update midicmd handler to handle 'progNum' case
2025-01-22 06:48:55 +08:00
Jade (Rose) Rowland 52ebfa1d09 Merge pull request #1248 from daslyfe/fixbeatdoc
fix docs for beat function
2025-01-21 00:24:03 -05:00
Jade (Rose) Rowland 6cde970e0d snapshot 2025-01-21 00:22:31 -05:00
Jade (Rose) Rowland 188d318125 fixed 2025-01-21 00:20:55 -05:00
nkymut f95eadab2f adjust midicmd heading level 2025-01-20 01:31:26 +08:00
nkymut 1349ecb4af add midicmd documentation 2
- MiniRepl for input-output.mdx
- addresses #789 #710
2025-01-20 01:26:41 +08:00
nkymut 268c66cd3d add midicmd documentation
- addresses #789 #710
2025-01-20 01:11:39 +08:00
Felix Roos 8d28317d0e Merge pull request #1230 from tidalcycles/voicings-doc
understand voicings page
2025-01-18 23:27:51 +01:00
Felix Roos fc41bd1a70 snapshot 2025-01-18 22:28:51 +01:00
Felix Roos 773420fd65 add "as" function + getControlName 2025-01-18 22:27:29 +01:00
Lu[ke] Wilson 45fffa514a add shortened bank names 2025-01-18 11:09:54 +00:00
nkymut a8803784e1 prettier! 2025-01-18 14:42:58 +08:00
nkymut bfb4eee122 Merge branch 'main' of https://github.com/tidalcycles/strudel into add-program-change 2025-01-18 14:42:30 +08:00
nkymut 3325a8dbe9 Add device specific setting folder 1
- add example sysex data for setting NSX-39(Pocket Miku) voice data.
2025-01-18 14:38:22 +08:00
nkymut 13a4512601 Get sysex working
split sysex message into sysexid and sysexdata
sysexid is a device identification number or array
sysexdata is an array of data to be sent to the device
2025-01-18 14:31:11 +08:00
Yuta Nakayama cdf50cbaab Update README.md
minor edit on SSL installation procedure
2025-01-18 07:09:43 +08:00
Felix Roos f61916fffa Merge pull request #1226 from heerman/binary
Add binary and binaryN
2025-01-17 19:27:00 +01:00
Alex McLean 00b0341839 Fix sometimes (#1243)
* test and fix for sometimes bug
2025-01-16 11:18:33 +00:00
Jade (Rose) Rowland d5ab391a98 Merge pull request #1237 from daslyfe/origin/daslyfe/subcycle
onSubCycle function for "step sequencer" style rhythm notation
2025-01-15 23:55:46 -05:00
Jade (Rose) Rowland d2a9b9b750 format 2025-01-15 23:51:57 -05:00
Jade (Rose) Rowland 2348023b22 merge main 2025-01-15 23:35:36 -05:00
Jade (Rose) Rowland 6e5d8eed19 Merge branch 'main' into origin/daslyfe/subcycle 2025-01-15 23:35:06 -05:00
Jade (Rose) Rowland c33c8b5469 remove possibly not needed alt 2025-01-15 23:30:56 -05:00
Jade (Rose) Rowland 7b6074ccef update function 2025-01-15 23:30:19 -05:00
nkymut e085819fe2 add documentation for pc and sysex 2025-01-15 22:43:03 +08:00
nkymut 155ef9e95f register pc and sysex as control keywords 2025-01-14 22:10:16 +08:00
Alex McLean 55c226cda6 Add stepBind, and some toplevel aliases for binds and withValue (#1241)
* Add toplevel withValue function
* add stepBind, and add toplevel aliases for this and other binds
2025-01-14 13:39:14 +00:00
nkymut c242f5f625 midi mapping to handle program change and sysex 2025-01-14 17:11:14 +08:00
nkymut 859f153ec6 Add program change(pc) and sysex to midi 2025-01-14 16:54:53 +08:00
Jade (Rose) Rowland c5de21ef61 Merge pull request #1235 from daslyfe/orgin/daslyfe/keydown
Add onKey function for custom key commands for patterns
2025-01-14 00:11:10 -05:00
Jade (Rose) Rowland 36374fb3fb format 2025-01-14 00:06:57 -05:00
Jade (Rose) Rowland 570c7a0d6b _keyDown 2025-01-14 00:03:44 -05:00
Sarah Gillespie c3be21e6e5 Update value-modifiers.mdx (#1238)
Revises outdated documentation in light of PR #1030
2025-01-12 10:32:24 +00:00
Jade (Rose) Rowland 7410ac5cec snapshot 2025-01-08 00:44:40 -05:00
Jade (Rose) Rowland f5127147de channge function name 2025-01-08 00:43:02 -05:00
Jade (Rose) Rowland 1d144faed7 update snapshot 2025-01-02 22:39:56 -05:00
Jade (Rose) Rowland 7b914e7f22 working 2025-01-02 22:33:04 -05:00
Jade (Rose) Rowland 052addd67e add doc link 2025-01-02 22:16:46 -05:00
Jade (Rose) Rowland 3d162536aa add keyDown 2025-01-02 22:12:48 -05:00
Jade (Rose) Rowland 2443aad01b key alias and breakout 2024-12-31 11:58:32 -05:00
Jade (Rose) Rowland 08f6c1ad5e fix test 2024-12-30 23:19:37 -05:00
Jade (Rose) Rowland 974376d404 fix conflict 2024-12-30 22:03:51 -05:00
Jade (Rose) Rowland 1da80db048 merge main 2024-12-30 21:59:40 -05:00
Jade (Rose) Rowland 42519581c1 add func 2024-12-30 21:49:59 -05:00
Alex McLean 1e3bbc57cc Documentation for all/each, and bugfix for each (#1233)
* bugfix for each(), and documentation for each() and all()
* had to hide each/all examples from tests
2024-12-29 12:16:08 +00:00
Alex McLean 9bf0f624f5 Make all() post-stack again, and add each() for pre-stack (#1229)
* Rename `all` to `each`, re-instating old `all`
2024-12-29 10:29:52 +00:00
Luke Heerman c6418789c4 Fix lint 2024-12-27 21:49:56 -05:00
Felix Roos 62d6ef2287 Merge pull request #1231 from bwagner/pr-1230
suggested changes to voicings.mdx
2024-12-27 22:16:54 +01:00
Luke Heerman 8b909c54db Merge branch 'main' into binary 2024-12-27 15:15:54 -05:00
Luke Heerman 9d029ac914 Add binary and binaryN to learn pages 2024-12-27 15:14:58 -05:00
Luke Heerman 8644b3d163 Fix accidental multi-line jsdoc name 2024-12-27 15:14:31 -05:00
Luke Heerman 426c5edf25 Update tests snapshot 2024-12-27 07:43:41 -05:00
Bernhard Wagner d30623dad4 minor amendments 2024-12-26 15:11:48 +01:00
Felix Roos 49d4fb499f some voicing doc edits 2024-12-26 01:29:48 +01:00
Felix Roos e4f89f072e delete timbre draft 2024-12-24 01:05:01 +01:00
Felix Roos e12dadb33f write more 2024-12-24 00:59:03 +01:00
Felix Roos 991d8e4717 Merge branch 'main' into voicings-doc 2024-12-23 23:07:46 +01:00
Felix Roos 26cc7e2920 Merge pull request #1213 from tidalcycles/spectrum
add basic spectrum function
2024-12-23 11:53:11 +01:00
Alex McLean 04eac3e7c5 Fix regression for d1, p1, p(n) (#1227)
* fix for `d1` and `.p(1)`
2024-12-22 20:04:45 +00:00
Luke Heerman 7cf7575e6d Make the docs friendlier 2024-12-17 08:49:49 -05:00
nkymut 0be9f439bc Prettier💄 2024-12-17 19:39:38 +08:00
nkymut 36fe942e24 getting rid of AI-smell 2024-12-17 19:35:09 +08:00
Yuta Nakayama 06958a5281 Merge branch 'main' into gamepad-pr 2024-12-17 19:22:42 +08:00
nkymut 033b123ae0 Add DOCS for gamepad module 2024-12-17 19:22:03 +08:00
Yuta Nakayama b7d8593a4d Merge branch 'main' into devicemotion 2024-12-17 17:34:31 +08:00
nkymut a5b05d211e Add DOC for devicemotion 2024-12-17 17:28:53 +08:00
Luke Heerman 111cea2381 Fix lint 2024-12-16 21:31:21 -05:00
Felix Roos 896a3828f6 fix: spectrum example test 2024-12-16 23:19:57 +01:00
Felix Roos eb02997836 spectrum doc 2024-12-16 23:18:20 +01:00
Felix Roos 8a33c171f5 spectrum widget 2024-12-16 23:11:01 +01:00
Luke Heerman f87f279198 Support those who prefer no left padding 2024-12-10 23:51:32 -05:00
Luke Heerman 4cc019f038 Rename variable 2024-12-10 23:51:32 -05:00
Luke Heerman 34f4afad01 Rework binary to binaryN 2024-12-10 23:51:32 -05:00
Luke Heerman 947b263b9c Add tests 2024-12-10 23:51:32 -05:00
Luke Heerman 0a408e464a Make example more concise 2024-12-10 23:51:32 -05:00
Luke Heerman 0d660277f6 Put msb on the right 2024-12-10 23:51:32 -05:00
Luke Heerman 33fef379ad Get a basic version of binary working 2024-12-10 23:51:32 -05:00
eefano 0531369613 Make cps patternable (#1001)
Supports e.g. `note("c d e f g a").cps("<1 1.2 1.3 1.4 1.5 1.6>")`
2024-11-30 09:09:36 +00:00
Alex McLean c66f19108c MQTT support (#1224)
* Add mqtt() method and documentation
* Documentation clarifications for MIDI and OSC
2024-11-30 09:07:55 +00:00
Alex McLean ef53367ba9 Apply all function to individual patterns rather than final stack (#1209) 2024-11-30 08:46:13 +00:00
nkymut f01d51f76a fix errors in README.md 2024-11-27 01:16:06 +08:00
nkymut d741b4d17a Add GamePad Module 2024-11-27 01:03:09 +08:00
nkymut f33ec0e2af Add Device Motion package
Introduces smart-phone device's acceleration, gravity, rotation, and orientation signals for dynamic pattern creation in Strudel.
2024-11-21 12:01:17 +08:00
Felix Roos 726abf76ce Merge pull request #1214 from bthj/main
REPL: solo and sync configuration
2024-11-20 16:32:51 +01:00
Björn Þór Jónsson a7d74ed6d6 REPL: solo and sync configuration; codeformat 2024-11-20 16:28:07 +01:00
Matthew Kaney bd69ffb4b7 Add high-resolution CC option to midi 2024-11-16 14:35:18 -05:00
Felix Roos 648fbf99fa add basic spectrum function 2024-11-09 20:57:09 +01:00
Björn Þór Jónsson b913e1c50d REPL: solo and sync configuration 2024-11-09 15:13:24 +01:00
Raphaël Forment 23a4bf6641 Getting rid of second argument 2024-11-09 02:33:56 +01:00
Raphaël Forment ec470aa2c6 Feat: midi() command support external instrument parameter mapping
This commit adds a second argument to the midi() command: mapping.
This argument should be an object containing a key-value map of
MIDI controls used by an external synthesizer. If any control is
used that matches the mapping, a CC message is sent.
2024-11-09 01:41:59 +01:00
Alex McLean ae335ac40c Add s_zip for 'cat'-ing patterns together step-by-step (#1208)
Fix tactus returned by 'step'
Fix name of toplevel s_extend (was 's_cycles')
2024-10-30 21:29:43 +01:00
Alex McLean 9ecad810b1 Preserve tactus for 'degrade' and friends, and tidy up 'pick' and friends (#1205)
* separate pick methods into their own module
* preserve tactus in degrade and friends
2024-10-30 21:28:31 +01:00
Felix Roos f18cf76dde Merge pull request #1206 from ChinoUkaegbu/chore/edit-setup-instructions
chore: Edit run locally instructions in README.md
2024-10-30 17:11:52 +01:00
ChinoUkaegbu 08c918f13e edit run locally instructions in README.md 2024-10-29 11:20:05 +01:00
Felix Roos 2e72c7f4ed Merge pull request #1203 from tidalcycles/console-colors
colorize console + tweak header
2024-10-23 23:08:14 +02:00
Felix Roos 614f393a5d more cleanup 2024-10-23 23:05:17 +02:00
Felix Roos 75f7f4deac cleanup 2024-10-23 23:03:48 +02:00
Felix Roos 2a67698616 - remove header icons (except play/stop button)
- use unicode spiral instead of emoji spiral
- fix header height on mobile
2024-10-23 02:29:23 +02:00
Felix Roos 801879bddf use fontFamily + fontSize from settings in console 2024-10-23 01:17:18 +02:00
Felix Roos 7d8984b706 fix: lint 2024-10-23 01:11:03 +02:00
Felix Roos 1a2847d953 - move console logic to console tab
- colorize logs when color is set
2024-10-23 01:08:32 +02:00
Felix Roos e71db24073 Merge pull request #1202 from tidalcycles/markcss
markcss
2024-10-22 22:54:59 +02:00
Felix Roos f61de0c47c use color inherit in monochrome themes
(to be able to set color in markcss)
2024-10-22 22:48:36 +02:00
Felix Roos 53b8bbb732 snapshot + add markcss in test runtime 2024-10-22 22:27:57 +02:00
Felix Roos aeaf447142 add doc 2024-10-22 22:27:14 +02:00
Felix Roos 1e6e0a61b3 feat: markcss 2024-10-22 22:23:48 +02:00
Felix Roos dd696ba663 Merge pull request #1200 from tidalcycles/more-settings
add 2 new ui settings
2024-10-21 22:56:37 +02:00
Felix Roos be4c8cbdce hide docs link when embedded 2024-10-21 22:47:05 +02:00
Felix Roos b6b54a8553 add 2 new settings
- disable css animations
- hide buttons
- add docs link to left (to use when buttons are hidden)
2024-10-21 21:50:40 +02:00
Jade (Rose) Rowland 1d05051fd6 Merge pull request #1199 from tidalcycles/origin/daslyfe/panel_fixes
Make panel hover behavior optional
2024-10-21 11:22:52 -07:00
Jade (Rose) Rowland 6bca8e2a2f Merge branch 'origin/daslyfe/panel_fixes' of github.com:tidalcycles/strudel into origin/daslyfe/panel_fixes 2024-10-21 11:18:35 -07:00
Jade (Rose) Rowland 630ba62cc3 prettier 2024-10-21 11:18:08 -07:00
Jade (Rose) Rowland 8ac98262bc Delete website/.astro/types.d.ts 2024-10-21 11:17:00 -07:00
Jade (Rose) Rowland 6057e9ada1 Delete website/.astro/astro/content.d.ts 2024-10-21 11:16:40 -07:00
Jade (Rose) Rowland 94e8b18ffa remove astro 2024-10-21 11:15:37 -07:00
Jade (Rose) Rowland 2ec20c4ed4 gitignore 2024-10-21 08:39:11 -07:00
Jade (Rose) Rowland c4fe2c7497 fix horizontal button 2024-10-20 23:33:02 -07:00
Jade (Rose) Rowland df2d28f0e5 panel options 2024-10-20 21:54:33 -07:00
Felix Roos d9bd6f9e7d hotfix: alt+dot breakage 2024-10-20 21:04:18 +02:00
Felix Roos 1e0cc2ab17 hotfix: ignore .astro folder + delete files from git 2024-10-20 20:45:49 +02:00
Jade (Rose) Rowland 835c7b6879 Merge pull request #1193 from daslyfe/orgin/daslyfe/feat/pinmenu
Menu Panel Improvements!
2024-10-18 22:28:35 -04:00
Felix Roos 721e7f06b8 Merge pull request #1198 from tidalcycles/patchday2
update lockfile + minor versions
2024-10-19 01:10:06 +02:00
Felix Roos a46bbeaa10 fix: format + ignore samples 2024-10-19 01:05:23 +02:00
Felix Roos e3a3c0c5f9 Revert "failing to upgrade eslint"
This reverts commit 67964c7e23.
2024-10-19 00:56:55 +02:00
Felix Roos 67964c7e23 failing to upgrade eslint 2024-10-19 00:31:52 +02:00
Felix Roos 9e5f9d37ef update vitest from 1 to 2 2024-10-18 23:45:54 +02:00
Felix Roos 0c1234a35f update minor versions 2024-10-18 23:38:35 +02:00
Felix Roos c6cc487fc6 update lockfile version from 6 to 9 2024-10-18 23:35:19 +02:00
Jade (Rose) Rowland dd171f8320 panel position height dependent 2024-10-15 13:33:37 -04:00
Jade (Rose) Rowland c22c786cf2 welcome width 2024-10-14 15:19:16 -04:00
Jade (Rose) Rowland c191471e1e better width calc 2024-10-14 15:12:32 -04:00
Jade (Rose) Rowland 0d0cb3fd93 fix: tiny vertical menu 2024-10-14 15:05:10 -04:00
Jade (Rose) Rowland bb4b7dc533 fix: vertical breakpoints on mobile 2024-10-14 15:01:05 -04:00
Jade (Rose) Rowland 8440fa42ea remove unessecary hover logic 2024-10-14 13:51:14 -04:00
Jade (Rose) Rowland 61f070744a fix: lint 2024-10-14 13:09:24 -04:00
Jade (Rose) Rowland 2e6a561184 remove spillover 2024-10-14 13:08:39 -04:00
Jade (Rose) Rowland 8703d684c4 fix: lint 2024-10-14 13:01:02 -04:00
Jade (Rose) Rowland b0d2115f43 feat: mobile responsiveness 2024-10-14 12:45:55 -04:00
Jade (Rose) Rowland 96802a271c feat: menu pinning 2024-10-13 23:24:54 -04:00
Jade (Rose) Rowland a91f4576f3 Merge branch 'main' of github.com:daslyfe/strudel 2024-10-13 00:01:12 -04:00
Felix Roos ad080d02b3 Merge pull request #1189 from kdiab/main
remove redundant example for cat, update snapshot
2024-09-27 00:17:00 +02:00
Khalid e9e7e02547 Fixed access to merged description in factories.mdx 2024-09-26 17:58:59 -04:00
Felix Roos 2ffc6c9601 Merge pull request #1185 from Bubobubobubobubo/search-bar
Adding search bar (soundtab.jsx)
2024-09-25 13:18:19 +02:00
Raphaël Forment 3a9349d9f5 format code for tests 2024-09-25 12:59:18 +02:00
Raphaël Forment bd3f2845f8 Reverting code 2024-09-25 12:57:20 +02:00
Alex McLean 2d320c459b Screenreader improvements (#1158)
* hide ascii art for screen readers
* aria-labels for minirepl buttons
2024-09-23 16:18:34 +01:00
Raphaël Forment ff9f4a8a0d Simplify search bar code 2024-09-22 23:40:27 +02:00
Raphaël Forment d7b94807cb Merge branch 'tidalcycles:main' into search-bar 2024-09-22 23:30:11 +02:00
kdiab 2c16a37a68 Combine examples for stack, match wording for cat, stack and seq 2024-09-22 10:42:46 -04:00
kdiab 717e4a2c1d Combine examples for seq and remove extra entry 2024-09-22 10:31:50 -04:00
kdiab c225b4719f Combine examples for cat 2024-09-21 11:01:00 -04:00
kdiab 25f762c393 remove redundant example for cat, update snapshot 2024-09-20 23:38:21 -04:00
Alex McLean b75561e3c7 Fix serial timing (#1188)
* fix serial timing
* format
2024-09-20 21:26:41 +01:00
Alex McLean abaab89061 Add bite function (#1187)
For patterning slices of patterns. ref #31.
2024-09-19 23:26:30 +01:00
Felix Roos e409086b34 Merge pull request #1147 from tidalcycles/bettern-zen-spacing
better spacing in zen mode
2024-09-14 13:30:53 +02:00
Felix Roos 532f1435d9 revert lockfile 2024-09-14 13:15:44 +02:00
Raphaël Forment 6cb61ade03 Adding search bar in soundtab.jsx 2024-09-14 11:39:59 +02:00
Felix Roos a40219ba06 Merge pull request #1039 from tidalcycles/filter
add filter + filterWhen + within
2024-09-14 10:50:23 +02:00
Felix Roos 9c99f5ada2 Merge pull request #1101 from tidalcycles/sampler-refactoring
refactor sampler
2024-09-14 10:49:21 +02:00
Felix Roos 2d72c8faa0 Merge pull request #1146 from tidalcycles/midi-error-msg
handle midin device not found error
2024-09-14 10:43:17 +02:00
Felix Roos b188fc6b6d Merge branch 'main' into sampler-refactoring 2024-09-14 10:38:27 +02:00
Martín Rodríguez bfb22228cc Add a search bar to the REPL Reference tab (#1165)
* Add a search bar to the REPL Reference tab
Simple text input that sticks to the top.
Filters by just checking if the search term is in the entry name or synonyms, if available.
2024-09-13 20:59:23 +01:00
Edward Betts 9714d88d61 Correct spelling mistakes (#1183) 2024-09-13 20:58:47 +01:00
Alex McLean bdddb91510 add seqPLoop, ref #31 (#1182) 2024-09-07 22:41:29 +01:00
Jade (Rose) Rowland 07bcaa65a9 create meta params 2024-09-06 00:16:30 -04:00
Jade (Rose) Rowland 5bf1805534 Merge pull request #1180 from daslyfe/phaser_controls
make phaser control match superdirt
2024-09-04 23:52:50 -04:00
Jade (Rose) Rowland 202685e8c4 update test snapshot 2024-09-04 23:50:48 -04:00
Jade (Rose) Rowland aba633e16e fix 2024-09-04 23:42:38 -04:00
Jade (Rose) Rowland da45ce689c fixed formatting 2024-09-04 23:36:20 -04:00
Jade (Rose) Rowland acea7e435e Merge pull request #1179 from tidalcycles/revert-1178-consistent_phaser_controls
Revert "Make phaser control consistent with superdirt"
2024-09-04 23:33:41 -04:00
Jade (Rose) Rowland cb4810cbbc Revert "Make phaser control consistent with superdirt" 2024-09-04 23:32:35 -04:00
Jade (Rose) Rowland 5ec205b383 Merge pull request #1178 from daslyfe/consistent_phaser_controls
Make phaser control consistent with superdirt
2024-09-04 23:29:11 -04:00
Jade (Rose) Rowland ebc0b293a9 updated 2024-09-04 23:20:42 -04:00
Jade (Rose) Rowland 4608c321bd Merge pull request #1172 from daslyfe/speed-cps-fix
fix sample speed when using splice and fit with superdirt
2024-09-02 22:37:15 -04:00
Jade (Rose) Rowland c4243f41c6 spelling 2024-09-01 16:15:55 -04:00
Jade (Rose) Rowland d95b8bc667 Merge pull request #1160 from daslyfe/audio_target_selector
Create audio target selector for OSC/Superdirt
2024-09-01 10:02:24 -04:00
Alex McLean 263c13c36e Fixes fit so it works after a chop or slice (#1171)
* fix fit so it works after a chop or slice

* format
2024-09-01 14:03:47 +01:00
Jade (Rose) Rowland ddceb36613 prettier 2024-08-31 23:49:56 -04:00
Jade (Rose) Rowland ff8ec628be spelling 2024-08-31 23:43:07 -04:00
Jade (Rose) Rowland 11a07df120 add docs for OSC target 2024-08-31 23:38:23 -04:00
Jade (Rose) Rowland 8befa4382b Merge branch 'main' into audio_target_selector 2024-08-31 22:20:53 -04:00
Alex McLean 39006e4d71 polyJoin (#1168)
* create polymetric join - `polyJoin`
* add `poly` as an op alignment to support e.g. `"c e f [g a]".add.poly("0 12 7")`
2024-08-30 13:24:08 +01:00
Alex McLean 812ed6b60d snapshot 2024-08-23 16:12:28 +01:00
Alex McLean 8b6c8eb35d Add scramble and shuffle (#1167)
* add scramble and shuffle functions from Tidal
2024-08-23 16:05:10 +01:00
Jade (Rose) Rowland dcda9a5753 cleanup 2024-08-18 13:21:37 -04:00
Jade (Rose) Rowland d3733d4209 prettier 2024-08-18 13:07:41 -04:00
Jade (Rose) Rowland ef6af96947 Merge branch 'tidalcycles:main' into audio_target_selector 2024-08-18 12:39:28 -04:00
Jade (Rose) Rowland d86ff0a536 Merge pull request #1164 from daslyfe/improve_neocyclist_timing
Improve + simplify neocyclist timing
2024-08-18 12:22:20 -04:00
Jade (Rose) Rowland 2c9ea03fde prettier 2024-08-18 12:08:40 -04:00
Jade (Rose) Rowland 4eae366bee cleaning up 2024-08-18 12:05:03 -04:00
Jade (Rose) Rowland 117f7fa4b5 cleaning up 2024-08-17 17:26:46 -04:00
Jade (Rose) Rowland 73ee84a1fb working 2024-08-17 17:11:51 -04:00
Jade (Rose) Rowland 9c899d5308 testing 2024-08-17 15:31:21 -04:00
Jade (Rose) Rowland b60beaf508 prettier 2024-08-16 10:56:09 -04:00
Jade (Rose) Rowland 796f741a92 use performance clock for osc mode 2024-08-16 10:46:18 -04:00
Jade (Rose) Rowland 8da1d9fbf3 reset collator after n seconds 2024-08-16 00:44:18 -04:00
Jade (Rose) Rowland 5345986b5b Merge branch 'main' into audio_target_selector 2024-08-15 16:28:19 -04:00
Jade (Rose) Rowland 3945abd7e9 Merge pull request #1163 from daslyfe/cross_orgin_check
containerize/seperate out boolean checks for repl types/Repl logic into bespoke components.
2024-08-14 23:18:33 -04:00
Jade (Rose) Rowland 053e4ee54b Merge branch 'tidalcycles:main' into cross_orgin_check 2024-08-12 20:50:15 -04:00
Jade (Rose) Rowland 25d61a2e31 prettier 2024-08-12 20:38:29 -04:00
Jade (Rose) Rowland 5e6131af24 reorganized repl 2024-08-12 20:32:58 -04:00
Jade (Rose) Rowland 2899ee5aef testing: 2024-08-12 18:11:52 -04:00
Jade (Rose) Rowland 9d1674b13c Merge pull request #1162 from daslyfe/cors_pathname_issue
[CORS HOTFIX]
2024-08-12 12:57:21 -04:00
Jade (Rose) Rowland bfead58212 prettier 2024-08-12 12:56:04 -04:00
Jade (Rose) Rowland 926c893c4f check iframe 2024-08-12 12:54:05 -04:00
Jade (Rose) Rowland 3cd31e4841 fixed prettier 2024-08-11 12:50:14 -04:00
Jade (Rose) Rowland c2be2ed76a fixed osc clock 2024-08-11 12:40:38 -04:00
Jade (Rose) Rowland ac0dc7a8de remove desktop restriction 2024-08-11 11:04:20 -04:00
Jade (Rose) Rowland cba9169b2f update select dialog 2024-08-11 11:01:17 -04:00
Jade (Rose) Rowland e9a0a06b77 fixed dialog 2024-08-11 00:57:49 -04:00
Jade (Rose) Rowland d80c06cd55 fix confirm dialog 2024-08-11 00:35:20 -04:00
Jade (Rose) Rowland d850726910 Merge pull request #1157 from daslyfe/osc_clock_jitter
Fix OSC clock jitter
2024-08-08 23:11:28 -04:00
Jade (Rose) Rowland 1b01f41ffd fix test 2024-08-08 23:10:39 -04:00
Jade (Rose) Rowland ad00fa65f8 Merge branch 'tidalcycles:main' into osc_clock_jitter 2024-08-08 22:53:07 -04:00
Jade (Rose) Rowland 814babbf7a cleaning up 2024-08-08 22:52:06 -04:00
Jade (Rose) Rowland 28334ec94d rolling clock average 2024-08-08 20:55:49 -04:00
Jade (Rose) Rowland 7d2110d75f clock fail strategy 2024-08-08 20:35:12 -04:00
Jade (Rose) Rowland 94ccfa631e offset calc 2024-08-08 17:25:45 -04:00
Jack Armitage c7c56a1357 fix 2024-08-06 12:25:52 +00:00
Jack Armitage d40e4dac2f pickRestart example 2024-08-03 18:48:30 +00:00
Jade (Rose) Rowland 686247f0cb Merge branch 'main' of github.com:daslyfe/strudel 2024-07-28 13:33:57 -04:00
Felix Roos dffeac41af Merge remote-tracking branch 'origin/main' into bettern-zen-spacing 2024-07-27 15:16:14 +02:00
Alex McLean 6e496b7a4a Fix loop at tactus (#1145)
* fix loopAt tactus
2024-07-27 11:02:38 +02:00
Jade (Rose) Rowland 71e843e1a3 Merge pull request #1130 from daslyfe/phase_vocode
Phase vocode
2024-07-25 22:37:34 -04:00
Jade (Rose) Rowland 61ba33043e Merge pull request #1132 from daslyfe/udels
Udels (MultiFrame Strudel) Revisited
2024-07-25 22:37:17 -04:00
Felix Roos 943d78f268 better spacing in zen mode 2024-07-25 16:44:02 +02:00
Felix Roos 5ac59e95dd handle midin device not found error 2024-07-25 16:07:58 +02:00
Felix Roos 03bbc0bc27 hotfix: remove log 2024-07-25 09:19:41 +02:00
Alex McLean 4c3457438d Fix tactus marking in mininotation (#1144)
* more tactus tweaks
* format
2024-07-24 10:40:28 +01:00
Jade (Rose) Rowland 85bccdcc19 Merge branch 'main' of github.com:daslyfe/strudel 2024-07-13 13:17:28 -04:00
Jade (Rose) Rowland 94c07b6b7a prettier 2024-07-10 19:11:06 -04:00
Jade (Rose) Rowland 42000a7628 push code to window on aftereval 2024-07-09 22:48:14 -04:00
Felix Roos f514cd85b1 Merge pull request #1136 from tidalcycles/cm-commands
export comment commands
2024-06-25 18:13:27 +02:00
Felix Roos d53929cf68 export comment commands 2024-06-25 10:00:26 +02:00
Alex McLean a4bd0ae100 Chop chop (#1078)
* failing test

* support chopping chops
2024-06-24 17:19:22 +01:00
Alex McLean 283a071c86 Fix bug in Fraction.lcm (#1133)
* bugfix lcm
2024-06-18 22:58:08 +01:00
Jade (Rose) Rowland b5fbcd108f cleanup 2024-06-17 23:41:34 -04:00
Jade (Rose) Rowland 6350cfdb9c Merge pull request #1129 from mindofmatthew/worker-path-in-modules
Fix clock worker dependency path in module builds
2024-06-17 23:32:12 -04:00
Jade (Rose) Rowland 5e9da78e64 fixed window: 2024-06-14 20:42:39 -04:00
Jade (Rose) Rowland f3b83b41f5 prettier 2024-06-14 15:40:37 -04:00
Jade (Rose) Rowland 1d95da7a3a fixed build window issue: 2024-06-14 15:28:24 -04:00
Jade (Rose) Rowland 2a2ddf205a need to fix window message 2024-06-14 14:26:23 -04:00
Jade (Rose) Rowland 6c9e0aaa1a added udels editor and header 2024-06-14 01:24:08 -04:00
Jade (Rose) Rowland d23038d386 Merge branch 'tidalcycles:main' into udels 2024-06-13 22:52:06 -04:00
Jade (Rose) Rowland 248f67d1ab prettier 2024-06-12 10:28:12 -04:00
Jade (Rose) Rowland f3fa1483d7 fix pnpm lock 2024-06-12 01:14:59 -04:00
Jade (Rose) Rowland 11102adb75 unessecary import 2024-06-12 01:14:20 -04:00
Jade (Rose) Rowland 9f958abb08 fixed offset time 2024-06-12 01:11:58 -04:00
Matthew Kaney b72e71b0bd Update base path build setting for core and repl packages 2024-06-11 10:02:57 -04:00
Jade (Rose) Rowland 065b24a2ee working 2024-06-10 23:51:38 -04:00
Matthew Kaney 758b94776d Configure base url for @strudel/web package 2024-06-10 19:10:17 -04:00
Jade (Rose) Rowland e6f3b1f1ef copied files 2024-06-10 00:06:35 -04:00
Jade (Rose) Rowland e62d5759e7 revert 2024-06-10 00:00:43 -04:00
Felix Roos c403a92542 Merge pull request #1126 from tidalcycles/labeled-statements-doc
Labeled statements doc
2024-06-04 00:26:48 +02:00
Felix Roos 269d6dde31 remove stack from workshop 2024-06-04 00:22:49 +02:00
Felix Roos 666c695c63 don't use labeled statements in example for now 2024-06-04 00:10:46 +02:00
Felix Roos 771eb31d3f use labels instead of stacks 2024-06-04 00:05:51 +02:00
Felix Roos c05bbf3422 don't clear hydra in minirepl for now 2024-06-03 23:53:08 +02:00
Felix Roos 364f511a7c Merge pull request #1125 from tidalcycles/viz-doc
doc: visual functions + refactor onPaint
2024-06-03 22:40:21 +02:00
Felix Roos 300022d8ac no custom line height 2024-06-03 20:34:51 +02:00
Felix Roos 357fbf8c82 snapshot 2024-06-02 23:14:32 +02:00
Felix Roos 1acb675f5a doc: visual functions 2024-06-02 23:12:31 +02:00
Jade (Rose) Rowland ab1086318c Merge pull request #1124 from daslyfe/bug_sampledb
Fix indexDB failing with large amount of files
2024-06-02 12:36:29 -04:00
Jade (Rose) Rowland 8c73ad088a support aac 2024-06-02 12:32:54 -04:00
Felix Roos 25981092b1 snapshot 2024-06-02 14:11:52 +02:00
Felix Roos e6b55baed0 fix: step based naming 2024-06-02 14:08:56 +02:00
Felix Roos 6adf1ff977 snapshot 2024-06-02 14:03:30 +02:00
Felix Roos b6e277f1ea use inline scope in examples 2024-06-02 14:03:05 +02:00
Felix Roos d0510f862a clear hydra in mini repl 2024-06-02 14:02:39 +02:00
Felix Roos 4a87df6426 small example tweaks 2024-06-02 14:00:47 +02:00
Kaspars 81ca199a96 Merge branch 'upstream-main' into tonal-fix 2024-06-02 12:39:14 +03:00
Felix Roos bf90867685 fix: mini repl punchcard + claviature flags 2024-06-02 10:49:07 +02:00
Felix Roos 3dc5fd0e7e fix: editPattern bug 2024-06-02 10:48:20 +02:00
Felix Roos a7650f1af3 add autodraw flag + scope 2024-06-02 03:08:16 +02:00
Felix Roos aadb2fee84 support onload inline viz with autodraw 2024-06-02 03:05:26 +02:00
Felix Roos bf391ad6ce simplify: painters are now handled by Drawer 2024-06-02 03:03:36 +02:00
Felix Roos faba4a4e4e implement onPaint with pattern state 2024-06-02 03:00:57 +02:00
Felix Roos 94e411aa7a add beforeStart callback 2024-06-02 02:34:33 +02:00
Jade (Rose) Rowland ffa21ddf0d remove console statement 2024-06-01 19:19:47 -04:00
Jade (Rose) Rowland 6b2d080afc remove unessecary change 2024-06-01 19:17:00 -04:00
Jade (Rose) Rowland 321a888921 add catch 2024-06-01 12:42:07 -04:00
Jade (Rose) Rowland bf7fe2bf75 fixed indexdb 2024-06-01 12:39:45 -04:00
Jade (Rose) Rowland 1fd9ba5dbf convert to blob 2024-06-01 12:11:28 -04:00
Jade (Rose) Rowland 1fca6f25b8 faster upload 2024-06-01 11:35:24 -04:00
Felix Roos 0e6a17fc77 start visual feedback article 2024-06-01 15:42:09 +02:00
Felix Roos 375c68775c make sure draw logic works with multiple repls 2024-06-01 15:41:55 +02:00
Felix Roos 827993a8c9 chore: simplify publish docs 2024-05-31 23:29:38 +02:00
Felix Roos 2aa1acfd95 Publish
- @strudel/codemirror@1.1.0
 - @strudel/core@1.1.0
 - @strudel/csound@1.1.0
 - @strudel/draw@1.1.0
 - @strudel/embed@1.1.0
 - hs2js@0.1.0
 - @strudel/hydra@1.1.0
 - @strudel/midi@1.1.0
 - @strudel/mini@1.1.0
 - @strudel/osc@1.1.0
 - @strudel/repl@1.1.0
 - @strudel/sampler@0.1.0
 - @strudel/serial@1.1.0
 - @strudel/soundfonts@1.1.0
 - superdough@1.1.0
 - @strudel/tidal@0.1.0
 - @strudel/tonal@1.1.0
 - @strudel/transpiler@1.1.0
 - @strudel/web@1.1.0
 - @strudel/webaudio@1.1.0
 - @strudel/xen@1.1.0
2024-05-31 23:07:26 +02:00
Felix Roos 2febbaf40b hotfix: rename tidal-repl example 2024-05-31 23:03:44 +02:00
Jade (Rose) Rowland e29876e7f6 debugging 2024-05-31 13:57:02 -04:00
Felix Roos 3ce32438d6 Merge pull request #1122 from tidalcycles/migrate-tutorial-fanchor
Migrate tutorial fanchor
2024-05-31 12:17:34 +02:00
Felix Roos a17351e11e snapshots 2024-05-31 11:18:32 +02:00
Felix Roos 94f5886466 update some examples 2024-05-31 11:17:43 +02:00
Felix Roos 1a72b9e526 wording 2024-05-31 11:07:56 +02:00
Felix Roos 1eef2c2511 versioning 2024-05-31 11:07:52 +02:00
Felix Roos 05289b171b also add versioning in mini repl 2024-05-31 11:01:09 +02:00
Felix Roos 33322be948 Merge remote-tracking branch 'origin/main' into migrate-tutorial-fanchor 2024-05-31 10:47:25 +02:00
Felix Roos 6f7f415747 Merge pull request #1121 from daslyfe/worklet_race_condition_fix
[BUG FIX] Audio worklets sometimes dont load
2024-05-31 10:46:47 +02:00
Felix Roos 7a4902862d tweaks + logs 2024-05-31 10:45:06 +02:00
Felix Roos c20e84773b immediately remove click listener 2024-05-31 10:40:30 +02:00
Felix Roos 5c9a16bc88 simplify initAudio 2024-05-31 10:40:15 +02:00
Felix Roos 07f58c023f bring back promise cache
just in case loadWorklets is called more than once
2024-05-31 10:36:49 +02:00
Felix Roos 08f0825561 fix example 2024-05-31 10:34:45 +02:00
Felix Roos 2cda78d2db Merge pull request #1107 from daslyfe/fanchor
change fanchor to 0
2024-05-31 10:25:24 +02:00
Jade (Rose) Rowland ff85f2307f remove unessecary functions 2024-05-30 18:58:41 -04:00
Jade (Rose) Rowland af3d32a493 updated to return promise on first click 2024-05-30 18:52:28 -04:00
Jade (Rose) Rowland c0c54c21e3 remove unessecary export 2024-05-30 16:30:49 -04:00
Jade (Rose) Rowland 8be5e9d2eb fixed 2024-05-30 16:25:15 -04:00
Felix Roos 589dfaf8cc Merge pull request #1119 from tidalcycles/web-package-label-statements
fix: use full repl in web package
2024-05-30 14:39:30 +02:00
Felix Roos 3cd31b2290 fix: use full repl in web package 2024-05-30 14:36:28 +02:00
Felix Roos 65856409b6 Merge pull request #1117 from tidalcycles/strudelmirror-in-scope
add strudelMirror to scope
2024-05-30 09:36:32 +02:00
Felix Roos e408fedaf6 format 2024-05-30 09:34:46 +02:00
Felix Roos d424b118ff add a few helpers 2024-05-30 09:34:31 +02:00
Felix Roos 492878754a add strudelMirror to scope 2024-05-30 09:22:17 +02:00
Felix Roos d86a183194 Merge pull request #1112 from Enelg52/mouseXY
Add the mousex and mousey signal
2024-05-29 13:06:34 +02:00
Felix Roos 6325d726a5 Merge pull request #1116 from giohappy/fix_codemirror_example
Fixes drawPianoroll import in codemirror example
2024-05-29 13:02:00 +02:00
Felix Roos 553045e666 lockfile 2024-05-29 12:59:01 +02:00
Felix Roos 4733264fb3 Revert "updated lock file"
This reverts commit 61d795af31.
2024-05-29 12:58:09 +02:00
Enelg52 0efac42d92 Add mousex and mousey the Docs 2024-05-29 10:42:31 +02:00
Enelg52 be6634f919 Should fix the tests 2024-05-29 10:26:29 +02:00
Enelg52 2901369471 Added alias and jsdoc 2024-05-29 10:21:40 +02:00
giohappy 61d795af31 updated lock file 2024-05-29 10:15:50 +02:00
Felix Roos 2bae6e06c0 add simple default value versioning 2024-05-28 23:08:41 +02:00
Felix Roos d9214b91b6 Merge branch 'main' into fanchor 2024-05-28 22:48:58 +02:00
Felix Roos 5348a6b2d8 Merge pull request #1074 from cleary/patch-6
clarify `off` in pattern-effects.mdx
2024-05-28 22:43:46 +02:00
Felix Roos 35e9385f59 use dec instead of ds 2024-05-28 22:41:37 +02:00
Felix Roos bf5e66d69a fix: lint 2024-05-28 22:39:49 +02:00
Giovanni Allegri 3cacafff90 Fix drawPianoroll import in codemirror example 2024-05-28 09:40:49 +02:00
Felix Roos e2ce5ea001 Merge branch 'main' of https://github.com/tidalcycles/strudel 2024-05-27 08:24:30 +02:00
Jade (Rose) Rowland 8f7194144d Merge pull request #1114 from daslyfe/fixworklets
Fix audio worklets
2024-05-26 11:33:05 -04:00
Jade (Rose) Rowland 12cb5b0939 remove imports 2024-05-26 11:31:18 -04:00
Jade (Rose) Rowland 1ad118d877 rollback phaser 2024-05-26 11:22:27 -04:00
Jade (Rose) Rowland bf73610b0a Merge pull request #1110 from daslyfe/phasermodulation
Calculate phaser modulation phase based on time
2024-05-26 10:53:56 -04:00
Enelg52 8f1496cebe added condition to pass the tests 2024-05-26 11:18:43 +02:00
Enelg52 7efbee0646 Runned Prettier 2024-05-25 20:54:31 +02:00
Enelg52 aec7417c14 Add the mousex and mousey signal 2024-05-25 20:47:20 +02:00
Jade (Rose) Rowland 026cbe050c Merge branch 'main' into phasermodulation 2024-05-24 17:30:09 -04:00
Felix Roos 8710cd446b Merge branch 'main' of https://github.com/tidalcycles/strudel 2024-05-23 19:43:34 +02:00
Jade (Rose) Rowland cad27301db Merge pull request #1103 from daslyfe/ladder_filter
Add analog-style ladder filter
2024-05-23 09:06:01 -04:00
Jade (Rose) Rowland 98cb128fa2 remove unessecary comment 2024-05-23 00:01:22 -04:00
Jade (Rose) Rowland 9bb1039bbd works great 2024-05-22 23:57:04 -04:00
Felix Roos 7952dfa5e9 bump sampler 2024-05-22 12:53:59 +02:00
Felix Roos 1666fc5649 Merge pull request #1109 from geikha/fix-windows-sampler-2
fix sampler on windows
2024-05-22 12:53:20 +02:00
Felix Roos b19c737c82 spare some cycles 2024-05-22 12:52:15 +02:00
Renzo Torr- 2d3a9b800f fix sampler on windows 2024-05-21 17:54:41 -03:00
Jade (Rose) Rowland e60e9b2fdd fix default res 2024-05-21 13:53:08 -04:00
Jade (Rose) Rowland 94529549a9 revert default res 2024-05-21 00:51:49 -04:00
Jade (Rose) Rowland 90dfa5170c Merge branch 'ladder_filter' of github.com:daslyfe/strudel into ladder_filter 2024-05-21 00:39:16 -04:00
Jade (Rose) Rowland c797fea1f7 update resonance 2024-05-21 00:38:00 -04:00
Felix Roos 841d897d0a Merge pull request #1044 from tidalcycles/fix-import
web package fixes
2024-05-20 23:26:19 +02:00
Felix Roos 9774e9627b Merge branch 'main' into fix-import 2024-05-20 23:23:31 +02:00
Felix Roos 888e0d4751 Merge remote-tracking branch 'origin/main' into ladder_filter 2024-05-20 22:42:52 +02:00
Felix Roos 1595a4ece3 Merge pull request #1108 from tidalcycles/fix-sampler-windows
Fix sampler windows
2024-05-20 22:41:28 +02:00
Felix Roos 1cebfd1835 bump 2024-05-20 22:32:54 +02:00
Felix Roos 8ea50fbe7d Merge branch 'aif-support' into fix-sampler-windows 2024-05-20 22:32:46 +02:00
Felix Roos 349f902dc0 bump 2024-05-20 22:31:01 +02:00
Felix Roos 8b1df7ce85 fix: add node to eslint 2024-05-20 22:30:05 +02:00
Felix Roos 892a0abe78 probably fixes sampler on windows 2024-05-20 22:27:28 +02:00
Jade (Rose) Rowland a214b1b224 fill in remaining defaults
git push
2024-05-19 23:16:27 -04:00
Jade (Rose) Rowland eed4a83b71 add defaults and fanchor docs 2024-05-19 21:13:46 -04:00
Jade (Rose) Rowland 17e2ee4a3b fix test 2024-05-19 13:32:08 -04:00
Jade (Rose) Rowland b8085e9dc3 change fanchor to 0 2024-05-19 13:25:56 -04:00
Jade (Rose) Rowland 1952e4d49a add example 2024-05-19 13:25:16 -04:00
Jade (Rose) Rowland be65a10925 update comment 2024-05-19 13:23:08 -04:00
Jade (Rose) Rowland 255c283ae4 organize code 2024-05-19 13:19:28 -04:00
Jade (Rose) Rowland 84a8ca9d19 filter type can take in number also 2024-05-19 13:04:31 -04:00
Felix Roos 25064b427d Merge pull request #870 from tidalcycles/haskell-parser
hs2js package / tidal parser
2024-05-19 12:07:26 +02:00
Felix Roos 1761fa0346 total confusion 2024-05-19 11:55:36 +02:00
Felix Roos dd29c5b09e Merge branch 'haskell-parser' of https://github.com/tidalcycles/strudel into haskell-parser 2024-05-19 11:51:48 +02:00
Felix Roos ef331f25e0 reset?! 2024-05-19 11:51:35 +02:00
Felix Roos 1bc1346f54 try static dep 2024-05-19 11:50:15 +02:00
Felix Roos 373b63c700 fix: add back hs2js as workspace dep 2024-05-19 11:48:48 +02:00
Felix Roos 41444ccd58 Revert "remove hs2js dep from website package"
This reverts commit fe1e10297c.
2024-05-19 11:47:16 +02:00
Felix Roos fe1e10297c remove hs2js dep from website package 2024-05-19 11:45:15 +02:00
Felix Roos e483f4c3d3 remove aif support as it doesn't work 2024-05-19 00:24:42 +02:00
Felix Roos 574c5285b9 bump 2024-05-19 00:18:29 +02:00
Felix Roos 5e4eefa553 add aif to list of supported audio file endings 2024-05-19 00:17:51 +02:00
Felix Roos 8ac409f03c simplify fn 2024-05-19 00:08:17 +02:00
Felix Roos c4b3d48498 remove old comment 2024-05-19 00:06:41 +02:00
Felix Roos 8f86bbc6ba bump 2024-05-19 00:02:16 +02:00
Felix Roos 97568300cb fix: links 2024-05-19 00:01:58 +02:00
Jade (Rose) Rowland bce24980cb fix tests 2024-05-18 11:12:41 -04:00
Felix Roos 33ca43a234 Merge pull request #1104 from lukad/patch-1
fix little dub tune example
2024-05-18 10:49:08 +02:00
Luka Dornhecker d0ecf15f77 fix little dub tune example 2024-05-18 10:33:22 +02:00
Jade (Rose) Rowland e87055d583 fix import 2024-05-18 01:33:40 -04:00
Jade (Rose) Rowland 9b52807c7e documentation 2024-05-18 01:01:19 -04:00
Jade (Rose) Rowland a8eafbc309 documentation 2024-05-18 00:51:56 -04:00
Felix Roos b0edf74aee fix all the problems 2024-05-18 01:39:38 +02:00
Felix Roos a8dce19902 fix: dep 2024-05-18 01:25:19 +02:00
Felix Roos dcd828a117 fix: import 2024-05-18 01:24:20 +02:00
Felix Roos aa2466b2cc fix: lint 2024-05-18 00:49:46 +02:00
Felix Roos a94ddc7947 tidal highlighting (single line only for now) 2024-05-18 00:44:47 +02:00
Jade (Rose) Rowland e6f272dd0c stereo 2024-05-17 18:20:08 -04:00
Jade (Rose) Rowland 4160639d88 integrated with envelopes 2024-05-17 17:38:44 -04:00
Felix Roos 5fb3aadad9 cleanup / allow ops to target node types 2024-05-17 23:11:23 +02:00
Felix Roos 3b4ae44fb3 transpiler (for future reference) 2024-05-17 23:09:43 +02:00
Felix Roos 2499c4057c allow using tidal function as template literal
+ add d1...d9
2024-05-17 21:29:39 +02:00
Felix Roos 71f8c0745c update examples after making hs2js sync 2024-05-17 20:51:43 +02:00
Felix Roos d132344d11 bump 2024-05-17 20:48:11 +02:00
Felix Roos b4f1cedc20 update readme after making it sync 2024-05-17 20:44:44 +02:00
Felix Roos 5b89500acd fix: lint + format 2024-05-17 20:38:30 +02:00
Felix Roos a35e9aef0e add tidal package to website 2024-05-17 20:37:04 +02:00
Felix Roos fd950d4476 tidy tidal package
- move tidal repl to examples
- make hs2js synchronous
2024-05-17 20:36:41 +02:00
Felix Roos d108de40d0 rename 2024-05-17 18:41:43 +02:00
Felix Roos 5f8da04cd8 remove graphviz 2024-05-17 18:41:02 +02:00
Jade (Rose) Rowland def5bc858f Merge pull request #1102 from daslyfe/upload_individual_samples
Samples tab improvements
2024-05-17 08:43:58 -04:00
Felix Roos a9fa6f14fb add npmignore 2024-05-17 10:49:37 +02:00
Felix Roos 846c12806e attribution 2024-05-17 10:47:06 +02:00
Felix Roos 70e938b767 hs2js api docs 2024-05-17 10:42:59 +02:00
Felix Roos f54f80e698 bump version 2024-05-17 10:14:26 +02:00
Felix Roos 8c480807d2 remove prepare script for now 2024-05-17 10:11:22 +02:00
Felix Roos bbeb243cea replace postinstall with prepare for dev only 2024-05-17 10:05:18 +02:00
Felix Roos 0123f4e5f3 fix lint errors + cleanup 2024-05-17 10:02:14 +02:00
Felix Roos c232fb7dd5 move hs2js package here + improve readme 2024-05-17 10:00:00 +02:00
Felix Roos 69a5d62027 rename "samples" to "bank" 2024-05-17 09:42:03 +02:00
Felix Roos ed506cabb5 hs2js test 2024-05-17 09:09:31 +02:00
Jade (Rose) Rowland d49c9dce4f working 2024-05-17 00:27:34 -04:00
Jade (Rose) Rowland 16ad27406d sort samples in tabs 2024-05-16 17:10:41 -04:00
Jade (Rose) Rowland 803b5e56fc working 2024-05-16 16:49:28 -04:00
Felix Roos 29598d1744 fix: lint 2024-05-16 14:32:45 +02:00
Felix Roos eba7dec1a5 rename haskell -> tidal 2024-05-16 14:31:00 +02:00
Felix Roos 09e455e17e move haskell-tree-sitter-playground 2024-05-16 14:30:00 +02:00
Felix Roos 2aac085bb8 lint fix 2024-05-16 14:12:30 +02:00
Felix Roos 733d6ec673 pnpm i 2024-05-16 14:12:11 +02:00
Felix Roos 179931be88 fix lockfile: reset to main one 2024-05-16 14:10:42 +02:00
Felix Roos 9d5acc0f32 Merge branch 'main' into haskell-parser 2024-05-16 14:08:51 +02:00
Felix Roos 226cf356d6 fix: lint 2024-05-16 11:05:38 +02:00
Felix Roos 4ade86f75c hotfix: rebuild parser to remove logs 2024-05-16 10:59:57 +02:00
Felix Roos 73d49f152a refactor sampler:
- delegate getSampleBufferSource logic to getSampleInfo + getSampleBuffer
- move buffer logic up from onTriggerSample to those functions
2024-05-16 10:52:54 +02:00
Felix Roos 83e46037d2 typo 2024-05-16 08:59:07 +02:00
Felix Roos 95ae5191ce begin "understanding voicings" 2024-05-16 03:36:35 +02:00
Jade (Rose) Rowland bee8c81254 simplify targettime 2024-05-13 23:14:30 -04:00
Jade (Rose) Rowland 8ad48e1633 remove unesseccary time call 2024-05-13 23:02:48 -04:00
Jade (Rose) Rowland 4a181d5b33 updated non synced clock to work more like synced clock 2024-05-13 23:02:36 -04:00
Jade (Rose) Rowland d5ab6b7211 fix tests 2024-05-13 22:38:20 -04:00
Jade (Rose) Rowland 4ba9d47bff fix test 2024-05-13 21:10:43 -04:00
Jade (Rose) Rowland c6c5a3035c fixed non synced clock 2024-05-13 21:06:24 -04:00
Jade (Rose) Rowland e024ae2142 almost figured it out 2024-05-13 20:42:59 -04:00
Jade (Rose) Rowland 19df19375d kinda fixed it, need to find cause of incorrect cps calculation 2024-05-13 10:33:18 -04:00
Kaspars Jaudzems e268802f3c OSC/SuperDirt fixes (#1093)
* If note is a midi note, and it's sent together with octave to SuperDirt, then that will be wrong. instead we should to midinote whenever sure that it's a midi note.
* mapbank to work like tidal's drumFrom
* roomsize is size in SuperDirt
* fix tidal-sniffer
* export `registerControl` (but see #1098)
2024-05-13 09:10:34 +01:00
Felix Roos 55c7f2b575 Merge pull request #1091 from kasparsj/use-sessionStorage
Use sessionStorage for viewingPatternData and activePattern
2024-05-13 06:31:20 +02:00
Kaspars Jaudzems a69563cb9b repl: set document.title from @title (#1090)
* fixes #811 set document.title from @title
2024-05-12 17:23:08 +01:00
Jade (Rose) Rowland cba96049a3 fixed duplicate variable 2024-05-10 00:03:52 -04:00
Jade (Rose) Rowland 1509ff1793 Merge branch 'tidalcycles:main' into gainmod 2024-05-09 23:55:13 -04:00
Jade (Rose) Rowland 6a33032da7 formatting 2024-05-09 23:26:04 -04:00
Jade (Rose) Rowland 6c05a4eb7b fixed tri shape 2024-05-09 00:21:21 -04:00
Kaspars 8d8b8ab99e codeformat 2024-05-08 10:42:06 +02:00
Kaspars a4f10d5339 bug fix 2024-05-08 10:38:06 +02:00
Jade (Rose) Rowland 16472b59dd fix cyclist clock cycle 2024-05-08 00:05:05 -04:00
Kaspars 33a73c37bc fix tests 2024-05-08 00:46:27 +02:00
Kaspars 4e6d39666a codeformat 2024-05-08 00:00:58 +02:00
Kaspars a5b6022506 - fix scale() to allow both n() and note() at the same time
- fix scale() to allow scale names without tonic and then default it to C
2024-05-07 23:56:39 +02:00
Kaspars 33ebf08e81 simplify more 2024-05-07 15:20:59 +02:00
Kaspars 02ea4d1116 bug fix 2024-05-07 14:52:06 +02:00
Felix Roos 27d8bae671 Merge pull request #1089 from tidalcycles/fix-worklets
fix: missing events due to premature worklet cleanup
2024-05-07 14:29:22 +02:00
Kaspars 5dc2ecd741 cleanup 2024-05-07 12:55:52 +02:00
Kaspars 6e6a2439c3 simplify implementation 2024-05-07 12:54:33 +02:00
Kaspars 6249631a72 implement sessionAtom function (same api as persistenAtom, just used sessionStorage instead of localStorage) 2024-05-07 11:40:09 +02:00
Kaspars b69b9c37cd fix events, add comment 2024-05-07 11:01:02 +02:00
Kaspars 7f22040a0c use sessionStorage instead of localStorage 2024-05-07 10:44:58 +02:00
Felix Roos 956ceb8aa4 fix: missing events due to premature worklet cleanup 2024-05-06 21:29:15 +02:00
Jade (Rose) Rowland 7df663e87d memory leaking 2024-05-05 23:54:30 -04:00
Jade (Rose) Rowland 3159f66560 working 2024-05-05 22:52:18 -04:00
Jade (Rose) Rowland 0d900c0134 sine test 2024-05-05 12:02:51 -04:00
Jade (Rose) Rowland 66a27a609c implementing 2024-05-03 14:58:20 -04:00
Jade (Rose) Rowland 496d60dc1c testing 2024-05-03 14:56:16 -04:00
Alex McLean e47d67a9da Benchmarks (#1079)
* tactus-oriented benchmarks
* add benchmarks for individual example tunes
2024-05-03 10:52:56 +01:00
Felix Roos 8e2d883e86 Merge pull request #1086 from tidalcycles/fix-dough-csound-timing
fix: csound + dough timing
2024-05-03 08:46:51 +02:00
Felix Roos 8db443ba26 fix: csound + dough timing 2024-05-03 00:42:13 +02:00
Alex McLean 34e9d73908 Improve performance of ! (replicate) (#1084)
* Implement ! with weighted repeatCycles
* reimplement repeatCycles without array filling
2024-05-02 23:37:32 +01:00
Felix Roos deed379dba Merge pull request #1083 from tidalcycles/fix-urls-with-extras
fix: url parsing with extra params
2024-05-02 23:40:22 +02:00
Felix Roos 5b4322c964 fix: url parsing with extra params 2024-05-02 22:39:39 +02:00
Alex McLean 91bb0a1d36 Add calculateTactus() for turning off calculation of tactus in (#1081)
core functions.
Also while I'm here stop fast/slow from manipulating tactus.
2024-04-29 11:36:10 +01:00
Jade (Rose) Rowland 47b65846e9 Merge pull request #1076 from diegodorado/patch-1
fix docs on alignment.mdx
2024-04-28 14:56:21 -04:00
Jade (Rose) Rowland 55eafaf4d8 Merge pull request #1073 from cleary/patch-5
add signals to recap in first-effects.mdx
2024-04-28 14:49:17 -04:00
Jade (Rose) Rowland 2e3869c0e0 Merge pull request #1072 from cleary/patch-4
fix translation issue in first-effects.mdx
2024-04-28 14:44:56 -04:00
Jade (Rose) Rowland 4015a11bd2 Merge pull request #1077 from daslyfe/fix_formatting_test
fix failing format test
2024-04-28 14:44:29 -04:00
Jade (Rose) Rowland 15f16006d0 ran prettier again? 2024-04-28 14:43:35 -04:00
Jade (Rose) Rowland ce79a44848 fix failing format test 2024-04-28 14:36:52 -04:00
Diego Dorado d253e35b6c fix docs on alignment.mdx 2024-04-28 10:53:53 -03:00
Jade (Rose) Rowland 19ef941c9d Merge pull request #1075 from cleary/patch-7
add nesting to `off` example variation in pattern-effects.mdx
2024-04-27 16:50:17 -04:00
Jade (Rose) Rowland ac7658d0a0 Merge pull request #1070 from cleary/patch-3
add `<...>` to first-sounds.mdx recap
2024-04-27 16:48:58 -04:00
Jade (Rose) Rowland 635a6c62b0 Merge pull request #1069 from cleary/patch-2
fix first sounds typo
2024-04-27 16:48:07 -04:00
Jade (Rose) Rowland acc100da5c Merge pull request #1068 from cleary/patch-1
fix cr typo on first-sounds.mdx
2024-04-27 16:47:44 -04:00
Bernard Gray 69f8498d4b Use "Alternate" for <...>, consistent with recap page in first-sounds.mdx 2024-04-27 14:20:26 +10:00
Bernard Gray 975eb684b9 add nesting to off example variation in pattern-effects.mdx
I was immediately curious whether `off` could be nested - it turns out it can, so I added an example of it in action.
This example should also add clarity to the flexibility of pattern naming inside `off` arguments as well
2024-04-27 11:35:08 +10:00
Bernard Gray 6b919132aa clarify off in pattern-effects.mdx
I had a bit of difficulty understanding `off` as it was presented, so I've attempted to simplify it:
1. take out the `delay` effect which is obscuring things (since we're using a delayed `off` pattern)
2. add a more complete explanation of the syntax
2024-04-27 11:18:51 +10:00
Bernard Gray 5c4ad57309 add signals to recap in first-effects.mdx 2024-04-27 10:47:30 +10:00
Bernard Gray 0be5f77247 fix translation issue in first-effects.mdx 2024-04-27 10:15:55 +10:00
Alex McLean bbf8577f85 More tactus tidying (#1071)
* preserve tactus for register (only non-formatting change is adding args to register)
* support undefined tactus values
2024-04-26 14:12:30 +01:00
Bernard Gray d8eb186ee4 add <...> to recap 2024-04-25 06:35:34 +10:00
Bernard Gray 54829bd28c fix first sounds typo 2024-04-25 06:24:56 +10:00
Bernard Gray 5c01760b28 fix cr typo on first-sounds.mdx 2024-04-25 06:01:49 +10:00
Alex McLean a189626e8b Fix stepjoin (#1067)
* sort fractions properly - fixes #1066
2024-04-23 22:37:21 +01:00
Alex McLean 6a1fa7e67f clarify license (#1064) 2024-04-23 22:32:00 +01:00
Alex McLean 267f58b7be Tactus tweaks - fixes for maintaining tactus and highlight locations (#1065)
* outer bind/join should keep outer tactus
* keep locations of outer pattern in stepJoin
2024-04-23 14:14:30 +01:00
Jade (Rose) Rowland 9348a8015a Merge pull request #1062 from daslyfe/osc_time_fix
fix OSC timing for recent scheduler updates
2024-04-21 17:57:57 -04:00
Jade (Rose) Rowland 57ad278137 fixed osc server 2024-04-21 17:52:22 -04:00
Jade (Rose) Rowland 5d8eea7299 fixed 2024-04-21 17:29:29 -04:00
Alex McLean 0a3694fb82 Stepwise functions from Tidal (#1060)
* rename new stepwise functions to match tidal, adding s_expand and s_contract
* created a `stepJoin` for stepwise patternification
2024-04-21 21:17:07 +01:00
Alexandre G.-Raymond a194180130 Fix wchooseCycles not picking the whole pattern (#1061) 2024-04-21 10:03:55 +01:00
Felix Roos 64cc8caeec Merge pull request #1038 from tidalcycles/swing
add swing + swingBy
2024-04-19 00:05:52 +02:00
Felix Roos f427b56062 Merge pull request #1059 from tidalcycles/dollar-colon
anonymous patterns + muting
2024-04-19 00:05:08 +02:00
Felix Roos 93d151b943 anonymous patterns + muting with _ 2024-04-17 12:37:19 +02:00
Jade (Rose) Rowland 5ca9afa9e8 restored 2024-04-15 19:53:12 -04:00
Felix Roos e0c4997f1e Merge pull request #1053 from tidalcycles/workshop-edits
improve tutorial + custom samples doc
2024-04-12 12:34:27 +02:00
Felix Roos 07791001dd Merge branch 'main' into workshop-edits 2024-04-12 12:32:14 +02:00
Felix Roos 936d6fdafb Merge pull request #1054 from tidalcycles/midin-fix
fix: do not reset cc input values on each eval
2024-04-12 12:31:49 +02:00
Felix Roos 81b33afcdb fix: do not reset cc input values on each eval 2024-04-12 12:30:13 +02:00
Felix Roos 0190604a7f fix: don't reset on each eval 2024-04-12 12:28:03 +02:00
Felix Roos 8494353ace bump @strudel/sampler 2024-04-12 10:57:59 +02:00
Felix Roos 971d497e81 docs: custom samples
- strudel.json
- github shortcut
- "import sounds"
- @strudel/sampler
- improve structure
- add drumset
2024-04-12 10:56:31 +02:00
Felix Roos ca36a31f79 slightly reword 2024-04-11 12:55:02 +02:00
Felix Roos 559f31792f update german tutorial 2024-04-11 11:58:38 +02:00
Felix Roos 83eedcb2f5 bring back division 2024-04-11 11:40:18 +02:00
Felix Roos a3bd04732c tutorial tweaks:
- add drumset image
- introduce angle brackets earlier
2024-04-11 11:26:46 +02:00
Felix Roos e8ed57f588 Merge pull request #1048 from tidalcycles/transpose-numbers
transpose: support all combinations of numbers and strings for notes and intervals
2024-04-08 17:25:27 +02:00
Alex McLean ebeefc0ac4 More experimental step functions: stepwax, stepwane, steptaper, steptour and taperlist (#1042)
* group tactus-oriented functions
* add stepwax, stepwane, steptaper and steptour
* taperlist
2024-04-08 09:46:18 +01:00
Felix Roos 3d06528393 transpose: support alls combinations of numbers and strings for notes and intervals 2024-04-07 01:25:47 +02:00
Jade (Rose) Rowland 558e9e36ff Merge pull request #1047 from daslyfe/mfix
Midi Time hotfix for scheduler updates
2024-04-06 17:44:57 -04:00
Jade (Rose) Rowland 0a6373f64c adjust latency 2024-04-06 17:40:08 -04:00
Jade (Rose) Rowland 0f24e97855 Merge branch 'mfix' of github.com:daslyfe/strudel into mfix 2024-04-06 17:32:07 -04:00
Jade (Rose) Rowland cbfa09a2da remove unessecary changes 2024-04-06 17:31:56 -04:00
Jade (Rose) Rowland 3805195109 Merge branch 'tidalcycles:main' into mfix 2024-04-06 17:29:37 -04:00
Jade (Rose) Rowland 183d3ea4a1 fix desktop midi 2024-04-06 17:28:30 -04:00
Jade (Rose) Rowland 8e4549d6d3 mfix 2024-04-06 17:07:54 -04:00
Felix Roos 506989b0d7 Merge pull request #1041 from tidalcycles/freq-wheel
pitchwheel visual
2024-04-05 12:48:02 +02:00
Felix Roos 8f475515e9 Merge pull request #1046 from tidalcycles/fix-cyclist
fix cyclist fizzling out
2024-04-05 12:47:19 +02:00
Felix Roos df23ea6cdf fix: cyclist desync 2024-04-05 12:23:04 +02:00
Felix Roos bea25a28cb add superdough warning when scheduling in the past 2024-04-05 12:21:45 +02:00
Felix Roos a4897adb83 fix: import 2024-04-04 00:38:08 +02:00
Felix Roos 0ba4be0571 bg 2024-04-04 00:13:43 +02:00
Felix Roos ca8707f32a cooler example 2024-04-04 00:13:37 +02:00
Felix Roos 18abcaccbb add fallback theme 2024-04-04 00:03:43 +02:00
Felix Roos 6ff7697cfd fix: use foreground color for pianoroll playhead 2024-04-04 00:03:32 +02:00
Felix Roos 915a4d2149 fix: example encoding for testing builds locally without server 2024-04-03 23:53:25 +02:00
Felix Roos 3a4ffb13ad add more info on using strings for patterns in web package 2024-04-03 23:48:08 +02:00
Felix Roos 610c848ff4 fix: reify hydra pattern 2024-04-03 23:06:02 +02:00
Felix Roos d06b70c28d fix: call setTime in initStrudel
+ return promise with scheduler
2024-04-03 23:02:42 +02:00
Felix Roos fde0da3b19 dont ignore hydra.mjs in eslint + fix lint 2024-04-03 22:43:35 +02:00
Felix Roos 97d292adbb add swing / swingBy to time modifiers page 2024-04-03 21:32:39 +02:00
Felix Roos e242e82b3f ireal voicings add aug alias for + 2024-04-01 23:21:55 +02:00
Felix Roos 6479c60387 tweaks 2024-04-01 23:21:32 +02:00
fnordomat b233c33f56 (squash me) save setting in variable, not store 2024-04-01 17:18:32 +02:00
Felix Roos c7f811e14d fix: ignore haps that error at getFrequency 2024-04-01 17:04:03 +02:00
Felix Roos 539160630d more settings 2024-04-01 15:30:19 +02:00
Felix Roos 8a3e9171a4 basic pitchwheel vis 2024-04-01 15:19:50 +02:00
Felix Roos 010329dcfc fix: proper error log with call stack 2024-04-01 15:19:22 +02:00
fnordomat e3b6884b86 make soundfont base url configurable 2024-04-01 10:46:32 +02:00
Felix Roos cdba9efb59 add filter + filterWhen + within 2024-04-01 03:17:15 +02:00
Felix Roos 16851cf8f8 snap 2024-04-01 03:01:04 +02:00
Felix Roos 8f06bc4b57 add swing + swingBy 2024-04-01 02:59:17 +02:00
Felix Roos 7839d6b4bf Merge pull request #1030 from tidalcycles/forbidden-arithmetic
remove dangerous arithmetic feature
2024-03-30 16:05:59 +01:00
Felix Roos eb3e6d60b9 Merge pull request #1034 from tidalcycles/fix-sampler-paths
Fix sampler paths
2024-03-30 16:05:27 +01:00
Felix Roos fd08b25388 simplify readme 2024-03-30 16:03:43 +01:00
Felix Roos ff923a6b6e remove starting sampler by default 2024-03-30 16:02:02 +01:00
Felix Roos 30a15cb4b7 bump version 2024-03-30 16:00:21 +01:00
Felix Roos 7d8cb59a7a fix: char encoding 2024-03-30 16:00:10 +01:00
Felix Roos 1aca5db447 better warning 2024-03-30 15:05:52 +01:00
Felix Roos 2fbd9a3d54 Merge pull request #1033 from tidalcycles/local-sample-server
local sample server cli
2024-03-30 14:43:08 +01:00
Felix Roos 934a3cdec4 bump 2024-03-30 14:40:59 +01:00
Felix Roos f987633498 fix: lint 2024-03-30 14:40:43 +01:00
Felix Roos 1a209c8b82 doc: options 2024-03-30 14:39:26 +01:00
Felix Roos 3e66e1ee93 add LOG env option 2024-03-30 14:38:23 +01:00
Felix Roos e39cd2c9cd bump 2024-03-30 14:27:38 +01:00
Felix Roos 8a8f6a66a4 improve logging + skip folders that throw 2024-03-30 14:27:18 +01:00
Felix Roos b6171600c2 fix: lint 2024-03-30 14:10:35 +01:00
Felix Roos 3a60f63fd2 improve log 2024-03-30 05:07:43 +01:00
Felix Roos 422a9ad525 fix: lint 2024-03-30 05:00:49 +01:00
Felix Roos 29fe4fd907 make sample server available over local network 2024-03-30 04:59:43 +01:00
Felix Roos 22774596ca run sampler in parallel by default + move samples folder to root 2024-03-30 04:48:55 +01:00
Felix Roos 8f355dcf96 add sampler script + samples folder with README 2024-03-30 04:42:45 +01:00
Felix Roos abe775c3fd fix: lint 2024-03-30 03:26:36 +01:00
Felix Roos 95e0496d51 proper sample server 2024-03-30 03:25:42 +01:00
Felix Roos bd9a80827e clean lockfile 2024-03-30 01:59:30 +01:00
Felix Roos 39204ad94d add simple local sample serving 2024-03-30 01:48:07 +01:00
Felix Roos 1e8a3c2918 Merge pull request #1032 from tidalcycles/font-caching
add font file types to offline cache
2024-03-29 17:14:27 +01:00
Felix Roos 1af55c0d19 add font file types to offline cache 2024-03-29 17:13:01 +01:00
Felix Roos a1e07f3079 Merge pull request #1031 from tidalcycles/close-brackets-setting
add closeBrackets setting
2024-03-29 17:10:16 +01:00
Felix Roos 4e7f5e9cda add closeBrackets setting 2024-03-29 17:07:48 +01:00
Felix Roos 12d8cdff92 remove dangerous arithmetic feature 2024-03-29 16:58:34 +01:00
Alex McLean 9c66d9f1a7 Tactus tidy (#1027)
* preserve tactus across calls to filterValues (fixes tactus for struct)
* timeCat -> timecat (maintaining old name as an alias), beatCat -> stepcat
2024-03-29 13:55:05 +00:00
Felix Roos e2b4f6f5ac Merge pull request #1025 from tidalcycles/sync-toggle
add setting for sync flag
2024-03-28 17:06:44 +01:00
Felix Roos 50ed466895 disable sync by default? 2024-03-28 12:00:12 +01:00
Felix Roos 126556634a add setting for sync flag 2024-03-28 11:49:32 +01:00
Felix Roos aa25265cc2 Merge pull request #1024 from tidalcycles/fix-draw-bugs
better theme integration for visuals + various fixes
2024-03-28 11:37:56 +01:00
Felix Roos 73558eb49c Merge pull request #1023 from tidalcycles/more-fonts
More fonts
2024-03-28 11:33:25 +01:00
Felix Roos cc49e0f78e clean 2024-03-28 11:15:48 +01:00
Felix Roos 6c07feb312 add 3 new fonts 2024-03-28 11:15:23 +01:00
Felix Roos a8c2586da6 fix: lint 2024-03-28 10:23:46 +01:00
Felix Roos c400deac74 visuals now adhere to theme by default 2024-03-28 10:23:07 +01:00
Felix Roos 6a2486d9f2 fix: id widgets by type index to prevent erasing memory in some cases 2024-03-28 09:31:43 +01:00
Felix Roos b5720355f9 fix: allow multiple visuals for the same pattern
+ using .tag function instead of single .id
2024-03-28 09:31:12 +01:00
Felix Roos ab015ff48a remove old .draw, rename .onFrame to .draw
+ breaking: from, to are now called lookbehind, lookahead
+ migrate .pianoroll
2024-03-28 07:35:01 +01:00
Felix Roos eb8ac29136 add memory to onFrame 2024-03-28 07:26:32 +01:00
Felix Roos 14b1a1203f fix: cyclist.now() should return 0 when stopped 2024-03-28 07:25:44 +01:00
Felix Roos 060d2cfe2b another hap time introspection method 2024-03-28 06:50:13 +01:00
Felix Roos 04a0952a22 simplify draw plumbing 2024-03-28 06:25:24 +01:00
Felix Roos 1a0dff4081 add some hap methods for time introspection 2024-03-28 05:47:50 +01:00
Alex McLean 2fd2bdba60 Feature: tactus marking (#1021)
* rename `beat` option to `stackBy` to `repeat`
* fix parse error reporting
* rename `weight` to `tactus` (it might in the end be pulse, step, or tap)
* tactus marking with ^
* and add some tests
2024-03-27 12:06:05 +00:00
Jade (Rose) Rowland 2e8ae38d33 Merge pull request #1020 from daslyfe/hotfix_now_calculation
hotfix for 1017
2024-03-25 01:02:01 -04:00
Jade (Rose) Rowland bbfdd2cc32 working 2024-03-25 00:59:42 -04:00
Felix Roos 4086df95b7 Merge pull request #1015 from ilesinge/document_signals
Document signals
2024-03-24 15:06:33 +01:00
Alexandre Gravel-Raymond aba4e72d29 Fewer undocumented functions 2024-03-24 14:18:25 +01:00
Alexandre Gravel-Raymond 8b96e3a6d1 Fix snapshot undegrade function name 2024-03-24 14:17:48 +01:00
Alexandre Gravel-Raymond 731d545a3f Fix undegrade doc naming 2024-03-24 14:15:20 +01:00
Alexandre Gravel-Raymond e6eb6c19a8 Add random modifiers docs to its own page 2024-03-24 14:15:01 +01:00
Alexandre Gravel-Raymond af35a1af09 Add examples test snapshots 2024-03-24 12:40:53 +01:00
Alexandre Gravel-Raymond fc4c70c94f Fix codestyle 2024-03-24 12:25:54 +01:00
Alexandre Gravel-Raymond 064bff6e40 Document conditional modifiers 2024-03-24 12:22:46 +01:00
Alexandre Gravel-Raymond 69211b8701 Document signals 2024-03-24 12:22:26 +01:00
Felix Roos 33f4f5fccc Merge pull request #1014 from daslyfe/repl_sync_fixes
Repl sync fixes
2024-03-24 10:16:11 +01:00
Jade (Rose) Rowland af740c3abb Merge branch 'tidalcycles:main' into repl_sync_fixes 2024-03-23 16:47:22 -04:00
Jade (Rose) Rowland 8e2407cfa9 cleanup 2024-03-23 16:45:34 -04:00
Jade (Rose) Rowland 86c945114d removed unessecary variable 2024-03-23 16:35:48 -04:00
Jade (Rose) Rowland bd16b403e3 build working properly 2024-03-23 16:28:37 -04:00
Jade (Rose) Rowland f00a08ef9e working 2024-03-23 16:18:16 -04:00
Felix Roos 31067d5cb5 Merge pull request #1004 from tidalcycles/worker-repl
eliminate chromium clock jitter
2024-03-23 20:21:51 +01:00
Jade (Rose) Rowland bc917dcf8b sync false 2024-03-23 14:53:07 -04:00
Jade (Rose) Rowland 619ca5385d sync mostly working 2024-03-23 14:52:44 -04:00
Jade (Rose) Rowland aa36d25b9a still kinda working 2024-03-23 14:45:35 -04:00
Felix Roos fe1fc81f42 Merge pull request #1013 from tidalcycles/undocumented-update
update undocumented script
2024-03-23 15:51:07 +01:00
Felix Roos 34373a9d73 Merge pull request #1012 from tidalcycles/fix-flok-setcps
fix: await injectPatternMethods
2024-03-23 15:26:52 +01:00
Felix Roos 16210e121f fix: await injectPatternMethods 2024-03-23 15:24:49 +01:00
Felix Roos 53af147ede Merge pull request #1010 from tidalcycles/trigzero-restart
rename trig -> reset, trigzero -> restart
2024-03-23 15:18:12 +01:00
Felix Roos fc32981886 update undocumented script 2024-03-23 14:08:02 +01:00
Felix Roos aede6e4b26 Merge pull request #1008 from tidalcycles/inline-punchcard
Inline punchcard
2024-03-23 12:30:03 +01:00
Felix Roos ac36423f85 Merge remote-tracking branch 'origin/main' into inline-punchcard 2024-03-23 12:28:23 +01:00
Felix Roos 4071c1af18 Merge pull request #1007 from tidalcycles/color-in-hap-value
Color in hap value
2024-03-23 12:27:22 +01:00
Felix Roos 49e381f258 make spiral size param 3 in one 2024-03-23 12:26:32 +01:00
Felix Roos 21f5d639a3 fix _pianoroll 2024-03-23 12:20:01 +01:00
Felix Roos 0eccbae048 improve spiral colors 2024-03-23 12:17:25 +01:00
Felix Roos a629c5c931 fix: id at wrong place 2024-03-23 12:14:36 +01:00
Felix Roos f83a156317 Merge branch 'color-in-hap-value' into inline-punchcard 2024-03-23 12:07:11 +01:00
Felix Roos 2857e816d2 add Pattern.id + use it for _punchcard and _spiral 2024-03-23 12:06:31 +01:00
Felix Roos c2ef90d67c rename trig -> reset, trigzero -> restart 2024-03-23 11:22:30 +01:00
Felix Roos 2cc92a2b93 Merge branch 'main' into inline-punchcard 2024-03-23 00:33:33 +01:00
Felix Roos 13d56b6b28 snapshots 2024-03-23 00:28:38 +01:00
Felix Roos d036635915 move color to hap value 2024-03-23 00:20:00 +01:00
Felix Roos 5537652497 Merge pull request #1006 from tidalcycles/update-examples
using strudel in your project guide + cleanup examples
2024-03-22 23:53:51 +01:00
Felix Roos f1d491d52e Merge pull request #1000 from eefano/scale-accidentals
accidentals in scale degrees
2024-03-22 23:41:49 +01:00
Felix Roos d299e76c82 remove embed and repl deps from website 2024-03-22 16:25:10 +01:00
Felix Roos 52d3ee0f85 remove demo + scripts on all doc pages 2024-03-22 16:23:18 +01:00
Felix Roos 4f0f388ca2 a few more words 2024-03-22 16:19:45 +01:00
Felix Roos df03e9a379 finish project start page + link it in main readme 2024-03-22 16:17:09 +01:00
Felix Roos 52a311aae6 add link to StrudelMirror 2024-03-22 15:55:12 +01:00
Felix Roos 6365e1626c begin project-start doc
+ improve embed + repl package doc
2024-03-22 15:52:38 +01:00
Felix Roos 8d96a071d6 document umbrella packages 2024-03-22 14:52:28 +01:00
Felix Roos e8f6124a07 + make cyclist trigger backwards compatible for now
+ add absolute time as new 5th onTrigger param
2024-03-22 01:22:35 +01:00
Felix Roos 14a5e7dcb6 make regular cyclist work in the background
+ use worker-timers in Repl
+ repl / cyclist now accept custom interval functions
2024-03-22 01:01:17 +01:00
Felix Roos 7889017434 delete now obsolete poc 2024-03-22 00:46:08 +01:00
Felix Roos ba8f996103 fix: clock jitter in cyclist 2024-03-22 00:41:30 +01:00
Felix Roos 8d8c843ccf working poc cyclist with cps change 2024-03-22 00:29:25 +01:00
Felix Roos a46bd9b36e Merge pull request #978 from daslyfe/oscillator_enhancements
supersaw oscillator
2024-03-21 22:53:55 +01:00
Felix Roos 96a977990a add missing dep 2024-03-21 22:47:03 +01:00
Felix Roos 41a40c74ef add run instruction 2024-03-21 22:45:11 +01:00
Felix Roos 837dfcaba4 add readme 2024-03-21 22:44:50 +01:00
Felix Roos ac441b4340 add working poc for precise cyclist 2024-03-21 22:41:45 +01:00
Felix Roos 4362cb9317 export createClock from core 2024-03-21 22:39:01 +01:00
Felix Roos dc977b292d more options for zyklus api:
+ allow setting custom interval functions
+ allow disabling phase rounding
2024-03-21 22:38:20 +01:00
Felix Roos 10bd668033 allow absolute time for superdough with prefix = 2024-03-21 22:37:15 +01:00
Felix Roos 5d0abe4151 disable sync 2024-03-21 21:31:02 +01:00
Felix Roos 89ec87d32a Merge branch 'oscillator_enhancements' of https://github.com/daslyfe/strudel into oscillator_enhancements 2024-03-21 21:26:46 +01:00
Felix Roos 1d48d5d5ef halve detune range 2024-03-21 21:26:43 +01:00
Felix Roos 0565558e21 scheduling in a worker, draft 2024-03-21 13:27:53 +01:00
Felix Roos 6320d3c08c Merge pull request #1003 from tidalcycles/cleanup
remove canvas, externalize samples, delete junk
2024-03-21 13:00:04 +01:00
Felix Roos 4511732252 remove canvas dependency 2024-03-21 08:35:44 +01:00
Felix Roos f5c087fc2a outsource piano samples 2024-03-21 07:30:21 +01:00
Felix Roos d2fc784060 delete astro favicon 2024-03-21 07:30:05 +01:00
Felix Roos be2ec969c4 use script tag instead of skypack 2024-03-21 07:20:07 +01:00
Felix Roos 456250a176 delete redundant emu samples 2024-03-21 07:19:47 +01:00
Jade (Rose) Rowland cbe7e69e13 remove unecessary multiplier 2024-03-20 15:02:20 -04:00
Felix Roos d3a17891f8 move rollup plugin to dev dependencies 2024-03-20 17:11:35 +01:00
eefano e32c965a4b accidents in scale grades 2024-03-19 16:04:35 +01:00
Felix Roos 5982e3ebea fix: center supersaw if only 1 voice 2024-03-19 09:00:25 +01:00
Felix Roos ea58238453 Merge branch 'main' into oscillator_enhancements 2024-03-19 08:48:09 +01:00
Felix Roos 1e1dbd6085 add inline _punchcard 2024-03-19 08:44:43 +01:00
Felix Roos 6b98e414c6 make onPaint work with mutiple repls on screen
+ add warning if stock onPaint is not overloaded
2024-03-19 08:44:05 +01:00
Alex McLean 29cb6195b3 Fix pure mini highlight (#994)
* preserve locations for pure values via mininotation

* preserve weight
2024-03-18 10:37:55 +00:00
Felix Roos d99af7c4ad Merge pull request #989 from tidalcycles/claviature
inline viz / widgets package
2024-03-18 07:12:14 +01:00
Jade (Rose) Rowland 48e4051310 remove unessecary math 2024-03-17 13:18:52 -04:00
Felix Roos 95446a76ef breakout widgets package for now 2024-03-17 12:22:24 +01:00
Jade (Rose) Rowland 6d874af45f fixed end time 2024-03-17 01:27:11 -04:00
Jade (Rose) Rowland dad18a24fb disconnect worklet at scheduled time to destroy faster 2024-03-17 01:15:07 -04:00
Felix Roos 8b9a2e1d84 Merge remote-tracking branch 'origin/main' into claviature 2024-03-17 04:49:12 +01:00
Felix Roos dd16a1cbf4 hotfix: disable sync, it somehow breaks playback in the built version
(pnpm build && pnpm preview)
2024-03-17 04:48:25 +01:00
Felix Roos 2900401d3e Merge remote-tracking branch 'origin/main' into claviature 2024-03-17 04:38:05 +01:00
Felix Roos b5312c27dc move stuff for less changes 2024-03-17 04:36:48 +01:00
Felix Roos 4319c43ceb comment out _spiral for now 2024-03-17 04:31:30 +01:00
Felix Roos be77882d70 rename inline functions to match global ones, prefixed with _ 2024-03-17 04:15:59 +01:00
Felix Roos 78f816978c Merge pull request #991 from tidalcycles/labeled-statements
Labeled statements
2024-03-17 04:06:59 +01:00
Felix Roos 076b6f1c82 move canvas functions to codemirror package
+ fix id collisions
2024-03-17 04:00:28 +01:00
Felix Roos 0978fbb15e Merge branch 'labeled-statements' into claviature 2024-03-17 03:19:40 +01:00
Felix Roos 2de18846b0 add comment 2024-03-17 03:17:47 +01:00
Felix Roos a71a167133 fix: enable locations again 2024-03-17 03:16:17 +01:00
Felix Roos 6359bbe139 transpile label statements to p calls 2024-03-17 03:14:05 +01:00
Felix Roos d1c713fa29 make labeled statements look good on custom themes 2024-03-17 02:29:48 +01:00
Felix Roos 16506c5ae2 improve scope memory footprint 2024-03-17 01:58:30 +01:00
Alex McLean 398533877c Beat-oriented functionality (#976)
* annotate pure values with their value, allowing single mininotation values to maintain their labels as pure
* Don't use any 'patternified' arguments if they're all 'pure'
* allow pattern weights (roughly, beats-per-cycle) to be inferred where possible, including from mininotation and across many transformations (e.g. `fast` with a 'pure' factor)
* Add `beatCat`, similar to `timeCat` but funkier
* `silence` has a weight of 1, add alternative `nothing` with a weight of 0, and `gap` function with weight argument
* preserve weight across applicative operations (weight comes with the structure)
* add `stack` alternatives that take advantage of pattern weights to align patterns differently - `stackLeft`, `stackRight`, `stackCentre`, `stackExpand`, with `stackBy` with an argument for patterning the alignment.
2024-03-16 17:24:37 +00:00
Felix Roos cdc200e1da draw straight line when no analyser is defined yet
+ add todo for memory leak
2024-03-16 03:12:00 +01:00
Felix Roos dd78dc9606 fix: animation frame cleanup 2024-03-16 02:42:26 +01:00
Felix Roos ef284e9d13 fix: bugs catched by linter 2024-03-16 02:16:50 +01:00
Felix Roos f4032dad22 inline multichannel scopes 2024-03-16 02:14:24 +01:00
Jade (Rose) Rowland 5d55b9c9ef remove hyperpop test 2024-03-15 11:55:18 -04:00
Felix Roos d9d05e21c0 full size piano by default 2024-03-15 12:24:11 +01:00
Felix Roos 1043baf08a fix: catch errors in pianoroll getValue 2024-03-15 12:24:03 +01:00
Felix Roos dfd22b5e44 fix: claviature height
+ better defaults
+ break out solid web component creation
2024-03-15 11:04:35 +01:00
Felix Roos 4a95bf67da move widget registry to codemirror package
+ add transpiler as dependency to codemirror
2024-03-15 10:00:07 +01:00
Felix Roos 8742d50bad simplify widget creation + fix bugs 2024-03-15 09:50:17 +01:00
Felix Roos 6dce9d5deb support multiple animationFrames
+ break out spiral draw logic
2024-03-15 09:49:00 +01:00
Felix Roos a8712fd8ce remove this mess 2024-03-15 09:48:04 +01:00
Jade (Rose) Rowland 8f291b0f80 fix test again 2024-03-14 22:31:26 -04:00
Jade (Rose) Rowland 7f9cc7cd2d merging main 2024-03-14 22:19:45 -04:00
Jade (Rose) Rowland d102e1dbbc Merge pull request #900 from daslyfe/repl_sync
REPL sync between windows
2024-03-14 20:47:35 -04:00
Felix Roos 83ea3bb138 encapsulate canvas logic 2024-03-15 01:47:35 +01:00
Jade (Rose) Rowland 1f39e1c04d fix tests 2024-03-14 20:41:47 -04:00
Felix Roos 48e0691eec add pianoroll widget 2024-03-15 01:40:21 +01:00
Jade (Rose) Rowland fd946107df use lerp 2024-03-14 20:35:56 -04:00
Felix Roos 094b30cd26 use hap color for claviature 2024-03-15 00:39:31 +01:00
Felix Roos 708675077f rename claviature package to widgets 2024-03-15 00:34:13 +01:00
Felix Roos 82c4926f19 allow any web component to become a widget 2024-03-15 00:27:16 +01:00
Felix Roos 29dab578e7 can now load claviature as a codemirror widget 2024-03-14 23:49:38 +01:00
Felix Roos 1e75f045b7 remove other watch tasks for now 2024-03-14 15:31:50 +01:00
Felix Roos cfdd4ac36c add readme 2024-03-14 15:28:06 +01:00
Felix Roos f2e16f946c add working claviature method 2024-03-14 15:17:19 +01:00
Felix Roos 0a1da6f651 claviature lockfile 2024-03-14 14:20:56 +01:00
Felix Roos 062e45ee6a Merge remote-tracking branch 'origin/main' into claviature 2024-03-14 14:20:45 +01:00
Jade (Rose) Rowland 83145784d7 remove console statement 2024-03-14 00:18:59 -04:00
Jade (Rose) Rowland 486e6457a9 Merge pull request #984 from andresgottlieb/patch-1
Update synths.mdx
2024-03-13 19:20:07 -04:00
Felix Roos 7efea5726b Merge pull request #985 from tidalcycles/share-fix
fix: share now shares what's visible instead of active
2024-03-13 00:36:22 +01:00
Felix Roos 7eb2f7659e fix: share now shares what's visible instead of active 2024-03-12 08:38:11 +01:00
Jade (Rose) Rowland 112ca1875a stop clock if all stopped 2024-03-10 14:35:43 -04:00
Andrés Gottlieb bc641d8e4c Update synths.mdx
Typo fix
2024-03-10 12:49:12 +01:00
Felix Roos d0c68e91dc hotfix: hydra-canvas might already be removed 2024-03-10 02:09:46 +01:00
Felix Roos c373a0473b Merge pull request #967 from tidalcycles/default-dict
use ireal as default voicing dict
2024-03-10 01:18:57 +01:00
Felix Roos 708fea637c fix update migration snippet 2024-03-10 01:10:37 +01:00
Felix Roos c5a4184437 Merge branch 'main' into default-dict 2024-03-10 00:54:13 +01:00
Felix Roos 446cf8c694 Merge pull request #980 from eefano/little-bag-fix
little fix for withVal
2024-03-10 00:50:23 +01:00
Felix Roos 3df776d062 Merge pull request #974 from tidalcycles/velocity-in-value
Velocity in value
2024-03-10 00:46:51 +01:00
Felix Roos ae7807643b Merge remote-tracking branch 'origin/main' into velocity-in-value 2024-03-10 00:44:02 +01:00
Felix Roos 5ebaa3e1ce Merge pull request #983 from tidalcycles/clear-hydra
fix: clear hydra on reset
2024-03-10 00:42:50 +01:00
Felix Roos 4a25eab01a Merge remote-tracking branch 'origin/main' into clear-hydra 2024-03-10 00:40:29 +01:00
Felix Roos e885e05a7a Merge pull request #971 from tidalcycles/draw-package
move canvas related helpers from core to new draw package
2024-03-10 00:38:43 +01:00
Felix Roos 012b19c79e fix: clear hydra on reset 2024-03-10 00:29:52 +01:00
Jade (Rose) Rowland 0875e805b4 Merge pull request #982 from daslyfe/fix_distort_doc
replace shape with distort in learn doc
2024-03-07 23:38:07 -05:00
Jade (Rose) Rowland f1700d5e47 fixed 2024-03-07 23:35:04 -05:00
Jade (Rose) Rowland 30a5176090 fix android support 2024-03-07 23:04:46 -05:00
Felix Roos 43c40f7bb0 no need for publishConfig 2024-03-08 01:07:17 +01:00
Felix Roos 9b3509c062 global watch task 2024-03-08 00:55:19 +01:00
Felix Roos 85fee0cc01 add claviature package 2024-03-08 00:53:48 +01:00
Felix Roos 0f07bfc9d7 rename: canvas -> draw 2024-03-07 13:24:52 +01:00
Felix Roos 75098adbdb allow offsetting onFrame 2024-03-07 13:17:40 +01:00
Felix Roos 8dba865ca7 add note to future 2024-03-07 12:35:39 +01:00
Felix Roos 2fcbffeaf9 add sync flag for neocyclist 2024-03-07 12:14:17 +01:00
Felix Roos 619ffdd5e1 rename zyklus 2024-03-07 12:01:08 +01:00
Felix Roos 1af2da0063 remove changes to prevent conflicts with draw branch 2024-03-07 12:00:27 +01:00
Jade (Rose) Rowland 9d1231ce0a comments 2024-03-06 22:25:31 -05:00
Jade (Rose) Rowland 4d1110b3f3 faster is odd 2024-03-06 20:27:05 -05:00
Jade (Rose) Rowland 6a5bf521c2 unity gain 2024-03-06 16:05:51 -05:00
Jade (Rose) Rowland 3410c332d5 gain adjustment 2024-03-06 10:13:56 -05:00
Alex McLean 8e41332dfa alias - for ~ (#981) 2024-03-06 11:14:48 +00:00
eefano 9f56a335b7 little fix for withVal 2024-03-05 21:41:11 +01:00
Jade (Rose) Rowland 8db8307c9e fix test 2024-03-05 00:48:47 -05:00
Jade (Rose) Rowland 641d9f5ebd Merge branch 'main' into oscillator_enhancements 2024-03-05 00:45:56 -05:00
Jade (Rose) Rowland 05887967e0 added back (possibly unessecary? stop fm 2024-03-05 00:44:45 -05:00
Jade (Rose) Rowland 232b9c13d7 disable lint for global worklet variables 2024-03-05 00:34:59 -05:00
Jade (Rose) Rowland c0b00339c5 implemented modulators 2024-03-05 00:23:19 -05:00
Jade (Rose) Rowland bfcb2070d1 adding modulators 2024-03-04 23:17:58 -05:00
Jade (Rose) Rowland 1e3a23e017 100 2024-03-04 20:37:48 -05:00
Jade (Rose) Rowland 524109056f Merge pull request #963 from daslyfe/worklet_improvements
Worklet Improvents / fixes
2024-03-04 10:04:23 -05:00
Jade (Rose) Rowland c2df8aa6b9 cleaning 2024-03-04 00:43:03 -05:00
Jade (Rose) Rowland 1666b50857 params 2024-03-03 22:19:26 -05:00
Jade (Rose) Rowland e839c271cd fixed output 2024-03-03 22:05:00 -05:00
Jade (Rose) Rowland 823c208c71 cleaning 2024-03-03 21:22:17 -05:00
Jade (Rose) Rowland ee01b4a3a0 working on it 2024-03-03 18:57:30 -05:00
Felix Roos d5ed065011 fix: hydra canvas adjust to screen size
+ simplify hydra init (use getDrawContext)
+ make getDrawContext more versatile
2024-03-03 22:50:51 +01:00
Jade (Rose) Rowland 78a6ec2f98 stereo 2024-03-03 13:16:32 -05:00
Jade (Rose) Rowland 7f60a9e52b yay 2024-03-03 01:23:08 -05:00
Jade (Rose) Rowland 7383dca9ee working 2024-03-03 00:37:33 -05:00
Jade (Rose) Rowland 8a7d72bf24 working 2024-03-02 22:35:26 -05:00
Jade (Rose) Rowland 4af7262f45 fixed performance issue 2024-03-02 01:16:41 -05:00
Jade (Rose) Rowland daa62202fa default values needed in superdough for worklet input 2024-03-01 13:12:52 -05:00
Jade (Rose) Rowland f911fceb9e trying things 2024-03-01 13:04:44 -05:00
Felix Roos e9e5fac610 fix tunes + tests 2024-03-01 18:29:24 +01:00
Felix Roos 5017ac6f74 delete file from wrong branch 2024-03-01 18:01:51 +01:00
Felix Roos 1d92ee76b9 make velocity a regular value prop 2024-03-01 18:00:34 +01:00
Felix Roos 7d01764a30 Merge pull request #973 from tidalcycles/nested-controls
Nested controls
2024-03-01 17:30:19 +01:00
Felix Roos 62d8955da9 onFrame function 2024-03-01 16:46:34 +01:00
Felix Roos 4f94de86db fix: migrate more imports 2024-03-01 13:09:14 +01:00
Jade (Rose) Rowland a6f7c57d19 working 2024-02-29 22:55:56 -05:00
Jade (Rose) Rowland 1690030b1d envelope 2024-02-29 21:07:43 -05:00
Felix Roos bf343eb499 simplify _composeOp 2024-03-01 00:32:45 +01:00
Felix Roos 4f55144232 nested controls poc 2024-03-01 00:31:33 +01:00
Jade (Rose) Rowland c9b18f6fa4 fix test 2024-02-29 18:15:30 -05:00
Jade (Rose) Rowland 416a03aea1 updated params 2024-02-29 18:09:26 -05:00
Jade (Rose) Rowland f62b268f1d playing 2024-02-29 17:53:26 -05:00
Felix Roos 6ce8a3feba move draw logic to separate package 2024-02-29 22:14:53 +01:00
Felix Roos 94dd547a74 canvas package boilerplate 2024-02-29 21:56:31 +01:00
Jade (Rose) Rowland f5c7b58b3a testing 2024-02-29 14:49:08 -05:00
Felix Roos fa7c16dbe7 Merge pull request #959 from tidalcycles/euclid-inverted
feat: can now invert euclid pulses with negative numbers
2024-02-29 15:33:12 +01:00
Felix Roos 6a43eb6755 Merge pull request #950 from eefano/pickr-pickrmod
pickOut(), pickRestart(), pickReset()
2024-02-29 15:31:23 +01:00
Felix Roos c524ebc7f3 fix: add name tags 2024-02-29 15:25:31 +01:00
Felix Roos 0deb905cdf rename pick*Outer > pickOut
+ add pick*Squeeze alias to inhabit*
2024-02-29 15:21:44 +01:00
Felix Roos 4cadbcbbdf Merge pull request #965 from tidalcycles/legato-fix
remove legacy legato + duration implementations
2024-02-29 15:12:45 +01:00
Felix Roos 96eef75f74 fix: end / begin. sampler now needs clip to choose duration... 2024-02-29 10:33:27 +01:00
Felix Roos 51d9e02e07 Merge pull request #966 from eefano/transpose-fix
fix for transpose(): preserve hap value object structure
2024-02-29 08:47:53 +01:00
Felix Roos c4c21c4f0c Merge pull request #968 from tidalcycles/log-debounce
add debounce to logger
2024-02-29 08:32:00 +01:00
Jade (Rose) Rowland c00ed14bc3 playing 2024-02-29 00:54:24 -05:00
Felix Roos 8f39a5eeac snapshot 2024-02-29 05:02:22 +01:00
Felix Roos 305715277c repl reset default dict
+ add mechanism to get a module by name from dynamic imports
2024-02-29 04:54:03 +01:00
Felix Roos d4eebf1a77 set ireal as default dict
+ add global way to set and reset default dict
2024-02-29 04:53:11 +01:00
Felix Roos fcb247b62a add debounce to logger 2024-02-29 04:25:00 +01:00
Felix Roos 7556da7839 snapshot 2024-02-29 04:06:15 +01:00
Felix Roos eb93a6c149 refactor: duration is now a regular control 2024-02-29 04:05:05 +01:00
eefano b870ab204a fix for transpose(): preserve hap value object structure 2024-02-29 00:13:08 +01:00
Jade (Rose) Rowland fba2422a64 update test 2024-02-28 17:32:30 -05:00
Jade (Rose) Rowland da674d3e05 updated controls 2024-02-28 17:26:59 -05:00
Jade (Rose) Rowland 57e1c1bd89 Merge branch 'tidalcycles:main' into worklet_improvements 2024-02-28 17:10:09 -05:00
Jade (Rose) Rowland e3463b3c3d merged new controls file 2024-02-28 17:08:58 -05:00
Jade (Rose) Rowland a3898c7589 cleanup 2024-02-28 14:36:50 -05:00
Jade (Rose) Rowland 1221c6144c added distortion effect 2024-02-28 14:31:07 -05:00
Jade (Rose) Rowland c77b0098a7 adjust param range 2024-02-28 13:17:36 -05:00
Felix Roos f779e81993 remove old snapshots 2024-02-28 18:52:08 +01:00
Felix Roos 5c71bb95a0 remove legacy legato
+ make legato a synonym of clip
2024-02-28 18:51:07 +01:00
Felix Roos 1525992d73 Merge pull request #962 from tidalcycles/control-refactoring
controls refactoring: simplify exports
2024-02-28 18:43:51 +01:00
Jade (Rose) Rowland a227c69408 adjusting params 2024-02-28 10:24:26 -05:00
Jade (Rose) Rowland 972bfa3319 cleaning up 2024-02-28 00:04:12 -05:00
Jade (Rose) Rowland 360b920935 cleaning_up 2024-02-27 23:42:33 -05:00
Jade (Rose) Rowland 1416a0de53 working 2024-02-27 23:38:37 -05:00
Felix Roos abe25be05e fix examples 2024-02-28 00:36:59 +01:00
Felix Roos 664a19a5c4 refactor: remove now redundant controls imports 2024-02-28 00:36:44 +01:00
Felix Roos 8efadd2547 refactor: controls are now exported directly 2024-02-28 00:34:39 +01:00
eefano ed1f3e1e8c Merge remote-tracking branch 'upstream/main' into pickr-pickrmod 2024-02-26 01:15:27 +01:00
eefano 4aaf9eaed4 mux operator, muxers.mjs with pick variants
prettier

prettier2

clamp?

Revert "clamp?"

This reverts commit 83a3b9123aece9f0e366c83d97f99e8b8d20db54.

Revert "prettier2"

This reverts commit de13871a8be4a450b79a4d9e65b9d1982485577e.

Revert "prettier"

This reverts commit 1550bf49527f591d05fa2766ca66ccb16e142011.

Revert "mux operator, muxers.mjs with pick variants"

This reverts commit af062f93c23ded4440f968186bfc69851d8aec67.
2024-02-26 01:11:56 +01:00
Felix Roos 0416e4d212 Merge pull request #960 from tidalcycles/reset-global-fx
fix: reset global fx on pattern change
2024-02-25 19:17:00 +01:00
Felix Roos b9247db001 fix: reset global fx on pattern change 2024-02-25 15:09:15 +01:00
eefano 74ef157fa1 Merge remote-tracking branch 'upstream/main' into pickr-pickrmod 2024-02-25 14:52:12 +01:00
Felix Roos d4724b0e12 feat: can now invert euclid pulses with negative numbers 2024-02-25 14:43:02 +01:00
eefano dbfdbcf2b7 typo 2024-02-25 14:39:38 +01:00
eefano 0986b14508 added pickOuter, pickmodOuter 2024-02-25 14:31:07 +01:00
Felix Roos 325152c782 Merge pull request #936 from Enelg52/midi-issues
fix midi issue on firefox and added quote error
2024-02-25 14:15:30 +01:00
Felix Roos c136d12194 Merge pull request #956 from eefano/bracketMatching
'Enable Bracket Matching' option in Codemirror
2024-02-25 13:19:46 +01:00
Felix Roos 7557952155 format 2024-02-25 13:17:52 +01:00
Felix Roos b0b41e6718 revert unintended change 2024-02-25 13:17:29 +01:00
Felix Roos 22e3067b8c set bracket matching true by default 2024-02-25 13:16:53 +01:00
Jade (Rose) Rowland e54b2fb207 lower weighted average 2024-02-23 20:13:08 -05:00
Felix Roos e9ab01ab06 Merge pull request #957 from tidalcycles/web-iife
fix script importable packages (web + repl)
2024-02-23 14:37:45 +01:00
Felix Roos 058e554b0f update example 2024-02-23 14:33:07 +01:00
Felix Roos 6d9327aebc adapt repl package similar to web package 2024-02-23 14:30:29 +01:00
Felix Roos c23d7850c7 simplify web example 2024-02-23 14:30:07 +01:00
Felix Roos 2854f0cf34 try different main / module setting + bump 2024-02-23 14:28:43 +01:00
Felix Roos a89e87ca2e add web package example using script tag 2024-02-23 14:21:59 +01:00
Felix Roos 5419ca431b bump web package version 2024-02-23 14:17:11 +01:00
Felix Roos e8b674badd add iife build to web package 2024-02-23 14:16:54 +01:00
eefano 8af40a9c61 added <> for mininotation 2024-02-22 23:35:00 +01:00
eefano f54aa3d823 'Enable Bracket Matching' option in Codemirror 2024-02-22 22:04:57 +01:00
Jade (Rose) Rowland d544bf4665 seperated service worker zyklus and cyclist zyklus because of import constraints on service workers 2024-02-22 00:16:36 -05:00
Jade (Rose) Rowland e5570a6017 restore old cyclist 2024-02-21 23:42:19 -05:00
Jade (Rose) Rowland 5e91287e3e Merge pull request #954 from daslyfe/midi_duration_fix
account for cps in midi time duration
2024-02-21 10:17:36 -05:00
Felix Roos 4e3d4a7060 hotfix: some samples were broken 2024-02-21 15:35:59 +01:00
Felix Roos 3d80da9816 Merge pull request #955 from tidalcycles/auto-await-samples
Auto await samples
2024-02-21 10:27:12 +01:00
Felix Roos bf63b716af refactor: remove await before samples calls in docs etc..
+ remove /master from dirt-samples calls (there is now a main branch)
+ remove /main endings from some places
2024-02-21 10:17:45 +01:00
Felix Roos 38d389b838 add test 2024-02-21 09:50:21 +01:00
Felix Roos ebdca32c80 automatically add await to samples call 2024-02-21 09:48:26 +01:00
Jade (Rose) Rowland 751a825616 fix test 2024-02-19 23:54:15 -05:00
Jade (Rose) Rowland c06a3710c1 fixed 2024-02-19 23:43:35 -05:00
eefano d5e67fe13f Update signal.mjs
typo
2024-02-18 19:01:05 +01:00
eefano 00c7da45c0 Update signal.mjs
now pickRestart() and pickReset()
2024-02-18 18:55:05 +01:00
eefano 3347817350 Update signal.mjs
using trigZeroJoin in pickr() instead
2024-02-18 18:41:06 +01:00
eefano 88ece92a78 Update signal.mjs
Make pickr() handle dictionaries also
2024-02-18 16:40:27 +01:00
eefano 03a73fb95e Update signal.mjs
Fixed pickr() description
2024-02-18 16:21:50 +01:00
eefano 23c55c9636 Update signal.mjs
prettier fix
2024-02-18 16:03:01 +01:00
eefano 12c6f4e95f Update signal.mjs
added pickr() and pickrmod()
2024-02-18 15:30:24 +01:00
Felix Roos a468ddb85b Merge pull request #945 from tidalcycles/cjs-fixes
remove cjs builds
2024-02-08 13:16:15 +01:00
Felix Roos 051bdaccc7 Publish
- @strudel/codemirror@1.0.1
 - @strudel/core@1.0.1
 - @strudel/csound@1.0.1
 - @strudel/hydra@1.0.1
 - @strudel/midi@1.0.1
 - @strudel/mini@1.0.1
 - @strudel/osc@1.0.1
 - @strudel/repl@1.0.1
 - @strudel/serial@1.0.1
 - @strudel/soundfonts@1.0.1
 - superdough@1.0.1
 - @strudel/tonal@1.0.1
 - @strudel/transpiler@1.0.1
 - @strudel/web@1.0.1
 - @strudel/webaudio@1.0.1
 - @strudel/xen@1.0.1
2024-02-08 13:04:25 +01:00
Felix Roos 5dc04d9574 make sure to overwrite main field 2024-02-08 12:36:04 +01:00
Felix Roos 60129413d3 remove cjs builds
+ add type module everywhere
2024-02-08 12:19:11 +01:00
Jade (Rose) Rowland 15df20d22d cleanup 2024-02-08 00:37:16 -05:00
Jade (Rose) Rowland b37c560ea5 importScripts 2024-02-08 00:20:40 -05:00
Jade (Rose) Rowland 5a3272fe29 fix repl merge 2024-02-07 22:23:24 -05:00
Felix Roos 0baa8383f2 fix: test 2024-02-04 23:32:28 +01:00
Felix Roos d2bf9370ea Update README.md
add link to usage example for repl package
2024-02-04 23:24:43 +01:00
Felix Roos fd11aa5eec Merge pull request #941 from mhetrick/patch-1
Minor documentation error: Update first-sounds.mdx
2024-02-04 23:15:37 +01:00
Jade (Rose) Rowland cea33783a2 remove console statement 2024-02-04 17:10:43 -05:00
Jade (Rose) Rowland 0d3eaf7f9a add a broadcast channel for recieving messages from clock to ensure that they hit at the same time 2024-02-04 17:06:28 -05:00
Jade (Rose) Rowland c761cd54b4 try to fix test again: 2024-02-04 14:32:42 -05:00
Jade (Rose) Rowland a8a055d32c fixing test 2024-02-04 14:25:16 -05:00
Jade (Rose) Rowland cc323d0d61 fixed import 2024-02-04 14:09:19 -05:00
Jade (Rose) Rowland fc87a6776a cleaning up 2024-02-04 14:04:12 -05:00
Jade (Rose) Rowland f5ac57f87b cleaning up 2024-02-04 13:56:46 -05:00
Jade (Rose) Rowland 90624abf2e added worker, cleaned up, added setcps function 2024-02-04 13:54:40 -05:00
Jade (Rose) Rowland e5ec62695c Merge branch 'tidalcycles:main' into repl_sync 2024-02-04 13:29:52 -05:00
Michael Hetrick fb7c2b61d3 Update first-sounds.mdx
Update the tutorial text to reflect that the default cpm setting has changed from 60 to 30.
2024-01-26 07:13:09 -08:00
Felix Roos dd64bf0fc9 Merge pull request #938 from tidalcycles/pianoroll-sorting
fix: pianoroll sorting
2024-01-24 16:48:57 +01:00
Felix Roos 434eb3b256 fix: pianoroll sorting 2024-01-24 16:40:26 +01:00
Enelg52 6da98a5f31 fix midi issue on firefox and quote error 2024-01-23 16:47:46 +01:00
Felix Roos 8fef75385a Update README.md 2024-01-23 01:35:28 +01:00
Felix Roos c66b9219a8 Update README.md 2024-01-23 01:31:11 +01:00
Felix Roos 2a1f8823e8 Merge pull request #935 from tidalcycles/v1-release-notes
V1 release notes
2024-01-23 00:04:03 +01:00
Felix Roos 3da65f90e3 shorter titles for release notes 2024-01-22 23:55:57 +01:00
Felix Roos a36cc24087 v1 release notes 2024-01-22 23:55:49 +01:00
Felix Roos 1829d8cadf Publish
- @strudel/codemirror@1.0.0
 - @strudel/core@1.0.0
 - @strudel/csound@1.0.0
 - @strudel/embed@1.0.0
 - @strudel/hydra@1.0.0
 - @strudel/midi@1.0.0
 - @strudel/mini@1.0.0
 - @strudel/osc@1.0.0
 - @strudel/repl@1.0.0
 - @strudel/serial@1.0.0
 - @strudel/soundfonts@1.0.0
 - superdough@1.0.0
 - @strudel/tonal@1.0.0
 - @strudel/transpiler@1.0.0
 - @strudel/web@1.0.0
 - @strudel/webaudio@1.0.0
 - @strudel/xen@1.0.0
2024-01-22 22:46:35 +01:00
Felix Roos 02efc090ef hotfix: examples were still 1 cps based 2024-01-22 20:46:10 +01:00
Felix Roos b184348f55 hotfix: youtube embed styles were lost on prod 2024-01-22 20:38:34 +01:00
Felix Roos 06743cb072 Merge pull request #929 from tidalcycles/2-years
2 years blog post
2024-01-22 20:20:52 +01:00
Felix Roos 6fa66fb1d0 finish year 2 post 2024-01-22 20:19:01 +01:00
Felix Roos 23c0ab9648 offset blog post anchor links 2024-01-22 20:18:51 +01:00
Alex McLean 6422047cff make 0.5hz cps the default (#931)
* 0.5 default cps

* 1 -> 0.5 cps defaults

* start moving examples to 2Hz

* more 2Hz doc edits

* small tweaks

* format

* adapt cycles page

* adapt pitch page

* tonal page

* accumulation

* synth page

* adapt conditional-modifiers

* audio effects page

* adapt signals doc

* fix: errors for signals

* adapt signals page

* start time modifiers

* adapt time modifiers

* adapt factories

* hydra + pattern intro

* adapt mini notation page

* start recipes

* adapt recipes page

* use code_v1 table

* delete old dbdump + add new csv based tool

* fix: tests

* fix: cpm

* shuffle featured patterns

* fix: snapshot

---------

Co-authored-by: Felix Roos <flix91@gmail.com>
2024-01-22 19:02:34 +00:00
Jade (Rose) Rowland 46c2c72637 Merge pull request #934 from daslyfe/patterntab_fix
Fix pattern tab not showing patterns without created date
2024-01-21 18:52:01 -05:00
Jade (Rose) Rowland c088590244 remove console statement 2024-01-21 18:51:06 -05:00
Jade (Rose) Rowland 192ba69682 fixed if statement 2024-01-21 18:49:06 -05:00
Jade (Rose) Rowland 2cc428e968 Merge pull request #897 from daslyfe/pattern_selection
Add useful pattern selection behavior for performing.
2024-01-21 14:46:27 -05:00
Jade (Rose) Rowland 15c451a6d9 default pattern filtername 2024-01-21 14:35:17 -05:00
Jade (Rose) Rowland b46e8c07be reset/autoplay when window PARENT does not exist or does not contain oodles 2024-01-21 12:44:14 -05:00
Jade (Rose) Rowland 961e931c31 autoplay and reset cps on default 2024-01-21 12:12:33 -05:00
Jade (Rose) Rowland b1d49552ae title order 2024-01-21 11:27:48 -05:00
Jade (Rose) Rowland d31d154841 fix oven imports 2024-01-21 11:24:58 -05:00
Jade (Rose) Rowland d03892bbcf Merge branch 'tidalcycles:main' into pattern_selection 2024-01-21 11:19:06 -05:00
Felix Roos 0cf0c1c585 Merge pull request #933 from tidalcycles/refactor-cps-functions
Refactor cps functions
2024-01-21 01:30:27 +01:00
Felix Roos 0695b4bee9 clean + comment 2024-01-21 01:29:31 +01:00
Felix Roos 0cfec3a7bd show repls in community bakery 2024-01-21 01:21:21 +01:00
Felix Roos 6224cd40d4 mini repl max height option 2024-01-21 01:21:13 +01:00
Felix Roos 18ae82174d fix: "can't redefine non-configurable property" 2024-01-21 01:13:32 +01:00
Felix Roos aa1b9d11dc inject scheduler into Pattern methods right before eval 2024-01-21 00:59:31 +01:00
Felix Roos 0a82471112 implement loopAt with pat state 2024-01-21 00:45:40 +01:00
Felix Roos 8052e10f0c implement fit with pat state 2024-01-21 00:39:26 +01:00
Jade (Rose) Rowland 1146f6ba52 fix annoying div 2024-01-20 18:14:42 -05:00
Alex McLean 738cea0025 Make splice cps-aware (#932)
* make splice cps-aware

* format

* copypaste fix
2024-01-20 22:47:31 +00:00
Jade (Rose) Rowland 6c28398d20 fix scroll 2024-01-20 14:25:42 -05:00
Jade (Rose) Rowland 4fe75143d0 cleanup 2024-01-20 14:10:46 -05:00
Jade (Rose) Rowland 3cd59cdea5 cleaning up 2024-01-20 14:02:48 -05:00
Jade (Rose) Rowland 9dca7eb878 add pattern filter behaves like sounds tab 2024-01-20 13:59:32 -05:00
Jade (Rose) Rowland b45fd5ce3a fix invalid date 2024-01-20 13:00:33 -05:00
Felix Roos 229b1470f7 fix: localhost links 2024-01-20 10:59:34 +01:00
Jade (Rose) Rowland 0a349e1707 avoid json errors in firefox 2024-01-19 23:04:41 -05:00
Felix Roos d176e9ccf0 add stats 2024-01-19 21:51:52 +01:00
Felix Roos 710c3acb5d more writing 2024-01-19 21:21:33 +01:00
Felix Roos a7f5d0e0c1 Merge pull request #923 from tidalcycles/feed
community bakery
2024-01-19 18:50:57 +01:00
Felix Roos 9928526dda Merge pull request #924 from geikha/main
add pickF and pickmodF
2024-01-19 18:49:53 +01:00
Renzo Torr- 2f8111be0e update the .snap file 2024-01-19 14:47:03 -03:00
Renzo Torr- 68113937ff code format 2024-01-19 14:06:24 -03:00
Felix Roos c598fa026b write more 2024-01-19 15:49:16 +01:00
Alex McLean 491c99c348 Mini-notation additions towards tidal compatibility (#926)
- `.` feet now work, e.g. `"a b c . d e . f"` is the same as `"[a b c] [d e] [f]"`
- `_` elongation now works, e.g. `"a _ _ b"` is the same as `"a@3 b"` (`"a @ @ b"` also works, like in tidal)
- standalone `!` now works, e.g. `"a ! ! b"` is the same as `"a!3 b"`

Reworks #47 and #49
Ref #30
2024-01-19 14:10:47 +00:00
Felix Roos d49aa8242a begin 2 year post 2024-01-19 13:50:28 +01:00
Renzo Torr- 9ffbc06cf9 add pickF and pickmodF
allows to pick functions via a pattern of numbers, to apply to another pattern
2024-01-19 02:45:54 -03:00
Jade (Rose) Rowland af52ac30ba prettier 2024-01-19 00:28:55 -05:00
Jade (Rose) Rowland 7aea1b5fc8 fixed imports 2024-01-19 00:27:09 -05:00
Jade (Rose) Rowland 500ddf3946 Merge branch 'main' into pattern_selection 2024-01-19 00:23:06 -05:00
Jade (Rose) Rowland 3431eaf309 cleaning up 2024-01-19 00:20:10 -05:00
Jade (Rose) Rowland 9a13c58583 cleaning up 2024-01-19 00:14:08 -05:00
Jade (Rose) Rowland 77a48e8351 persistent pattern data 2024-01-18 22:30:53 -05:00
Jade (Rose) Rowland 6cb156d876 cleaning up 2024-01-18 20:01:54 -05:00
Felix Roos d8677c6261 hotfix: rss links 2024-01-18 23:40:22 +01:00
Felix Roos 6ef9ca18e9 Merge pull request #919 from tidalcycles/blog-improvements
Blog improvements
2024-01-18 23:34:10 +01:00
Felix Roos 6667738dc9 more rename 2024-01-18 21:34:20 +01:00
Felix Roos 4f7415b0ec rename 2024-01-18 21:31:21 +01:00
Felix Roos c6f3a8b7c7 more text 2024-01-18 18:30:57 +01:00
Felix Roos 4229d673c9 basic community oven 2024-01-18 18:21:56 +01:00
Alex McLean 98b7859605 pick, pickmod, inhabit, inhabitmod (#921)
* the args for `pick` are now reversed as standard (old behaviour still supported to avoid breaking change)
* `pick` is also now a pattern method
* `pick` now also accepts a lookup table for pick-by-name as an alternative to pick-by-index from a list
* `inhabit` added with same behaviour as `pick`, except cycles from source patterns are squeezed into events of inhabited patterns
* Also some general doc tidying, sorry for the noise..
* There is also `pickmod` and `inhabitmod`, for wrapping indexes around rather than clamping them
2024-01-18 17:08:29 +00:00
Alex McLean a8db707440 Revert "pick now accepts lookup tables, with alternate cycle squeezing behaviour as new inhabit function" (#920) 2024-01-18 17:04:26 +00:00
Alex McLean 873a412179 pick now accepts lookup tables, with alternate cycle squeezing behaviour as new inhabit function (#918)
- the args for `pick` are now reversed (breaking change!)
- `pick` is also now a method on the inhabited pattern
- `pick` now also accepts a lookup table
- `inhabit` added with same behaviour as `pick`, except cycles from source patterns are squeezed into events of inhabited patterns
- Also some general doc tidying, sorry for the noise..
- There is now also `pickmod` and `inhabitmod`, for wrapping indexes around rather than clamping them
2024-01-18 16:45:39 +00:00
Felix Roos 0778b4809e format 2024-01-18 13:47:34 +01:00
Felix Roos f85fb35c66 minirepl multi tune support + add other getting-started examples (more to come) 2024-01-18 13:46:35 +01:00
Felix Roos 5ada0daf40 add rss link to top + fix typo 2024-01-18 13:01:06 +01:00
Felix Roos 2ed5f5aa65 blog style fixes 2024-01-18 12:50:35 +01:00
Felix Roos ae5e6e3ab8 add rss.xml 2024-01-18 12:49:22 +01:00
Felix Roos 9ba7b9b4d4 Merge pull request #917 from tidalcycles/deprecate-old-package-names
rename @strudel.cycles/* packages to @strudel/*
2024-01-18 10:30:08 +01:00
Felix Roos a45f1fba45 update versions in example html files 2024-01-18 10:25:24 +01:00
Felix Roos e6b47d2cf2 fix link 2024-01-18 10:04:53 +01:00
Felix Roos b04a262433 Publish
- @strudel/codemirror@0.11.0
 - @strudel/core@0.11.0
 - @strudel/csound@0.11.0
 - @strudel/embed@0.11.0
 - @strudel/hydra@0.11.0
 - @strudel/midi@0.11.0
 - @strudel/mini@0.11.0
 - @strudel/osc@0.11.0
 - @strudel/repl@0.11.0
 - @strudel/serial@0.11.0
 - @strudel/soundfonts@0.11.0
 - @strudel/tonal@0.11.0
 - @strudel/transpiler@0.11.0
 - @strudel/web@0.11.0
 - @strudel/webaudio@0.11.0
 - @strudel/xen@0.11.0
2024-01-18 09:59:57 +01:00
Felix Roos 96bafa7f0b the big rename: @strudel.cycles/* -> @strudel/* 2024-01-18 09:54:37 +01:00
Felix Roos b10612da5c Publish
- @strudel/codemirror@0.10.0
 - @strudel.cycles/core@0.10.0
 - @strudel.cycles/csound@0.10.0
 - @strudel.cycles/embed@0.10.0
 - @strudel/hydra@0.10.0
 - @strudel.cycles/midi@0.10.0
 - @strudel.cycles/mini@0.10.0
 - @strudel.cycles/osc@0.10.0
 - @strudel/repl@0.10.0
 - @strudel.cycles/serial@0.10.0
 - @strudel.cycles/soundfonts@0.10.0
 - superdough@0.10.0
 - @strudel.cycles/tonal@0.10.0
 - @strudel.cycles/transpiler@0.10.0
 - @strudel/web@0.10.0
 - @strudel.cycles/webaudio@0.10.0
 - @strudel.cycles/xen@0.10.0
2024-01-18 09:35:20 +01:00
Felix Roos 171f4206a8 Merge branch 'main' into deprecate-old-package-names 2024-01-18 09:33:16 +01:00
Felix Roos bd83d19197 Merge pull request #913 from tidalcycles/pitch-envelopes
pitch envelope
2024-01-18 06:54:33 +01:00
Felix Roos 95cf201c6d fix: heading 2024-01-18 06:49:09 +01:00
Felix Roos 4107711dae snapshot 2024-01-18 06:48:21 +01:00
Felix Roos 67f0758cb5 document pitch envelope 2024-01-18 06:47:54 +01:00
Felix Roos 1c99944a32 pitch envelope now also works when setting one of the controls (penv not needed) 2024-01-18 06:47:44 +01:00
Felix Roos d3ea4959b4 - more flexible pitch envelopes
- fix: exponential envelopes could break due to 0 values
2024-01-18 06:47:12 +01:00
Felix Roos 70b27fbff2 Merge pull request #916 from oscarbyrne/fix-swatch-static-paths
Fix: swatch/[name].png.js static path
2024-01-18 05:09:38 +01:00
Oscar Byrne 96c2144857 Use astro Response class for swatch/[name].png.js endpoint 2024-01-17 17:09:11 -08:00
Felix Roos 0655af4d4f add pcurve 2024-01-17 17:35:35 +01:00
Jade (Rose) Rowland 7adfe6f2df fixing edge cases... 2024-01-17 09:45:00 -05:00
Felix Roos 3fc0fdbe62 remove todo 2024-01-16 17:57:52 +01:00
Felix Roos fd73571744 make sure the sustained pitch is the selected note 2024-01-16 17:56:38 +01:00
Felix Roos 80d861c12c Merge pull request #907 from fnordomat/more-vowels
Add more vowel qualities for the vowels function
2024-01-16 08:22:27 +01:00
Jade (Rose) Rowland 45df7bfea3 making things consistent 2024-01-16 00:45:00 -05:00
Jade (Rose) Rowland 106772e480 Merge branch 'main' into pattern_selection 2024-01-15 18:37:18 -05:00
Felix Roos 3506de8d1a vibrato for soundfonts
+ add getVibratoOscillator helper
2024-01-16 00:07:56 +01:00
Felix Roos 32456d6966 pitch envelope for sampler and soundfonts
+ added getPitchEnvelope helper
2024-01-15 23:55:49 +01:00
Felix Roos bdc2af9733 basic pitch envelope 2024-01-15 23:25:22 +01:00
Felix Roos a7daf41934 Merge pull request #911 from tidalcycles/blog
adds a blog
2024-01-14 23:56:36 +01:00
Felix Roos fe6ff2528a Merge pull request #894 from rjulian/feat/add-header-workshop
Remove hideHeader for better mobile UI and consistency
2024-01-14 23:52:41 +01:00
Felix Roos 7ceb8708b0 fix: do not format autogenerated file 2024-01-14 23:47:50 +01:00
Felix Roos 4d22d957a1 add more videos to showcase 2024-01-14 23:45:39 +01:00
Felix Roos 79f1a863b6 add date + author to posts + dedupe headings 2024-01-14 23:39:03 +01:00
Felix Roos 98db3d37ef add anchor links 2024-01-14 23:30:26 +01:00
Felix Roos c02976782b add video component 2024-01-14 23:22:10 +01:00
Felix Roos ceb4376eb8 format autogenerated types 2024-01-14 23:16:44 +01:00
Felix Roos 0566b7bcb3 basic blog with release notes 2024-01-14 23:16:09 +01:00
Jade (Rose) Rowland 6d0ecb9f5e Merge pull request #868 from daslyfe/envelope_improvements
Further Envelope improvements
2024-01-14 16:43:06 -05:00
Felix Roos 0901948564 fanchor default to 0.5 for now 2024-01-14 21:32:38 +01:00
Felix Roos e6d028fd6b soundfont mixing 2024-01-14 16:27:11 +01:00
Alex McLean 945e7082cd Update metadata.mdx 2024-01-14 10:15:40 +00:00
Alex McLean 0d6bdfb514 Link to creative commons chooser 2024-01-14 10:14:43 +00:00
fnordomat 70712bdab6 fix codeformat 2024-01-14 10:19:49 +01:00
Felix Roos 53771d7f95 hotfix: avoid crash for anonymous patterns 2024-01-14 01:50:48 +01:00
Felix Roos 6d32d4024d hotfix: fix built version loading at runtime.. 2024-01-14 01:08:01 +01:00
Felix Roos f387589342 hotfix: fix build error 2024-01-14 00:53:43 +01:00
Felix Roos 47a5080352 Merge pull request #910 from tidalcycles/browse
public sharing
2024-01-14 00:48:03 +01:00
Felix Roos e7e60d3ed8 Merge branch 'main' into pattern_selection 2024-01-14 00:18:57 +01:00
Felix Roos 5314c83534 delete browse page for now 2024-01-14 00:02:27 +01:00
Felix Roos 204c964050 integrate public patterns into patterns tab 2024-01-13 23:53:46 +01:00
Felix Roos 1ede99f71e ask for public sharing (very cheap) + order browse list 2024-01-13 23:12:22 +01:00
Felix Roos 3c1844046a basic browse page 2024-01-13 23:01:16 +01:00
Felix Roos eefa90a2bc fix: synth default envelope 2024-01-13 22:24:59 +01:00
fnordomat efa0737660 added some aliases for the vowels (cosmetics) 2024-01-13 15:11:30 +01:00
fnordomat 6232560273 document extra vowels in quick reference 2024-01-13 11:11:31 +01:00
fnordomat e051d383a0 add 10 new vowel qualities to formant table 2024-01-13 11:11:31 +01:00
Felix Roos 4fb5c1828d i have no clue why this works 2024-01-13 01:16:26 +01:00
Felix Roos 6f3b2fa66b negative fenv values now stay in the same range as positives 2024-01-13 00:26:16 +01:00
Jade (Rose) Rowland ccb42c831c cleaning 2024-01-12 18:21:23 -05:00
Felix Roos f17459fdc3 Merge branch 'main' into envelope_improvements 2024-01-12 19:41:05 +01:00
Felix Roos a053f40e59 Merge pull request #902 from tidalcycles/build-warnings
fix some build warnings
2024-01-12 18:31:41 +01:00
Felix Roos 9a0459fdd3 move non pages out of pages dir 2024-01-12 18:16:57 +01:00
Felix Roos 46a859736a Merge pull request #891 from daslyfe/remove_jsx_exports_for_vite
prevent vite from complaining about additional exports in jsx files
2024-01-12 18:01:55 +01:00
Felix Roos e4524a2be9 Merge pull request #892 from daslyfe/update_vite
Update Vite version so hot reload works properly with newest pnpm version
2024-01-12 17:05:46 +01:00
Felix Roos f3ee1cc947 Merge pull request #886 from tidalcycles/polymeter-slowcat
support , in < >
2024-01-12 15:09:40 +01:00
Jade (Rose) Rowland 2386782280 cleaning... 2024-01-12 00:24:23 -05:00
Jade (Rose) Rowland 4d92922263 fixed animation drops 2024-01-12 00:20:20 -05:00
Felix Roos 86bc28dfb3 add deprecation notes 2024-01-11 20:46:22 +01:00
Jade (Rose) Rowland 721f707c94 working but animation is weird 2024-01-10 23:49:02 -05:00
Jade (Rose) Rowland 0c7b731fa6 latency :( 2024-01-10 20:05:27 -05:00
Jade (Rose) Rowland f1eaa83af5 trying stuff 2024-01-10 14:43:18 -05:00
Felix Roos 1bc0934228 Merge branch 'main' into envelope_improvements 2024-01-10 15:15:22 +01:00
Felix Roos f26fd18c7a use 0.001 as linear mintime as well (to prevent cracks) 2024-01-10 15:02:10 +01:00
Felix Roos c68dba8c21 fix: use end 2024-01-10 14:28:38 +01:00
Felix Roos f768e1eece Merge pull request #898 from tidalcycles/fix-autocomplete
fix: autocomplete / tooltip code example bug
2024-01-10 13:55:39 +01:00
Jade (Rose) Rowland d329ccc4e3 converting 2024-01-10 01:40:19 -05:00
Jade (Rose) Rowland 19f2434694 workerizing 2024-01-09 22:49:39 -05:00
Jade (Rose) Rowland 0006f6483d playing with workers 2024-01-09 19:39:21 -05:00
Felix Roos f99557cc05 fix: fanchor + default fanchor to 0 (breaking change) 2024-01-10 00:08:49 +01:00
Felix Roos f785823e00 add fenv to filter cutoff controls 2024-01-10 00:08:13 +01:00
Felix Roos 62cd2263c2 add silent flag to nanFallback 2024-01-10 00:03:18 +01:00
Felix Roos 7157634db0 fix: autocomplete / tooltip code example bug 2024-01-09 22:34:16 +01:00
Jade (Rose) Rowland 6eec4277c1 playing around 2024-01-08 23:34:12 -05:00
Jade (Rose) Rowland 78f6fdf169 reset for example patterns 2024-01-08 10:49:26 -05:00
Jade (Rose) Rowland e01c6dc18d prettier 2024-01-08 00:25:58 -05:00
Jade (Rose) Rowland 51dd408733 all working 2024-01-08 00:15:07 -05:00
Jade (Rose) Rowland 1ff7548b52 refactoring 2024-01-07 22:48:07 -05:00
Jade (Rose) Rowland f7fe44063a handle deletion cases 2024-01-07 00:58:03 -05:00
Jade (Rose) Rowland 0355c358b8 fixed create and duplicate behavior 2024-01-06 23:49:37 -05:00
Jade (Rose) Rowland 4e0a60db00 example code logic 2024-01-06 22:10:14 -05:00
Jade (Rose) Rowland 3604d3940c mutate viewing pattern 2024-01-06 17:53:51 -05:00
Jade (Rose) Rowland 02b9bd82cf highlight viewing pattern 2024-01-06 17:33:24 -05:00
Jade (Rose) Rowland 86442adb20 prettier 2024-01-06 15:09:09 -05:00
Richard Julian 569137eb22 Formatting for passing CI 2024-01-06 12:05:39 -08:00
Jade (Rose) Rowland 5e3a37c9e8 init 2024-01-06 14:55:45 -05:00
Richard Julian 4651066472 Remove hideHeader for better mobile UI and consistency 2024-01-06 11:55:00 -08:00
Jade (Rose) Rowland 8d325b96ea init 2024-01-06 14:49:52 -05:00
Felix Roos b52cb198b5 Merge pull request #889 from tidalcycles/invisible-selection
fix: invisible selection on vim + emacs mode
2024-01-06 15:23:55 +01:00
Felix Roos bcee6632af fix: invisible selection on vim + emacs mode 2024-01-06 15:21:58 +01:00
Jade (Rose) Rowland 150a1b8eed restore buffer hold behavior 2024-01-05 17:45:09 -05:00
Felix Roos 4c49b84213 Merge pull request #888 from tidalcycles/scale-anchors
scales can now be anchored
2024-01-05 22:29:20 +01:00
Felix Roos b27f177138 scales can now be anchored 2024-01-05 13:03:40 +01:00
Jade (Rose) Rowland b2f63897f9 change default FM env to exp because it modulates frequency and sounds way better :) 2024-01-05 01:07:54 -05:00
Jade (Rose) Rowland 2ee392be9b fixed all the things 2024-01-05 01:00:22 -05:00
Felix Roos f37652edb3 Merge pull request #887 from tidalcycles/root-voicings
add root mode for voicings
2024-01-04 11:21:42 +01:00
Felix Roos 27049eb706 add root mode for voicings
+ allow numbers as anchor
2024-01-04 11:02:13 +01:00
Felix Roos a2974099c1 add dec synonym for decay 2024-01-03 23:06:23 +01:00
Felix Roos 041a809b07 add ar function 2024-01-03 22:41:03 +01:00
Felix Roos 2ecc6b30aa add ad function 2024-01-03 22:37:35 +01:00
Felix Roos d582bbbb60 fix: format 2024-01-03 22:17:11 +01:00
Felix Roos ca3eda8fc7 support , in < > 2024-01-03 21:54:10 +01:00
Jade (Rose) Rowland 1bc86c359e state 2024-01-03 01:04:39 -05:00
Jade (Rose) Rowland 1e2c26123b working 2024-01-03 00:35:47 -05:00
Felix Roos 4d25e3b90b hotfix: Zach B-B 2024-01-03 00:23:28 +01:00
Jade (Rose) Rowland 83c820a18c prettier again 2024-01-01 18:50:23 -05:00
Jade (Rose) Rowland 3eface706c Merge branch 'tidalcycles:main' into envelope_improvements 2024-01-01 18:47:28 -05:00
Felix Roos 8d143f4bf1 Merge pull request #885 from tidalcycles/showcase
Showcase
2024-01-01 18:32:17 +01:00
Felix Roos 88fbd78492 fix: shuffle by default 2024-01-01 18:04:38 +01:00
Felix Roos 9a235a7c15 comment out chalmers vid 2024-01-01 17:59:54 +01:00
Felix Roos d99607ea14 add showcase 2024-01-01 17:56:29 +01:00
Felix Roos 5150ec06dc Merge pull request #882 from daslyfe/audio_device_selection
bugfix: suspend and close exisiting audio context when changing interface
2024-01-01 14:22:10 +01:00
Felix Roos b9f190562e Merge pull request #884 from tidalcycles/mastodon-links
add mastodon link
2024-01-01 14:21:52 +01:00
Felix Roos eb189d077d add mastodon link 2024-01-01 14:20:01 +01:00
Jade (Rose) Rowland 9756d63cf1 prettier 2023-12-31 11:58:06 -05:00
Jade (Rose) Rowland a800b32529 Merge branch 'main' into envelope_improvements 2023-12-31 11:51:49 -05:00
Jade (Rose) Rowland 8f56ef6507 suspend and close exisiting audio context 2023-12-31 11:39:14 -05:00
Felix Roos 92e0d09c28 Merge pull request #881 from tidalcycles/error-tolerance
fix: make sure n is never undefined before nanFallback
2023-12-31 17:02:57 +01:00
Felix Roos 64d80f98db fix: make sure n is never undefined before nanFallback 2023-12-31 16:59:45 +01:00
Felix Roos 01391d316b Merge pull request #880 from tidalcycles/error-tolerance
Error tolerance
2023-12-31 16:47:22 +01:00
Felix Roos 1d32da075d mini: tolerate non-breaking space (alt+spacebar on macos) 2023-12-31 16:44:35 +01:00
Felix Roos 9b32900b96 revert changing default voicing dict for now... 2023-12-31 16:27:35 +01:00
Felix Roos ecf837636b show line where mini notation parse errors happen 2023-12-31 15:06:30 +01:00
Felix Roos 5a76bc93b8 rename default dict to legacy 2023-12-31 14:19:16 +01:00
Felix Roos b14e5577b4 breaking: use ireal as default voicing dictionary
+ this has the big benefit that all chord symbols work by default without the need to specify a dict
2023-12-31 12:19:05 +01:00
Felix Roos 4121ac91ee fix: graceful handling of invalid chord symbols 2023-12-31 12:11:08 +01:00
Felix Roos c44f202c44 fix: scale errors safety net 2023-12-31 12:07:08 +01:00
Felix Roos 9059b16c7c fix: editor focus on click below code 2023-12-31 11:20:35 +01:00
Felix Roos 3760f51c3c Merge pull request #871 from daslyfe/bugfix_sample_select
bugfix: sound select indexes out of bounds
2023-12-31 10:06:24 +01:00
Felix Roos aa18293f1d Merge pull request #854 from daslyfe/audio_device_selection
Audio device selection
2023-12-31 10:03:00 +01:00
Jade (Rose) Rowland 63066937e9 remove leftover setting 2023-12-30 22:51:30 -05:00
Jade (Rose) Rowland 34f0d631d9 remove console statement 2023-12-30 22:44:40 -05:00
Jade (Rose) Rowland b3522fea6a prevent selection while playing to avoid artifacts 2023-12-30 22:40:27 -05:00
Felix Roos 2ae3ce53f3 hotfix: zen mode was broken 2023-12-31 01:19:46 +01:00
Felix Roos 2adacbd27b Merge pull request #879 from tidalcycles/dependency-update
Dependency update
2023-12-31 00:59:49 +01:00
Felix Roos 45eed1b7e7 fix: for some reason, ci fails without it... 2023-12-31 00:58:09 +01:00
Felix Roos b36d334f78 fix: duplicate pretest 2023-12-31 00:56:38 +01:00
Felix Roos bd648185bc use node 20 for deployment too + bump node types 2023-12-31 00:54:39 +01:00
Felix Roos 67f1dc32a5 bump node version for test 2023-12-31 00:52:01 +01:00
Felix Roos d47d9dadf4 fix: build
+ seems fraction.js now works with ssr
2023-12-31 00:45:04 +01:00
Felix Roos b52f8c2925 update remaining packages 2023-12-31 00:41:06 +01:00
Felix Roos 59ce624521 update webmidi + codemirror 2023-12-31 00:34:55 +01:00
Felix Roos 70b9fbfcf6 updates..
+ codemirror-themes
+ acorn + escodegen
+ supabase
2023-12-31 00:13:05 +01:00
Felix Roos 74b9279416 update eslint 2023-12-31 00:03:45 +01:00
Felix Roos c3ba8ee0fa update fraction js 2023-12-30 23:59:00 +01:00
Felix Roos 4f5ca0767d updates... 2023-12-30 23:50:30 +01:00
Felix Roos d0a1374d2f more updates.. 2023-12-30 23:43:54 +01:00
Felix Roos a747c976fe update nanostores 2023-12-30 23:26:27 +01:00
Felix Roos 94fcea1040 codeformat 2023-12-30 23:21:34 +01:00
Felix Roos 7db684e308 update lerna 2023-12-30 23:19:22 +01:00
Felix Roos 1981e1c34c update dependency-tree + prettier
+ rerun undocumented script
2023-12-30 23:15:44 +01:00
Felix Roos 5274508665 fix: wrong parens.. 2023-12-30 23:09:31 +01:00
Felix Roos 6f68bdcf5b update vite + astro 2023-12-30 23:08:15 +01:00
Felix Roos cf20f1059f Merge branch 'main' into dependency-update 2023-12-30 22:26:05 +01:00
Felix Roos eefd8b37b1 ignore their wasm file 2023-12-30 16:48:21 +01:00
Felix Roos 89ae241bf7 some styling 2023-12-30 16:45:03 +01:00
Felix Roos a39b4c1637 parser viz 2023-12-30 16:43:08 +01:00
Felix Roos 4d332cd544 Merge branch 'main' into haskell-parser 2023-12-30 13:06:13 +01:00
Felix Roos 307c69edb9 hotfix: another slight logic error 2023-12-30 10:36:50 +01:00
Felix Roos 9a07b15952 hotfix: update button behavior 2023-12-30 10:07:47 +01:00
Jade (Rose) Rowland a178d310fd Merge branch 'tidalcycles:main' into bugfix_sample_select 2023-12-29 23:51:09 -05:00
Jade (Rose) Rowland 12451ba5fc Merge branch 'tidalcycles:main' into envelope_improvements 2023-12-29 22:27:52 -05:00
Jade (Rose) Rowland 69554c0762 merged with vanilla updates 2023-12-29 22:27:01 -05:00
Jade (Rose) Rowland 3152bc123a Merge branch 'main' into audio_device_selection 2023-12-29 20:37:29 -05:00
Felix Roos 64dbdd97ba little update 2023-12-29 21:27:54 +01:00
Felix Roos 4871abbd71 fix superdough example readme 2023-12-29 16:57:46 +01:00
Felix Roos bd2333377f Merge pull request #878 from tidalcycles/move-examples
move all examples to separate examples folder
2023-12-29 16:53:39 +01:00
Felix Roos 76aaedba66 lockfile 2023-12-29 16:50:58 +01:00
Felix Roos b0f316eecd add readme to examples folder 2023-12-29 16:49:05 +01:00
Felix Roos 49903abed7 better naming 2023-12-29 16:48:00 +01:00
Felix Roos d106875605 Merge branch 'main' into move-examples 2023-12-29 16:40:28 +01:00
Felix Roos c13feccdcd better names + more readme 2023-12-29 16:36:38 +01:00
Felix Roos 6aebf99ebc hotfix: panel style 2023-12-29 16:22:50 +01:00
Felix Roos 5d6ccf56d7 add some readme 2023-12-29 16:18:13 +01:00
Felix Roos 0323f75bae move all examples to separate examples folder 2023-12-29 16:05:10 +01:00
Felix Roos f31fdb0988 Merge pull request #876 from tidalcycles/vanilla-repl-4
final vanillification
2023-12-29 15:29:17 +01:00
Felix Roos 92024f68cf default panel position right 2023-12-29 15:26:47 +01:00
Felix Roos f9c1e46c01 delete outdated svg graphics 2023-12-29 15:17:00 +01:00
Felix Roos a5af6d5f4c remove gist function 2023-12-29 15:07:53 +01:00
Felix Roos b1d06c4eb7 remove nano-repl workspace 2023-12-29 15:04:12 +01:00
Felix Roos 89bf3b2817 fix: tooltip padding 2023-12-29 15:03:36 +01:00
Felix Roos ea8aabceed fix: loader 2023-12-29 15:03:26 +01:00
Felix Roos 9fd2d3d640 add missing flash checkbox 2023-12-29 13:58:06 +01:00
Felix Roos 967dea346f fix: lint error 2023-12-29 13:57:52 +01:00
Felix Roos 57bc0b7032 cleanup 2023-12-29 01:07:11 +01:00
Felix Roos 9974311344 better repl init + a bit of ssr for main repl 2023-12-29 00:55:14 +01:00
Felix Roos b0bdd09032 fix: dumb react ssr workaround 2023-12-29 00:30:46 +01:00
Felix Roos f477273d8a delete react package 2023-12-28 21:06:18 +01:00
Felix Roos 014303b0d5 remove dependencies to @strudel.cycles/react 2023-12-28 21:04:29 +01:00
Felix Roos 201fe726b6 replace main repl 2023-12-28 20:48:59 +01:00
Felix Roos 2ed3a5c582 fix: lint 2023-12-28 20:36:59 +01:00
Felix Roos 975a198ee9 whole docs now run new repl
- move MicroRepl code to MiniRepl
- fix a ssr bug
2023-12-28 20:36:23 +01:00
Felix Roos 837f8f318d microrepl claviature support 2023-12-28 19:40:01 +01:00
Felix Roos f96827d052 fix: initial highlighting 2023-12-28 18:03:50 +01:00
Felix Roos a9dc0912d0 fix: drawer performance issue 2023-12-28 17:54:51 +01:00
Jade (Rose) Rowland b5039ecce8 fix import 2023-12-28 10:19:20 -05:00
Felix Roos 624affe092 Merge pull request #874 from daslyfe/clock_drift
Bug Fix #119: Clock drift
2023-12-27 18:38:09 +01:00
Felix Roos 9b5842b20e hotfix: fix build error 2023-12-27 13:28:20 +01:00
Felix Roos edfa0c65f9 Merge pull request #873 from tidalcycles/vanilla-repl-3
main repl vanillification
2023-12-27 13:17:02 +01:00
Felix Roos 39e81aa77c reduce drawTime to fix perf (for now) 2023-12-27 12:46:10 +01:00
Felix Roos 8bde87246b load imported samples directly in prebake 2023-12-27 12:45:27 +01:00
Felix Roos e2a082f748 move repl2 to /next 2023-12-27 11:42:18 +01:00
Felix Roos d7c2cf562f fix: hot reloading 2023-12-27 11:40:07 +01:00
Felix Roos f44ceb46cd remove react-dom dependency 2023-12-26 18:26:51 +01:00
Felix Roos f524dde5ae tooltip without react + simplify autocomplete 2023-12-26 18:03:58 +01:00
Felix Roos 47aa4cf198 autocomplete without react 2023-12-26 17:56:07 +01:00
Felix Roos 1b55a5e3e0 add trailing slash 2023-12-26 17:55:08 +01:00
Jade (Rose) Rowland cb57d8f497 working 2023-12-25 20:42:20 -05:00
Jade (Rose) Rowland e12421cee8 still getting too late 2023-12-25 20:27:42 -05:00
Felix Roos 53484db768 style fixes + remove lastShared state 2023-12-26 00:29:43 +01:00
Felix Roos 4c337a5114 fix: lint errors 2023-12-26 00:06:59 +01:00
Felix Roos 63ae95186b repl2: share + clean up imports 2023-12-26 00:06:15 +01:00
Felix Roos 8c0065f563 pull out repl utility functions
+ repl2 initCode / switching patterns works now
2023-12-25 23:53:54 +01:00
Felix Roos 5c41d6789c checkbox for isPatternHighlightingEnabled 2023-12-25 21:11:28 +01:00
Felix Roos e19f799046 wire up settings and theming 2023-12-25 20:52:00 +01:00
Felix Roos 7dac1e275d repl2: working update + shuffle buttons + faster loading 2023-12-25 20:08:57 +01:00
Felix Roos d74d50c40a first steps of using StrudelMirror in main repl 2023-12-25 19:37:03 +01:00
Felix Roos 8b4be4d100 Merge pull request #866 from tidalcycles/vanilla-repl-2
more work on vanilla repl: repl web component + package
2023-12-25 17:47:25 +01:00
Felix Roos de4460a047 remove redundant test pages 2023-12-25 15:45:49 +01:00
Felix Roos 0ed615a312 fix: add .piano function 2023-12-25 15:32:12 +01:00
Felix Roos e8e8f888dd fix: stop other repls on start 2023-12-25 15:21:54 +01:00
Jade (Rose) Rowland 3776791239 working 2023-12-23 12:30:55 -05:00
Felix Roos 756f37e265 format 2023-12-21 10:54:12 +01:00
Felix Roos 9e1ba442a9 tree-sitter experiment 2023-12-21 10:52:27 +01:00
Jade (Rose) Rowland 77fee0b866 fixed popping on font envelope 2023-12-20 17:39:11 -05:00
Jade (Rose) Rowland 5671b40707 account for phase complete 2023-12-20 15:24:14 -05:00
Jade (Rose) Rowland dec039ead3 fixed filter envelope popping... 2023-12-20 13:09:04 -05:00
Jade (Rose) Rowland fb81f6f268 still working on popping issue with firefox 2023-12-20 10:50:06 -05:00
Jade (Rose) Rowland deb973afa5 fixed hold behavior 2023-12-20 10:17:12 -05:00
Jade (Rose) Rowland 2dea3911ba remove unused variable 2023-12-20 09:29:07 -05:00
Jade (Rose) Rowland e0a7fb8290 filter should decay to set frequency 2023-12-20 09:28:40 -05:00
Jade (Rose) Rowland 30e402b9f1 fixed release bug 2023-12-20 01:52:43 -05:00
Jade (Rose) Rowland f6d9ad51c6 trying to fix divergent firefox behavior 2023-12-20 01:44:34 -05:00
Jade (Rose) Rowland 34ba81a841 fixed test complaint 2023-12-20 00:25:56 -05:00
Jade (Rose) Rowland d7fae2620e create release audio param method, make volume envelopes consistant 2023-12-20 00:21:14 -05:00
Jade (Rose) Rowland 9979a08cb0 updated comment 2023-12-18 00:35:54 -05:00
Jade (Rose) Rowland 17dd48f2a4 prettier 2023-12-18 00:28:41 -05:00
Jade (Rose) Rowland 355ac2ea29 Merge branch 'main' into audio_device_selection 2023-12-18 00:22:33 -05:00
Jade Rowland 000e1293db initialize on first load 2023-12-18 00:09:30 -05:00
Jade Rowland 48fa04f164 system standard resets audio context 2023-12-17 23:15:38 -05:00
Felix Roos ed8f5bf24f fix: first frame 2023-12-17 22:51:43 +01:00
Felix Roos e17df79133 microrepl: ssr static code 2023-12-17 22:42:51 +01:00
Felix Roos 9519d286bd remove web component attribute support
+ settings are now controlled via nanostore
2023-12-17 21:48:53 +01:00
Felix Roos b462f19ef1 fix: boolean settings 2023-12-17 21:28:25 +01:00
Felix Roos 1cdb5964c6 settings sync 2023-12-17 21:16:29 +01:00
Felix Roos 592e54a53f delete strudelmirror example 2023-12-17 21:13:48 +01:00
Jade Rowland fe60f34015 removed accidental file commit 2023-12-17 12:13:05 -05:00
Jade Rowland b5dc65d52a format 2023-12-16 13:36:05 -05:00
Jade Rowland 93a4efcf6d updated fontloader 2023-12-16 13:21:23 -05:00
Felix Roos 40f3212efa fix: first frame active state 2023-12-16 17:04:08 +01:00
Felix Roos 53d6ef04b8 fix: drawTime + canvasHeight 2023-12-16 16:22:28 +01:00
Felix Roos c29d032027 add autodraw flag 2023-12-16 16:19:18 +01:00
Felix Roos 7fcd9d8a83 approaching proper draw logic in microrepl 2023-12-16 16:14:40 +01:00
Felix Roos fc034830d0 use StrudelMirror directly in MicroRepl 2023-12-16 13:08:09 +01:00
Felix Roos 48e06bd213 fix: redundant style injections for multiple repls 2023-12-16 12:37:16 +01:00
Jade Rowland 96e0cce2d2 improve response 2023-12-16 00:30:35 -05:00
Jade Rowland 88f677e910 fix envelope behavior 2023-12-15 18:54:04 -05:00
Jade (Rose) Rowland 9f50f6ef0e Merge branch 'tidalcycles:main' into envelope_improvements 2023-12-15 18:27:23 -05:00
Felix Roos 20e8a30583 copy recipes page to test new MicroRepl 2023-12-15 23:30:27 +01:00
Felix Roos 89c06046b5 fix: repl package import on server 2023-12-15 23:27:38 +01:00
Felix Roos 9c13f6bb53 fix: mini repl play toggle button 2023-12-15 23:20:21 +01:00
Felix Roos b5edcde638 cleanup 2023-12-15 23:18:58 +01:00
Felix Roos 93e8186388 MicroRepl poc 2023-12-15 22:23:20 +01:00
Felix Roos 8e35079fd1 more code in example 2023-12-15 21:01:45 +01:00
Jade Rowland 9663c2ec85 fileter envelopes 2023-12-15 12:16:28 -07:00
Jade Rowland 7da7554493 it works 2023-12-15 11:32:23 -07:00
Felix Roos 372e93e8f8 repl now accepts code in innerHTML + bump 2023-12-15 11:50:49 +01:00
Felix Roos 9b58cf9890 bump repl to 0.9.3 2023-12-15 11:34:14 +01:00
Felix Roos 9fac2c3c33 band aid fix for process is not defined 2023-12-15 11:33:35 +01:00
Felix Roos 505ad17447 fix: process is not defined 2023-12-15 11:25:36 +01:00
Felix Roos 129327077a bump repl to 0.9.2 2023-12-15 11:24:38 +01:00
Felix Roos 034df01e1f better theme style handling 2023-12-15 11:23:10 +01:00
Felix Roos be1e5a7d0e remove onReady callback
+ use strudelTheme as default
2023-12-15 11:21:48 +01:00
Felix Roos 9872a89a29 bump repl to 0.9.1 2023-12-15 10:49:13 +01:00
Felix Roos cf445633c2 bundle as iife instead of cjs 2023-12-15 10:47:58 +01:00
Felix Roos 2cec7bc1a6 fix: rollup warning 2023-12-15 10:47:45 +01:00
Felix Roos 46bfd74e8d repl build config without externals 2023-12-15 10:37:24 +01:00
Felix Roos f6b1e13113 fix: lint errors + wrong color 2023-12-15 10:14:20 +01:00
Felix Roos f0c3d38ea7 move repl web component to new repl package
+ use it in /vanilla + /vanilla/mini
2023-12-15 10:12:47 +01:00
Felix Roos d4afbc63e2 strudel web component 2023-12-15 09:22:50 +01:00
Felix Roos 466574a856 Merge pull request #865 from tidalcycles/vanilla-repl-2
Vanilla repl 3
2023-12-15 00:11:35 +01:00
Felix Roos a8d0d39055 fix: improve last fix by using Prec.highest 2023-12-15 00:07:08 +01:00
Felix Roos 1b04243af6 fix: ctrl+enter on linux 2023-12-15 00:03:12 +01:00
Felix Roos 29082808cb fix: make canvas visible
- automate editor background handling
2023-12-14 23:00:18 +01:00
Felix Roos d23cac506c fix: fontFamily setting 2023-12-14 22:51:17 +01:00
Felix Roos 8959c630ae move css variable injection to themes
+ prepare new HeadCommon in extra file
2023-12-14 22:39:44 +01:00
Felix Roos 35a4f9808d Merge pull request #863 from tidalcycles/vanilla-repl-2
Vanilla repl 2
2023-12-14 21:28:48 +01:00
Felix Roos 49906e98b7 get rid of duplication 2023-12-14 14:50:26 +01:00
Felix Roos 7b6f63db05 comment out fontFamily for now 2023-12-14 14:50:17 +01:00
Felix Roos 37f97e1c17 remove package-lock 2023-12-14 14:48:39 +01:00
Felix Roos 60e559a910 add /vanilla route to website
+ disable autocomplete for now
2023-12-14 14:38:10 +01:00
Felix Roos f6f5ee0375 fix: linter error 2023-12-14 11:50:52 +01:00
Felix Roos 72d1f129cf add settings form to codemirror example 2023-12-14 11:29:33 +01:00
Felix Roos 9474ed7d85 dedicated strudelmirror example 2023-12-14 10:37:16 +01:00
Felix Roos 99194814a9 move code hashing helpers to core 2023-12-14 10:36:56 +01:00
Felix Roos 87feac447b - make codemirror package more capable
- add themes from react package
- add Autocomplete from react package
- handle dynamic extensions
- handle keyboard shortcuts
- make StrudelMirror as capable as Repl
2023-12-14 09:42:25 +01:00
Felix Roos 0a070a2084 superdough 0.9.12 2023-12-12 22:27:08 +01:00
Felix Roos 1d3f87a431 Merge pull request #861 from tidalcycles/envelope-fix
fix: finally repair envelopes
2023-12-12 21:49:22 +01:00
Felix Roos f38d1c272e cleanup 2023-12-12 21:46:52 +01:00
Felix Roos b0bbd58f66 fix: finally repair envelopes 2023-12-12 21:36:32 +01:00
Felix Roos 73fd801907 Merge pull request #860 from tidalcycles/fix-slashless-urls
add missing trailing slashes
2023-12-12 21:20:00 +01:00
Felix Roos bc59f20af4 add missing trailing slashes 2023-12-12 21:17:15 +01:00
Felix Roos daf9187572 Merge pull request #839 from daslyfe/file_import
Sound Import from local file system
2023-12-12 19:08:31 +01:00
Felix Roos 783c856fd7 Merge pull request #858 from tidalcycles/pattern-organization
Pattern organization
2023-12-11 22:48:35 +01:00
Felix Roos f939e00a84 cleanup 2023-12-11 22:46:30 +01:00
Felix Roos b31faa9bbc Merge branch 'main' into pattern-organization 2023-12-11 22:43:53 +01:00
Felix Roos 853a31b638 improve code init logic 2023-12-11 22:17:10 +01:00
Felix Roos faaed61384 fix: do not sync activePattern between tabs
+ only deselect activePattern if code in url differs
2023-12-11 22:01:08 +01:00
Felix Roos b50f686a96 move dirt sample selection to prebake 2023-12-11 11:04:49 +01:00
Jade Rowland f45a3933de update text 2023-12-10 23:08:48 -05:00
Felix Roos 98a1786c10 hotfix: deselect user pattern when opening links 2023-12-10 21:06:51 +01:00
Felix Roos 1f16ebc5b2 fix: deselect user pattern when opening links 2023-12-10 21:01:51 +01:00
Felix Roos 79e8e430f1 fix: style for small screen 2023-12-10 19:50:20 +01:00
Felix Roos 6440621d5d Merge branch 'main' into audio_device_selection 2023-12-10 19:32:29 +01:00
Jade Rowland 59a4cd9cf8 updating buton location 2023-12-10 11:37:18 -05:00
Jade (Rose) Rowland 6238be7f2c Merge branch 'tidalcycles:main' into file_import 2023-12-10 11:28:50 -05:00
Jade Rowland 4051276d74 fixing merge conflicts 2023-12-10 11:27:39 -05:00
Jade Rowland 145510266a fixing merge conflicts 2023-12-10 11:26:46 -05:00
Jade Rowland 4d361a2b3d fixing merge conflicts 2023-12-10 11:24:39 -05:00
Jade Rowland c4fe664215 seperating things out 2023-12-10 11:22:50 -05:00
Jade Rowland ace71693b7 db utils should be reusable 2023-12-10 10:19:57 -05:00
Felix Roos f19ac748e6 slim down template
- move import + export logic to settings.mjs
2023-12-10 14:28:27 +01:00
Jade Rowland a7713213f9 indexdb 2023-12-10 00:44:34 -05:00
Felix Roos 845571a716 hotfix: pattern save was broken :-/ 2023-12-09 23:54:49 +01:00
Felix Roos 8b1dfab077 Merge pull request #855 from tidalcycles/export-patterns
Export patterns + ui tweaks
2023-12-09 17:25:11 +01:00
Felix Roos 6969800192 fix: update button bug 2023-12-09 17:23:24 +01:00
Felix Roos 37a13d1a00 add tooltips 2023-12-08 23:09:24 +01:00
Felix Roos 8c89938eaf pattern json export + import 2023-12-08 23:07:30 +01:00
Felix Roos 5116bf74ad reorder pattern action buttons 2023-12-08 22:25:05 +01:00
Felix Roos a6f969614e fix: rename cancel 2023-12-08 22:24:49 +01:00
Felix Roos c1b7476f43 + show active pattern at the top
+ move active pattern functions to top
2023-12-08 22:22:07 +01:00
Felix Roos 0ca4c1de0f make sure new recent patterns are on top 2023-12-08 22:21:26 +01:00
Jade Rowland ec44103d20 comments 2023-12-08 12:17:01 -05:00
Jade Rowland 89fe0f11ae cleaning up 2023-12-08 12:12:58 -05:00
Felix Roos 63a01088a0 hotfix: dont overwrite user pattern on shuffle 2023-12-08 11:42:15 +01:00
Felix Roos c3e48f1b4d Merge pull request #852 from tidalcycles/import-export-patterns
patterns tab: import patterns + style
2023-12-08 09:41:10 +01:00
Felix Roos 31cd626820 style sounds and patterns tab more consistently 2023-12-08 09:30:06 +01:00
Felix Roos 8dd0e9600d add some padding 2023-12-08 09:20:42 +01:00
Felix Roos 10d86ff835 more style + set reset flag 2023-12-08 09:18:55 +01:00
Felix Roos cec8553fb5 clear sounds + cps on pattern change
+ similar to shuffle
2023-12-08 09:18:33 +01:00
Felix Roos b03bf9ec3d remove log 2023-12-08 09:17:43 +01:00
Felix Roos a750490eea begin pattern import button 2023-12-08 08:49:03 +01:00
Jade Rowland 5281c61f99 fixing async stuff 2023-12-08 01:01:06 -05:00
Jade Rowland 52628920d9 working 2023-12-07 22:17:50 -05:00
Felix Roos ac2e450e38 fix: duplicate example 2023-12-07 21:43:08 +01:00
Felix Roos f8d1e9e004 Merge pull request #769 from tidalcycles/patterns-tab
Patterns tab + Refactor Panel
2023-12-07 20:42:00 +01:00
Felix Roos e551dfeddb reorder tabs + remove duplicated examples 2023-12-07 20:30:13 +01:00
Felix Roos 2f9244e90d style 2023-12-07 20:28:04 +01:00
Felix Roos 056fae518b add checks for forbidden actions 2023-12-07 20:28:01 +01:00
Felix Roos a45d87667f fix: update / fork logic 2023-12-07 20:17:01 +01:00
Felix Roos 7225b0b18d merge changes 2023-12-07 17:33:23 +01:00
Felix Roos e72c9cbebf Merge branch 'main' into patterns-tab 2023-12-07 17:33:07 +01:00
Felix Roos c787bb26c7 Merge pull request #850 from bwagner/pnpm_8.11.0
CHANGES: pnpm 8.1.3 to 8.11.0
2023-12-07 10:25:15 +01:00
Bernhard Wagner 20f3ddd277 CHANGES: pnpm 8.1.3 to 8.11.0 2023-12-07 10:19:26 +01:00
Felix Roos 5cac182b26 Merge pull request #849 from shiyouganai/shiyouganai-slashocalypse
Fix edge case with rehype-urls and trailing slashes in image file paths
2023-12-07 09:35:13 +01:00
Priere 78b2b5ccc3 Don't trim serialized query part of URL 2023-12-06 17:54:29 -05:00
Priere 60cee7fd2f Fix to not add trailing slash to URL with filename 2023-12-06 17:43:15 -05:00
Felix Roos 2bd21df762 Merge pull request #848 from shiyouganai/shiyouganai-slashocalypse
Fix examples page, piano() and a few workshop imgs
2023-12-06 23:02:31 +01:00
Priere a32ed02745 Fix piano and two doc images 2023-12-06 16:57:43 -05:00
Priere 93c5eeb99e Fix examples page and de workshop img 2023-12-06 16:45:37 -05:00
Felix Roos ff45baba2c Merge pull request #846 from tidalcycles/slashocalypse
fix: swatch png src
2023-12-06 22:30:59 +01:00
Felix Roos cc4d38b4a5 fix: swatch png src 2023-12-06 22:28:14 +01:00
Felix Roos bf30587180 Merge pull request #845 from tidalcycles/slashocalypse
fix: missing hash for links starting with /
2023-12-06 22:19:30 +01:00
Felix Roos 1b372a9a7b fix: missing hash for links starting with / 2023-12-06 22:16:43 +01:00
Felix Roos d9f78e1283 Merge pull request #842 from tidalcycles/slashocalypse
improve slashing + base href behavior
2023-12-06 22:05:05 +01:00
Felix Roos 2ddd2d1f39 fix: search links with basehref 2023-12-06 21:46:13 +01:00
Felix Roos 6b31160bbd fix: astro warnings 2023-12-06 21:34:39 +01:00
Felix Roos 74aa85b38b Merge pull request #843 from shiyouganai/shiyouganai-slashocalypse
Add in fixes from my fork to slashocalypse branch
2023-12-06 21:26:48 +01:00
Priere 8e9b607fa1 Revert to simpler link parsing and run formatter 2023-12-06 03:57:30 -05:00
Priere 5332f99a5a Fix another comment 2023-12-06 03:43:38 -05:00
Priere e1a8bd333d Fix comment 2023-12-06 03:41:54 -05:00
Priere 018a45e2d4 Rework rehype plugin and clean up changes 2023-12-06 02:57:28 -05:00
Priere 2c43fb2512 Remove unnecessary change 2023-12-05 19:34:15 -05:00
Priere 3e5664a877 Add quick fix for non root bases 2023-12-05 19:34:15 -05:00
Felix Roos ac41426a20 improve slashing + base href behavior
+ prefix sidebar links & mdx links with base
+ add trailing slashes
2023-12-05 23:09:34 +01:00
Felix Roos 8a0cf14fd7 Merge pull request #838 from ilesinge/prevent_crawler_404
Prevent 404 on Algolia crawls
2023-12-05 18:43:57 +01:00
Felix Roos 362f0df117 Merge pull request #820 from daslyfe/multichannel_audio
Multichannel audio
2023-12-05 18:26:47 +01:00
Felix Roos 1190f6e091 fix weird rounding change... 2023-12-05 18:17:33 +01:00
Bernhard Wagner ebf93c06dd ADDS: JetBrains IDE files (#840)
Co-authored-by: Bernhard Wagner <gitcommit@nosuch.biz>
2023-12-05 11:19:57 +00:00
Bernhard Wagner fe8debe6e8 CHANGES: github action pnpm version from 7 to 8.3.1 (#835)
Co-authored-by: Bernhard Wagner <gitcommit@nosuch.biz>
2023-12-05 11:19:26 +00:00
Bernhard Wagner b8866cf575 CHANGES: pin pnpm to version 8.3.1 (#834)
Co-authored-by: Bernhard Wagner <gitcommit@nosuch.biz>
2023-12-05 11:19:17 +00:00
Bernhard Wagner 2ce8576ab2 CHANGES: github action checkout v2->v4 (#837)
Co-authored-by: Bernhard Wagner <gitcommit@nosuch.biz>
2023-12-05 11:19:06 +00:00
Bernhard Wagner 1bca05e349 FIXES: palindrome abc -> abccba (#831)
* FIXES: palindrome abc -> abccba

* FIXES: tests for palindrome

---------

Co-authored-by: Bernhard Wagner <gitcommit@nosuch.biz>
2023-12-05 10:15:13 +00:00
Jade Rowland 8146725f89 removed unessecary change 2023-12-04 19:20:28 -05:00
Jade Rowland 34c44a29c6 style input 2023-12-04 19:11:38 -05:00
Alexandre G.-Raymond 7c948dd812 Prevent 404 on Algolia crawls 2023-12-04 14:48:54 +01:00
Jade Rowland 61919a1b3e upload samples 2023-12-03 23:33:04 -05:00
Jade Rowland 9be10890e1 update tests 2023-12-03 18:31:01 -05:00
Jade Rowland f51109cb26 comment 2023-12-03 18:26:48 -05:00
Jade Rowland 9aec18b3a0 add 1 to channel selection 2023-12-03 18:25:30 -05:00
Felix Roos b374cdf47c Merge pull request #830 from drewgbarnes/patch-1
Fix a typo
2023-12-02 09:43:50 +01:00
Drew Barnes b16f235e1c Update first-sounds.mdx 2023-12-01 14:23:07 -08:00
Felix Roos c26e5bbf0d Merge pull request #827 from ilesinge/add_search
Add and style algolia search
2023-11-30 10:42:41 +01:00
Alexandre G.-Raymond 020c326458 Codeformat for search 2023-11-26 22:52:17 +01:00
Alexandre G.-Raymond dacd1e6146 Add and style algolia search 2023-11-26 22:50:17 +01:00
Felix Roos 25b2eb5783 snapshot 2023-11-25 16:20:12 +01:00
Felix Roos 7c3dbac083 Merge branch 'main' into multichannel_audio 2023-11-25 16:19:44 +01:00
Felix Roos 54b5d69c8d Merge pull request #818 from atfornes/main
Hydra fixes and improvements
2023-11-25 15:50:43 +01:00
Felix Roos 407510e265 document feedStrudel 2023-11-25 15:20:19 +01:00
Felix Roos f7a283f87d add feedStrudel option + smarter reinit logic 2023-11-24 12:49:05 +01:00
Ámbar Tenorio Fornés 508a6c92b2 default hydra config without audio detection 2023-11-24 12:21:04 +01:00
Felix Roos 9045ce05da comment 2023-11-24 11:28:20 +01:00
Felix Roos 456be920d3 else clause 2023-11-24 11:17:30 +01:00
Felix Roos 71b4e14dd3 Merge branch 'main' into atfornesmain 2023-11-24 11:10:15 +01:00
Felix Roos fb7a9e2083 format 2023-11-24 10:28:40 +01:00
Felix Roos 69e99fa902 Merge pull request #808 from kasparsj/hydra-options
add options param to initHydra
2023-11-24 10:07:17 +01:00
Felix Roos 5e7e1ff0e8 Merge pull request #800 from ilesinge/improve_doc
Improve documentation for synonym functions
2023-11-24 09:57:02 +01:00
Felix Roos 18e9ceb501 populate autocomplete with all synonyms
+ properly display synonyms based on label
2023-11-24 09:52:39 +01:00
Felix Roos 458c97b927 list synonyms in Autocomplete 2023-11-24 09:37:26 +01:00
Felix Roos 4fd3e6e99c fix: entry.name mutation bug 2023-11-24 09:37:11 +01:00
Felix Roos c606f86e9d Merge pull request #806 from Bubobubobubobubo/noises
New noise type: "crackle"
2023-11-24 09:00:53 +01:00
Jade Rowland e7376c4fc8 panic function update 2023-11-23 14:17:17 -05:00
Jade Rowland 886b16d6fd fixed panic function 2023-11-23 14:07:32 -05:00
Jade Rowland 64c2e7c1e8 cleaning up 2023-11-23 13:45:58 -05:00
Jade Rowland 88e933ee25 cleaning up 2023-11-23 13:31:00 -05:00
Jade Rowland 1f62d85d8b cleaning up 2023-11-23 13:29:22 -05:00
Jade Rowland 3fd5fdf1ee preview outputs should be stereo 2023-11-23 12:43:51 -05:00
Jade Rowland e419733716 channel splitting and channels parameter 2023-11-23 01:04:53 -05:00
Alexandre Gravel-Raymond ecc8e0a108 More code beauty please 2023-11-22 20:38:25 +01:00
Alexandre Gravel-Raymond 2868a5ff4f Update the undocumented functions file 2023-11-22 20:36:01 +01:00
Alexandre Gravel-Raymond d71877f915 Move jsdoc files to subfolder 2023-11-22 20:35:19 +01:00
Ámbar Tenorio Fornés e0e896d4b5 improve hydra audio detection initialization 2023-11-22 17:39:16 +01:00
Ámbar Tenorio Fornés 0a280e9399 prettier code formatting 2023-11-22 15:47:16 +01:00
Ámbar Tenorio Fornés a58ac967a6 add Hydra audio example to documentation 2023-11-22 13:51:42 +01:00
Ámbar Tenorio Fornés ebc6723f55 enable hydra options update 2023-11-22 13:51:01 +01:00
Ámbar Tenorio Fornés 66fd20ace5 add hydra audio capture option 2023-11-22 12:36:43 +01:00
Ámbar Tenorio Fornés de00212bb6 fix hydra performance issues 2023-11-22 12:27:18 +01:00
Jade Rowland f0b458cd17 need to figure out channels input + seperating left right channels from source 2023-11-22 00:03:34 -05:00
Jade Rowland 7aa217828b testing 2023-11-20 23:06:35 -05:00
Felix Roos b27f8e45dc hotfix: build 2023-11-18 21:48:50 +01:00
Felix Roos 3e02f0a0ba Merge pull request #815 from tidalcycles/color-hsl
Color hsl
2023-11-18 21:18:16 +01:00
Felix Roos f759999826 pianoroll smear as float 2023-11-18 21:16:03 +01:00
Felix Roos 049aa35286 hsl + hsla functions 2023-11-18 21:15:52 +01:00
Felix Roos dd8be657c2 Merge pull request #813 from tidalcycles/fix-multiple-repls
fix: multiple repls
2023-11-17 23:18:23 +01:00
Felix Roos 09752241ba fix: multiple repls 2023-11-17 23:16:09 +01:00
Felix Roos 83561a0ceb Update README.md 2023-11-17 21:46:34 +01:00
Felix Roos b8ca83ddd1 rename pattern 2023-11-17 21:29:50 +01:00
Felix Roos 4cae6c051b fix: save pattern 2023-11-17 20:55:23 +01:00
Felix Roos e5f9467329 fix: slight layout improvement 2023-11-17 20:55:04 +01:00
Felix Roos 34c1f3c7de fix: examples layout 2023-11-17 20:54:48 +01:00
Kaspars c0f56be2a9 add options param to initHydra 2023-11-17 20:41:37 +01:00
Felix Roos c6f89431d9 fix: merge error 2023-11-17 20:37:21 +01:00
Felix Roos 80601451b6 Merge branch 'main' into patterns-tab 2023-11-17 20:36:15 +01:00
Felix Roos f74d1beb62 Merge branch 'main' of https://github.com/tidalcycles/strudel 2023-11-17 20:29:53 +01:00
Felix Roos b73ea7f086 Merge pull request #801 from ilesinge/add_doc
Add doc for euclidLegatoRot, wordfall and slider
2023-11-17 16:04:10 +01:00
Alexandre Gravel-Raymond a3bf6975c4 Mark optional slider params 2023-11-17 15:33:53 +01:00
Felix Roos 08ebb52e9b Merge pull request #804 from kasparsj/highlight-active-line-opt
add option to disable active line highlighting in Code Settings
2023-11-17 14:42:58 +01:00
Felix Roos 47a6af2b25 Merge pull request #805 from tidalcycles/pq-functions
tidal style d1 ... d9 functions + more
2023-11-17 14:37:51 +01:00
Felix Roos a84cfb5677 bump superdough 2023-11-17 14:07:26 +01:00
Raphael Forment 6e92c4915a Run prettier 2023-11-17 13:37:16 +01:00
Raphael Forment 2a18df61cd Fix documentation 2023-11-17 13:23:54 +01:00
Raphael Forment fb28083ce6 Fixing density and adding documentation 2023-11-17 13:18:49 +01:00
Raphael Forment 476bda812e Initial work on crackle 2023-11-17 12:55:17 +01:00
Felix Roos 265f01eb06 add p1 .. p9 shortcuts as well 2023-11-17 10:50:45 +01:00
Felix Roos cb9ef3ee6a add q1 .. q9 shortcuts 2023-11-17 09:45:44 +01:00
Felix Roos a4487179a5 fix tests 2023-11-16 07:25:20 +01:00
Felix Roos f43f627037 + add hush
+ add the ability to evaluate without clearing
2023-11-16 07:17:59 +01:00
Felix Roos a7b799f154 p and q methods + all function 2023-11-16 06:52:47 +01:00
Felix Roos ee7cd8cd4c remove pseudo note variables 2023-11-16 06:51:51 +01:00
Kaspars 2d1fcf4a8d fix typo 2023-11-15 22:53:56 +01:00
Kaspars ef14074164 add option to disable active line highlighting in Code Settings 2023-11-15 22:38:00 +01:00
Felix Roos 49aa9cf6da Merge pull request #802 from kasparsj/fix-strudelTheme-outline
remove unwanted cm6 outline for strudelTheme
2023-11-15 20:12:23 +01:00
Kaspars 8d5ef45e2b fix codeformat 2023-11-15 19:22:52 +01:00
Kaspars 9ef177e735 Merge branch 'main' into fix-strudelTheme-outline 2023-11-14 16:33:06 +01:00
Kaspars 7f1919ebc6 move fix to Repl.css 2023-11-14 11:16:51 +01:00
Felix Roos 1aaaaba619 Merge pull request #798 from daslyfe/phaser
Create phaser effect
2023-11-13 23:30:14 +01:00
Felix Roos b7dd9b7d35 Merge remote-tracking branch 'origin/main' into phaser 2023-11-13 21:59:10 +01:00
Kaspars ff0af15ac7 remove unwanted cm6 outline for strudelTheme 2023-11-13 00:06:01 +01:00
Alexandre G.-Raymond 8a7ff9e01d Add snapshot for euclidLegatoRot 2023-11-11 17:24:18 +01:00
Alexandre G.-Raymond e52e257d9b Document euclidLegatoRot 2023-11-11 17:03:21 +01:00
Alexandre G.-Raymond 2d6654b234 Document slider 2023-11-11 16:24:09 +01:00
Alexandre G.-Raymond 1b0427e943 Document wordfall 2023-11-11 16:23:58 +01:00
Alexandre G.-Raymond 24e1881876 Ignore jsdoc-synonyms by eslint 2023-11-11 15:53:03 +01:00
Alexandre G.-Raymond bfff38a262 Fix code format of JSDoc synonym plugin 2023-11-11 15:44:15 +01:00
Alexandre G.-Raymond 2aff31fe06 Simplify JSDoc 2023-11-11 14:24:20 +01:00
Alexandre G.-Raymond 6ba2b767b0 Show synonyms in API reference 2023-11-11 14:23:55 +01:00
Alexandre G.-Raymond bbc292561f Use synonyms in Tooltip 2023-11-11 14:23:30 +01:00
Alexandre G.-Raymond e4b00117c3 Parse the synonyms tag in source documentation 2023-11-11 14:22:52 +01:00
Alex McLean d25851ac17 support multiple named serial connections, change default baudrate to 115200 (#551) 2023-11-10 11:17:35 +00:00
Felix Roos d02450c0d9 Merge pull request #662 from gogins/main
Fix for #1. Enables named instruments for csoundm.
2023-11-09 09:27:57 +01:00
Felix Roos 400b2109fb Merge pull request #706 from Bubobubobubobubo/global-vibrato
Adding vibrato to Superdough sampler
2023-11-09 09:26:45 +01:00
Felix Roos 2a09f9ef0b fix: sampler broke without vibrato 2023-11-09 09:21:40 +01:00
Felix Roos 0052d349d9 refactor: move vibrato up + cleanup oscillator 2023-11-09 09:06:50 +01:00
Felix Roos 7c8a8b8b70 simplify 2023-11-09 08:59:23 +01:00
Felix Roos 85835087ba format 2023-11-09 08:48:23 +01:00
Felix Roos 5aac042c80 Merge branch 'main' into global-vibrato 2023-11-09 08:47:37 +01:00
Felix Roos 9dbd073073 Merge pull request #784 from ilesinge/document_pianoroll
Document pianoroll
2023-11-09 08:46:03 +01:00
Felix Roos 035f6c8098 Merge pull request #795 from bwagner/patch-2
Update first-effects.mdx
2023-11-09 08:45:29 +01:00
Felix Roos d2a06654c3 Merge pull request #796 from bwagner/patch-3
Update pattern-effects.mdx
2023-11-09 08:44:43 +01:00
Felix Roos c028686298 Merge pull request #797 from bwagner/patch-4
Update recap.mdx
2023-11-09 08:43:50 +01:00
Felix Roos 858a02634e dedupe / move supertdirt phaser controls 2023-11-09 08:40:21 +01:00
Felix Roos 2682fd38f8 add to doc page 2023-11-09 08:29:21 +01:00
Felix Roos 3ecb701504 add params to superdough readme 2023-11-09 08:19:04 +01:00
Felix Roos ac359a0e9e doc: phaser synonyms 2023-11-09 08:17:16 +01:00
Felix Roos df636cf4f6 phaser shortcuts 2023-11-09 08:16:17 +01:00
Felix Roos 791a363694 snapshots 2023-11-08 23:33:46 +01:00
Jade Rowland 06eb8b5be8 fixed doc 2023-11-07 22:57:00 -05:00
Jade Rowland 4b4290e087 add more parameters 2023-11-07 22:52:39 -05:00
Jade Rowland c89f91215c Merge branch 'tidalcycles:main' into phaser 2023-11-07 22:11:55 -05:00
Jade Rowland 65d07dbff2 create free running lfos for different orbits 2023-11-07 22:09:53 -05:00
Jade Rowland 2e4d28b910 update doc 2023-11-07 21:49:56 -05:00
Jade Rowland 51c63fa996 turn off of depth is 0 2023-11-07 21:44:57 -05:00
Jade Rowland f0a582dc92 cleaning up 2023-11-07 21:10:12 -05:00
Jade Rowland bee36a7a4f cleaning up 2023-11-07 20:25:31 -05:00
Jade Rowland 0edd54dee3 cleaning up 2023-11-07 20:23:45 -05:00
Bernhard Wagner 4a16cd891f FIXES: table 2023-11-07 18:55:35 +01:00
Bernhard Wagner 23dd9d4c01 Update recap.mdx
Adds a few missing translations
2023-11-07 16:16:46 +01:00
Bernhard Wagner df277d6b7b Update pattern-effects.mdx
grammatical amendments
2023-11-07 16:10:57 +01:00
Bernhard Wagner eed2c304e4 Update first-effects.mdx
grammatical amendments
2023-11-07 15:57:31 +01:00
Felix Roos bd5953317e Merge pull request #794 from bwagner/patch-1
Update first-sounds.mdx
2023-11-07 11:53:48 +01:00
Bernhard Wagner b88f58cc21 Update first-sounds.mdx
in eine sogenannte Funktion -> in einer sogenannten Funktion
2023-11-07 11:38:13 +01:00
Jade Rowland 9cbf3079f3 change to bus effect experiment 2023-11-06 19:02:09 -05:00
Felix Roos 682ac25111 Merge pull request #791 from tidalcycles/fix-ref-anchors
don't use anchor links for reference
2023-11-06 23:17:31 +01:00
Felix Roos 07da9a9dd2 don't use anchor links for reference 2023-11-06 23:13:10 +01:00
Felix Roos 395ae4d05a Merge pull request #788 from tidalcycles/github-shortcut
samples loading shortcuts:
2023-11-06 22:40:43 +01:00
Felix Roos 2ef35a8583 samples loading shortcuts:
- use main branch by default in github shortcut
- add bubo shortcut
2023-11-06 22:17:33 +01:00
Felix Roos 5807dbfdac Merge pull request #786 from tidalcycles/fix-scope-flip
Fix scope pos + document
2023-11-05 22:47:48 +01:00
Felix Roos c4f26c3cad snapshot 2023-11-05 22:46:16 +01:00
Felix Roos 26d87b691c document scope functions 2023-11-05 22:43:37 +01:00
Felix Roos 52e2b90eef fix: scope pos 2023-11-05 22:22:35 +01:00
Felix Roos 62eb9ce598 Merge pull request #783 from ilesinge/hover_tooltip
Implement optional hover tooltip with function documentation
2023-11-05 22:10:25 +01:00
Jade Rowland a9efda3bc3 tweaking to make it sound good 2023-11-05 15:40:02 -05:00
Alexandre G.-Raymond 8fe4dca4c2 Update pianoroll documentation 2023-11-05 18:07:42 +01:00
Felix Roos a05d3a47c6 Merge pull request #785 from ilesinge/reference_parameters
Add function params in reference tab
2023-11-05 16:46:06 +01:00
Alexandre G.-Raymond e9265eff35 Add function params in reference tab 2023-11-05 16:40:46 +01:00
Alexandre G.-Raymond 8fa7bf795a Fix pianoroll documentation 2023-11-05 16:25:10 +01:00
Alexandre G.-Raymond f045fb44de Add color function documentation 2023-11-05 16:23:36 +01:00
Alexandre G.-Raymond 0d06840a1b Add label function documentation 2023-11-05 16:23:21 +01:00
Alexandre G.-Raymond 624e540cb4 Add pianoroll function documentation 2023-11-05 16:23:00 +01:00
Alexandre G.-Raymond 353333653f Implement optional hover tooltip with function documentation 2023-11-05 13:00:54 +01:00
Felix Roos 83fec57400 Merge pull request #781 from tidalcycles/fix-styles
fix: style issues
2023-11-05 12:42:00 +01:00
Felix Roos 7ad0ec1600 fix: namespace mini-repl styles 2023-11-05 12:35:49 +01:00
Felix Roos ec611aac45 Merge pull request #780 from tidalcycles/xfade
add xfade
2023-11-05 12:21:28 +01:00
Felix Roos d7752961b8 snapshot 2023-11-05 12:12:25 +01:00
Felix Roos 8c5837e78a add xfade + docs 2023-11-05 12:11:17 +01:00
Jade Rowland b3f8df1783 initial commit 2023-11-04 20:20:25 -04:00
Felix Roos 0ecc6c196f Merge pull request #775 from tidalcycles/astro-3
Update to Astro 3
2023-11-02 09:30:26 +01:00
Felix Roos 77686547eb no double ! 2023-11-02 09:14:45 +01:00
Felix Roos 419cf6c12b update to astro 3 2023-11-02 09:13:29 +01:00
Felix Roos 326571b797 remove obsolete config 2023-11-02 09:01:53 +01:00
Felix Roos c25c2693f5 Merge branch 'main' into astro-3 2023-11-02 09:00:42 +01:00
Felix Roos 8d8a1f552d Merge pull request #773 from Dsm0/vscode-bindings
add vscode bindings
2023-11-02 08:57:14 +01:00
Felix Roos 638f5c7323 rename bindings key 2023-11-02 08:48:11 +01:00
Felix Roos 9ec5d33840 Merge pull request #774 from tidalcycles/tauri-clipboard
fix: share copy to clipboard + alert
2023-11-02 08:31:30 +01:00
Felix Roos 8d3ba2a8cd fix: share copy to clipboard + alert 2023-11-02 08:29:27 +01:00
Dsm0 0c2838cc90 fixed style issues 2023-11-01 17:55:40 -04:00
Felix Roos 1e5edfca26 Update CONTRIBUTING.md
fix prettier instructions
2023-11-01 22:40:23 +01:00
Dsm0 b141e1ee68 (hopefully) fixed broken lock file 2023-11-01 17:30:59 -04:00
Will 2fd4836228 Merge branch 'main' into vscode-bindings 2023-11-01 17:24:05 -04:00
Alex McLean 9ceab0f294 Fix chunk, add fastChunk and repeatCycles (#712)
* Match behaviour of chunk with tidal, add fastChunk for old strudel behaviour. Also adds repeatCycles. fixes #689

* documentation
2023-11-01 21:22:33 +00:00
Dsm0 d4c12dcef4 integrated vscode bindings 2023-11-01 17:14:22 -04:00
Felix Roos 16bb920011 Merge pull request #767 from ilesinge/document_adsr
Document adsr function
2023-11-01 22:12:48 +01:00
Felix Roos 158fa85c46 Merge pull request #771 from daslyfe/add_pick_and_squeeze_functions
Add pick and squeeze functions
2023-11-01 22:11:48 +01:00
Felix Roos 34bd0e11e4 add doc chapters 2023-11-01 22:09:40 +01:00
Felix Roos 9e649a18c4 snapshots 2023-11-01 22:07:19 +01:00
Felix Roos 2bb45afe5f Merge pull request #772 from tidalcycles/update-vite-pwa
Update vite pwa
2023-11-01 22:04:00 +01:00
Felix Roos 41a9098c80 use new flag 2023-11-01 21:59:53 +01:00
Felix Roos 36ef03a406 use 0.1.4 @vite-pwa/astro 2023-11-01 21:57:14 +01:00
Jade Rowland fd6c713119 move to signal file with other choose functions 2023-10-31 12:18:19 -04:00
Jade Rowland 4a57d3ada1 functions 2023-10-31 11:58:11 -04:00
Felix Roos 53160c638a half working user pattern management 2023-10-29 14:00:13 +01:00
Felix Roos a2077f7be1 fix logger import 2023-10-29 13:14:29 +01:00
Felix Roos b245d44220 hide patterns tab for now
+ add examples to welcome tab
2023-10-29 13:14:25 +01:00
Felix Roos b15f7bcf45 Merge branch 'main' into patterns-tab 2023-10-29 13:05:25 +01:00
Felix Roos f16cb8f7d2 Merge pull request #768 from tidalcycles/strudel-cc
replace strudel.tidalcycles.org with strudel.cc
2023-10-28 23:55:07 +02:00
Felix Roos af915be142 replace strudel.tidalcycles.org with strudel.cc 2023-10-28 23:49:30 +02:00
Alexandre G.-Raymond 2633f4fcef Document adsr function 2023-10-28 19:50:41 +02:00
Felix Roos 6c2330984e Merge pull request #766 from ilesinge/document_striate
Document striate function
2023-10-28 12:52:36 +02:00
Alexandre G.-Raymond 1e1d5ef442 Document striate function 2023-10-28 11:47:37 +02:00
Felix Roos 248757ac3f Merge pull request #760 from tidalcycles/zen-fix
fix zen mode logo overlap
2023-10-27 23:06:20 +02:00
Felix Roos cdbfb2c08c Merge pull request #764 from tidalcycles/fix-scale-offset2
fix: scale offset
2023-10-27 23:01:18 +02:00
Felix Roos d84c917f19 fix: scale offset 2023-10-27 22:50:21 +02:00
Felix Roos 1c7c82358d Merge pull request #762 from tidalcycles/fix-addivite-synthesis-phases
Fix addivite synthesis phases
2023-10-27 21:59:35 +02:00
Felix Roos c085694a8b fix: additive synthesis 2023-10-27 21:55:49 +02:00
Felix Roos a57c2b9fe5 fix: flip scope in y direction 2023-10-27 21:55:25 +02:00
Felix Roos 9fc87fe20f add px in zen mode to fix logo overlap 2023-10-27 21:29:31 +02:00
Felix Roos 4761e25fe1 Merge pull request #759 from tidalcycles/hydra-integration
Hydra integration
2023-10-26 16:28:16 +02:00
Felix Roos 3ce50d80de ignore hydra.mjs in linter 2023-10-26 16:20:19 +02:00
Felix Roos 8754b023d5 document H function 2023-10-26 16:11:22 +02:00
Felix Roos 22c9829fea add H function to plug patterns into Hydra 2023-10-26 16:05:10 +02:00
Felix Roos 0f7b3e9f84 add docs + fix hydra for mini repl 2023-10-26 16:01:51 +02:00
Felix Roos 1a456828df Merge branch 'main' into hydra-integration 2023-10-26 14:14:49 +02:00
Felix Roos 5958c69d64 Merge pull request #758 from tidalcycles/play-function
add play function
2023-10-26 14:14:26 +02:00
Felix Roos b14aa901ba also return pat 2023-10-26 13:16:15 +02:00
Felix Roos 535dfb5099 Merge pull request #740 from ilesinge/shabda_shortcut
Add shabda shortcut
2023-10-26 13:11:00 +02:00
Felix Roos 19f1aad88c Merge pull request #751 from ilesinge/alphabet_samples
mini notation: international alphabets support
2023-10-26 13:07:23 +02:00
Felix Roos 9009eccc8e add play function 2023-10-26 13:06:58 +02:00
Felix Roos 7f3cdedef9 basic hydra integration 2023-10-26 13:05:54 +02:00
Felix Roos 05095805f1 Merge pull request #753 from tidalcycles/fix-trailing-slash-bug
hopefully fix trainling slashes bug
2023-10-22 23:00:52 +02:00
Felix Roos 5430147572 use new vite-pwa-astro version from file 2023-10-22 22:53:50 +02:00
Alexandre G.-Raymond 9b9f031fe1 Revert error message length limitation 2023-10-21 23:41:56 +02:00
Felix Roos 2ad63247c2 Merge pull request #748 from ilesinge/fix_krill_readme
Fix krill build command in README
2023-10-21 23:38:50 +02:00
Alexandre G.-Raymond 87f37e3d87 Add a human-readable error message for invalid char in step 2023-10-21 23:20:04 +02:00
Alexandre G.-Raymond cb8edd9b8f Support international alphabets in mininotation 2023-10-21 22:51:20 +02:00
Alexandre G.-Raymond 072ae7280e Fix krill build command in README 2023-10-21 22:26:12 +02:00
Felix Roos e99c299c6f Merge pull request #745 from tidalcycles/fix-slash-confusion
completely revert config mess
2023-10-21 00:20:49 +02:00
Felix Roos 46cdbd514f completely revert config mess 2023-10-21 00:18:41 +02:00
Felix Roos a3e0189f0b Merge pull request #744 from tidalcycles/fix-slash-confusion
fix: try different trailing slash behavior
2023-10-20 22:41:39 +02:00
Felix Roos 8f4344f413 fix: try different trailing slash behavior 2023-10-20 22:38:46 +02:00
Felix Roos 7e28de1d24 Merge pull request #743 from tidalcycles/fix-slash-confusion
fix: trailing slash confusion
2023-10-20 22:34:03 +02:00
Felix Roos 624e685212 fix: trailing slash confusion 2023-10-20 22:32:12 +02:00
Felix Roos a23765a1cb fix: trailing slash confusion 2023-10-20 22:30:54 +02:00
Felix Roos 048502ecd1 Merge branch 'main' into astro-3 2023-10-20 22:08:21 +02:00
Alexandre G.-Raymond 1b072448c4 Add test snapshots for shabda shortcut 2023-10-20 21:59:54 +02:00
Felix Roos 86997488fb Merge pull request #741 from daslyfe/bugfix_choose_with
[Bug Fix] chooseWith: prevent pattern from stopping audio when selection is >= 1 or < 0
2023-10-20 12:07:03 +02:00
Felix Roos db6efec417 Merge pull request #742 from tidalcycles/recipes
Recipes
2023-10-20 11:34:26 +02:00
Felix Roos 2cc60c6ee2 format 2023-10-20 11:28:35 +02:00
Felix Roos 80c98b6a35 fix: loud example 2023-10-20 11:23:38 +02:00
Felix Roos f51c01dc88 move stuff around 2023-10-20 11:18:54 +02:00
Felix Roos 7b8a35a311 add understand cycles 2023-10-20 11:18:47 +02:00
Felix Roos d9db5263e8 add recipes 2023-10-20 11:18:40 +02:00
Jade Rowland 912a661c04 fixed example test failure 2023-10-17 23:03:14 -04:00
Jade Rowland d3edc62fc7 document function 2023-10-17 21:31:11 -04:00
Jade Rowland 6b5de5fec8 fixed 2023-10-17 01:33:51 -04:00
Alexandre G.-Raymond fed4c51aa4 Prettier doc file 2023-10-14 16:30:29 +02:00
Alexandre G.-Raymond 1721209f85 Update samples/shabda documentation 2023-10-14 16:20:53 +02:00
Alexandre G.-Raymond 289820188e Add shabda shortcut (#406) 2023-10-14 16:20:17 +02:00
Felix Roos 4fa0a9064b Merge branch 'main' of https://github.com/tidalcycles/strudel 2023-10-14 10:08:53 +02:00
Felix Roos f751d97c29 Merge pull request #737 from tidalcycles/readme-fix
vite-vanilla-repl readme fix
2023-10-13 12:57:24 +02:00
Felix Roos d7028252c2 vite-vanilla-repl readme fix 2023-10-13 12:55:31 +02:00
Felix Roos a2ee70a964 Merge pull request #717 from vasilymilovidov/reverb
Add support for using samples as impulse response buffers for the reverb
2023-10-10 00:17:59 +02:00
Felix Roos 57b166d13a fix: pitched sample as ir 2023-10-09 22:49:38 +02:00
Felix Roos 5c76f2b9a2 bump superdough to 0.9.10 2023-10-09 22:30:34 +02:00
Felix Roos e59f06ff92 Merge branch 'main' into reverb 2023-10-09 22:15:25 +02:00
Felix Roos d3b96dd048 Merge pull request #732 from tidalcycles/reverb-fix-sr
fix: reverb sampleRate
2023-10-09 21:43:42 +02:00
Felix Roos 6544e8135c fix: reverb sampleRate 2023-10-09 21:40:38 +02:00
Felix Roos 54ed415d75 Merge pull request #731 from tidalcycles/reverb-fix
fix: reverb roomsize not required
2023-10-09 21:34:33 +02:00
Felix Roos f34937d4ae fix: roomsize not required 2023-10-09 21:31:49 +02:00
Felix Roos a4fc40875b Merge pull request #729 from tidalcycles/compressor
Compressor
2023-10-08 13:54:51 +02:00
Felix Roos 56c1441494 snapshot 2023-10-08 13:38:18 +02:00
Felix Roos 08ce8213fc format 2023-10-08 13:37:56 +02:00
Felix Roos 0a3692e459 compressor docs 2023-10-08 13:37:39 +02:00
Felix Roos 341546508f Merge pull request #728 from tidalcycles/fix-sample-url-special-chars
fix: hashes in urls
2023-10-08 13:25:57 +02:00
Felix Roos 444d583a49 fix: hashes in urls 2023-10-08 13:23:13 +02:00
Felix Roos 130ad4451b add compressor + postgain 2023-10-08 00:30:12 +02:00
vmilovidov d24cf8e7ec Merge branch 'main' into reverb 2023-10-07 19:50:05 +04:00
Vasilii Milovidov 2d750a14b9 fix: conflicts 2023-10-07 19:48:07 +04:00
Vasilii Milovidov b25b9d815b fix: conflicts 2023-10-07 19:30:07 +04:00
Felix Roos daf965f119 Merge pull request #727 from tidalcycles/fix-n-scale
consume n with scale
2023-10-07 15:48:06 +02:00
Felix Roos 296cd83a55 snapshot 2023-10-07 15:45:44 +02:00
Felix Roos b297888eb4 consume n with scale 2023-10-07 15:40:08 +02:00
Felix Roos e2569ed6dd Merge pull request #726 from tidalcycles/reverb-perf-pitfall
fix: reverb regenerate loophole
2023-10-07 00:27:21 +02:00
Felix Roos 4718bfac25 fix: reverb regenerate loophole 2023-10-07 00:22:55 +02:00
Vasilii Milovidov 2f0798de32 fix: formatting 2023-10-05 13:17:17 +04:00
vmilovidov 11b0a00593 Merge branch 'main' into reverb 2023-10-05 12:16:55 +04:00
Vasilii Milovidov 1d4eb59e94 fix: reverbGen.mjs 2023-10-05 04:10:35 +04:00
Vasilii Milovidov d6c8838fe2 Integrate with the new impulse generation functionality 2023-10-05 03:49:50 +04:00
Felix Roos 0b888ac54d Merge pull request #718 from Bubobubobubobubo/reverb
Better convolution reverb by generating impulse responses
2023-10-05 00:04:17 +02:00
Felix Roos 75099abbc1 remove unused reverb method 2023-10-05 00:03:02 +02:00
Felix Roos 3c4f835d8b consistent naming + simplify 2023-10-05 00:00:47 +02:00
Felix Roos ce842f7561 simplify createReverb 2023-10-04 23:56:00 +02:00
Felix Roos 508af7eb72 update internal reverb param names 2023-10-04 23:48:53 +02:00
Felix Roos a4386a617a Merge branch 'main' into reverb 2023-10-04 22:10:58 +02:00
Felix Roos 767ba713a6 Merge pull request #723 from tidalcycles/slider-afterthoughts
Slider afterthoughts
2023-10-04 10:31:52 +02:00
Felix Roos 020e85906d fix: slider crash on some platforms 2023-10-04 09:42:10 +02:00
Felix Roos d1ffdd57a5 Merge pull request #713 from Bubobubobubobubo/noise
Add 'white', 'pink' and 'brown' oscillators + refactor synth
2023-10-03 16:39:06 +02:00
Felix Roos 9c9323e040 snapshot 2023-10-03 12:42:56 +02:00
Felix Roos 376cf09565 rename zzfx noise to znoise 2023-10-03 12:41:57 +02:00
Felix Roos 047129223e cache noise 2023-10-03 12:25:47 +02:00
Felix Roos 4b64168faa fix: imports 2023-10-03 12:20:28 +02:00
Felix Roos 2bc6d08410 proper dry wet + pull out noise to extra file 2023-10-03 12:19:30 +02:00
Felix Roos 484bb6b11f refactor synth
- separate waveform / noise oscillators
- pull noise out of getOscillator
- put fm into getOscillator
- simplify overall value plumbing
2023-10-03 10:03:09 +02:00
Felix Roos a0884e2a03 add noise heading + hihat example 2023-10-03 09:09:49 +02:00
Felix Roos 1e352fdf80 codeformat 2023-10-03 08:51:35 +02:00
Felix Roos 83dfbb84c2 Merge branch 'main' into noise 2023-10-03 08:50:57 +02:00
Felix Roos 9043064543 snapshot 2023-10-03 08:36:52 +02:00
Felix Roos a3649148c1 more logical naming + update docs 2023-10-03 08:35:15 +02:00
Felix Roos 28966739f6 feat: add step as slider param 2023-10-02 20:44:51 +02:00
Vasilii Milovidov 13cb32903a Prepare to merge with PR #718 2023-10-02 12:13:44 +04:00
Felix Roos dcd75e0384 Merge branch 'main' into reverb 2023-10-01 23:48:48 +02:00
Felix Roos dfdd9e02ca eslint ignore reverbGen + snapshot 2023-10-01 23:22:32 +02:00
Felix Roos 275796c241 fix: reverbs[orbit] is undefined 2023-10-01 23:21:02 +02:00
Felix Roos 6ca99e33ab codeformat 2023-10-01 23:20:05 +02:00
Raphael Forment 1909caf769 Connecting new reverb documentation 2023-10-01 14:50:29 +02:00
Raphael Forment 2d07eeb518 Connecting all parameters to convolution generator 2023-10-01 14:44:34 +02:00
Felix Roos 1c0da7cd49 Merge branch 'main' of https://github.com/tidalcycles/strudel 2023-10-01 14:20:54 +02:00
Alex McLean fd316c81c0 support mininotation '..' range operator, fixes #715 (#716)
* support mininotation .. range operator, fixes #715

* remove logs
2023-10-01 13:20:49 +01:00
Felix Roos edbd437d7b hotfix: add missing dependency 2023-10-01 14:20:30 +02:00
Felix Roos 9be1f9c18b Merge pull request #714 from tidalcycles/ui-widgets
widgets
2023-10-01 14:15:09 +02:00
Felix Roos 96f06d8026 fix: import 2023-10-01 14:09:07 +02:00
Felix Roos 935d8e8aea fix: comment 2023-10-01 14:08:41 +02:00
Felix Roos 21b99b3810 remove comment 2023-10-01 14:07:48 +02:00
Felix Roos c051a1249d remove checkbox 2023-10-01 14:06:32 +02:00
Felix Roos 564697e175 add extra sliderWithID function
+ add warning to slider function
2023-10-01 14:05:16 +02:00
Felix Roos d4bf358eae use raw css instead of tailwind 2023-10-01 13:56:57 +02:00
Felix Roos f84d5ba3a0 add back some margin 2023-10-01 13:44:41 +02:00
Felix Roos b550ff038c simplify: use native events 2023-10-01 13:42:29 +02:00
Vasilii Milovidov ac9c629c0b cleanup 2023-10-01 15:36:52 +04:00
Vasilii Milovidov 755e24315e use sample as an impulse response for the reverb 2023-10-01 15:31:10 +04:00
Felix Roos c6ecd31ea1 improve mouse tracking 2023-10-01 13:27:44 +02:00
Raphael Forment e600b91a85 bugfixes for parameter passing 2023-10-01 12:02:17 +02:00
Raphael Forment abff279707 Document reverb controls 2023-10-01 11:52:24 +02:00
Vasilii Milovidov fd18508266 wip: use sample as an impulse response for the reverb 2023-10-01 05:15:47 +04:00
Felix Roos d7bc309eeb fix: import 2023-10-01 00:36:34 +02:00
Felix Roos 33c40e5ef8 fix some odd number / string problems 2023-10-01 00:33:10 +02:00
Felix Roos 062d926900 make sliders work! 2023-10-01 00:24:31 +02:00
Raphael Forment 0ad0046a76 Replacing old reverb by better convolution 2023-09-30 22:04:22 +02:00
Felix Roos b36cee93f7 add slider function to scope 2023-09-30 21:22:49 +02:00
Felix Roos 2731e70fb7 use loc as slider id 2023-09-30 21:03:28 +02:00
Felix Roos 276cf858fc match slider as function 2023-09-30 20:39:03 +02:00
Raphael Forment b2acff40c4 Add documentation about noise sources 2023-09-30 15:17:22 +02:00
Raphael Forment e3333e716f Cap noise amount to 1 2023-09-30 15:08:09 +02:00
Raphael Forment bb7b8c2fab Fix noise parameter and FM parameters compatibility 2023-09-30 14:59:43 +02:00
Raphael Forment 389c7be264 Add noise parameter for base oscillators 2023-09-30 14:39:44 +02:00
Raphael Forment c2481e460b Add pink, white and brown oscillators 2023-09-30 14:07:33 +02:00
Felix Roos c93e4a951a match number.slider 2023-09-29 12:58:16 +02:00
Felix Roos aa094bf930 checkbox + number slider 2023-09-29 10:40:00 +02:00
Felix Roos 8a741952df Merge pull request #699 from tidalcycles/midi-in
Midi in
2023-09-28 11:03:09 +02:00
Felix Roos 0dcc55ee16 prevent error 2023-09-28 10:48:31 +02:00
Felix Roos 6c3a3b9e29 dedupe 2023-09-28 10:40:44 +02:00
Felix Roos e4eff8c837 Merge remote-tracking branch 'origin/main' into midi-in 2023-09-28 10:40:24 +02:00
Felix Roos 527b895e3c Merge pull request #710 from tidalcycles/midi-clock
add midi clock support
2023-09-27 22:53:49 +02:00
Felix Roos 4eb0a7b7c0 send start with accurate timing 2023-09-27 22:42:35 +02:00
Felix Roos f11462bf41 sync start / stop automatically too 2023-09-27 22:28:52 +02:00
Felix Roos dea1c31701 use midicmd instead of clock 2023-09-27 22:10:21 +02:00
Felix Roos 68ab43b3ab support midi clock via "clock" control
(not on desktop yet)
2023-09-27 21:26:24 +02:00
Felix Roos cf72e3bba5 fix: add conditional imports to eval scope
+ fire postMessage on start
2023-09-27 21:25:30 +02:00
Felix Roos 62743edf45 bump superdough to 0.9.9 2023-09-25 23:57:19 +02:00
Felix Roos eec3752b5a cleanup 2023-09-25 23:57:09 +02:00
Felix Roos 006fd6c733 Merge pull request #707 from tidalcycles/superdough-worklet
add dough function for raw dsp
2023-09-25 23:06:30 +02:00
Felix Roos 7078e20200 less garbage 2023-09-25 22:56:44 +02:00
Felix Roos 52c01abbe9 encapsulate .dough 2023-09-25 22:39:03 +02:00
Felix Roos 6e26f39751 add dough function for raw dsp 2023-09-25 22:34:31 +02:00
Raphael Forment 08aab9d4d8 Adding vibrato to Superdough sampler
Modulating the `playbackRate` to simulate a vibrato!
2023-09-20 19:44:32 +02:00
Felix Roos dc254bd562 upstream changes 2023-09-17 17:28:25 +02:00
Felix Roos 6c3173f45b Merge branch 'main' into patterns-tab 2023-09-17 17:28:18 +02:00
Felix Roos 30cba7b935 Merge branch 'main' into midi-in 2023-09-17 17:26:42 +02:00
Felix Roos 9e27c0fe2c Merge pull request #705 from vasilymilovidov/main
Update tauri.yml workflow file
2023-09-17 15:53:27 +02:00
vmilovidov 05c09eff19 Update tauri.yml workflow file 2023-09-17 13:26:58 +00:00
vmilovidov 258eb88684 Update tauri.yml workflow 2023-09-17 13:14:13 +00:00
Felix Roos 9c73ef770f snapshot 2023-09-17 13:37:16 +02:00
Felix Roos de9a52366f Publish
- @strudel/codemirror@0.9.0
 - @strudel.cycles/core@0.9.0
 - @strudel.cycles/csound@0.9.0
 - @strudel.cycles/midi@0.9.0
 - @strudel.cycles/mini@0.9.0
 - @strudel.cycles/osc@0.9.0
 - @strudel.cycles/react@0.9.0
 - @strudel.cycles/serial@0.9.0
 - @strudel.cycles/soundfonts@0.9.0
 - superdough@0.9.8
 - @strudel.cycles/tonal@0.9.0
 - @strudel.cycles/transpiler@0.9.0
 - @strudel/web@0.9.0
 - @strudel.cycles/webaudio@0.9.0
 - @strudel.cycles/xen@0.9.0
2023-09-17 12:35:03 +02:00
Felix Roos 57265b9e33 add filter envelopes here and there
+ comment out outroMusic (lame)
2023-09-17 12:34:01 +02:00
Felix Roos b7ef2d97e2 make desktopbridge private for now 2023-09-17 11:50:18 +02:00
Felix Roos 4fb364195c snapshot 2023-09-17 11:18:20 +02:00
Felix Roos 578bede46b fix: tune n -> note 2023-09-17 11:17:37 +02:00
Felix Roos 38a51324b2 Merge pull request #693 from Bubobubobubobubo/vibrato
Adding vibrato to base oscillators
2023-09-17 11:05:05 +02:00
Felix Roos 0e7c9a4001 add vib examples for : notation 2023-09-17 11:01:12 +02:00
Felix Roos 32fee6313b move stuff back 2023-09-17 10:44:15 +02:00
Felix Roos c6a74c040e snapshot 2023-09-17 10:42:51 +02:00
Felix Roos a97384cec1 format 2023-09-17 10:42:21 +02:00
Felix Roos f052adb93a simplify examples 2023-09-17 10:41:22 +02:00
Felix Roos c2560e0cf8 set vib default to .5 2023-09-17 10:41:13 +02:00
Felix Roos cd6d1fb2d2 fix: headings 2023-09-17 10:41:02 +02:00
Felix Roos c354ee32e3 simplify vibrato logic 2023-09-17 10:15:33 +02:00
Felix Roos 5c5df74860 fix: control naming 2023-09-17 10:15:02 +02:00
Felix Roos 887fb6a84c Merge remote-tracking branch 'upstream/main' into vibrato 2023-09-17 09:46:12 +02:00
Felix Roos 80ea9e8de4 Merge pull request #698 from Bubobubobubobubo/sampler
Adding loop points and thus wavetable synthesis
2023-09-17 08:27:36 +02:00
Felix Roos 3879b01ddd snapshots 2023-09-17 08:04:02 +02:00
Felix Roos 4490681fa3 add note about wt_ 2023-09-17 08:03:09 +02:00
Felix Roos b98e24fabf docs: fit + splice 2023-09-17 08:02:02 +02:00
Felix Roos 2deafe214a update loop examples 2023-09-17 07:59:55 +02:00
Felix Roos d0258756e5 Merge remote-tracking branch 'upstream/main' into sampler 2023-09-17 07:31:21 +02:00
Felix Roos 4fecad16e4 superdough 0.9.7 2023-09-16 02:21:10 +02:00
Felix Roos a82eeb44c0 update snapshot 2023-09-16 02:08:25 +02:00
Felix Roos 7ec5ab0c20 fix: tune 2023-09-16 02:05:49 +02:00
Felix Roos 872e10fc95 Merge pull request #692 from Bubobubobubobubo/filters
Adding filter envelopes and filter order selection
2023-09-16 02:03:49 +02:00
Felix Roos e3b7d0f84d drop some acid in there 2023-09-16 02:01:46 +02:00
Felix Roos e0c424eb92 update snapshots 2023-09-16 01:50:45 +02:00
Felix Roos 536427310d add some filter envelopes here and there 2023-09-16 01:50:23 +02:00
Felix Roos a7eb0bb04a snapshot 2023-09-16 01:34:00 +02:00
Felix Roos af6a5b85f5 keep only lp envelopes as examples 2023-09-16 01:33:34 +02:00
Felix Roos b96e8093a0 doc: fenv 2023-09-16 01:33:17 +02:00
Felix Roos 989dc0aabe fix: filters without envelopes 2023-09-16 01:33:09 +02:00
Felix Roos 735f892a08 fix: snapshots 2023-09-16 01:14:53 +02:00
Felix Roos e959c275fd add fanchor 2023-09-16 01:14:14 +02:00
Felix Roos 7dbcc90450 fix: docs after fenv change 2023-09-16 01:07:10 +02:00
Felix Roos 7f86eac8f1 simplify 2023-09-16 00:51:36 +02:00
Felix Roos 40de717cc9 fix: don't add frequency 2023-09-16 00:46:50 +02:00
Felix Roos df211c994d anchored fenv, more logical with negative values
- defaulting to .5 for now...
2023-09-16 00:44:03 +02:00
Felix Roos ee314e9b03 snapshot 2023-09-15 23:38:37 +02:00
Felix Roos 9049a8b964 simplify fenv 2023-09-15 23:37:36 +02:00
Felix Roos 88c029202c simplify fenv examples 2023-09-15 23:37:27 +02:00
Felix Roos 9142fb753a cleaner default filter envelope
- fixes some unexpected envelope glitches
2023-09-15 23:36:55 +02:00
Felix Roos 4688c0bf10 format 2023-09-15 23:13:49 +02:00
Felix Roos 7e55258bbf update snapshots 2023-09-15 23:13:30 +02:00
Felix Roos 828e475921 support negative fenv 2023-09-15 23:12:51 +02:00
Felix Roos 9d5f919023 add all filter envelope examples to doc 2023-09-15 23:12:39 +02:00
Felix Roos b8932390f7 update snapshot 2023-09-15 21:44:24 +02:00
Felix Roos 445881992e slow down examples + simplify 2023-09-15 21:43:03 +02:00
Felix Roos 30d96dcb65 remove log 2023-09-14 16:28:47 +02:00
Felix Roos 3a69fd50bb fix: linting errors 2023-09-14 09:39:31 +02:00
Felix Roos 0f72729f0d midi cc input poc 2023-09-14 09:36:06 +02:00
Felix Roos 0a8874180c generalize getDevice + begin midiIn implementation 2023-09-13 13:48:33 +02:00
Felix Roos a6501474bb Merge branch 'fix-eval-scope' into midi-in 2023-09-13 13:00:52 +02:00
Felix Roos 4cb93ddcde fix: eval scope 2023-09-13 12:59:51 +02:00
Raphael Forment 7f1918ae8c Merge branch 'sampler' of github.com:Bubobubobubobubo/strudel into sampler 2023-09-11 00:56:50 +02:00
Raphael Forment 78adaaedef fixing minor bugs and adding description 2023-09-11 00:56:43 +02:00
Felix Roos 4a65113bff do not panic when no description 2023-09-11 00:52:49 +02:00
Raphael Forment 843d9d52c3 add documentation but it crashes 2023-09-11 00:46:31 +02:00
Raphael Forment 7a74189771 document wavetable synthesis 2023-09-11 00:41:55 +02:00
Raphael Forment 6de04f7781 turn loop on for samples starting with wt_ 2023-09-10 23:29:09 +02:00
Felix Roos ba27f2ba28 fix: looped samples pitch 2023-09-10 21:05:57 +02:00
Felix Roos f09b89ed63 fix: duration for loops 2023-09-10 20:55:59 +02:00
Raphael Forment bac8594c5f beginning documentation work (breaks) 2023-09-10 20:36:09 +02:00
Raphael Forment 3582ae9163 adding loopBegin and loopEnd 2023-09-10 18:34:21 +02:00
Raphael Forment 7a95bafa54 Updating documentation 2023-09-10 09:59:18 +02:00
Raphael Forment 1383af6208 documenting filters more + tests 2023-09-10 09:42:29 +02:00
Raphael Forment bea9a3c2dc replacing fenv by lpenv, hpenv, bpenv 2023-09-10 09:28:07 +02:00
Raphael Forment 78ccec5d7b adding test run 2023-09-10 09:14:41 +02:00
Felix Roos 534e3f7f81 add snapshots 2023-09-10 00:48:04 +02:00
Felix Roos 6a427d6f89 Merge pull request #697 from daslyfe/add_logging_from_tauri
Add logging from tauri
2023-09-09 11:19:57 +02:00
Jade Rowland b4297580a7 changed warning to error 2023-09-09 01:34:35 -04:00
Jade Rowland 26b0e2ae43 its working 2023-09-09 01:27:49 -04:00
Jade Rowland e75ac7b3c0 working 2023-09-09 01:20:08 -04:00
Raphael Forment 74442b0d76 documenting vibrato and removing broken slide/pitchJump mechanism 2023-09-08 13:43:43 +02:00
Raphael Forment 3431803980 documenting vib and vibmod 2023-09-08 13:08:00 +02:00
Raphael Forment c5fb247de6 Documentation for filter envelope 2023-09-08 12:38:39 +02:00
Felix Roos 18640d59da acid party 2023-09-08 03:00:49 +02:00
Felix Roos 48753b2539 fix last crack? 2023-09-08 02:53:08 +02:00
Felix Roos 606dcc8cc3 use fenv to scale above base cutoff? 2023-09-08 02:27:28 +02:00
Felix Roos 9e4c548c69 fix: filter clicks 2023-09-08 02:06:03 +02:00
Felix Roos 75a974643b add missing controls 2023-09-08 01:41:11 +02:00
Felix Roos e2711ba911 fix: filter envelopes + simplify 2023-09-08 01:40:10 +02:00
Raphael Forment 7605198774 parameter renaming 2023-09-05 11:27:42 +02:00
Raphael Forment fc9525e7d8 saner vibrato default 2023-09-05 11:24:21 +02:00
Raphael Forment e597b6473d remove test console log statement 2023-09-05 10:44:41 +02:00
Raphael Forment 16c8dcf788 stable version 2023-09-05 09:56:49 +02:00
Raphael Forment 37842d4fbd Revert "replace odd envelope"
This reverts commit 4319df0cb6.
2023-09-05 09:01:04 +02:00
Felix Roos 133a1d2e8f Merge pull request #694 from daslyfe/tauri_osc_support
Direct OSC Support in Tauri
2023-09-05 00:33:54 +02:00
Jade Rowland 15c15a9c36 remove unused import 2023-09-04 17:09:54 -04:00
Jade Rowland d233d50de3 dont panic if message fails to send 2023-09-04 17:07:50 -04:00
Jade Rowland a9d8e7ca82 cleaning up 2023-09-04 15:33:44 -04:00
Jade Rowland 4001cc9531 cleaning up 2023-09-04 15:33:28 -04:00
Raphael Forment 4319df0cb6 replace odd envelope 2023-09-04 21:24:42 +02:00
Raphael Forment 5be7898522 New technique using ADSR envelope 2023-09-04 21:17:16 +02:00
Jade Rowland 009760c31a correct bit calcuations 2023-09-04 15:00:43 -04:00
Jade Rowland 77349526e4 timetag mishaps 2023-09-04 14:21:30 -04:00
Felix Roos 3ba195c2d9 add new controls
+ rename slide_speed > slidespeed
2023-09-04 18:38:05 +02:00
Raphael Forment 60f5032b12 Implement pitch slide 2023-09-04 06:25:49 +02:00
Raphael Forment fdc201a799 Adding vibrato to synth oscillator 2023-09-04 06:03:05 +02:00
Raphael Forment ec8616a515 Envelope filter and filter order 2023-09-04 04:56:45 +02:00
Jade Rowland 349d11e76d different time strats 2023-09-03 17:36:21 -04:00
Jade Rowland 62e3774ff7 its working 2023-09-03 16:28:52 -04:00
Felix Roos abaeb52b7c Merge pull request #690 from vasilymilovidov/main
fix MIDI CC messages
2023-09-03 22:19:22 +02:00
Jade Rowland 60e600c381 setting up 2023-09-03 13:23:13 -04:00
Vasilii Milovidov 97f84ee87f fix MIDI CC messages 2023-09-03 15:54:34 +04:00
Felix Roos c5738aeed9 Merge pull request #688 from daslyfe/fix_tauri_cpu_midi
add sleep timer + improve message iterating
2023-09-03 10:22:15 +02:00
Jade Rowland 192adccb10 add sleep timer + improve message iterating 2023-09-02 20:59:00 -04:00
Felix Roos defcacb59b bump superdough to 0.9.6 2023-08-31 13:09:16 +02:00
Felix Roos e4ea786956 Merge pull request #684 from Bubobubobubobubo/zzfx
ZZFX Synth support
2023-08-31 13:00:30 +02:00
Felix Roos c9d98bf4d7 fix: tests 2023-08-31 12:58:32 +02:00
Felix Roos 8dd08c360f improve synth docs 2023-08-31 12:56:18 +02:00
Felix Roos d6c4bb0e4e Merge remote-tracking branch 'upstream/main' into zzfx 2023-08-31 12:38:19 +02:00
Felix Roos c54916cdfd Merge pull request #683 from Bubobubobubobubo/betterfmsynth
Wave Selection and Global Envelope on the FM Synth Modulator
2023-08-31 12:36:36 +02:00
Felix Roos e29cf6fcc1 update snapshot 2023-08-31 12:34:49 +02:00
Felix Roos 5b3cd166b0 more clear example 2023-08-31 12:34:16 +02:00
Felix Roos a7246c6518 snapshots 2023-08-31 12:30:01 +02:00
Felix Roos b48fd78cf0 fm envelope docs 2023-08-31 12:29:29 +02:00
Felix Roos 66c895ee3c fix: bad import 2023-08-31 11:52:49 +02:00
Felix Roos 37c450dd83 Merge remote-tracking branch 'upstream/main' into betterfmsynth 2023-08-31 11:52:41 +02:00
Felix Roos 4c744da3e2 add zzfx sound + zzfx control to override params 2023-08-31 10:52:36 +02:00
Felix Roos 388e7b3c2f add doc 2023-08-31 09:46:36 +02:00
Felix Roos 6ec5377381 add lfo alias for repeatTime 2023-08-31 09:46:30 +02:00
Felix Roos 24ec47e4ff fix: comments 2023-08-31 07:58:31 +02:00
Felix Roos 4a122523d9 fix: import 2023-08-31 07:55:09 +02:00
Felix Roos 1241911ec0 rename more stuff + pull out fork 2023-08-31 07:53:41 +02:00
Felix Roos 0f54bb1938 rename some params + use correct duration 2023-08-31 06:57:08 +02:00
Felix Roos a3b55aa5cc Merge pull request #685 from daslyfe/desktop_midi_bridge
Create Midi Integration for Tauri Desktop app
2023-08-31 05:52:17 +02:00
Felix Roos 4fa02a483b Merge pull request #681 from tidalcycles/protracker-font
teletext theme + fonts
2023-08-31 05:32:15 +02:00
Felix Roos a786c642f1 remove weird flags 2023-08-31 05:25:18 +02:00
Felix Roos 1bade7bee8 urgh npm 2023-08-31 05:23:08 +02:00
Felix Roos d399df8798 Merge pull request #674 from tidalcycles/waveformn
control osc partial count with n
2023-08-31 05:20:55 +02:00
Felix Roos 749b11a5ea fix: history 2023-08-31 05:12:33 +02:00
Felix Roos 328af5f560 fix: move desktopbridge dependency to website 2023-08-31 05:10:17 +02:00
Felix Roos 876f97e9a2 fix: exp envelope allow 0 without blowup 2023-08-31 04:35:35 +02:00
Felix Roos 26d7a32f11 remove comments 2023-08-31 04:26:14 +02:00
Felix Roos 3057773009 keep sine as fm default 2023-08-31 04:25:40 +02:00
Felix Roos 6ca89cb907 keep sine as mod default 2023-08-31 04:25:12 +02:00
Felix Roos 88b5b9b21c fix: history 2023-08-31 04:24:44 +02:00
Felix Roos 6bcf8b91cc fix: getExpEnvelope full adsr 2023-08-31 04:22:54 +02:00
Felix Roos 7cf7ebc555 fix: condition flip 2023-08-31 04:17:49 +02:00
Felix Roos ee0aaca2b0 only use fm envelope when needed 2023-08-31 04:13:41 +02:00
Felix Roos b1b084452c fix: format 2023-08-31 03:56:31 +02:00
Felix Roos 213b1a2dae pull out debugging fn 2023-08-31 03:53:52 +02:00
Felix Roos b991cfc493 fix: use custom version of ZZFX
- ZZFX audio context broke tests
- only needed buildSamples function
2023-08-31 03:50:38 +02:00
Felix Roos 90cdea3656 fix: double registering 2023-08-30 15:32:45 +02:00
Felix Roos 1463f27a0f move zzfx stuff to separate file 2023-08-30 15:27:07 +02:00
Felix Roos afb8ab44cf more zzfx wiring 2023-08-30 15:25:23 +02:00
Jade Rowland 282f36c47c fix lock file 2023-08-30 09:17:12 -04:00
Raphael Forment c3f27d1ad9 Boilerplate for ZZFX Synth support 2023-08-30 14:32:20 +02:00
Jade Rowland ad230a8dc7 remove console statement 2023-08-30 08:32:13 -04:00
Jade Rowland c29c4c0a8b configuring package, wiring everything together 2023-08-30 08:24:02 -04:00
Jade Rowland 284f5615cc bridge functionality for midi 2023-08-29 18:14:02 -04:00
Raphael Forment c625096f59 removing comments 2023-08-29 17:29:50 +02:00
Raphael Forment c3cd5d08c9 adding linear and exponential envelope for fm synthesis 2023-08-29 17:25:27 +02:00
Raphael Forment c87c3c6672 Revert "envelopes on fmsynth"
This reverts commit 8fc7688585.
2023-08-29 16:31:47 +02:00
Raphael Forment 8fc7688585 envelopes on fmsynth 2023-08-29 13:46:43 +02:00
Raphael Forment 94bcfb11de removing rogue console.log 2023-08-29 13:16:39 +02:00
Raphael Forment ebeaac3c5f adding fm wave choice 2023-08-29 12:54:17 +02:00
Felix Roos 942ffc038d add font credit 2023-08-29 00:57:41 +02:00
Felix Roos 9de344e48d delete protracker font 2023-08-29 00:45:16 +02:00
Felix Roos 5efea045d2 delete protracker theme 2023-08-29 00:30:16 +02:00
Felix Roos 6bd3274a4b remove protracker theme + font (not good) 2023-08-29 00:27:20 +02:00
Felix Roos a179313db2 teletext: add panel bg 2023-08-29 00:19:57 +02:00
Felix Roos 289376840e add mode7 font
+ can now inject custom theme styles
2023-08-28 23:52:24 +02:00
Felix Roos 0e3d84e5ca add teletext theme + font 2023-08-28 19:21:17 +02:00
Felix Roos cb643f8fd9 add protracker theme
+ fix: make sure all text has a bg
2023-08-28 18:54:33 +02:00
Felix Roos 1faa81099c add protracker3 font 2023-08-28 14:50:06 +02:00
Felix Roos 2dc079b950 Merge pull request #680 from tidalcycles/emoji-support
add emoji support
2023-08-27 22:18:06 +02:00
Felix Roos f6cf740507 add emoji support 2023-08-27 22:11:22 +02:00
Felix Roos 338c866d83 Merge pull request #679 from tidalcycles/pianoroll-improvements
Pianoroll improvements
2023-08-27 16:12:32 +02:00
Felix Roos 038e6c312b dedupe .pianoroll 2023-08-27 16:05:58 +02:00
Felix Roos 6f6def34f7 fix: improve performance of setting patterning 2023-08-27 15:35:44 +02:00
Felix Roos 88651149d3 fix: don't import emoji pkg 2023-08-27 15:28:46 +02:00
Felix Roos e301090704 pianoroll improvements:
- add label / activeLabel controls
- add new pianoroll options:
  - fill
  - fillActive
  - strokeActive
  - stroke
  - hideInactive
  - colorizeInactive
  - fontFamily
- add wordfall method
- fix: some haps were drawn with wrong length
- pianoroll labels now use set fontFamily
- hide fold gutter
2023-08-27 15:27:30 +02:00
Felix Roos d0f8a612ad Merge pull request #677 from tidalcycles/scope
Scope
2023-08-26 21:22:16 +02:00
Felix Roos a7728e3d81 comment new controls 2023-08-26 21:16:46 +02:00
Felix Roos 4dadc18a3a fix: import 2023-08-26 21:12:02 +02:00
Felix Roos 43efe6921d move scope to webaudio package 2023-08-26 21:11:24 +02:00
Felix Roos 2e31c8695a use Float32 for higher precision 2023-08-25 16:29:41 +02:00
Felix Roos 988bd8ccdc rename stuff 2023-08-25 12:40:04 +02:00
Felix Roos 965794712e fscope + scaling options 2023-08-25 12:39:47 +02:00
Felix Roos 68ea086e2a improve canvas quality on retina 2023-08-25 12:39:38 +02:00
Felix Roos 7370f41fa0 basic scope feature 2023-08-25 09:45:30 +02:00
Felix Roos 5cbe30095b control osc partial count with n 2023-08-24 12:21:29 +02:00
Felix Roos c75c3f1ab1 basic pattern add function 2023-08-24 11:55:21 +02:00
Felix Roos 281ad5fac9 add nanFallback for better errors 2023-08-24 08:50:42 +02:00
Felix Roos eb0301d74e remove annoying logs 2023-08-24 08:50:18 +02:00
Felix Roos 4a76757dd2 Merge branch 'main' into patterns-tab 2023-08-23 22:56:12 +02:00
Felix Roos 1855dae35e add patterns tab with examples 2023-08-23 22:51:36 +02:00
Felix Roos f20c5a1bcb Merge pull request #668 from daslyfe/midi_time_fixes
Midi time fixes
2023-08-23 21:50:50 +02:00
Felix Roos 02979926fd bump superdough 2023-08-20 23:50:38 +02:00
Felix Roos b08337af45 Merge pull request #669 from tidalcycles/fm
basic fm
2023-08-20 23:19:07 +02:00
Felix Roos 980c1e4812 simplify 2023-08-20 22:45:05 +02:00
Felix Roos f43dd8db1b add doc 2023-08-20 22:41:49 +02:00
Felix Roos badda165fe add snapshot 2023-08-20 22:39:46 +02:00
Felix Roos f7d17875c0 fix: lint 2023-08-20 22:36:44 +02:00
Felix Roos 0c124bcca3 basic fm 2023-08-20 22:32:27 +02:00
Jade Rowland 3eb63f1730 round duration down 2023-08-19 15:10:53 -04:00
Jade Rowland abb0b3b4c0 dont round duration 2023-08-19 15:09:46 -04:00
Jade Rowland 42662748d3 cleaning up changes 2023-08-19 15:06:55 -04:00
Jade Rowland b5b866a894 time clock improvements 2023-08-19 01:08:41 -04:00
Felix Roos 4e7e715f10 rename footer -> panel 2023-08-19 00:20:46 +02:00
Felix Roos 5be1004292 encapsulate panel tabs 2023-08-19 00:19:32 +02:00
Felix Roos 01cccc6462 hotfix: panel z-index < autocomplete 2023-08-19 00:06:44 +02:00
Felix Roos 9287b8ea42 Merge pull request #667 from tidalcycles/toggle-sidebar
togglable panel position
2023-08-18 23:56:20 +02:00
Felix Roos 5fabc5c7f9 let to const 2023-08-18 23:53:37 +02:00
Felix Roos 61dc6f980d ignore tauri dist for format-check 2023-08-18 23:48:00 +02:00
Felix Roos 84328cfb90 fix: format 2023-08-18 23:46:26 +02:00
Felix Roos 37a35022f5 fix panel scroll
+ move to bottom when minimized
2023-08-18 23:45:55 +02:00
Felix Roos 3afe540111 add hint for zen mode 2023-08-18 23:32:30 +02:00
Felix Roos 35687b1ee0 fix reference style for right panel 2023-08-18 23:32:22 +02:00
Felix Roos 195e6b61f9 fix settings style for right panel 2023-08-18 23:23:12 +02:00
Felix Roos dabc0331cb fix panel scroll 2023-08-18 23:19:19 +02:00
Felix Roos 824abb0406 Merge pull request #666 from daslyfe/osc_fixes
fix osc bundle timestamp glitches caused by drifting clock
2023-08-18 15:59:20 +02:00
Felix Roos f6789aaace togglable panel position 2023-08-18 15:58:51 +02:00
Jade Rowland 10bce85561 fix osc bundle timestamp glitches caused by drifting clock 2023-08-17 18:01:41 -04:00
Felix Roos cd0f1b6c5c bump: superdough 0.9.4 2023-08-17 11:42:24 +02:00
Felix Roos 834bb7d777 Merge pull request #664 from tidalcycles/superdough
superdough: encapsulates web audio output
2023-08-17 11:36:07 +02:00
Felix Roos 5c1d7baf72 superdough readme doc 2023-08-17 11:23:17 +02:00
Felix Roos 8bdbc9ec4c superdough: add logger 2023-08-17 10:08:55 +02:00
Felix Roos 0c6a0720af bump superdough to 0.9.3 2023-08-11 12:35:18 +02:00
Felix Roos c6095fd92a add disableWorklets option to initAudio 2023-08-11 12:35:00 +02:00
Felix Roos 7d0fb0de83 Revert "rename: superdough.mjs > webaudio.mjs"
This reverts commit 75281afe05.
2023-08-11 12:22:03 +02:00
Felix Roos 75281afe05 rename: superdough.mjs > webaudio.mjs
(to keep history?)
2023-08-11 12:20:36 +02:00
Felix Roos 738e714f45 use superdough in webaudio package 2023-08-11 12:13:24 +02:00
Felix Roos 898bfaeecf bump to 0.9.2 2023-08-11 11:13:31 +02:00
Felix Roos 7f44d9cdd2 add link to codesandbox 2023-08-11 11:09:33 +02:00
Felix Roos 8d9be21c8a better code example 2023-08-11 10:56:57 +02:00
Felix Roos 82cb4c8c11 fix: still had strudel core imports 2023-08-11 10:51:59 +02:00
Felix Roos 2778e4d697 fix: build entry file 2023-08-11 10:43:59 +02:00
Felix Roos 30fe2dd502 add superdough package 2023-08-11 10:42:59 +02:00
gogins 1170ff58ee Fix for #1. 2023-08-10 20:26:37 -04:00
Felix Roos 2483bf812f Merge pull request #660 from tidalcycles/fix-multiple-triggers
fix: always run previous trigger
2023-08-11 00:06:21 +02:00
Felix Roos 7a999de602 fix: always run previous trigger
+ make dominantTrigger more dominant
2023-08-11 00:04:09 +02:00
Felix Roos 1929c27225 Merge pull request #659 from tidalcycles/fix-console-welcome
fix: welcome message for latestCode
2023-08-10 23:54:58 +02:00
Felix Roos 0cf5c9c7d6 fix: welcome message for latestCode 2023-08-10 23:51:04 +02:00
Felix Roos c20b691683 Merge pull request #657 from daslyfe/main
[Bug Fix] Midi: Don't treat note 0 as false
2023-08-07 07:45:26 +02:00
Jade Rowland 5c2101de1a [Bug Fix] Midi: Don't treat note 0 as false 2023-07-29 13:34:02 -04:00
Felix Roos 2ec2e81511 Merge pull request #656 from daslyfe/main
[Bug Fix] Account for numeral notation when converting to midi
2023-07-29 09:06:17 +02:00
Jade Rowland ac3d8b832c [Bug Fix] Account for numeral notation when converting to midi 2023-07-29 01:29:05 -04:00
Felix Roos ad174957e8 Merge pull request #653 from tidalcycles/ireal-voicings
ireal voicings
2023-07-23 22:18:48 +02:00
Felix Roos 9b3fa83516 add common chord symbol aliases 2023-07-23 22:05:42 +02:00
Felix Roos 52b8d9d361 add octaves control for arpeggios 2023-07-23 21:18:34 +02:00
Felix Roos d231ded7a2 fix: ^7 voicings 2023-07-23 21:18:18 +02:00
Felix Roos 5f57951e3d fix: add empty string as major alias 2023-07-23 14:10:38 +02:00
Felix Roos b1a4788442 a few more voicings 2023-07-23 14:06:25 +02:00
Felix Roos 6377378a3d sort by topnote and then by bottom note
(easier to track diffs)
2023-07-23 13:31:47 +02:00
Felix Roos 45b91cdea5 fix: major chords 2023-07-23 09:57:34 +02:00
Felix Roos d5647c6760 sort voicings by top note 2023-07-23 09:51:21 +02:00
Felix Roos f419559bde Merge remote-tracking branch 'origin/main' into ireal-voicings 2023-07-22 16:22:49 +02:00
Felix Roos 4cfaa39419 fix: flip subtraction 2023-07-22 13:54:43 +02:00
Felix Roos d6b1762adf Merge pull request #652 from tidalcycles/understand-pitch
Understand pitch
2023-07-22 09:30:21 +02:00
Felix Roos 45c3293385 format 2023-07-22 09:28:51 +02:00
Felix Roos 92d574605e small fixes 2023-07-22 09:26:34 +02:00
Felix Roos cec7b90631 finish pitch page 2023-07-22 09:19:13 +02:00
Felix Roos aa3cb35f09 better exponent display 2023-07-21 18:42:47 +02:00
Felix Roos 7373138e3d improve pitch page 2023-07-21 17:46:45 +02:00
Felix Roos 2d8176f213 begin pitch page 2023-07-21 14:40:47 +02:00
Felix Roos 8589d72aee fix: console error 2023-07-21 14:40:40 +02:00
Felix Roos 626b50087a Merge branch 'main' into docs 2023-07-21 10:02:02 +02:00
Felix Roos 1e62554dfb add links 2023-07-20 23:43:53 +02:00
Felix Roos bcf800482b fix: chord typo + export only voicings 2023-07-20 23:43:08 +02:00
Felix Roos 08f94d2122 add ireal voicings 2023-07-20 22:53:02 +02:00
Felix Roos 559cfd11db Merge pull request #651 from tidalcycles/update-vitest
update vitest
2023-07-17 23:42:59 +02:00
Felix Roos ce820c2314 update vitest 2023-07-17 23:37:51 +02:00
Felix Roos 8583ed0e5c Merge pull request #647 from tidalcycles/tonleiter
stateless voicings + tonleiter lib
2023-07-17 23:34:33 +02:00
Felix Roos f2c16a06a1 fix: note2oct 2023-07-17 23:10:13 +02:00
Felix Roos 584d469a73 Merge pull request #650 from bwagner/tonleiter
FIXES: TODO in rotateChroma
2023-07-17 17:57:16 +02:00
Bernhard Wagner 4298e582fb FIXES: note2pc TODOs 2023-07-14 14:38:26 +02:00
Bernhard Wagner a3fdfbbc16 FIXES: weird gain difference 2023-07-14 14:04:35 +02:00
Bernhard Wagner b8929a0d18 FIXES: prettier formatting 2023-07-14 13:56:36 +02:00
Bernhard Wagner 0fa5832b63 FIXES: TODO in rotateChroma 2023-07-14 13:45:27 +02:00
Felix Roos bbb29ebd7c fix: duck mode with n
+ detect chord obj in rootNotes
2023-07-13 12:52:57 +02:00
Felix Roos 0fd9ac6da3 feat: support strings in voicing function 2023-07-13 12:13:00 +02:00
Felix Roos e53098b179 fix: tests 2023-07-13 11:58:24 +02:00
Felix Roos 78dcab2778 fix: control interference 2023-07-13 11:24:57 +02:00
Felix Roos e05f74cef1 docs + rename under -> duck, quak quak 2023-07-13 10:49:08 +02:00
Felix Roos 3d8724c90d snapshot 2023-07-13 01:11:31 +02:00
Felix Roos ffeda19ce5 snapshots + fix default anchor for lefthand 2023-07-13 01:09:53 +02:00
Felix Roos 70fe8f14e3 refactor: voicings -> voicing in tunes 2023-07-13 01:09:29 +02:00
Felix Roos a639d9f49f fix: remove log 2023-07-13 00:25:24 +02:00
Felix Roos e5251422fe revert changing existing addVoicings
+ add registerVoicings for the new logic
2023-07-13 00:20:28 +02:00
Felix Roos d8f80c058d can now set mode and anchor on voicing dictionary 2023-07-12 23:47:13 +02:00
Felix Roos 4cf3655c08 voicing modes: below, under, above 2023-07-12 23:32:27 +02:00
Felix Roos 58fc786462 noteToMidi: adjustable default octave
+ pull out static objects
2023-07-12 23:32:02 +02:00
Felix Roos 81b142704c change call signature of renderVoicing
+ pull logic in from voicings function
2023-07-12 22:55:34 +02:00
Felix Roos b0cbeda796 fix: support existing voicing dicts in new logic
+ rename voiceBelow to renderVoicing
2023-07-12 22:38:44 +02:00
Felix Roos 0b3a8a5f65 - make dictionary a control
- standalone voicing function
- simplify voicing control names
2023-07-11 22:49:34 +02:00
Felix Roos d7d8d2a3e6 Merge pull request #645 from tidalcycles/slice
slice: list mode
2023-07-10 19:07:45 +02:00
Felix Roos d5c0309885 feat: support n for voicing scales
+ simplify voicing logic
2023-07-09 22:11:40 +02:00
Felix Roos 36fa9d81fb fix: pianoroll isActive still used whole.end 2023-07-09 18:51:26 +02:00
Felix Roos 35f5a5d11a feat: add voiceOffset (2) 2023-07-09 16:53:41 +02:00
Felix Roos d1fe50e271 feat: add voiceOffset 2023-07-09 16:53:29 +02:00
Felix Roos 2d08b31f9a fix: tests 2023-07-08 16:14:25 +02:00
Felix Roos 27643f4a48 doc: slice 2023-07-08 16:12:21 +02:00
Felix Roos 110e179e9e wip: new voicing function 2023-07-08 12:41:17 +02:00
Felix Roos fe6d99d4f1 slice array notation 2023-07-07 21:48:19 +02:00
Felix Roos 06fbcbe24b docs: add slice effect 2023-07-07 21:48:03 +02:00
Felix Roos f40b57ee48 hotfix: remove log 2023-07-06 09:59:20 +02:00
Felix Roos 9438c69bed comment 2023-07-06 09:58:57 +02:00
Felix Roos 70d6f3000a move tonleiter 2023-07-06 09:58:48 +02:00
Felix Roos d47fd0cf18 Merge pull request #639 from tidalcycles/delete-old-packages
Delete old packages
2023-07-04 23:50:30 +02:00
Felix Roos 40117fbe54 package-lock 2023-07-04 23:47:37 +02:00
Felix Roos 7466d8a1de delete webdirt 2023-07-04 23:44:36 +02:00
Felix Roos ce09443e48 delete tone 2023-07-04 23:43:49 +02:00
Felix Roos 1718dbe94e delete eval package 2023-07-04 23:41:29 +02:00
Felix Roos 69894db206 Merge pull request #634 from tidalcycles/highlight-ids
Adaptive Highlighting
2023-07-04 23:38:41 +02:00
Felix Roos 6e4c873248 remove tests from soon removed package 2023-07-04 22:17:44 +02:00
Felix Roos 64693ffd26 fix: remove test flag 2023-07-04 22:16:02 +02:00
Felix Roos 66f8ca72c1 refactor: remove old location methods
docs: update repl chapter to reflect new transpiler behavior
2023-07-04 22:13:40 +02:00
Felix Roos c82f7bd8fe Merge pull request #636 from mindofmatthew/highlight-ids
More work on highlight IDs
2023-07-04 21:55:57 +02:00
Felix Roos 34176ab5f8 refactor:
- dedupe flash / highlighting logic
- codemirror logic now lives only in codemirror package
- remove old highlighting logic
- use codemirror package in react package
- cleanup CodeMirror6.jsx
- pull setMiniLocations into useHighlighting
- migrate MiniRepl, nano-repl + Repl to new highlighting
2023-07-04 21:49:39 +02:00
Felix Roos 7f12ce9b45 fix: format 2023-07-04 18:47:44 +02:00
Felix Roos 9e1b9f7f5c Merge remote-tracking branch 'upstream/main' into highlight-ids 2023-07-04 18:46:05 +02:00
Felix Roos 23e949de1c Merge pull request #637 from tidalcycles/snapshots-sort-haps-by-part
snapshot tests: sort haps by part
2023-07-04 18:44:47 +02:00
Felix Roos 00bd60a855 snapshot tests: sort haps by part 2023-07-04 18:43:26 +02:00
Felix Roos dacd9afac0 comment out opacity logic for now 2023-07-04 18:34:22 +02:00
Felix Roos 3fc5bb31d0 fix: do not recreate haps mapping on update 2023-07-04 18:22:22 +02:00
Felix Roos 78770888a5 remove mock positions 2023-07-04 18:16:58 +02:00
Matthew Kaney f5b092acf2 Split up highlighting logic and add progress flash 2023-07-03 17:06:39 -04:00
Matthew Kaney ba9562f000 Remove highlights when code stops 2023-07-03 10:52:06 -04:00
Matthew Kaney aded178ab7 Pass mininotation locations into highlight state 2023-07-03 03:55:49 -04:00
Felix Roos 0b5d905120 fix: adaptive highlighting
- transpiler now uses m function with globalOffset
- patternifyAST now accepts global offset
- patternifyAST now calls .withLoc with global leaf location
- .withLoc replaces .withLocation + .withMiniLocation
- simple locs (offsets) are now used everywhere
- some tests fail, seems some haps have reordered...
- wip: Repl still uses hardcoded updateMiniLocations
- todo: find way to call updateMiniLocations dynamically
2023-07-03 05:15:32 +02:00
Felix Roos 08abec8fd5 fix: init phase 2023-07-02 18:37:56 +02:00
Felix Roos 63c23736ad wip: adaptive highlighting 2023-07-02 18:33:44 +02:00
Felix Roos f7bd373ce6 update package-lock 2023-07-02 14:17:15 +02:00
Felix Roos 8e717d2ea1 - transpiler now always returns an object
- emit transpiler metadata from evaluate / afterEval
- currently logging miniLocations from Repl.jsx
2023-07-02 14:15:54 +02:00
Felix Roos 5f271ed127 add emitMiniLocations flag to transpiler 2023-07-02 13:42:41 +02:00
Felix Roos d686b65dbe add 2 more tests 2023-07-01 23:55:41 +02:00
Felix Roos c7e882e001 mini: leaf location retrieval
- add onEnter callback for patternifyAST
- add leaf node location helpers
- add tests
2023-07-01 23:52:31 +02:00
Felix Roos f07859996e Merge pull request #631 from tidalcycles/fix-canvas-resize
fix: update canvas size on window resize
2023-06-30 22:47:39 +02:00
Felix Roos fbc73bc78a Merge pull request #630 from tidalcycles/out-of-range-error
fix: out of range error
2023-06-30 22:45:41 +02:00
Felix Roos bd8ad1ed1b fix: out of range error due to rerender 2023-06-30 22:40:02 +02:00
Felix Roos dc2ff83fa5 do not flash when empty 2023-06-30 22:38:14 +02:00
Felix Roos 13545d147b optimize rendering 2023-06-30 22:37:55 +02:00
Felix Roos 1b85aa713b fix: update canvas size on window resize 2023-06-30 16:03:56 +02:00
Felix Roos 90a58858ca Publish
- @strudel/codemirror@0.8.4
 - @strudel.cycles/core@0.8.2
 - @strudel.cycles/csound@0.8.0
 - @strudel.cycles/eval@0.8.0
 - @strudel.cycles/midi@0.8.0
 - @strudel.cycles/mini@0.8.2
 - @strudel.cycles/osc@0.8.0
 - @strudel.cycles/react@0.8.0
 - @strudel.cycles/serial@0.8.0
 - @strudel.cycles/soundfonts@0.8.2
 - @strudel.cycles/tonal@0.8.2
 - @strudel.cycles/tone@0.8.0
 - @strudel.cycles/transpiler@0.8.2
 - @strudel/web@0.8.3
 - @strudel.cycles/webaudio@0.8.2
 - @strudel.cycles/webdirt@0.8.0
 - @strudel.cycles/xen@0.8.0
2023-06-30 08:17:19 +02:00
Felix Roos 8149b85a55 Merge pull request #627 from tidalcycles/fix-clock-drift
fix: midi clock drift
2023-06-30 08:14:40 +02:00
Felix Roos e79b6c514a Merge pull request #621 from tidalcycles/tauri-fs
desktop: play samples from disk
2023-06-29 22:02:27 +02:00
Felix Roos aaa894d74b Merge pull request #620 from tidalcycles/loopAt
cps dependent functions
2023-06-29 21:59:42 +02:00
Felix Roos b55721f16f fix: midi clock drift 2023-06-29 21:58:15 +02:00
Felix Roos b39d948d71 fix: build 2023-06-29 12:32:59 +02:00
Felix Roos 0fee279e3d rename fay to fit 2023-06-29 12:05:31 +02:00
Felix Roos c7d8a9cb82 fix: playFile import 2023-06-29 12:05:09 +02:00
Felix Roos b50075f102 feat: can now load disk samples via samples
+ encapsulate file logic from FilesTab
2023-06-29 10:47:20 +02:00
Felix Roos fb3ca9f960 feat: register fn for sample prefix handling 2023-06-29 10:46:32 +02:00
Felix Roos 058b971870 can now play samples from file system
- ui still wip
2023-06-29 02:02:00 +02:00
Felix Roos 610ea414c1 expose tauri fs api 2023-06-29 02:01:22 +02:00
Felix Roos cc6997baec - encapsulate sample map handling
- add resolveUrl param
2023-06-29 02:00:59 +02:00
Felix Roos d126c28b85 fix: loopAt with cps 1 for fallback 2023-06-28 22:25:49 +02:00
Felix Roos c1649b9dc0 - fix: loopAt for non default cps value
- add fay to repitch samples to fit hap duration
- add setcpm function
2023-06-28 22:13:05 +02:00
Felix Roos b0a8d12112 Merge pull request #520 from paikwiki/patch-1
Fix typo on packages.mdx
2023-06-26 22:45:04 +02:00
Felix Roos b5160d38cb another dummy commit 2023-06-26 22:43:14 +02:00
Felix Roos 360e9b5936 dummy commit 2023-06-26 22:41:47 +02:00
Felix Roos 85a6cd828e Merge pull request #606 from tidalcycles/setting-patterning
patterning ui settings
2023-06-26 22:35:02 +02:00
Felix Roos e698f19a64 Merge pull request #614 from tidalcycles/spirals
add spiral viz
2023-06-26 22:32:46 +02:00
Felix Roos 83c1b580dd Merge pull request #613 from vasilymilovidov/tauri
tauri test
2023-06-26 22:17:46 +02:00
vvm 9273e1f8ed fix tauri icons 2023-06-26 13:13:22 +04:00
vvm 5287825279 tauri workflow fixes 2023-06-26 11:27:21 +04:00
vvm 5567959afd add tauri github workflow 2023-06-26 01:58:16 +04:00
Felix Roos eaab36b051 add spiral viz 2023-06-25 14:23:18 +02:00
vvm 9a4f3af580 add README 2023-06-24 02:34:02 +04:00
vvm b83664dfce add build optimizations 2023-06-24 02:32:57 +04:00
vvm 349f7ae965 init 2023-06-23 21:14:55 +04:00
vvm 6f41716ab5 init 2023-06-23 21:06:10 +04:00
Felix Roos abeb62dea8 Merge pull request #612 from tidalcycles/fix-links
fix: doc links
2023-06-23 09:59:43 +02:00
Felix Roos 7cfed80443 Merge pull request #598 from tidalcycles/clip-support-floats
clip now works like legato in tidal
2023-06-23 09:55:18 +02:00
Felix Roos 36aa7d9b25 Merge pull request #607 from tidalcycles/doc-fixes
tonal fixes
2023-06-18 10:36:17 +02:00
Felix Roos 2a449ad3c0 rename tonal api -> tonal functions 2023-06-18 10:32:51 +02:00
Felix Roos a71c5957cc fix: better fix 2023-06-16 14:23:39 +02:00
Felix Roos eef6c7d55e quick fix: typo 2023-06-16 14:20:49 +02:00
Felix Roos 3872322da1 allow patterning theme + font settings 2023-06-16 13:45:13 +02:00
Felix Roos f1e850a62a fix: doc links 2023-06-16 09:20:29 +02:00
Felix Roos 8d9278419d fix: flatten scale lists 2023-06-15 20:19:31 +02:00
Felix Roos 0862827a51 Merge pull request #581 from roipoussiere/line_wrap
editor: enable line wrapping
2023-06-15 12:51:40 +02:00
Roipoussiere f37a220a05 add checkbox in settings to enable line wrapping 2023-06-15 11:52:29 +02:00
Felix Roos aa51c2b6dd Merge remote-tracking branch 'upstream/main' into line_wrap 2023-06-15 10:59:52 +02:00
Felix Roos 92da70a7ae Merge remote-tracking branch 'origin/main' into clip-support-floats 2023-06-15 10:46:10 +02:00
Felix Roos a55862fc25 Merge pull request #602 from tidalcycles/ratio-function
add ratio function
2023-06-15 10:22:46 +02:00
Felix Roos 09b14a5702 add ratio function 2023-06-14 23:19:04 +02:00
Felix Roos 260b831815 refactor: legato -> clip 2023-06-14 00:22:55 +02:00
Felix Roos 665cf6ac65 Merge pull request #588 from roipoussiere/enable_autocomplete
enable auto-completion
2023-06-12 23:24:28 +02:00
Felix Roos 5e90021698 update snapshot 2023-06-12 23:12:40 +02:00
Felix Roos 16aeb7e12c docs: update clip entry 2023-06-12 23:11:07 +02:00
Felix Roos b4cbec173b only accept undefined for clip 2023-06-12 22:58:25 +02:00
Felix Roos 8c9e06c329 - clip now works like legato in tidal
- supports floats
- hap.duration now respects clip value
- hap.endClipped is now end*clip
- visualizations show clipped length
- clip(0) will now be silence
2023-06-12 22:39:32 +02:00
Felix Roos e4a35fdd72 Merge pull request #597 from tidalcycles/cursor-fix
improve cursor
2023-06-11 22:04:17 +02:00
Felix Roos 370d82e66c + disable cursor blink
+ make cursor thicker
2023-06-11 20:21:11 +02:00
Felix Roos 876e851517 Merge pull request #570 from dariacotocu/branch-daria
Solmization added
2023-06-11 20:00:45 +02:00
Felix Roos 190fe37a9f move solmization logic from midi2note to sol2note 2023-06-11 19:55:24 +02:00
Felix Roos 623661f8d2 Merge remote-tracking branch 'upstream/main' into branch-daria 2023-06-11 19:54:55 +02:00
Felix Roos f31bc3f8c5 Merge pull request #591 from tidalcycles/fix-fast0
fix: division by zero
2023-06-11 19:45:00 +02:00
Felix Roos 12fc48544c Merge pull request #596 from tidalcycles/fix-option-dot
Fix option dot
2023-06-11 19:44:40 +02:00
Felix Roos 3b4e44a9fd fix: main repl option-dot on mac 2023-06-11 13:55:11 +02:00
Felix Roos 7850fb727e fix: allow f for flat notes like tidal 2023-06-11 13:23:45 +02:00
Felix Roos 9b3122837e fix: division by zero 2023-06-11 13:15:52 +02:00
Felix Roos d4c59cc73b fix:typo + remove notes 2023-06-11 11:21:19 +02:00
Felix Roos fe36bf54b2 Merge commit '4d8308a763a632cc4dd93ed2a2ab129eb957af72' 2023-06-09 21:39:14 +02:00
Felix Roos 4d8308a763 fix: link goes to wrong language 2023-06-09 21:33:32 +02:00
Felix Roos 11f26c1e2c Merge pull request #587 from tidalcycles/workshop-new
New Workshop
2023-06-09 21:02:11 +02:00
Felix Roos e10104d401 bring de improvements to en workshop 2023-06-09 20:59:40 +02:00
Roipoussiere 5e09c3c318 add autocompletion extension from useMemo 2023-06-09 18:28:16 +02:00
Felix Roos 576b88221d Merge remote-tracking branch 'origin/main' into workshop-new 2023-06-09 18:00:16 +02:00
Felix Roos 7dc2a0091b more detail 2023-06-09 17:59:08 +02:00
Felix Roos 89a4a85589 more friendly heading 2023-06-09 17:58:05 +02:00
Felix Roos a3baf07a5c Merge pull request #580 from roipoussiere/music_metadata
Music metadata
2023-06-09 17:31:58 +02:00
Roipoussiere 8e6909478c autocompletion: lint 2023-06-09 16:42:31 +02:00
Roipoussiere 2d2d0cabb3 Add option in settings to enable autocompletion 2023-06-09 16:38:48 +02:00
Roipoussiere 6f04a1b8fa autocomplete: add vanilla js completion 2023-06-09 14:52:07 +02:00
Roipoussiere a9ad3a56ad autocomplete: avoid tabs overlapping 2023-06-09 14:30:20 +02:00
Roipoussiere 3069b14e9c enable autocompletion 2023-06-09 13:41:40 +02:00
Felix Roos ae868c6372 hide gutter in mini repl 2023-06-09 00:46:04 +02:00
Felix Roos c287ff554c optimize sounds chapter after teach test 2023-06-09 00:26:40 +02:00
Felix Roos 3ccbd35fad add label support to pianoroll 2023-06-09 00:25:54 +02:00
Felix Roos 51cc69208f fix: repl link to docs was old 2023-06-09 00:25:14 +02:00
Felix Roos 1fec2f7a46 fix: build 2023-06-08 21:31:32 +02:00
Felix Roos ffffdd2d7d fix: format 2023-06-08 20:55:26 +02:00
Felix Roos f8c3e3d5aa add missing sounds by hand 2023-06-08 20:43:45 +02:00
Felix Roos eccce6fa84 remove dirt samples
+ load a small selection for workshop instead
2023-06-08 17:48:54 +02:00
Felix Roos 44be6cee2c Merge pull request #585 from srenatus/typo
learn/tonal: fix typo in "scaleTran[s]pose"
2023-06-08 09:33:34 +02:00
Stephan Renatus 799afd511a learn/tonal: fix typo in "scaleTran[s]pose" 2023-06-08 08:17:38 +02:00
Felix Roos 37c4541468 translate link 2023-06-07 21:50:26 +02:00
Felix Roos 119a66acd0 - translate getting-started
- fix de links
- link english docs / german workshop
2023-06-07 21:49:57 +02:00
Felix Roos 105193a452 replace tutorial with workshop
+ move parts of tutorial to more
+ move more before Pattern Functions
2023-06-07 21:22:01 +02:00
Felix Roos 02d793e9e0 Merge remote-tracking branch 'origin/main' into workshop-new 2023-06-07 20:19:34 +02:00
Felix Roos 90647a8ba8 Merge pull request #582 from roipoussiere/line_numbers
repl: add option to display line numbers
2023-06-07 20:19:11 +02:00
Felix Roos 06950a6bd8 translate rest of workshop to german 2023-06-07 16:50:54 +02:00
Roipoussiere 0c2147d9c5 repl: add option to display line numbers 2023-06-07 15:34:57 +02:00
Roipoussiere 51e8174689 metadata: add quotes syntax for titles 2023-06-07 12:26:23 +02:00
Roipoussiere 185318a70c metadata: fix typos 2023-06-07 11:02:38 +02:00
Felix Roos a88759ba94 translate notes chapter 2023-06-06 22:43:51 +02:00
Roipoussiere 96ac054392 metadata: improve doc 2023-06-06 21:34:53 +02:00
Roipoussiere bd7f4dd73f metadata: add tests 2023-06-06 21:34:53 +02:00
Roipoussiere 2e22152089 metadata: allow several values and one-liners 2023-06-06 21:34:53 +02:00
Roipoussiere 98a89aea11 lint: metadata parsing 2023-06-06 21:34:53 +02:00
Roipoussiere 372e33c066 doc: add section about metadata 2023-06-06 21:34:53 +02:00
Roipoussiere 52641db590 load titles from metadata in examples page 2023-06-06 21:34:53 +02:00
Roipoussiere f9ad5f0d01 add tunes metadata 2023-06-06 21:34:53 +02:00
Roipoussiere 3db1c7a521 swatch: look for song titles in code metadata 2023-06-06 21:34:53 +02:00
Roipoussiere b6d1f96930 editor: enable line wrapping 2023-06-06 13:29:55 +02:00
Felix Roos 61a9b01062 started german translation of workshop 2023-06-05 23:48:04 +02:00
Felix Roos f0faf5b42e Merge remote-tracking branch 'origin/main' into workshop-new 2023-06-05 22:48:50 +02:00
Felix Roos 11733d5e05 Merge pull request #563 from tidalcycles/vanilla-highlighting
Vanilla JS Refactoring
2023-06-05 21:35:49 +02:00
Felix Roos c4a38d9008 + pattern effects chapter
+ recap page
+ only load mini repls when visible
2023-05-30 06:16:02 +02:00
Felix Roos 0edd7e14b7 add compound adsr + ds controls 2023-05-29 12:39:36 +02:00
Felix Roos 8b7bb7b6ae add adsr section to effects chapter 2023-05-29 12:39:17 +02:00
Felix Roos 39d5955e58 add function recap to sounds chapter 2023-05-29 12:39:05 +02:00
Felix Roos 536327f403 effects chapter mostly finished 2023-05-29 02:18:36 +02:00
Felix Roos 8679dc63be pianoroll: also reflect gain in transparency 2023-05-29 02:18:27 +02:00
Felix Roos 1e9979ae18 start fleshing out effects chapter 2023-05-28 12:42:24 +02:00
Felix Roos d2dffe3186 MiniRepl: consume font settings 2023-05-28 12:42:15 +02:00
Felix Roos 9971867e2f clamp function 2023-05-28 12:41:53 +02:00
Felix Roos 8c93e578a0 clamp delayfeedback 2023-05-28 12:41:46 +02:00
Felix Roos 1ba5d2e1ca finish notes chapter 2023-05-27 21:52:44 +02:00
Felix Roos ed792fc0d4 continue notes chapter 2023-05-27 16:29:05 +02:00
Felix Roos 4e575c44b3 begin first notes page 2023-05-27 13:31:18 +02:00
Felix Roos fc06181217 - add claviature flag to minirepl
- bring back option+dot on macos
- consume more editor settings in minirepl
2023-05-27 13:30:57 +02:00
Felix Roos 0d6fcf78d8 hide mini repl headers + improve workshop 2023-05-26 16:05:53 +02:00
Felix Roos 82225f0b81 started workshop pages 2023-05-26 14:12:53 +02:00
Felix Roos 2177e13b49 Merge branch 'vanilla-highlighting' into workshop 2023-05-25 21:38:34 +02:00
Daria Cotocu b63f4eb503 Update solmization.test.js 2023-05-24 18:58:11 +01:00
Daria Cotocu cd7bc09f9c Update solmization.test.js 2023-05-24 18:43:24 +01:00
Daria Cotocu ccf775e976 Format code 2023-05-24 17:57:05 +01:00
Daria Cotocu 811346e83d Solmization added 2023-05-24 17:24:34 +01:00
Felix Roos d3240a75d0 fix: dupe style.css to Repl.css
for some reason they were missing after update
+ darken line backgrounds
+ change preview port to keep workbox out of dev server
2023-05-12 11:56:50 +02:00
Felix Roos d93e396ce5 fix: nano-repl 2023-05-12 10:21:05 +02:00
Felix Roos d74cc234c4 fix: thinner outline for highlights with .color 2023-05-12 10:06:55 +02:00
Felix Roos 0fda83d8de bump soundfonts 2023-05-12 10:00:55 +02:00
Felix Roos a1ec8545fb format 2023-05-10 13:03:06 +02:00
Felix Roos 087f574355 update web readme + add more html examples 2023-05-10 12:49:45 +02:00
Felix Roos 1de784b817 add headless-serverless-buildless example 2023-05-10 12:20:27 +02:00
Felix Roos db79c05d9a bump web pkg dependencies 2023-05-10 12:11:51 +02:00
Felix Roos 1fdb1f0da6 bump webaudio package 2023-05-10 12:09:20 +02:00
Felix Roos e2bfaa6233 remove soundfonts from web package for now 2023-05-10 12:06:16 +02:00
Felix Roos 6089849d35 rename init to initStrudel + add to window 2023-05-10 11:53:26 +02:00
Felix Roos 6e02bf59e9 Revert "refactor: remove old draw logic"
This reverts commit 95719654f3.
2023-05-10 11:44:55 +02:00
Felix Roos 12228c56d9 improve api for web package 2023-05-07 22:36:26 +02:00
Felix Roos 3b631cb6af add @strudel/web umbrella package + example 2023-05-07 11:56:35 +02:00
Felix Roos b27a58df7e bump more packages to 0.8.0 2023-05-05 23:58:47 +02:00
Felix Roos 308f139193 bump codemirror again to get new core version 2023-05-05 23:52:55 +02:00
Felix Roos 692fc4e11d revert rename core package 2023-05-05 23:52:04 +02:00
Felix Roos b52f65c4d7 rename core package + bump to 0.8.0 2023-05-05 23:50:06 +02:00
Felix Roos 299275e368 lockfile 2023-05-05 23:47:15 +02:00
Felix Roos bb71c519db bump codemirror package 2023-05-05 23:46:42 +02:00
Felix Roos 9ec7109dc8 + simplify vanilla setup drastically
+ move repl + drawer boilerplate inside StrudelMirror
2023-05-05 23:43:07 +02:00
Felix Roos 5b67fccb1b vanilla-repl-cm6: draw first frame 2023-05-05 16:17:22 +02:00
Felix Roos 9807c4b7a1 move Framer + Drawer to core
... from vite-vanilla-repl-cm6
2023-05-05 16:06:11 +02:00
Felix Roos 9039600f6d bump codemirror to 0.8.1 2023-05-05 15:31:19 +02:00
Felix Roos b5b0156e08 fix: codemirror reeval 2023-05-05 15:31:04 +02:00
Felix Roos 352e647d37 add build script for codemirror package 2023-05-05 15:15:45 +02:00
Felix Roos e6b66f2525 lockfile 2023-05-05 15:14:46 +02:00
Felix Roos f5075906e2 add codemirror package
+ use it in vite-vanilla-repl-cm6
2023-05-05 15:13:17 +02:00
Felix Roos a6f57bced8 prettier 2023-05-05 12:00:13 +02:00
Felix Roos d35bf9591c vanilla-repl-cm6: better theme 2023-05-05 11:54:09 +02:00
Felix Roos d96f3f9dd4 vanilla-repl-cm6: style + codesplitting 2023-05-05 11:09:44 +02:00
Felix Roos 1f4c2f8c5a draw scheduler in vanilla js 2023-05-05 10:52:21 +02:00
Felix Roos 95719654f3 refactor: remove old draw logic
+ pianoroll now uses .onPaint
2023-05-05 09:52:07 +02:00
Felix Roos 4b921c47f5 vanilla-repl-cm6: add flash effect 2023-05-05 09:11:40 +02:00
Felix Roos f069f53fae vanilla-repl-cm6: add keybindings 2023-05-05 09:06:27 +02:00
Felix Roos 1494cc38fc add vite-vanilla-repl-cm6 2023-05-05 08:55:43 +02:00
Felix Roos a035412956 Merge pull request #559 from tidalcycles/patchday
Patchday
2023-05-05 08:34:36 +02:00
Felix Roos 08662ea831 Merge pull request #557 from tidalcycles/some-voicings
add basic triads and guidetone voicings
2023-05-02 21:48:32 +02:00
Felix Roos d97103268b add basic triads and guidetone voicings 2023-05-02 21:40:20 +02:00
Felix Roos a959e2e34d update remaining packages 2023-04-30 08:30:29 +02:00
Felix Roos 602bfbdd79 update a bunch of minor versions 2023-04-30 08:20:51 +02:00
Felix Roos 0785bdd37a update lerna 2023-04-30 08:04:56 +02:00
Felix Roos 8b62b6e1b1 update codemirror + tailwindcss 2023-04-30 08:02:06 +02:00
Felix Roos d1c8ebd15b remove c8 2023-04-30 07:55:23 +02:00
Felix Roos 13088e4001 - remove gh-pages
- update peggy
- rebuild parser
2023-04-30 07:48:08 +02:00
Felix Roos 5c6fa1c82b update vite to v4 2023-04-29 08:10:12 +02:00
Felix Roos fd81867e7b fix: controls import broke on ssr 2023-04-29 07:45:21 +02:00
Felix Roos 78293e64dd lockfile 2023-04-29 07:45:09 +02:00
Felix Roos 930fc10aec bump some minor versions 2023-04-29 07:45:04 +02:00
Felix Roos 0b2a4fda44 update supabase-js 2023-04-29 07:24:03 +02:00
Felix Roos efdce6d4cd update astro 2023-04-29 06:55:34 +02:00
Felix Roos c0b0ea4493 remove preact 2023-04-29 06:25:19 +02:00
Felix Roos 0fcec0a0ca upgrade jsdoc 2023-04-28 13:05:50 +02:00
Felix Roos c0701d8a35 Merge remote-tracking branch 'origin/main' into patchday 2023-04-28 12:50:20 +02:00
Felix Roos ae51092044 Merge pull request #556 from tidalcycles/fix-prebake
fix: make soundfonts import dynamic
2023-04-28 12:46:56 +02:00
Felix Roos b7fcccb8db fix: make soundfonts import dynamic
- it broke the whole docs page
2023-04-28 12:42:07 +02:00
Felix Roos b21a52f5f3 update @vite-pwa/astro 2023-04-28 12:23:10 +02:00
Felix Roos 2bdcfe13e6 update @vitest/ui 2023-04-28 12:20:35 +02:00
Felix Roos 12a97ec429 update nanostores 2023-04-28 12:18:45 +02:00
Felix Roos 99298ce9f2 update vite-plugin-pwa 2023-04-28 12:14:07 +02:00
Felix Roos a0ed25d373 use vitests@^0.28.0 in packages 2023-04-28 12:12:05 +02:00
Felix Roos dc6c29c668 update vitest to ^0.28.0 2023-04-28 12:08:48 +02:00
Felix Roos 3a85f28b5c install with pnpm 8.3.1 2023-04-28 10:33:47 +02:00
Felix Roos 95c44b1ce2 Merge pull request #553 from tidalcycles/highlighting-colors
fix: colorable highlighting
2023-04-22 15:43:22 +02:00
Felix Roos b88e0ecb78 fix: colorable highlighting 2023-04-22 15:25:00 +02:00
Felix Roos c26f6b72d9 Merge pull request #550 from tidalcycles/fix-soundfont-loading
fix: load soundfonts in prebake
2023-04-06 00:11:02 +02:00
Felix Roos 6cd3cc96a3 fix: do not prebake in tests
+ pull piano function to separate file for tests
2023-04-06 00:08:23 +02:00
Felix Roos c138cf0b76 fix: load soundfonts in prebake 2023-04-06 00:00:49 +02:00
Felix Roos 8edb086178 Merge pull request #548 from tidalcycles/stop-pause
fix: reset time on stop
2023-03-29 22:23:07 +02:00
Felix Roos 0f74b5a4b1 Merge pull request #547 from tidalcycles/fix-mini-whitespace
fix: allow whitespace at the end of a mini pattern
2023-03-29 22:16:37 +02:00
Felix Roos 6de2feff05 fix: reset time on stop 2023-03-29 22:05:13 +02:00
Felix Roos a9811ee955 fix: allow whitespace at the end of a mini pattern
- fixes #546
2023-03-29 21:57:55 +02:00
Felix Roos 98b6c11a82 Merge pull request #544 from tidalcycles/fonts
add firacode font
2023-03-24 22:10:55 +01:00
Felix Roos 3df2929d12 dummy commit (github cert error :-/) 2023-03-24 22:06:40 +01:00
Felix Roos 30d1f423cb fix: remove loading state on eval error 2023-03-24 21:50:50 +01:00
Felix Roos e0c5566f35 add 2 FiraCode fonts 2023-03-24 21:23:37 +01:00
Felix Roos c5a2ae47d7 Merge pull request #542 from tidalcycles/loading-animation
feat: add loader bar to animate loading state
2023-03-24 12:54:20 +01:00
Felix Roos 17654b885b feat: add loader bar to animate loading state 2023-03-24 12:41:00 +01:00
Felix Roos acaf0ca0af Merge pull request #539 from tidalcycles/setcps-reset-only-on-shuffle
do not reset cps before eval #517
2023-03-23 22:39:26 +01:00
Felix Roos 6a201be1fd Merge remote-tracking branch 'origin/main' into setcps-reset-only-on-shuffle 2023-03-23 22:35:57 +01:00
Felix Roos 8617b9164e do not reset cps before eval #517 2023-03-23 22:34:25 +01:00
Felix Roos 991e5f1b3c Merge pull request #538 from tidalcycles/improve-loading
improve initial loading + wait before eval
2023-03-23 22:27:31 +01:00
Felix Roos 55c533c947 improve initial loading + wait before eval 2023-03-23 21:56:20 +01:00
Felix Roos d17543d5d9 Merge pull request #537 from tidalcycles/fix-keypress-period
fix period key for dvorak + remove duplicated code
2023-03-23 21:40:19 +01:00
Felix Roos 73169563c4 fix period key for dvorak + remove duplicated code 2023-03-23 21:37:38 +01:00
Felix Roos d351cb9f7f Merge pull request #535 from tidalcycles/update-lerna
Update lerna
2023-03-23 11:44:56 +01:00
Felix Roos 251be60630 update package publishing guide 2023-03-23 11:39:33 +01:00
Felix Roos 18d7222804 Publish
- @strudel.cycles/core@0.7.2
 - @strudel.cycles/csound@0.7.1
 - @strudel.cycles/eval@0.7.1
 - @strudel.cycles/midi@0.7.1
 - @strudel.cycles/mini@0.7.2
 - @strudel.cycles/osc@0.7.1
 - @strudel.cycles/react@0.7.1
 - @strudel.cycles/serial@0.7.1
 - @strudel.cycles/soundfonts@0.7.1
 - @strudel.cycles/tonal@0.7.1
 - @strudel.cycles/tone@0.7.1
 - @strudel.cycles/transpiler@0.7.1
 - @strudel.cycles/webaudio@0.7.1
 - @strudel.cycles/webdirt@0.7.1
 - @strudel.cycles/xen@0.7.1
2023-03-23 11:34:07 +01:00
Felix Roos ff1c37d361 bump core + mini to 0.7.1 2023-03-23 11:26:23 +01:00
Felix Roos 3abe6db3de Publish
- @strudel.cycles/core@0.7.0
 - @strudel.cycles/csound@0.7.0
 - @strudel.cycles/eval@0.7.0
 - @strudel.cycles/midi@0.7.0
 - @strudel.cycles/mini@0.7.0
 - @strudel.cycles/osc@0.7.0
 - @strudel.cycles/react@0.7.0
 - @strudel.cycles/serial@0.7.0
 - @strudel.cycles/soundfonts@0.7.0
 - @strudel.cycles/tonal@0.7.0
 - @strudel.cycles/tone@0.7.0
 - @strudel.cycles/transpiler@0.7.0
 - @strudel.cycles/webaudio@0.7.0
 - @strudel.cycles/webdirt@0.7.0
 - @strudel.cycles/xen@0.7.0
2023-03-23 11:21:02 +01:00
Felix Roos b9ca9d3b06 update lerna 2023-03-23 11:17:21 +01:00
Felix Roos 9bbc04843d Merge pull request #534 from tidalcycles/soundfont-freq-support
feat: add freq support to gm soundfonts
2023-03-23 10:21:55 +01:00
Felix Roos ddf61a6438 Merge pull request #531 from ijc8/main
Maintain random seed state in parser, not globally
2023-03-23 10:18:58 +01:00
Felix Roos ba35a81e9b - feat: add freq support to gm soundfonts
- refactor: toMidi -> noteToMidi
- refactor: fromMidi -> midiToFreq
2023-03-23 10:18:24 +01:00
Felix Roos 13133583ca Merge pull request #527 from bwagner/main
FIXES: alias pm for polymeter
2023-03-21 22:35:17 +01:00
Felix Roos e91b981740 Merge pull request #529 from revolunet/patch-1
fix(footer): fix link to tidalcycles
2023-03-21 22:29:06 +01:00
Bernhard Wagner 1458ee64ec FIXES: alias pm for polymeter 2023-03-21 21:20:57 +01:00
Ian Clester 4e2a5e1663 Add pairwise independence test, tweak randOffset 2023-03-20 22:27:35 -04:00
Ian Clester c98b0e9687 Format code with prettier 2023-03-20 19:19:42 -04:00
Ian Clester 4e25990de9 Uncomment test for random choice operator (|) 2023-03-20 17:46:57 -04:00
Ian Clester 4b51f1a3fc Sync up ? with degrade() 2023-03-20 15:26:27 -04:00
Ian Clester 5490b01004 Maintain random seed state in parser, not globally 2023-03-20 14:59:43 -04:00
Julien Bouquillon 43176e1f1d fix(footer): fix link to tidalcycles 2023-03-20 01:38:21 +01:00
Bernhard Wagner fffd3c07ca FIXES: alias pm for polymeter
(return statement was missing)
2023-03-18 22:12:12 +01:00
Felix Roos 952bd38e70 Merge pull request #525 from bwagner/patch-4
Update intro.mdx
2023-03-18 20:25:21 +01:00
Felix Roos 8589f5cc89 Merge pull request #524 from bwagner/patch-3
Update samples.mdx
2023-03-18 20:24:38 +01:00
Bernhard Wagner ec594d52f8 Update intro.mdx
shortly -> concisely
2023-03-18 19:31:57 +01:00
Bernhard Wagner 848cbf9c60 Update samples.mdx
fixes few typos and the former `samples` tab is now `sounds`
2023-03-18 15:37:59 +01:00
Felix Roos e02be7dd9a Merge pull request #521 from tidalcycles/fix-envelope
fix: envelopes in chrome
2023-03-17 09:03:10 +01:00
Felix Roos 33d35e47a6 fix: envelope in chrome 2023-03-17 08:56:05 +01:00
Felix Roos 18d62b32c2 Merge pull request #516 from tidalcycles/source-nodes
registerSound API + improved sounds tab + regroup soundfonts
2023-03-16 16:13:30 +01:00
Felix Roos 58ed51b49c snapshot 2023-03-16 15:49:56 +01:00
Felix Roos 9f9fe529e4 fix only tune that uses soundfonts 2023-03-16 15:49:08 +01:00
Felix Roos aad721890a pass duration to source callback 2023-03-16 15:48:59 +01:00
Felix Roos e63a5d10c8 regroup sounds
- extra tab for drum-machines
- combine synths and soundfonts
2023-03-16 15:21:16 +01:00
Felix Roos 15681262de use only _ for easier copying via double click 2023-03-16 15:19:38 +01:00
Felix Roos b5d3aa81f9 format 2023-03-16 12:25:08 +01:00
Felix Roos a688061616 group soundfonts into readable names 2023-03-16 12:23:58 +01:00
Felix Roos f788d347ec add envelope to soundfonts 2023-03-15 23:02:05 +01:00
Felix Roos a33ce67dd4 fix: endless preview 2023-03-15 23:01:56 +01:00
Felix Roos 8a22c5627a fix: cut glitches due to envelope release trouble 2023-03-15 22:42:03 +01:00
Felix Roos 7b529a30f4 style sounds tab 2023-03-14 22:54:12 +01:00
Felix Roos 4910b34f26 Merge pull request #518 from tidalcycles/fonts
add 2 illegible fonts
2023-03-14 21:54:52 +01:00
paikwiki 74ad521fc9 Fix typo on packages.mdx
I found a broken link.

Because it omits protocol, page move to wrong page(https://strudel.tidalcycles.org/github.com/tidalcycles/strudel)

I add protocol(https://) on that link.
2023-03-14 13:01:40 +09:00
Felix Roos 6a73b43e3a add 2 illegible fonts 2023-03-12 21:16:46 +01:00
Felix Roos b59b26460d soundfont list curation part 2 2023-03-12 20:48:29 +01:00
Felix Roos aa324ae25d start curating the soundfont list 2023-03-10 11:33:55 +01:00
Felix Roos ff412f6396 level down soundfonts
+ do not load in prebake (breaks static rendering)
+ instead load on import
2023-03-09 23:19:19 +01:00
Felix Roos ac148b2f32 register soundfonts as sounds too 2023-03-09 22:48:40 +01:00
Felix Roos 6f5d096e6d rename setSound to registerSound 2023-03-09 21:32:40 +01:00
Felix Roos ff1e6714c6 document setSound api 2023-03-09 21:27:24 +01:00
Felix Roos 41d82eaadf add cleanup to sound tab 2023-03-09 10:53:35 +01:00
Felix Roos be6b011204 proper audio node cleanup
+ cleanup onTriggerSample
2023-03-09 10:46:45 +01:00
Felix Roos 65e48c05f0 sounds onset and offset can be triggered independently
+ sounds tab now supports mousedown / mouseup to listen
2023-03-09 08:35:20 +01:00
Felix Roos cee08ea67d sounds list can now filter out defaults 2023-03-08 00:33:21 +01:00
Felix Roos 35ef26c013 can now pass meta data to setSound
+ added types for synth and sample
+ list sample count for samples in sounds tab (as before)
2023-03-07 21:43:01 +01:00
Felix Roos b08a0b8102 use nanostore for soundmap
+ rename tab samples to sounds
+ listed sounds are now reactive
2023-03-06 23:11:09 +01:00
Felix Roos 220342154b Merge pull request #474 from bwagner/main
Update README.md
2023-03-06 22:55:00 +01:00
Bernhard Wagner ef7182cd76 Merge branch 'tidalcycles:main' into main 2023-03-06 20:15:16 +01:00
Felix Roos 6059c69995 first draft of soundMap to register keys for s
+ refactor sampler to use it
+ refactor synth to use it
+ add 'source' control
+ wip: samples tab
+ wip: webadirt ?
+ wip: soundfonts
2023-03-05 23:27:37 +01:00
Felix Roos 892d8ba152 Merge pull request #508 from tidalcycles/arrange
add arrange function
2023-03-05 14:52:30 +01:00
Felix Roos da11069f75 Merge pull request #514 from tidalcycles/react-update
update react to 18
2023-03-05 14:29:08 +01:00
Alex McLean bf72908dc9 Support list syntax in mininotation (#512)
fixes #504

* support list syntax in mininotation
* support compound controls
* remove redundant : splitting of s/n and note/n from webaudio
* patternable scale names
2023-03-04 18:06:18 +00:00
Felix Roos 81ab5c78e2 update react to 18 2023-03-03 20:38:20 +01:00
Felix Roos de503c7d63 add snapshot 2023-03-03 20:30:35 +01:00
Felix Roos 487ccb90a1 add arrange function 2023-03-03 20:17:23 +01:00
Felix Roos 4bfeaa47bf Merge pull request #502 from tidalcycles/scale-space-alternative
can now use : as a replacement for space in scales
2023-03-03 12:40:23 +01:00
Felix Roos 9a4d8036a6 add test 2023-03-03 12:38:11 +01:00
Felix Roos a50bd6375d use : instead of _ 2023-03-03 12:37:25 +01:00
Felix Roos 14508e91a9 can now use _ as a replacement for space in scales 2023-03-02 20:39:06 +01:00
Alex McLean 2d5064bd5b Reinstate slice and splice (#500)
Reinstate slice/splice, fixing up "unit" param using new global cps
2023-03-02 14:44:41 +00:00
Felix Roos fdc4819e39 Merge pull request #501 from tidalcycles/nano-repl-highlighting-fix
fix: nano-repl highlighting
2023-03-02 14:49:30 +01:00
Felix Roos efddbb616b fix: nano-repl highlighting 2023-03-02 14:47:15 +01:00
Alex McLean db4d0f26a8 Add control aliases (#497)
* add and simplify control aliases, fixes #496
* roomsize now alias of room
* simplify webaudio param handling
---------

Co-authored-by: Felix Roos <flix91@gmail.com>
2023-03-02 13:17:12 +00:00
Felix Roos 06cffbc31b add readme to nano repl 2023-03-01 12:57:33 +01:00
Felix Roos 3cfb0f4c76 Merge pull request #493 from tidalcycles/cps
implement cps in scheduler
2023-03-01 09:27:26 +01:00
Felix Roos 436ba067bc reset cps before eval 2023-03-01 09:23:01 +01:00
Felix Roos f8724bf47e comment out cps ui 2023-03-01 00:05:23 +01:00
Felix Roos 1f7e293204 add setcps to global scope 2023-02-28 23:56:11 +01:00
Felix Roos 86d2652258 pass cps to hap trigger 2023-02-28 23:54:56 +01:00
Felix Roos f5c0cc2e2d no need to warn if evalScope is called more often 2023-02-28 23:54:40 +01:00
Felix Roos 4463d4a417 Update README.md 2023-02-28 23:25:40 +01:00
Felix Roos df35a5c9b1 Merge pull request #491 from tidalcycles/refactor-react
react style fixes
2023-02-28 23:06:29 +01:00
Felix Roos dda93b3c13 Update @strudel.cycles/react to 0.6.4 2023-02-28 23:02:52 +01:00
Felix Roos 5de40b6bf5 fix disabled button take 2 2023-02-28 23:02:28 +01:00
Felix Roos dcbe799d25 Merge pull request #490 from tidalcycles/refactor-react
refactor react package
2023-02-28 22:57:19 +01:00
Felix Roos a5641aef03 Update @strudel.cycles/react to 0.6.3 2023-02-28 22:52:57 +01:00
Felix Roos 668f97a4c8 refactor react package for publishing 2023-02-28 22:48:50 +01:00
Felix Roos e9d577496b fix disabled button 2023-02-28 22:48:06 +01:00
Felix Roos 66fba947ac Update @strudel.cycles/react to 0.6.2 2023-02-28 22:40:52 +01:00
Felix Roos 18c7e02609 fix: minirepl styles for package 2023-02-28 22:40:18 +01:00
Felix Roos 7e1351507a add variables to react tailwind config 2023-02-28 22:17:24 +01:00
Felix Roos 032acbd27c comment out autocomplete 2023-02-28 22:11:17 +01:00
Felix Roos 8b51f0fbd2 Update @strudel.cycles/react to 0.6.1 2023-02-28 21:57:03 +01:00
Felix Roos ead5942ef0 implement cps + add baasic tempo control ui 2023-02-28 13:00:35 +01:00
Felix Roos cfe369d9fe Merge pull request #488 from tidalcycles/algolia
add algolia creds + optimize sidebar for crawling
2023-02-27 23:47:34 +01:00
Felix Roos 2750a3c130 fix pseudo relative links 2023-02-27 22:59:50 +01:00
Felix Roos a7f6d6ecac add algolia config 2023-02-27 22:59:38 +01:00
Felix Roos 3680282450 Merge pull request #485 from tidalcycles/app-height-fix
fix app height
2023-02-27 19:28:09 +01:00
Felix Roos 3b3435c999 change 1px 2023-02-27 19:24:49 +01:00
Felix Roos e2ae6278c2 Merge pull request #484 from tidalcycles/revert-wip-390
Revert "Another attempt at composable functions - WIP (#390)"
2023-02-27 16:04:20 +01:00
Alex McLean 37d6723e3c Update mini-notation.mdx (#365)
`x!n` is no longer an alias for `[x*n]@n` and the behaviour is a bit different. Probably best to remove this line in case it confuses someone?
2023-02-27 14:45:19 +00:00
Felix Roos 961bbf6f55 Revert "Another attempt at composable functions - WIP (#390)"
This reverts commit cbae355896.
2023-02-27 15:20:49 +01:00
Felix Roos fc71d349ed Merge pull request #482 from tidalcycles/docs
docs: packages + offline
2023-02-27 12:52:09 +01:00
Felix Roos 97c8ab0f71 fix format 2023-02-27 12:49:23 +01:00
Felix Roos 28534ea547 add screenshots 2023-02-27 12:47:38 +01:00
Felix Roos 1a75b79a33 better offline docs
fixes https://github.com/tidalcycles/strudel/issues/424
2023-02-27 12:34:17 +01:00
Felix Roos 75dfb0af35 add dependencygraph 2023-02-27 11:12:21 +01:00
Felix Roos 073fa09648 packages doc 2023-02-27 11:10:47 +01:00
Felix Roos 3015e7b203 Merge pull request #480 from tidalcycles/fix-array-args
Fix array args
2023-02-25 14:26:49 +01:00
Felix Roos 7ac0cdc0f9 fix: lint error 2023-02-25 14:18:23 +01:00
Felix Roos 49234183a3 Merge remote-tracking branch 'origin/main' into fix-array-args 2023-02-25 14:13:55 +01:00
Felix Roos ed7763df92 fix: reify after sequence to preserve array
ref https://github.com/tidalcycles/strudel/issues/383#issuecomment-1399514090
2023-02-25 14:13:39 +01:00
Felix Roos b818a02f76 Merge pull request #478 from tidalcycles/midi-fleshout
midi cc support
2023-02-25 12:33:22 +01:00
Felix Roos 886f8449fd add midichan + docs 2023-02-25 12:23:01 +01:00
Felix Roos 5de6643604 midi: support ccn and ccv 2023-02-24 10:15:21 +01:00
Felix Roos 6283273d81 add helper hap.ensureObjectValue 2023-02-24 10:15:06 +01:00
Bernhard Wagner 5506d18bc5 Update README.md
npm -> pnpm
2023-02-23 18:28:11 +01:00
Felix Roos c8f8f02a46 Merge pull request #473 from tidalcycles/fix-hashes
fix: hash links
2023-02-23 00:11:04 +01:00
Felix Roos 4c5d6f1d6c fix: hash links 2023-02-23 00:04:53 +01:00
Felix Roos f349e36345 Merge pull request #467 from tidalcycles/vim-mode
settings tab with vim / emacs modes + additional themes and fonts
2023-02-22 22:54:39 +01:00
Felix Roos 1574c4ab13 Merge pull request #471 from bwagner/patch-1
Update input-output.mdx
2023-02-22 22:53:22 +01:00
Felix Roos 0dc9bc3ab6 Merge pull request #464 from bwagner/main
FIXES: freqs instead of pitches
2023-02-22 22:52:49 +01:00
Felix Roos 0006d57a4a move isZen to nanostore
+ correctly parse non strings in store
2023-02-22 22:47:33 +01:00
Felix Roos 70f7e73b9a store footer tab + latest code in nanostore 2023-02-22 22:23:54 +01:00
Felix Roos b67b049802 refactor settings to nanostores 2023-02-22 22:04:39 +01:00
Felix Roos ff99dbcd22 customizable font family 2023-02-22 20:28:22 +01:00
Felix Roos 0198697737 Merge pull request #472 from tidalcycles/osc-fix
fix: osc should not return a promise
2023-02-22 20:01:00 +01:00
Felix Roos a742a71f67 fix: osc should not return a promise 2023-02-22 19:50:37 +01:00
Felix Roos 8f6c1531fa more contrast for blackscreen theme 2023-02-22 19:45:06 +01:00
Bernhard Wagner d9f56f11cb Merge pull request #1 from tidalcycles/main
a
2023-02-22 17:15:00 +01:00
Bernhard Wagner 7ff877464f Update input-output.mdx
npm -> pnpm
2023-02-22 17:06:15 +01:00
Alex McLean 7c367eb1e8 slice and splice (#466)
Implements `slice` and `splice` from tidal, intended for beat slicing
2023-02-22 11:51:31 +00:00
Felix Roos 20848aac09 fix store import 2023-02-19 23:28:46 +01:00
Felix Roos 7716574076 use terminal font for console + samples 2023-02-19 23:28:33 +01:00
Felix Roos 89cd0c769b fix bluescreen line bg 2023-02-19 23:27:56 +01:00
Felix Roos a21b3d788f add settings reset button 2023-02-19 22:32:28 +01:00
Felix Roos 7994ba8b38 get rid of all hard coded colors 2023-02-19 22:18:32 +01:00
Felix Roos 81b4cb2f16 more themes + fonts 2023-02-19 22:18:12 +01:00
Felix Roos 14af1df6a3 define font + fix app height 2023-02-19 20:04:30 +01:00
Felix Roos ac3bd7d7db rename algoboy theme + add font 2023-02-19 20:04:19 +01:00
Felix Roos 632e8e9634 use css var for highlighting color 2023-02-19 20:03:12 +01:00
Felix Roos 1e3f09f69b add some custom themes 2023-02-19 18:53:35 +01:00
Felix Roos f3f18ffca7 fix app height for ios 2023-02-19 13:50:08 +01:00
Felix Roos ceb3aa0627 add emacs mode + fontSize slider 2023-02-19 13:49:55 +01:00
Felix Roos 014555fe5d add vim toggle to settings
+ added persistent global state store
+ refactored themes to use the new store
2023-02-19 01:51:31 +01:00
Alex McLean fdb76867a7 weave and weaveWith (#465)
Added weave and weaveWith from tidal
2023-02-18 00:00:18 +00:00
Felix Roos 57157fde9c Merge branch 'main' into docs 2023-02-17 21:53:02 +01:00
Felix Roos 4a3540cf2b encapsulate footer components 2023-02-17 21:48:45 +01:00
Felix Roos 540bd938f2 remove unused Footer
+ fix AvatarList (still unused)
2023-02-17 21:48:34 +01:00
Bernhard Wagner c6fbebd996 FIXES: freqs instead of pitches 2023-02-17 19:05:09 +01:00
Felix Roos 18d3a7e23a add vim extension (hard coded) 2023-02-17 10:41:49 +01:00
Alex McLean cbae355896 Another attempt at composable functions - WIP (#390)
Summary of changes:

- Made unary functions composable, including controls. So e.g. s("bd sd").every(3,fast(2).iter(4).n(4)) works the same as s("bd sd").every(3,x => x.fast(2).iter(4).n(4))
- Made operators/alignments composable too, so s("bd sd").every(3, set.squeeze.n(3, 4)) works
- Patterns are not treated as functions, so s("bd sd").every(3, n(5)) is an annoying runtime error. s("bd sd").every(3, set.n(5)) does work though.

Other minor changes:

- standardised alignment 'squeezeOut' as lowercase 'squeezeout'
- made firstCycleValues turn haps sorted in order of 'part'
2023-02-16 23:15:21 +00:00
Felix Roos 924e8a764a Merge pull request #461 from bwagner/main
FIXES: Warning about jsxBracketSameLine deprecation
2023-02-16 20:38:45 +01:00
Bernhard Wagner 40e629cb0e ADDS: Continuation to Testing 2023-02-16 15:24:44 +01:00
Bernhard Wagner 99ec261f79 ADDS: Continuation to Docs 2023-02-16 15:23:34 +01:00
Bernhard Wagner 9daea5bbc2 ADDS: Continuation to REPL 2023-02-16 15:22:35 +01:00
Bernhard Wagner 4704c03d48 ADDS: Continuation to Strudel vs Tidal 2023-02-16 15:21:25 +01:00
Bernhard Wagner 9dbf52bedb ADDS: Continuation to Pattern Alignment 2023-02-16 15:20:26 +01:00
Bernhard Wagner cfd04ab7fa ADDS: Continuation to Patterns 2023-02-16 15:19:14 +01:00
Bernhard Wagner 33dbf75e3b ADDS: Continuation to Offline 2023-02-16 15:18:32 +01:00
Bernhard Wagner 8ffaeeb171 ADDS: Continuation to MIDI and OSC 2023-02-16 15:16:51 +01:00
Bernhard Wagner 451828e5d4 ADDS: Continuation to Tonal Modifiers 2023-02-16 15:15:54 +01:00
Bernhard Wagner 176877f2b8 ADDS: Continuation to Accumulation Modifiers 2023-02-16 15:14:38 +01:00
Bernhard Wagner 61b0d08b5f ADDS: Continuation to Conditional Modifiers 2023-02-16 15:12:37 +01:00
Bernhard Wagner f50a6ce1ae ADDS: Continuation to Signals 2023-02-16 15:11:28 +01:00
Bernhard Wagner 8549d6ea8b ADDS: Continuation to Control Parameters 2023-02-16 15:09:37 +01:00
Bernhard Wagner 90a90a87a5 ADDS: Continuation to Time Modifiers 2023-02-16 15:08:45 +01:00
Bernhard Wagner 760bdea521 ADDS: Continuation to Pattern Constructors 2023-02-16 15:07:03 +01:00
Bernhard Wagner 0fd783e83f ADDS: Continuation to Functional JavaScript API 2023-02-16 15:03:58 +01:00
Bernhard Wagner 42caa9058b ADDS: Continuation to Synths 2023-02-16 15:00:17 +01:00
Bernhard Wagner 9ab315ac2c ADDS: Continuation to Samples 2023-02-16 14:58:02 +01:00
Bernhard Wagner a08ad07537 ADDS: Continuation to Csound 2023-02-16 14:55:01 +01:00
Bernhard Wagner c6ce763f7c FIXES: Warning about jsxBracketSameLine deprecation 2023-02-16 14:46:33 +01:00
Felix Roos 70d1eb17a7 Merge branch 'main' into vim-mode 2023-02-16 11:41:01 +01:00
Felix Roos 0393205eda Merge pull request #438 from bwagner/patch-8
Update synths.mdx
2023-02-14 22:11:02 +01:00
Bernhard Wagner 5c05a5a63e Update synths.mdx
in future -> in the future
ADDS: Continuation to Audio Effects.
2023-02-14 22:08:40 +01:00
Felix Roos b01d9f849b Merge pull request #437 from bwagner/patch-5
Update mini-notation.mdx
2023-02-14 19:54:41 +01:00
Felix Roos 0ab904275c Merge pull request #436 from bwagner/patch-4
Update code.mdx
2023-02-14 19:54:24 +01:00
Bernhard Wagner 5f82a86801 Update mini-notation.mdx
descreases -> decreases
twice a cycle -> twice per cycle
2023-02-14 19:40:03 +01:00
Bernhard Wagner 13a5d8de86 Update code.mdx
The code example says "sine", but the description says "sawtooth".
2023-02-14 19:08:47 +01:00
Felix Roos f024b71808 Update CONTRIBUTING.md
add more infos on code style, eslint and tests
2023-02-14 18:16:39 +01:00
Felix Roos cd35a17904 Merge pull request #433 from tidalcycles/fix-anchors
Fix anchors
2023-02-13 00:43:29 +01:00
Felix Roos be3f68ed06 fix comment 2023-02-13 00:42:16 +01:00
Felix Roos 64b8fd9584 fix: right sidebar anchors earlier 2023-02-13 00:41:42 +01:00
Felix Roos b001d1d0f1 update lockfile 2023-02-13 00:37:20 +01:00
Felix Roos 64ad75c79e fix: anchor links
fixes https://github.com/tidalcycles/strudel/issues/432
+ fix style regression in mini repl
2023-02-13 00:35:40 +01:00
Felix Roos 12eb361d69 remove slash before anchor link 2023-02-12 20:13:59 +01:00
Felix Roos dd51bd0a2f Merge pull request #427 from tidalcycles/docs
autocomplete preparations
2023-02-11 21:02:11 +01:00
Felix Roos 0fb478a7c8 no autocomplete until upstream merge 2023-02-11 20:55:35 +01:00
Felix Roos 9694ecf55b autocomplete dark / light 2023-02-11 13:02:04 +01:00
Felix Roos fe80478b8a Merge remote-tracking branch 'origin/main' into docs 2023-02-10 23:18:04 +01:00
Felix Roos a253c26bee Merge pull request #431 from tidalcycles/themes
Themes
2023-02-10 23:14:47 +01:00
Felix Roos a500f983f5 Merge branch 'main' into themes 2023-02-10 22:59:52 +01:00
Felix Roos 3579b6f8f3 dynamic highlight color
+ refactor hooks
2023-02-10 22:52:34 +01:00
Felix Roos 14cb954213 themed minirepl
+ add strudelTheme
+ add lineBackground with opacity
+ add some missing light flags
+ add fallback css variables for non js context
2023-02-10 21:42:27 +01:00
Felix Roos 6170eef441 format 2023-02-10 20:09:23 +01:00
Felix Roos ddb9af4d57 themify rest of layout (except minirepls) 2023-02-10 20:07:36 +01:00
Felix Roos 6db2c0bf93 only invert prose for dark themes 2023-02-10 18:34:02 +01:00
Felix Roos 46f70e6a5e persisted theme + add all settings 2023-02-10 12:54:15 +01:00
Felix Roos 0b994a1b0f switchable css variables for theming 2023-02-10 11:32:36 +01:00
Felix Roos 0326244956 update themes 2023-02-10 09:25:58 +01:00
Felix Roos ea1b2252fc remove unused descriptions
+ fix some titles
+ comment out unfinished packages page
+ start offline page
2023-02-09 21:42:48 +01:00
Felix Roos 0da25ea7cc Merge pull request #429 from tidalcycles/minirepl-keyboard-support
minirepl: add keyboard shortcuts
2023-02-09 19:22:56 +01:00
Felix Roos 3209afa4ff minirepl: add keyboard shortcuts 2023-02-09 19:20:44 +01:00
Felix Roos 33e2631e5d update snapshot 2023-02-09 18:48:34 +01:00
Felix Roos f02a41b675 fix param description 2023-02-09 18:44:41 +01:00
Felix Roos f497d7b212 reactify autocomplete info 2023-02-09 18:37:29 +01:00
Felix Roos 0f18f5eb81 remove logs 2023-02-09 14:16:37 +01:00
Felix Roos 8da81104aa doc: note 2023-02-09 12:42:37 +01:00
Felix Roos 97cbdc6b0f use jsdoc in autocomplete, still not context aware
+ add noAutocomplete flags
+ add superdirtOnly flags
2023-02-09 12:19:38 +01:00
Felix Roos 7f53f4e36b Merge branch 'main' into docs 2023-02-09 08:57:20 +01:00
Felix Roos c350f262e6 Merge pull request #425 from tidalcycles/pwa
add cdn.freesound to cache list
2023-02-09 08:56:42 +01:00
Felix Roos 3e727893bf basic theme picker 2023-02-08 23:43:02 +01:00
Felix Roos 2a2c7437e4 add cdn.freesound to cache list 2023-02-08 21:18:03 +01:00
Felix Roos 4f0885d3af Merge branch 'main' into themes 2023-02-08 20:49:20 +01:00
Felix Roos 5656cd2fc6 Merge pull request #421 from tidalcycles/pwa
add more offline caching
2023-02-08 20:36:00 +01:00
Felix Roos b6e42876ad fix cache rule + disable service worker in dev 2023-02-08 20:32:03 +01:00
Felix Roos 3671344867 add freesound + shabda to offline cache rule 2023-02-08 20:26:44 +01:00
Felix Roos 30b149053c basic theme switcher 2023-02-08 18:54:34 +01:00
Felix Roos cdd40df9d3 disable sw in dev 2023-02-08 18:54:19 +01:00
Felix Roos 9d661808ba Merge pull request #419 from tidalcycles/pwa
add caching strategy for missing file types + cache all samples loaded from github
2023-02-07 22:08:01 +01:00
Felix Roos 6a5d849b3c add caching strategy for missing file types
+ cache all samples loaded from github
2023-02-07 21:50:08 +01:00
Felix Roos 25bbd73a90 Merge pull request #417 from tidalcycles/pwa
PWA with offline support
2023-02-06 23:29:56 +01:00
Felix Roos 3d27a5f8c7 format 2023-02-06 21:06:33 +01:00
Felix Roos 44ef372399 update og meta data 2023-02-06 21:05:28 +01:00
Felix Roos fd09dff381 basic pwa setup 2023-02-06 20:57:34 +01:00
Felix Roos 10580a0bec change rocket to strudel 2023-02-06 20:21:09 +01:00
Felix Roos f3f87b0a46 dont lint json 2023-02-06 20:20:45 +01:00
Felix Roos ac606bcf71 Update README.md 2023-02-05 23:16:38 +01:00
alex bb50df07e7 iclc reviews 2023-02-05 21:01:02 +00:00
Felix Roos f7ac033e1c Merge pull request #411 from tidalcycles/docs
improve samples doc
2023-02-05 17:27:32 +01:00
Felix Roos a1043352c1 Merge pull request #413 from tidalcycles/remove-google
google gtfo
2023-02-05 17:27:09 +01:00
Felix Roos e15fecf6cf google gtfo 2023-02-05 17:19:32 +01:00
Felix Roos 3e99f345ef better headings 2023-02-05 16:40:29 +01:00
Felix Roos 0a77770ef3 remove double directive 2023-02-05 16:37:00 +01:00
Felix Roos 379b8392dd add snapshot 2023-02-05 16:32:51 +01:00
Felix Roos 0fdae70461 improve samples doc 2023-02-05 16:28:43 +01:00
Felix Roos 087423c754 Merge pull request #409 from tidalcycles/docs
improve effects doc
2023-02-05 16:27:59 +01:00
Felix Roos ce64c98fb7 add adsr image link 2023-02-05 15:08:17 +01:00
Felix Roos e11a8a9dbb Merge pull request #410 from bwagner/patch-3
Update effects.mdx
2023-02-05 14:56:03 +01:00
Bernhard Wagner ef4a68a24d Update effects.mdx
Wether -> Whether
2023-02-05 14:54:27 +01:00
Felix Roos 0ec65c85d3 fix examples + snapshots 2023-02-05 14:52:01 +01:00
Felix Roos 74326f226d format 2023-02-05 14:42:08 +01:00
Felix Roos 554e0d7a39 remove envelope section from synths page 2023-02-05 14:38:47 +01:00
Felix Roos 1b99ac92dd categorize effects + add envelope doc
+ use short, more logical filter params as default
2023-02-05 14:34:59 +01:00
Felix Roos ff0b77908a Merge branch 'main' into docs 2023-02-05 14:34:16 +01:00
Felix Roos 83d19638ba Merge pull request #407 from tidalcycles/shabda-doc
add shabda doc
2023-02-03 19:54:47 +01:00
Felix Roos a7d484b1a8 add shabda doc 2023-02-03 19:53:01 +01:00
Felix Roos d87beb37b8 Merge pull request #405 from tidalcycles/fix-share-on-subpath
fix: share url on subpath
2023-02-02 21:45:56 +01:00
Felix Roos dcdb383960 fix: share url on subpath
fixes https://github.com/tidalcycles/strudel/issues/389
2023-02-02 21:43:24 +01:00
Felix Roos 478a7e95ea Merge pull request #404 from tidalcycles/csound-update
update csound + fix sound output
2023-02-02 21:35:45 +01:00
Felix Roos f7b3b582cc update csound + fix sound output
see https://github.com/csound/csound/issues/1690#issuecomment-1414301145
2023-02-02 21:31:44 +01:00
Felix Roos d1719dc277 Merge pull request #403 from tidalcycles/downgrade-csound
pin @csound/browser to 6.18.3 + bump
2023-02-02 19:53:36 +01:00
Felix Roos 9d8c812aa3 pin @csound/browser to 6.18.3 + bump 2023-02-02 19:51:16 +01:00
Felix Roos 2e390acce9 hotfix: deploy workflow install command 2023-02-01 23:04:13 +01:00
Felix Roos e04797d891 Merge pull request #400 from tidalcycles/awaitable-audio-init
release webaudio
2023-02-01 22:47:26 +01:00
Felix Roos fb6195b081 bump webaudio 2023-02-01 22:45:53 +01:00
Felix Roos c6491a3ccd Merge pull request #399 from tidalcycles/awaitable-audio-init
can now await initAudio + initAudioOnFirstClick
2023-02-01 22:45:16 +01:00
Felix Roos 014ae2107e can now await initAudio + initAudioOnFirstClick 2023-02-01 22:42:25 +01:00
Felix Roos 1457eb9d19 Merge pull request #398 from tidalcycles/fix-minirepl-styles
fix: minirepl styles
2023-02-01 22:32:18 +01:00
Felix Roos 6f5f8cc7d8 fix: minirepl styles 2023-02-01 22:30:24 +01:00
Felix Roos 9ec3fee455 Merge pull request #396 from tidalcycles/pnpm
proper builds + use pnpm workspaces
2023-02-01 22:17:18 +01:00
Felix Roos 2d52168c26 trash obsolete package-lock files 2023-02-01 20:43:16 +01:00
Felix Roos aa5dd7920f organize tasks 2023-02-01 20:38:56 +01:00
Felix Roos d60956e82a update contribution guide to pnpm
+ update root tasks
2023-02-01 20:33:13 +01:00
Alex McLean 91fd3fb5ca add missing snapshots 2023-02-01 15:51:42 +00:00
Alex McLean 46f3b662a7 add pattern methods hurry, press and pressBy (#397) 2023-02-01 15:49:55 +00:00
Felix Roos 54a61dcdae overhaul the remaining readmes 2023-02-01 16:29:18 +01:00
Felix Roos b58f5232c7 add nano-repl as workspace 2023-02-01 16:09:50 +01:00
Felix Roos 9a5bda862c update examples 2023-02-01 16:09:33 +01:00
Felix Roos 7f67adb639 bump eval 2023-02-01 15:49:05 +01:00
Felix Roos 48fd943622 fix: eval dependency + add deprecation note 2023-02-01 15:40:57 +01:00
Felix Roos 08350d00be remove sc prefix to fix build 2023-02-01 15:35:21 +01:00
Felix Roos 84bf4a2686 add pretest 2023-01-30 22:53:53 +01:00
Felix Roos 2823456e96 update lockfile 2023-01-30 22:50:44 +01:00
Felix Roos a373629fc2 fix: gh actions use pnpm 2023-01-30 22:48:24 +01:00
Felix Roos 0aa2f72a3a update core examples 2023-01-29 23:27:35 +01:00
Felix Roos c032f6dde1 add prepublishOnly everywhere 2023-01-29 00:14:07 +01:00
Felix Roos f448d8f334 rename website package 2023-01-29 00:08:29 +01:00
Felix Roos a5d4a43753 xen build 2023-01-28 23:19:33 +01:00
Felix Roos 52e01321ec webdirt build 2023-01-28 23:18:25 +01:00
Felix Roos 19692e0122 webaudio build 2023-01-28 23:14:56 +01:00
Felix Roos cd1da3cb81 transpiler build 2023-01-28 23:12:00 +01:00
Felix Roos ffaa8f4ab3 tone build 2023-01-28 23:09:25 +01:00
Felix Roos f3da9d680d bump 2023-01-28 23:07:55 +01:00
Felix Roos 6118bd24f2 tonal build 2023-01-28 23:06:59 +01:00
Felix Roos fddbb2e2ac soundfonts build 2023-01-28 23:04:30 +01:00
Felix Roos cb7156b091 serial build 2023-01-28 23:01:20 +01:00
Felix Roos b5914a3f12 react build 2023-01-28 22:58:40 +01:00
Felix Roos 348d576ff3 remove dist folder 2023-01-28 22:49:13 +01:00
Felix Roos 7507654749 osc build 2023-01-28 22:40:10 +01:00
Felix Roos c25aad0c4a midi build 2023-01-28 22:35:08 +01:00
Felix Roos 4aa32415cd eval build 2023-01-28 22:32:48 +01:00
Felix Roos cde23bbf98 csound build 2023-01-28 22:27:18 +01:00
Felix Roos 555fe0b629 bump mini 2023-01-28 22:16:33 +01:00
Felix Roos be44c28fd3 add mini build 2023-01-28 22:16:04 +01:00
Felix Roos 657091307e remove unused deps 2023-01-28 22:12:11 +01:00
Felix Roos 458dc6e07d add core build 2023-01-28 22:05:11 +01:00
Felix Roos cfaecf9fcb migrate lerna to pnpm
https://lerna.js.org/docs/recipes/using-pnpm-with-lerna
2023-01-28 22:01:35 +01:00
Felix Roos 902f722d4c add import linting + fix checks 2023-01-28 21:00:42 +01:00
Felix Roos ea2d8b2773 use workspace protocol everywhere 2023-01-28 20:37:56 +01:00
Felix Roos b319754dc3 fix website build 2023-01-28 20:31:23 +01:00
Felix Roos 35f2040717 use pnpm workspaces 2023-01-28 20:14:26 +01:00
Felix Roos 4121fc926e write more about packages / monorepo setup 2023-01-28 17:59:59 +01:00
Felix Roos fd9ab987e6 Merge branch 'main' into docs 2023-01-28 14:23:01 +01:00
Felix Roos 6c3a235b08 Merge pull request #379 from urswilke/add-tidal-drum-patterns-to-examples
Add tidal-drum-patterns to examples
2023-01-27 14:40:40 +01:00
Felix Roos 07cb861385 Merge pull request #388 from tidalcycles/ribbon
add ribbon + test + docs
2023-01-27 14:39:56 +01:00
Alex McLean 217e348fc3 Notes are not essential :) (#393)
* Notes are not essential :)

* Update notes.mdx
2023-01-27 11:10:37 +00:00
Felix Roos ad917afba4 Merge pull request #391 from tidalcycles/docs
document csound
2023-01-21 17:18:12 +01:00
Felix Roos 9539c6d317 fix: left sidebar scroll 2023-01-21 17:14:18 +01:00
Felix Roos e946e1e01e add csound docs 2023-01-21 17:05:57 +01:00
Felix Roos fea1e71a99 Merge remote-tracking branch 'origin/main' into docs 2023-01-21 15:57:54 +01:00
Felix Roos 9731eb8c5b add ribbon + test + docs 2023-01-19 12:25:12 +01:00
Felix Roos e058ae54ef Merge pull request #387 from tidalcycles/rename-a-to-angle
Rename a to angle
2023-01-19 12:04:50 +01:00
Felix Roos ba6714f384 add draw examples 2023-01-19 12:00:00 +01:00
Felix Roos 0a0a761e23 rename a to angle 2023-01-19 11:59:43 +01:00
Felix Roos 88e8368022 Merge pull request #386 from tidalcycles/run
add run + test + docs
2023-01-19 11:49:38 +01:00
Felix Roos 468ccc6288 add run + test + docs 2023-01-19 11:47:11 +01:00
Felix Roos 77e0237148 Merge pull request #385 from tidalcycles/docs-use-note-instead-of-n
docs: use note instead of n to mitigate confusion
2023-01-19 11:32:55 +01:00
Felix Roos ffdfb07f72 docs: use note instead of n to mitigate confusion 2023-01-19 11:27:54 +01:00
Felix Roos 203ed88024 Merge pull request #384 from tidalcycles/update-my-patterns-readme
update my-patterns instructions
2023-01-18 17:10:08 +01:00
Felix Roos 9923bcd16f update my-patterns instructions 2023-01-18 17:01:27 +01:00
urswilke 0179ec051f Revert "run: npm test"
This reverts commit 00709539e9bdfbc1404e984f28453f0a54b5638e.
2023-01-16 23:19:46 +01:00
urswilke 05b6353355 move drum patterns in a new file 2023-01-16 23:11:17 +01:00
urswilke 47c6ed8829 Revert "import patterns created by new method in:"
This reverts commit b266e975755e035b85c0869a30219c80a84db856.
2023-01-16 23:06:43 +01:00
urswilke ff9ebd64e3 run: npm test 2023-01-16 22:41:12 +01:00
urswilke cd2b098b81 import patterns created by new method in:
https://github.com/urswilke/read_beats/commit/ecd8c03b5e29544819831459f4b4ac48d954640f
2023-01-16 22:41:12 +01:00
Felix Roos 7000a4cead Merge pull request #377 from tidalcycles/draw-fixes
Draw fixes
2023-01-15 23:19:42 +01:00
Felix Roos 5aa983b45b do less work when not drawing 2023-01-15 23:11:49 +01:00
Felix Roos 800989419b catch all query errors by default 2023-01-15 22:50:56 +01:00
Felix Roos 362679954a Merge pull request #372 from tidalcycles/local-draw
improve new draw logic
2023-01-14 11:07:07 +01:00
Felix Roos 2732d64beb fix: another dependency array 2023-01-14 10:58:30 +01:00
Felix Roos 88684d6d9e fix dependency array 2023-01-14 10:48:52 +01:00
Felix Roos 9afddf0850 fix sentence 2023-01-14 01:30:56 +01:00
Felix Roos a2d7d6e81f fix: mini repl could eval before modules are ready 2023-01-14 01:27:22 +01:00
Felix Roos 49bcb5e19f fix minor bugs 2023-01-13 16:35:24 +01:00
Felix Roos 3744ea6218 fix: warnings 2023-01-13 15:17:23 +01:00
Felix Roos b2c6d87633 MiniRepl: add punchcard flag for implicit vis
+ reintroduce editPattern
+ add punchcards to mini-notation.mdx
2023-01-13 15:13:39 +01:00
Felix Roos e4f538b674 fix option handling 2023-01-13 13:00:11 +01:00
Felix Roos ea0e0b4396 reset canvas when pattern changes
+ rename noteroll -> punchcard
2023-01-13 12:57:35 +01:00
Felix Roos 1ac784dc7a localize draw logic 2023-01-13 12:03:34 +01:00
Felix Roos d980c9ca4c Merge branch 'main' into docs 2023-01-13 01:52:36 +01:00
Felix Roos 6a2a60df0d hotfix: tests 2023-01-12 17:43:20 +01:00
Felix Roos ee9b89b6d5 add more synonyms 2023-01-12 17:40:58 +01:00
Felix Roos 68cc109933 burn down that undocumented list 2023-01-12 17:25:01 +01:00
Felix Roos 1015bb0fdc Merge pull request #369 from tidalcycles/docs
document more functions + change arp join
2023-01-12 14:40:58 +01:00
Felix Roos 7da94dd109 reformat headings
+ add another note about single quotes
2023-01-12 14:22:41 +01:00
Felix Roos 171808cf2c add note about single quote strings 2023-01-12 14:19:18 +01:00
Felix Roos 78d14cdfea automatically print synonyms in doc 2023-01-12 13:10:22 +01:00
Felix Roos 19982a2ffb remove unused package 2023-01-12 13:00:22 +01:00
Felix Roos 79904560fc fix: snapshot 2023-01-12 12:48:05 +01:00
Felix Roos 28aee1c58d fix polymeter doc 2023-01-12 12:43:41 +01:00
Felix Roos d4512f360b fix: double slash 2023-01-12 12:40:20 +01:00
Felix Roos 48d0ffe868 add script that finds all undocumented exports 2023-01-12 12:35:04 +01:00
Felix Roos 62af12f3b9 remove experimental class properties 2023-01-12 12:32:27 +01:00
Felix Roos efa4bfef2f fix snapshot 2023-01-12 02:23:06 +01:00
Felix Roos fc3ead4c01 Merge branch 'main' into docs 2023-01-12 02:20:16 +01:00
Felix Roos ca9c813b40 format 2023-01-12 02:18:09 +01:00
Felix Roos e3b0f47c40 hide internals for now 2023-01-12 02:15:42 +01:00
Felix Roos bf13e42092 update snap 2023-01-12 01:57:14 +01:00
Felix Roos 4345fda9bc more doc 2023-01-12 01:56:46 +01:00
Felix Roos 4059e9faa9 more doc 2023-01-12 00:10:58 +01:00
Felix Roos 95fcce1bcf fix: snapshot 2023-01-11 23:38:40 +01:00
Felix Roos 86cde9716a arpWith example 2023-01-11 23:37:59 +01:00
Felix Roos 6e315a50ed breaking: arp use innerJoin instead of squeezeJoin 2023-01-11 23:28:17 +01:00
Felix Roos 500c0b6534 doc: arp + arpWith 2023-01-11 23:26:03 +01:00
Felix Roos db75dca118 doc: split accumulation and conditions 2023-01-11 23:05:17 +01:00
Felix Roos d5f37e2cbe add internals doc 2023-01-11 22:48:47 +01:00
Felix Roos a120a9895b fix: right sidebar width 2023-01-11 22:48:33 +01:00
Felix Roos e9c1db020f hotfix: remove mocked .out 2023-01-11 22:11:22 +01:00
alex 08cd319a0b Revert "Merge branch 'main' into main"
This reverts commit 896ec69329, reversing
changes made to 32e64bbb6e.
2023-01-10 19:45:23 +00:00
Alex McLean 896ec69329 Merge branch 'main' into main 2023-01-10 18:23:45 +00:00
Alex McLean 32e64bbb6e Typo 2023-01-09 23:49:16 +00:00
Felix Roos 0974540e5f fix: typo 2023-01-10 00:21:54 +01:00
Felix Roos e06963e616 Merge pull request #364 from urswilke/patch-2
add https to url
2023-01-10 00:03:46 +01:00
Felix Roos a675815529 hotfix: preview command + build peg without logs 2023-01-09 23:55:45 +01:00
alex 3d48135b32 09 2023-01-09 22:47:25 +00:00
urswilke 8f09e7f097 add https to url 2023-01-09 23:44:49 +01:00
Felix Roos e8b09f1124 Merge pull request #360 from tidalcycles/docs
doc structuring
2023-01-09 23:37:34 +01:00
Felix Roos 57ba353594 snaps 2023-01-09 23:31:30 +01:00
Felix Roos b695e090cd docs: control params 2023-01-09 23:27:30 +01:00
Felix Roos 69ecb7b54f support logs in mini repl
+ pass hap to logger
+ add editPattern hook to repl + useStrudel
+ do not throw when webaudio gets plain values
2023-01-09 23:26:20 +01:00
Alex McLean f57fe182ed Support for multiple mininotation operators WIP (#350)
* support for multiple operators
* fix false test failures by sorting by part
* snapshot
2023-01-09 22:23:27 +00:00
Felix Roos 10ee11c886 docs: improve time modifiers page
+ polymeter + euclidRot
+ rename Factories to Pattern Constructors
2023-01-09 20:39:00 +01:00
Alex McLean 45842b1f05 Fix .out(), renaming webaudio's out() to webaudio() (#361)
* breaking test for out()

* rename webaudio's out() to webaudio(), fixes #359
2023-01-08 23:40:15 +00:00
Felix Roos 9ca5f9ad48 some corrections
+ n should not be recommended for notes as it does not work for samples
2023-01-09 00:19:29 +01:00
Felix Roos bb00036a30 further sidebar reorganizing 2023-01-09 00:17:57 +01:00
Felix Roos 4a2a540500 Update README.md 2023-01-08 23:55:07 +01:00
Felix Roos 09217216dc format 2023-01-08 23:48:32 +01:00
Felix Roos 22a64c4931 update snapshots 2023-01-08 23:46:39 +01:00
Felix Roos 93f520b941 Merge remote-tracking branch 'origin/main' into docs 2023-01-08 23:44:27 +01:00
alex c84714dc3a 08 2023-01-08 13:25:22 +00:00
alex a7aa09a13e 07 2023-01-07 23:15:50 +00:00
alex efa1cdfcb2 07 2023-01-07 23:12:19 +00:00
Felix Roos 70695daae8 remove quotes around inline code snippets 2023-01-07 22:12:53 +01:00
Felix Roos 62fdba0600 pull apart functional docs 2023-01-07 22:12:35 +01:00
Felix Roos 5733e00908 add hideDescription flag to JsDoc 2023-01-07 22:11:47 +01:00
alex e56abaefd7 06 2023-01-07 00:02:39 +00:00
Felix Roos c71e893e8e Merge pull request #356 from tidalcycles/docs
docs: tidal comparison + add global fx + add missing sampler fx
2023-01-06 22:02:31 +01:00
Felix Roos 3992356517 casing 2023-01-06 21:58:35 +01:00
Felix Roos dbb84ef129 write more tidal comparison 2023-01-06 21:56:17 +01:00
Felix Roos 8781fa2e33 add filter synonyms 2023-01-06 21:37:31 +01:00
Felix Roos 605a1365d3 update snapshots 2023-01-06 21:15:32 +01:00
Felix Roos ebb1bbc966 improve effects doc 2023-01-06 21:14:19 +01:00
Felix Roos d4518f7a6e began tidal comparison page 2023-01-06 12:50:35 +01:00
Alex McLean 68c9008019 Fix Bjorklund (#343)
* port Rohan Drape's Bjorklund implementation, add Toussaint's tests
* fix euclidLegato, simplifying a bit now that bjork results should always begin with an 'on'
* migrate euclid numbers in tunes
- 3,4 +1
- 5,8 -1
- 6,8 +3

Co-authored-by: Felix Roos <flix91@gmail.com>
2023-01-06 11:31:32 +00:00
Felix Roos cafde1e910 Merge branch 'main' into docs 2023-01-06 11:49:49 +01:00
alex 41f5f3fe6e 05 2023-01-05 23:58:48 +00:00
alex cf12ecfa34 04 2023-01-04 23:36:40 +00:00
Felix Roos 4fa668927f Merge pull request #345 from tidalcycles/fix-prebake-base-path
Fix prebake base path
2023-01-04 20:29:35 +01:00
Felix Roos 24d2b5b4bd Merge pull request #347 from tidalcycles/fix-midi
fixes #346
2023-01-04 19:55:48 +01:00
Felix Roos 4da2e003e1 fixes #346 2023-01-04 19:52:51 +01:00
Felix Roos 205debde9c more links to fix 2023-01-03 23:40:40 +01:00
Felix Roos ba6c7b0901 fix examples route 2023-01-03 23:32:37 +01:00
Felix Roos 8e5d02fd25 do not include url in base pth 2023-01-03 23:32:28 +01:00
Felix Roos 11d3251c67 add base path + use relative links 2023-01-03 23:02:41 +01:00
alex 9ec5787b4d 03 2023-01-03 21:26:56 +00:00
Felix Roos 027c669ad7 make prebake relative to BASE_URL 2023-01-03 22:17:44 +01:00
Alex McLean 405c12ba3f deploy on push 2023-01-03 10:47:20 +00:00
Alex McLean 64fd53a8e5 tweak 2023-01-03 10:43:54 +00:00
alex 069d63e3cf 02 2023-01-02 23:33:48 +00:00
Alex McLean 66049e0e25 Merge pull request #2 from tidalcycles/main
downstream
2023-01-02 21:07:18 +00:00
Alex McLean db7ef01dbb Patternify euclid, fast, slow and polymeter step parameters in mininotation (#341)
* patternify the mininotation bjorklund, and fast (*) slow (/) and pattern step (%) parameters
* simplify replicate (!), should be closer to tidal now
* highlight atoms rather than elements
* tests
2023-01-02 20:28:07 +00:00
Felix Roos 1a6b649fd6 Merge pull request #340 from tidalcycles/animate
more animate functions + mini repl fix
2023-01-02 00:30:16 +01:00
Felix Roos 548619775e rename .. 2023-01-02 00:28:38 +01:00
Felix Roos 4b79a75f39 fix: mini repls were broken 2023-01-02 00:24:33 +01:00
Felix Roos 28912fff97 animate: rescale + move + zoom 2023-01-01 18:47:45 +01:00
alex 98a83ddcc0 01c 2023-01-01 17:22:16 +00:00
alex e9d965ce7a 01b 2023-01-01 14:22:19 +00:00
alex b7624813cc custom domain 2023-01-01 11:49:20 +00:00
Alex McLean 734e451bd9 Merge pull request #1 from tidalcycles/main
pull from upstream
2023-01-01 11:42:58 +00:00
Alex McLean 7a96436085 move /my-patterns to /swatch (#338) 2023-01-01 11:34:11 +00:00
Felix Roos 670af8fb1b Merge pull request #337 from tidalcycles/animate
animation options
2023-01-01 12:22:55 +01:00
Felix Roos 0abd062e5c fix: smear 0 special case 2023-01-01 12:18:46 +01:00
Felix Roos 1286468d5a animation options
+ do not sync by default
2023-01-01 12:11:39 +01:00
alex 0f3da5be4a 01 2023-01-01 10:05:58 +00:00
Alex McLean 9170269e06 Update README.md 2023-01-01 00:34:53 +00:00
Alex McLean 8bb460701f Tidy parser, implement polymeters (#336)
* rename parser stuff to be more explicit and fit with tidal concepts. qualify all strudel function calls
* Add {,}%n polymeter support, with a few tests
2022-12-31 21:42:49 +00:00
Felix Roos c0a7173ca4 Merge pull request #335 from tidalcycles/animate
animate mvp
2022-12-31 16:51:53 +01:00
Felix Roos 949e15d8c6 controllable smear + sync flag 2022-12-31 16:41:13 +01:00
Felix Roos 0caedeb481 animate mvp 2022-12-31 16:23:45 +01:00
Felix Roos 83ca8d95be Merge pull request #334 from tidalcycles/docs
testing + docs docs
2022-12-30 20:16:09 +01:00
Felix Roos 8483868783 docs: testing + docs 2022-12-30 19:54:02 +01:00
Felix Roos 6961388545 Merge branch 'main' into docs 2022-12-30 17:43:54 +01:00
Felix Roos 8ef1ae5202 Merge pull request #333 from tidalcycles/embed-route
Embed mode improvements
2022-12-29 21:11:15 +01:00
Felix Roos 26b8f93cea roll back hh rhythm 2022-12-29 21:08:11 +01:00
Felix Roos a576523976 simplify meltingsubmarine tune 2022-12-29 21:02:04 +01:00
Felix Roos cf21c4085b simplify embedded mode 2022-12-29 21:01:28 +01:00
Felix Roos 204f655d6d Merge pull request #332 from tidalcycles/fix-mini-multiply-floats
fix: can now multiply floats in mini notation
2022-12-29 14:06:19 +01:00
Felix Roos fb14865785 fix: can now multiply floats in mini notation
- fixes #314
2022-12-29 14:02:50 +01:00
Felix Roos 5cd052cc59 Merge pull request #331 from tidalcycles/my-patterns
improve displaying 's' in pianoroll
2022-12-29 13:50:07 +01:00
Felix Roos af49c4117c add color to some tunes 2022-12-29 13:25:20 +01:00
Felix Roos dd736130a0 improve pianoroll value mapping 2022-12-29 13:03:28 +01:00
Felix Roos cee8bda676 Merge pull request #330 from tidalcycles/my-patterns
my-patterns: fix paths + update readme
2022-12-28 17:35:35 +01:00
Felix Roos 6420a72ceb fix paths + update readme 2022-12-28 17:33:14 +01:00
Felix Roos 380e7c7899 Merge pull request #329 from tidalcycles/my-patterns
my-patterns build + deploy
2022-12-28 17:11:40 +01:00
Felix Roos 16b4058a8b fix build + simplify logic + add deploy note 2022-12-28 17:09:18 +01:00
Felix Roos e3fba0257f Merge pull request #328 from tidalcycles/my-patterns
add my-patterns
2022-12-28 15:43:31 +01:00
Felix Roos cb8b65f6f3 add my-patterns 2022-12-28 15:39:42 +01:00
Felix Roos 3944a8ed54 Merge pull request #327 from tidalcycles/docs
add examples route
2022-12-28 14:47:13 +01:00
Felix Roos 2ceafe6379 Merge pull request #326 from tidalcycles/eval-fix-node
fix: workaround Object.assign globalThis
2022-12-28 14:44:30 +01:00
Felix Roos 9f058bd88a add examples page with prerendered swatches 2022-12-28 14:40:53 +01:00
Felix Roos 1dd0ff13d8 Merge remote-tracking branch 'origin/eval-fix-node' into docs 2022-12-28 14:02:55 +01:00
Felix Roos 6061f10230 fix: workaround Object.assign globalThis
- see comment
2022-12-28 13:57:27 +01:00
Felix Roos ea59fafb52 Merge pull request #324 from tidalcycles/docs
mini repl improvements
2022-12-26 23:29:47 +01:00
Felix Roos 2ff71126de add withCanvas 2022-12-26 23:25:57 +01:00
Felix Roos 6d522e1743 Merge remote-tracking branch 'origin/main' into docs 2022-12-26 23:13:51 +01:00
Felix Roos b37f3c819d remove color magic for now 2022-12-26 23:12:16 +01:00
Felix Roos 1b41994e5f codeformat 2022-12-26 23:01:18 +01:00
Felix Roos 4fd4b0d713 Merge pull request #323 from tidalcycles/notes-without-octave
support notes without octave
2022-12-26 23:00:34 +01:00
Felix Roos 7b43ed702e only start animation loop when canvas is visible
+ add some placeholder files
2022-12-26 22:59:41 +01:00
Felix Roos 56cd77942b remove old graphic 2022-12-26 22:50:10 +01:00
Felix Roos 37dc723b4b react package build... 2022-12-26 22:44:23 +01:00
Felix Roos d7ea37c917 add technical manual to docs 2022-12-26 22:43:02 +01:00
Felix Roos c1d2bf9b9f fix anchor links 2022-12-26 22:16:46 +01:00
Felix Roos 36f837730a better color support 2022-12-26 22:13:41 +01:00
Felix Roos b8f0a1dd82 fix format 2022-12-26 21:04:15 +01:00
Felix Roos 2d1b62a978 begin reimplementing draw logic for parallel use 2022-12-26 20:58:57 +01:00
Felix Roos 0792d0d59d add scheduler.now to get phase starting from 0 2022-12-26 20:55:21 +01:00
Felix Roos 8c6da1a658 Merge branch 'main' into docs 2022-12-26 13:31:06 +01:00
Felix Roos 26be10f937 hotfix: css + sn -> sd 2022-12-26 12:43:08 +01:00
Felix Roos ef4d9a13ed Merge pull request #320 from jarmitage/main
tutorial updates
2022-12-26 12:37:36 +01:00
Jack Armitage 320d987ede wut 2022-12-26 11:32:55 +00:00
Jack Armitage 51a4c4d13b codeformat 2022-12-26 11:30:01 +00:00
Felix Roos aaf3ae5f9c microrhythm experiment 2022-12-26 11:25:27 +01:00
Jack Armitage 858f4f74b3 tutorial updates 2022-12-25 16:21:18 +00:00
Felix Roos 3feed90039 translate parts of tidal "How-tos" 2022-12-24 00:14:26 +01:00
Felix Roos b46330fc7a proper setup minirepl 2022-12-24 00:12:54 +01:00
Felix Roos 5ca7ce1f75 Merge commit 'd1d9b37ec764dd7377754d88e72996ef887beb82' into docs 2022-12-23 23:06:54 +01:00
Felix Roos d1d9b37ec7 supper notes without octave 2022-12-23 23:01:07 +01:00
Felix Roos 823115c4ec Merge pull request #318 from tidalcycles/reference-tab-sort
Reference tab sort
2022-12-23 18:26:30 +01:00
Felix Roos 8fe3fda27f update snapshots 2022-12-23 18:24:40 +01:00
Felix Roos 63fffd7493 docs: envelope functions 2022-12-23 17:57:01 +01:00
Felix Roos 243a350e2b fix: #317 2022-12-23 17:32:25 +01:00
Felix Roos 8c09e7ba36 hotfix: go to repl link 2022-12-23 01:05:17 +01:00
Felix Roos d89502f91f hotfix: make sure jsdoc is built before build 2022-12-23 01:01:45 +01:00
Felix Roos 847602f933 hotfix: add missing npm ci 2022-12-23 00:58:48 +01:00
Felix Roos 8fcf8fe39c Revert "hotfix: build task for ci"
This reverts commit d59eec9296.
2022-12-23 00:57:59 +01:00
Felix Roos d59eec9296 hotfix: build task for ci 2022-12-23 00:54:43 +01:00
Felix Roos b9122ebc34 Merge pull request #315 from tidalcycles/astro-build
Astro build
2022-12-23 00:49:56 +01:00
Felix Roos 38e066ee49 fix import 2022-12-23 00:47:33 +01:00
Felix Roos 232a04a1a2 docs: mobile nav 2022-12-23 00:41:47 +01:00
Felix Roos dcb145635c add tutorial redirect
+ place learn link last in repl header
+ fix all old links to /tutorial
2022-12-22 23:47:11 +01:00
Felix Roos c9b73c68a6 fix pretest task 2022-12-22 23:32:19 +01:00
Felix Roos 08f7925ea9 delete now obsolete repl + tutorial folders 2022-12-22 23:28:34 +01:00
Felix Roos ed79ec7940 copy potentially useful files from old tutorial 2022-12-22 23:22:48 +01:00
Felix Roos 869a44dd04 autolink headings 2022-12-22 23:19:38 +01:00
Felix Roos 6a9e9ebc4c responsiveness 2022-12-22 23:07:14 +01:00
Felix Roos f18a2a11fa make repl and doc styles more similar 2022-12-22 22:49:41 +01:00
Felix Roos 9aaaa755c7 fix import + update build task 2022-12-22 17:23:35 +01:00
Felix Roos 818cd9044b integrate repl into astro website
+ update build and setup tasks + workflow
+ move repl test folder to root
+ move docs and repl to website/src
2022-12-22 17:20:51 +01:00
Felix Roos 006ca12b6d rename folder 2022-12-22 15:36:24 +01:00
Felix Roos b5f9ab7c20 slight layout fixes 2022-12-20 22:47:49 +01:00
Felix Roos 0981f95f16 style left sidebar 2022-12-20 22:26:12 +01:00
Felix Roos f64ef32eaa more styling 2022-12-20 22:19:30 +01:00
Felix Roos 7a19659c9e remove theme.css + cooler bg 2022-12-20 21:57:41 +01:00
Felix Roos b1202fcd55 split tutorial into multiple pages
+ improve layout a bit
2022-12-20 21:38:08 +01:00
Felix Roos b8f991eddb simplify writing mdx files 2022-12-20 20:42:42 +01:00
Felix Roos d0013f55a2 format 2022-12-20 19:50:32 +01:00
Felix Roos 7efaff4f6f basic style for toc + further cleanup 2022-12-20 19:47:28 +01:00
Felix Roos bc7a84e462 basic astro docs 2022-12-19 23:23:31 +01:00
Felix Roos 61657bd1b1 Merge pull request #307 from tidalcycles/obj-support-scale
object support for .scale
2022-12-19 21:02:37 +01:00
Felix Roos fc63f4f89c Merge pull request #312 from tidalcycles/jsdoc-component
Jsdoc component
2022-12-19 21:02:21 +01:00
Felix Roos 2c44c252d7 fixed namespaced anchor links 2022-12-19 20:59:47 +01:00
Felix Roos 613fc6e3ef fix anchor icon color 2022-12-19 20:57:42 +01:00
Felix Roos 0a9604d10e throw out nunjucks 2022-12-19 20:48:57 +01:00
Felix Roos 1cabedc65e Merge pull request #311 from tidalcycles/fix-clipboard
fix: copy share link to clipboard was broken for some browers
2022-12-19 20:31:46 +01:00
Felix Roos 4e5a0d9e02 fix: #309 2022-12-19 20:30:01 +01:00
Alex McLean bf373d894d ICLC2023 paper (#306)
Paper submission for the international conference on live coding
2022-12-19 11:11:24 +00:00
Felix Roos e6bbad84c1 Merge pull request #308 from tidalcycles/pianoroll-freq-support
support freq in pianoroll
2022-12-15 21:23:22 +01:00
Felix Roos 4de477d46c support freq in pianoroll 2022-12-15 21:21:20 +01:00
Felix Roos 264cab3c9b add scale test 2022-12-15 20:35:10 +01:00
Felix Roos 7f9ef59bea Merge branch 'main' into obj-support-scale 2022-12-15 17:49:24 +01:00
Felix Roos 8ebbef4cbb fix core deps after release trouble 2022-12-13 22:46:35 +01:00
Felix Roos 0c98a84242 bump root to 0.5.0 2022-12-13 22:38:58 +01:00
Felix Roos 2bbdd21b2f Publish
- @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
2022-12-13 22:38:08 +01:00
Felix Roos 794cfe949b bump already published packages 2022-12-13 22:36:13 +01:00
Felix Roos 6a5010a2d6 bump csound 2022-12-13 22:28:16 +01:00
Felix Roos 61559fee9d Revert "Publish"
This reverts commit 2118a20408.
2022-12-13 22:24:12 +01:00
Felix Roos 2118a20408 Publish
- @strudel.cycles/core@0.5.0
 - @strudel.cycles/csound@0.4.0
 - @strudel.cycles/eval@0.5.0
 - @strudel.cycles/midi@0.5.0
 - @strudel.cycles/mini@0.5.0
 - @strudel.cycles/osc@0.4.0
 - @strudel.cycles/react@0.5.0
 - @strudel.cycles/serial@0.3.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
2022-12-13 22:22:27 +01:00
Felix Roos b0bc20cb83 hotfix: code format
- PR was issued before prettier check, now ci fails
2022-12-13 22:10:09 +01:00
Felix Roos 2cd77b075b Merge pull request #303 from gogins/main
Updated csoundm to use the register facility .
2022-12-13 22:07:27 +01:00
Felix Roos 03450c6085 Merge pull request #305 from tidalcycles/estlint-prettier-check
add lint + prettier check before test
2022-12-13 21:57:03 +01:00
Felix Roos 5d3c522da2 run prettier + lint separately (improves output) 2022-12-13 21:53:45 +01:00
Felix Roos bf1ba6efc0 code format 2022-12-13 21:32:03 +01:00
Felix Roos 67ad82d52e add lint + prettier check before test 2022-12-13 21:27:16 +01:00
Felix Roos f437d976f8 Merge pull request #301 from tidalcycles/support-freq-in-sampler
add freq support to sampler
2022-12-13 21:21:43 +01:00
gogins c94443faaa Updated csoundm to use . 2022-12-12 20:54:03 -05:00
Felix Roos c6d57f6a56 fix non note samples 2022-12-12 20:53:11 +01:00
Felix Roos 09b06da403 fix error message 2022-12-12 20:45:15 +01:00
Felix Roos df73ce8a60 add freq support to sampler 2022-12-12 20:41:09 +01:00
Felix Roos 8b22c2e04f Merge pull request #300 from tidalcycles/fix-trim
fix whitespace trimming
2022-12-12 00:48:41 +01:00
Felix Roos b4f4d6cea2 fix whitespace trimming 2022-12-12 00:45:47 +01:00
Felix Roos cdf7b2acf1 Merge branch 'main' of https://github.com/tidalcycles/strudel 2022-12-12 00:23:22 +01:00
Felix Roos 94651731a5 hotfix: uncomment essential line :) 2022-12-12 00:23:03 +01:00
Alex McLean 56424d29a3 .defragmentHaps() (#299) 2022-12-11 23:21:53 +00:00
Felix Roos c5083b2aef Merge pull request #298 from tidalcycles/dont-highlight-whitespace
remove whitespace from highlighted region
2022-12-11 23:17:48 +01:00
Felix Roos 1b06795ffe remove whitespace from highlighted region 2022-12-11 23:14:47 +01:00
Felix Roos 6679cd60ce scale now supports running on object values with n 2022-12-11 22:45:36 +01:00
Felix Roos 843a3c16ba Merge pull request #297 from tidalcycles/package-update
update vitest
2022-12-11 22:03:26 +01:00
Felix Roos df40204a57 update vitest 2022-12-11 21:58:58 +01:00
Felix Roos 210910eb6e hotfix: lastOf was undefined 2022-12-11 21:56:05 +01:00
Felix Roos ef427758da Merge pull request #287 from tidalcycles/numeral-union
can now add bare numbers to numeral object props
2022-12-11 21:44:16 +01:00
Felix Roos def6bbf683 add test 2022-12-11 21:43:05 +01:00
Felix Roos 5f37a4a21c Merge pull request #295 from tidalcycles/refactor-bootstrap
Move stuff to new register function
2022-12-11 21:27:58 +01:00
Felix Roos dc869987f9 Merge pull request #296 from tidalcycles/prettier-task
add prettier task
2022-12-11 20:07:12 +01:00
Felix Roos b98d2201e5 add prettier task 2022-12-11 19:37:36 +01:00
Felix Roos 8dd6440bb8 update snapshots 2022-12-11 13:46:22 +01:00
Felix Roos a2d83c48eb comment out pipe operator test 2022-12-11 13:28:54 +01:00
Felix Roos a0ae8f4a07 "fix" voice leading 2022-12-11 13:28:24 +01:00
Felix Roos 719dcbcd4d fix some tests 2022-12-11 12:06:00 +01:00
Felix Roos caa207e868 dont use random seedState for now 2022-12-11 11:55:14 +01:00
Felix Roos 306004ecd2 make mini "?" behave like .degradeBy + add comment 2022-12-11 00:13:30 +01:00
Felix Roos bcac3c5b84 fix typo 2022-12-11 00:08:13 +01:00
Felix Roos ccc90108df snapshots 2022-12-10 22:59:39 +01:00
Felix Roos b9781915a4 remove bootstrap + Pattern.patternify 2022-12-10 22:58:07 +01:00
Felix Roos 1890e65b75 refactor speak 2022-12-10 22:56:08 +01:00
Felix Roos 2f4da3ed52 refactor csound 2022-12-10 22:47:24 +01:00
Felix Roos 27a6ac0c0b refactor xen and tone packages 2022-12-10 22:39:51 +01:00
Felix Roos b81a66f07e refactor uses of voicings
+ fix usages of scaleTranspose
2022-12-10 21:47:58 +01:00
Felix Roos bc43fc9585 refactor tonal functions to 'register' 2022-12-10 21:34:38 +01:00
Felix Roos 4f7c013c78 refactor most signal functions 2022-12-10 21:03:36 +01:00
Felix Roos 09b15a07c6 use register for degradeBy / undegradeBy 2022-12-10 19:25:51 +01:00
Alex McLean 4340f024d3 Reorganise pattern.mjs with a 'toplevel first' regime (#286)
'toplevel first' regime
* loopAt has its optional cps parameter removed, with loopAtCps added for supporting that usage.
* rename bitlevel operations e.g. _and -> band

Co-authored-by: Felix Roos <flix91@gmail.com>
2022-12-10 14:39:03 +00:00
Alex McLean 98e9780819 Fancy hap show, include part in snapshots (#291)
* fix _mod import

* prettier hap show, use both whole and parts in snapshots, rebuild snapshots
2022-12-10 10:56:16 +00:00
Felix Roos a45d63595f delete bare value before numeral union 2022-12-09 11:00:28 +01:00
Felix Roos 5fbd1453b4 can now add bare numbers to numeral object props 2022-12-09 10:40:31 +01:00
Alex McLean f827201ee0 Switch 'operators' from .whatHow to .what.how, and make sure there are toplevel curried functions for all of them. Rename util.mod to util._mod, to make room for toplevel 'operator' of that name. (#285) 2022-12-07 19:07:55 +00:00
Felix Roos 485a96962a Merge pull request #281 from tidalcycles/arp
implement collect + arp function
2022-12-04 12:51:01 +01:00
Felix Roos 98a104f731 update snapshot 2022-12-04 11:58:19 +01:00
Felix Roos ff987f14d7 add arp example tune 2022-12-04 11:57:40 +01:00
Felix Roos 4dd08268dc implement collect + arp function 2022-12-04 11:38:11 +01:00
Felix Roos c18a13d4fc Merge pull request #278 from tidalcycles/do-not-recompile-orc
do not recompile orc
2022-12-02 13:38:27 +01:00
Felix Roos 7a79995727 do not recompile orc 2022-12-02 13:34:05 +01:00
Felix Roos 01eca562c5 Merge pull request #275 from tidalcycles/csound
add basic csound output
2022-12-02 12:49:26 +01:00
Felix Roos f491d0c0c4 fix loadOrc in tests 2022-12-02 12:22:32 +01:00
Felix Roos edf2287e13 Merge remote-tracking branch 'origin/main' into csound 2022-12-02 12:20:12 +01:00
Felix Roos fcaab633c1 Merge pull request #277 from tidalcycles/tune-licenses
add licenses / credits to all tunes + remove some
2022-12-02 12:18:41 +01:00
Felix Roos 33b6579b5d update snapshots 2022-12-02 12:17:15 +01:00
Felix Roos 72a8e4bc22 add licenses / credits to all tunes + remove some 2022-12-02 12:11:28 +01:00
Felix Roos c67b02b7b0 update tunes 2022-12-02 12:09:58 +01:00
Felix Roos 486cd00384 added loadOrc + removed livecode.orc by default 2022-12-02 12:09:21 +01:00
Alex McLean caea7bb39d Support sending CRC16 bytes with serial messages (#276)
Optionally add a crc16 checksum.
Optionally support sending names in name/value pairs as single characters
2022-12-02 10:45:01 +00:00
Felix Roos e8fb7ee683 now passing controls as string keymap 2022-12-02 11:38:47 +01:00
Felix Roos e4ee4211c8 delete strudel unrealted example 2022-12-01 15:10:22 +01:00
Felix Roos 3fa3ebee14 Merge remote-tracking branch 'origin/main' into csound 2022-12-01 15:05:23 +01:00
Felix Roos 8e531f400e allow defining csound on the window 2022-12-01 15:00:16 +01:00
Felix Roos 5727c0dc8a clean up tunes + also load presets.orc 2022-12-01 14:56:50 +01:00
Felix Roos f599088cdf cleanup 2022-12-01 14:44:53 +01:00
Felix Roos d78da55f54 lazy init + add livecode.org 2022-12-01 14:36:00 +01:00
Felix Roos 9052ff71e6 get rid of csound warning on reevaluation:
- only compile on init, use evalCode after
- pull presets into csd file
- use custom logging
2022-12-01 12:34:26 +01:00
Felix Roos 713da887ca Merge branch 'tonal-update' into csound 2022-12-01 12:32:05 +01:00
Felix Roos ad5950697e Merge pull request #273 from tidalcycles/fix-tutorial-bugs
release version bumps
2022-11-29 23:41:39 +01:00
Felix Roos 85d0d06cab Merge branch 'main' into fix-tutorial-bugs 2022-11-29 23:37:35 +01:00
Felix Roos be6ec558e3 Merge pull request #271 from tidalcycles/eslint
add eslint
2022-11-29 23:34:50 +01:00
Felix Roos dd2f60810a Merge pull request #272 from tidalcycles/tonal-update
tonal update with fixed memory leak
2022-11-29 23:34:26 +01:00
Felix Roos 6c0b86d8f4 update tonal, fixes #269 2022-11-29 23:31:23 +01:00
Felix Roos 517ada6dbf tiny time improvement 2022-11-29 23:02:09 +01:00
Felix Roos 0a098e3008 mock csound 2022-11-29 22:04:46 +01:00
Felix Roos c40078ffc9 improve csound bindings:
- better timing
- can now pass instrument to .csound(...)
- can now write instruments with csound(...)
2022-11-29 21:59:22 +01:00
Felix Roos 729e0afdbe fix typo 2022-11-29 00:10:21 +01:00
Felix Roos eab86840d3 baasic csound output 2022-11-29 00:05:51 +01:00
Felix Roos 43aa2247f1 baasic csound output 2022-11-29 00:05:36 +01:00
Felix Roos afe17a507e update tonal: not working... 2022-11-28 23:00:15 +01:00
Felix Roos e621020474 continue tutorial 2022-11-28 21:33:17 +01:00
Felix Roos ac2aa7f288 add csound minimal example 2022-11-28 20:48:52 +01:00
Felix Roos 805bd7e930 simplify without-audio example 2022-11-24 20:56:09 +01:00
Felix Roos f9bf2122b7 add without-audio example 2022-11-24 20:13:54 +01:00
Felix Roos 4e3e533e13 repl: optional eval callbacks 2022-11-24 20:13:04 +01:00
Felix Roos 611c429912 lint before test 2022-11-24 15:31:47 +01:00
Felix Roos e2898ee5bf add eslint + fix lint errors 2022-11-24 15:30:11 +01:00
Alex McLean e1a532500e Tidying up core (#256)
* remove _ prefixes except for functions to be patternified
* categorise pattern methods
* experimental support for `.add.squeeze` and friends as alternative to `.addSqueeze`
* `every` is now an alias for `firstOf` with additional `lastOf` (which every will become an alias for next)
2022-11-22 08:51:25 +00:00
Felix Roos 4cf412b93d Merge pull request #266 from tidalcycles/faster-fast
fix performance bottleneck
2022-11-21 22:15:48 +01:00
Felix Roos 54c9c434e0 fix examples snapshot 2022-11-21 22:09:26 +01:00
Felix Roos de19f3e5fe fix tune snapshots 2022-11-21 22:08:17 +01:00
Felix Roos 8304993481 fix: #194 2022-11-21 21:59:08 +01:00
Felix Roos 4c838aeaca hotfix: weird audion bug 2022-11-17 11:13:49 +01:00
Felix Roos 4ec1145dce Publish
- @strudel.cycles/core@0.4.1
 - @strudel.cycles/eval@0.4.1
 - @strudel.cycles/midi@0.4.1
 - @strudel.cycles/mini@0.4.1
 - @strudel.cycles/osc@0.3.1
 - @strudel.cycles/react@0.4.2
 - @strudel.cycles/soundfonts@0.4.2
 - @strudel.cycles/tonal@0.4.1
 - @strudel.cycles/tone@0.4.1
 - @strudel.cycles/transpiler@0.4.1
 - @strudel.cycles/webaudio@0.4.2
 - @strudel.cycles/webdirt@0.4.1
 - @strudel.cycles/xen@0.4.1
2022-11-17 11:09:54 +01:00
Felix Roos 547d925065 Merge pull request #263 from tidalcycles/fix-tutorial-bugs
fix tutorial bugs
2022-11-17 11:08:37 +01:00
Felix Roos 874633051b fix: snapshot 2022-11-17 10:56:46 +01:00
Felix Roos 2293f1ba15 fix: worklets now work in the tutorial again 2022-11-17 10:52:07 +01:00
Felix Roos 483c3f61b5 midi now works in the tutorial 2022-11-17 10:49:44 +01:00
Felix Roos 83263968f2 fix: rootNotes example 2022-11-17 10:41:32 +01:00
Felix Roos f279c61792 fix: each example 2022-11-17 10:19:04 +01:00
Felix Roos 9717c696d8 add s for sharp (fixes notes example) 2022-11-17 10:16:29 +01:00
Felix Roos 94a594c777 fix sample examples 2022-11-17 10:15:59 +01:00
Felix Roos f1ae8a17cf fix: could play multiple mini repl at once 2022-11-17 10:07:19 +01:00
Felix Roos add9c43827 Merge pull request #254 from tidalcycles/binaries
Binaries
2022-11-16 13:15:28 +01:00
Felix Roos d3f6a5c296 package-lock 2022-11-16 13:13:50 +01:00
Felix Roos 4aea78b7c0 Merge branch 'main' into binaries 2022-11-16 13:13:11 +01:00
Felix Roos 4313fe670d hotfix: fix share #261 2022-11-13 21:32:46 +01:00
Felix Roos 2e8a1b67ea hotfix: fix prebuild 2022-11-13 20:53:28 +01:00
Felix Roos e73044c533 Publish
- @strudel.cycles/react@0.4.1
 - @strudel.cycles/soundfonts@0.4.1
 - @strudel.cycles/webaudio@0.4.1
2022-11-13 20:48:52 +01:00
Felix Roos 418f09e364 hotfix: remove webaudio build for now 2022-11-13 20:48:32 +01:00
Felix Roos 08f207a396 package-lock 2022-11-13 20:44:05 +01:00
Felix Roos 4f57060708 Publish
- @strudel.cycles/core@0.4.0
 - @strudel.cycles/eval@0.4.0
 - @strudel.cycles/midi@0.4.0
 - @strudel.cycles/mini@0.4.0
 - @strudel.cycles/osc@0.3.0
 - @strudel.cycles/react@0.4.0
 - @strudel.cycles/serial@0.2.0
 - @strudel.cycles/soundfonts@0.4.0
 - @strudel.cycles/tonal@0.4.0
 - @strudel.cycles/tone@0.4.0
 - @strudel.cycles/transpiler@0.4.0
 - @strudel.cycles/webaudio@0.4.0
 - @strudel.cycles/webdirt@0.4.0
 - @strudel.cycles/xen@0.4.0
2022-11-13 20:43:00 +01:00
Felix Roos 1507724ecd hotfix: webaudio main file 2022-11-13 20:42:17 +01:00
Felix Roos 4bc2f64b24 Merge pull request #255 from tidalcycles/repl-refactoring
Repl refactoring
2022-11-13 20:20:32 +01:00
Felix Roos 839ba31dfb remove refactoring notes 2022-11-13 18:49:16 +01:00
Felix Roos 2341452d91 fix: highlighting error 2022-11-13 18:44:00 +01:00
Felix Roos 7ab263b514 floating error message 2022-11-13 17:11:14 +01:00
Felix Roos 45b5b5960f remove hideHeader function 2022-11-13 16:54:45 +01:00
Felix Roos 1b8ec1f01c secret zen mode 2022-11-13 15:47:11 +01:00
Felix Roos c92cb1c096 better draw cleanup + began reference tab 2022-11-13 14:50:48 +01:00
Felix Roos 8f31fbe275 proper draw cleanup 2022-11-13 13:58:36 +01:00
Felix Roos aa76419eda fix activeFooter state 2022-11-13 12:25:30 +01:00
Felix Roos 21503c0c38 separate header + footer components 2022-11-13 12:12:19 +01:00
Felix Roos d957b19f55 fix first highlights 2022-11-13 02:00:09 +01:00
Felix Roos 122c4242ce use new transpiler in test runtime 2022-11-13 01:43:54 +01:00
Felix Roos e769ed2fd8 move draw stuff from tone to core + fix getPhase 2022-11-13 01:42:00 +01:00
Felix Roos c722904831 prevent flicker 2022-11-13 00:30:48 +01:00
Felix Roos c93faa9564 show intro only when coming to root url 2022-11-13 00:30:18 +01:00
Felix Roos ce6495a46d unfriend intro readers 2022-11-12 23:38:02 +01:00
Felix Roos 04f2b905af basic intro tab 2022-11-12 21:28:07 +01:00
Felix Roos b668a2c0d2 refactor onTrigger 2022-11-12 20:17:57 +01:00
Felix Roos 5fc8f10602 basic samples tab 2022-11-12 20:17:01 +01:00
Felix Roos a27f399a9e tabbed footer 2022-11-12 17:50:10 +01:00
Felix Roos ff5d14fb63 can now have multiple triggers
+ Pattern.log now makes sense
2022-11-12 16:52:00 +01:00
Felix Roos 27fb2d2d5b remove onLog callbacks 2022-11-12 12:07:02 +01:00
Felix Roos 0b9d59bf0e logger works now outside of react
+ dynamic sample loading logs
+ remove old sampler code
2022-11-12 11:50:39 +01:00
Felix Roos 23e059a065 scheduler error handling + style 2022-11-11 23:35:46 +01:00
Felix Roos 45c7b29a96 big style update + new log system 2022-11-11 22:46:20 +01:00
Felix Roos 3e6c3fda60 update todos 2022-11-10 22:30:12 +01:00
Felix Roos 1a1363ef77 scheduler error handling 2022-11-10 22:25:58 +01:00
Felix Roos b5c51e231b lazy midi init + remove useWebMidi hook 2022-11-10 22:25:28 +01:00
Felix Roos 22711dd7be remove log 2022-11-10 22:05:08 +01:00
Felix Roos 1ba4d3d5d1 only connect via osc when .osc is called 2022-11-10 22:04:22 +01:00
Felix Roos 823ab73585 cleaner error when midi is unsupported 2022-11-10 22:04:02 +01:00
Felix Roos 66c444efac add sourcemaps 2022-11-10 22:03:34 +01:00
Felix Roos b688b8921a init audio on first click to remove warning 2022-11-10 22:03:23 +01:00
Felix Roos 00550ddab5 pass all params to onTrigger 2022-11-10 22:02:08 +01:00
Felix Roos 42fedec088 fix logger 2022-11-10 22:01:55 +01:00
Felix Roos ff3bc0e8c2 fix core log 2022-11-10 22:01:49 +01:00
Felix Roos dde7dff870 fix: hash urls 2022-11-10 21:11:25 +01:00
Felix Roos 25ffc9cf96 add logger 2022-11-10 21:10:33 +01:00
Felix Roos eca92cf5b5 fix: web midi 2022-11-10 18:12:38 +01:00
Felix Roos 372bdf8be7 fix: highlighting sync 2022-11-10 17:15:10 +01:00
Felix Roos c7c90b0647 fix mini repl + improve repl api 2022-11-10 16:36:51 +01:00
Felix Roos 14c2da4fa2 started refac repl to new scheduler + transpiler 2022-11-10 12:07:36 +01:00
Felix Roos 64275cfd22 revert server changes 2022-11-10 10:12:52 +01:00
Felix Roos f0b099d9f7 Merge remote-tracking branch 'origin/main' into binaries 2022-11-10 10:11:47 +01:00
Felix Roos c99d957bc8 Merge pull request #250 from tidalcycles/webaudio-build
Webaudio build
2022-11-08 23:35:10 +01:00
Felix Roos 51b14d55ec fix webaudio main file + add buildless repl 2022-11-08 23:29:27 +01:00
Felix Roos f92d9994df Publish
- @strudel.cycles/soundfonts@0.3.3
 - @strudel.cycles/webaudio@0.3.3
2022-11-08 23:17:43 +01:00
Felix Roos 431e1b87bd add webaudio cjs + esm build task 2022-11-08 23:16:24 +01:00
Felix Roos 3ec2fc6030 Publish
- @strudel.cycles/midi@0.3.3
 - @strudel.cycles/mini@0.3.3
 - @strudel.cycles/react@0.3.3
 - @strudel.cycles/tonal@0.3.3
 - @strudel.cycles/tone@0.3.3
2022-11-08 22:52:46 +01:00
Felix Roos 99f416bf6b hotfix: fix chord-voicings dependency 2022-11-08 22:51:28 +01:00
Felix Roos 89acc4870b Publish
- @strudel.cycles/core@0.3.2
 - @strudel.cycles/eval@0.3.2
 - @strudel.cycles/midi@0.3.2
 - @strudel.cycles/mini@0.3.2
 - @strudel.cycles/react@0.3.2
 - @strudel.cycles/soundfonts@0.3.2
 - @strudel.cycles/tonal@0.3.2
 - @strudel.cycles/tone@0.3.2
 - @strudel.cycles/transpiler@0.3.2
 - @strudel.cycles/webaudio@0.3.2
 - @strudel.cycles/webdirt@0.3.2
 - @strudel.cycles/xen@0.3.2
2022-11-08 22:45:44 +01:00
Felix Roos 314c739c3a Merge pull request #249 from tidalcycles/use-acorn
new transpiler based on acorn
2022-11-08 22:43:31 +01:00
Felix Roos 30b18fc997 add transpiler readme 2022-11-08 22:32:42 +01:00
Felix Roos 168ac60853 use tune that works without transpiler 2022-11-08 21:25:21 +01:00
Felix Roos dff0c0c3b0 vanilla-repl: use mini for all strings
+ skip transpiler
2022-11-08 21:17:00 +01:00
Felix Roos ea3e9de7ab feat: can now set a string parser for reify 2022-11-08 21:16:23 +01:00
Felix Roos c93fd900bc fix: tests 2022-11-08 21:04:41 +01:00
Felix Roos a761aa9a37 use new transpiler in nano-repl 2022-11-08 20:53:47 +01:00
Felix Roos f37eb92d93 support line,column,offset format 2022-11-08 20:53:26 +01:00
Felix Roos 2c7cc5d325 core evaluate now works without transpiler 2022-11-08 20:23:30 +01:00
Felix Roos 16659c82d2 test with old transpiler for now 2022-11-08 19:54:57 +01:00
Felix Roos 4ed3ca4128 use new transpiler in vite-vanilla-repl 2022-11-08 19:50:27 +01:00
Felix Roos 9b2899c8fb transpiler package to replace eval package 2022-11-06 23:15:01 +01:00
Felix Roos fada7fc9cc Publish
- @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
2022-11-06 19:53:24 +01:00
Felix Roos 2be5bca42b hotfix: core dependencies 2022-11-06 19:51:56 +01:00
Felix Roos b1ebf6367c Publish
- @strudel.cycles/core@0.3.1
 - @strudel.cycles/eval@0.3.0
 - @strudel.cycles/midi@0.3.0
 - @strudel.cycles/mini@0.3.0
 - @strudel.cycles/react@0.3.0
 - @strudel.cycles/soundfonts@0.3.0
 - @strudel.cycles/tonal@0.3.0
 - @strudel.cycles/tone@0.3.0
 - @strudel.cycles/webaudio@0.3.0
 - @strudel.cycles/webdirt@0.3.0
 - @strudel.cycles/xen@0.3.0
2022-11-06 19:39:30 +01:00
Felix Roos 57e373f578 hotfix: npmignore react examples 2022-11-06 19:39:05 +01:00
Felix Roos 5c01874a32 release: bump core 0.3.0 2022-11-06 19:37:49 +01:00
Felix Roos dd89e11633 hotfix: npm ignore examples folder 2022-11-06 19:36:01 +01:00
Felix Roos 4e51f19780 Publish
- @strudel.cycles/embed@0.2.0
 - @strudel.cycles/osc@0.2.0
2022-11-06 19:30:53 +01:00
Felix Roos 33d37d8dee Revert "Publish"
This reverts commit 60ce34af43.
2022-11-06 19:28:11 +01:00
Felix Roos 60ce34af43 Publish
- @strudel.cycles/core@0.3.0
 - @strudel.cycles/embed@0.2.0
 - @strudel.cycles/eval@0.3.0
 - @strudel.cycles/midi@0.3.0
 - @strudel.cycles/mini@0.3.0
 - @strudel.cycles/osc@0.2.0
 - @strudel.cycles/react@0.3.0
 - @strudel.cycles/soundfonts@0.3.0
 - @strudel.cycles/tonal@0.3.0
 - @strudel.cycles/tone@0.3.0
 - @strudel.cycles/webaudio@0.3.0
 - @strudel.cycles/webdirt@0.3.0
 - @strudel.cycles/xen@0.3.0
2022-11-06 19:12:57 +01:00
Felix Roos 2602ff6e34 hotfix: revert lerna upgrade 2022-11-06 19:10:09 +01:00
Felix Roos ef5cd36a37 Merge pull request #248 from tidalcycles/general-purpose-scheduler
General purpose scheduler
2022-11-06 19:03:19 +01:00
Felix Roos 7d47f5aba3 remove old clockworker + scheduler 2022-11-06 17:35:53 +01:00
Felix Roos 33cb506c71 add vanilla repl link to githack 2022-11-06 16:09:47 +01:00
Felix Roos 5fb36acb04 rebuild with correct base 2022-11-06 16:06:54 +01:00
Felix Roos 5f985f359b add vanilla repl build 2022-11-06 16:03:49 +01:00
Felix Roos 09045d5387 add vite vanilla js repl example 2022-11-06 15:50:53 +01:00
Felix Roos 371af755df move evaluate logic without transpiler to core
+ breaking change: evalScope is now imported from core
+ breaking change: deprecated extend is now removed
+ add repl.mjs
2022-11-06 12:12:43 +01:00
Felix Roos 0485632e22 Merge remote-tracking branch 'origin/main' into general-purpose-scheduler 2022-11-06 11:06:32 +01:00
Felix Roos c3d6de2412 Merge pull request #243 from tidalcycles/shared-tests
snapshot tests on shared snippets
2022-11-06 11:05:23 +01:00
Felix Roos 36d49b11d9 Merge pull request #247 from tidalcycles/some-tunes
added some tunes
2022-11-06 11:03:41 +01:00
Felix Roos 866277510e fix: samples function did not work in tests 2022-11-06 00:44:23 +01:00
Felix Roos da8e00eb4e Merge remote-tracking branch 'origin/main' into some-tunes 2022-11-06 00:38:05 +01:00
Felix Roos cd30b2af3f Merge pull request #246 from tidalcycles/readme-tlc
patchday
2022-11-06 00:37:11 +01:00
Felix Roos 38b3337d35 add amensister 2022-11-06 00:31:59 +01:00
Felix Roos 84d34aa12b update shift packages 2022-11-05 12:09:00 +01:00
Felix Roos 96b7b68900 add scheduled example 2022-11-05 11:34:15 +01:00
Felix Roos 2a6ffbf5a4 update lerna 2022-11-05 11:33:59 +01:00
Felix Roos 1ac99e260b update plugin-react + osc-js 2022-11-05 11:20:53 +01:00
Felix Roos 519062c8d0 update tailwind 2022-11-04 23:03:54 +01:00
Felix Roos 78d7cdf662 update more things 2022-11-04 21:05:24 +01:00
Felix Roos a191b1e811 update vite in repl 2022-11-04 21:01:04 +01:00
Felix Roos b372161874 update vite in react package 2022-11-04 20:58:36 +01:00
Felix Roos 5bbec7b17c package-lock 2022-11-04 20:46:06 +01:00
Felix Roos 54b847a8ef update tailwind + react 2022-11-04 20:45:45 +01:00
Felix Roos a40a0f730f update codemirror 2022-11-04 20:43:16 +01:00
Felix Roos a677b94297 update webmidi + remove tone piano 2022-11-04 20:36:33 +01:00
Felix Roos d102528d0a Merge pull request #244 from tidalcycles/readme-tlc
Readme + TLC
2022-11-04 20:28:22 +01:00
Felix Roos 854692f975 use only node 18 to save some energy 2022-11-04 20:25:31 +01:00
Felix Roos bdc321df4d update browserslist 2022-11-04 20:24:42 +01:00
Felix Roos 230e8e9d4d revert auto formatted snippet 2022-11-04 20:21:08 +01:00
Felix Roos 96c49689ec improve readmes 2022-11-04 20:15:46 +01:00
Felix Roos 698f560d56 export controls from core root 2022-11-04 20:15:36 +01:00
Felix Roos 67ee493e56 remove cross import + code format 2022-11-04 20:15:11 +01:00
Felix Roos 4fc7ef698a code format 2022-11-04 20:14:57 +01:00
Felix Roos 89434fc3bd replace old snippet 2022-11-04 20:14:47 +01:00
Felix Roos 6129f9afe8 fix: mini repl test tune 2022-11-04 20:13:25 +01:00
Felix Roos e5f38dbbc6 dbdump script 2022-11-04 17:30:19 +01:00
Felix Roos 5534db95bc exclude shared test for now 2022-11-03 19:01:23 +01:00
Felix Roos 37c45424fd all shared tests now pass 2022-11-03 18:57:27 +01:00
Felix Roos ed44f4ed0c add shared tunes test 2022-11-03 16:18:29 +01:00
Felix Roos f829f35cfa Merge pull request #242 from tidalcycles/example-tests
in source example tests
2022-11-03 15:16:03 +01:00
Felix Roos 3033acadbb remove log 2022-11-03 14:57:46 +01:00
Felix Roos 5c2a8a68c0 render doc.json before testing 2022-11-03 14:52:24 +01:00
Felix Roos e9544f8f92 test all in source examples 2022-11-03 14:47:27 +01:00
Felix Roos 1a6743dba9 hotfix: #241 2022-11-03 12:52:01 +01:00
Felix Roos 06d6621c14 Merge pull request #240 from tidalcycles/load-samples-from-url
feat: support github: links
2022-11-02 23:16:43 +01:00
Felix Roos d7b82edae3 feat: support github: links 2022-11-02 23:13:00 +01:00
Felix Roos 5eae156134 Merge pull request #239 from tidalcycles/load-samples-from-url
Load samples from url
2022-11-02 21:26:44 +01:00
Felix Roos d8843e6057 refactor prebake 2022-11-02 21:07:47 +01:00
Felix Roos cf7c734778 feat: can now load samples via url 2022-11-02 12:29:34 +01:00
Felix Roos 240a8930ef Merge pull request #238 from tidalcycles/object-arithmetic
Object arithmetic
2022-11-02 11:42:32 +01:00
Felix Roos 4f3046593a fix: test 2022-11-01 21:54:25 +01:00
Felix Roos a0bd5bdd35 simplify asNumber 2022-11-01 21:45:40 +01:00
Felix Roos e3bc63e4fa fix: osc notes 2022-11-01 21:45:25 +01:00
Felix Roos fbf7c6293f get rid of asNumber on arithmetic functions 2022-11-01 21:38:16 +01:00
Felix Roos e128b02da1 support object arithmetic 2022-11-01 21:31:39 +01:00
Felix Roos 2168dbc6fc flat rave 2022-11-01 17:09:18 +01:00
Felix Roos 97db895354 use new bank function 2022-11-01 00:38:38 +01:00
Felix Roos 48fc68bfdb Merge remote-tracking branch 'origin/tidal-drum-machines' into some-tunes 2022-11-01 00:36:53 +01:00
Felix Roos 3741ffbb59 Merge pull request #237 from tidalcycles/tidal-drum-machines
Tidal drum machines
2022-11-01 00:36:14 +01:00
Felix Roos caf58492f2 move sample data to json files 2022-10-31 23:58:12 +01:00
Felix Roos 0c5bdd0205 make bank a normal param 2022-10-31 23:30:50 +01:00
Felix Roos ae6da0d6ef Merge pull request #236 from tidalcycles/fix-mono
fx on stereo speakers
2022-10-31 21:39:23 +01:00
Felix Roos bdbb4cb495 add all drum machines + soundbank helper 2022-10-31 20:55:23 +01:00
Felix Roos 566c358e8d drum demo 2022-10-31 20:35:34 +01:00
Felix Roos 324cffe6df 808 + 909 2022-10-31 20:34:47 +01:00
Felix Roos dadb8119e8 fix: reverb mono 2022-10-31 20:34:07 +01:00
Felix Roos 335d54b5f4 fix: multichannel worklets 2022-10-31 20:33:42 +01:00
Felix Roos 0fd851999f little fluty tune 2022-10-30 20:38:12 +01:00
Felix Roos 50f88798d8 Merge remote-tracking branch 'origin/main' into some-tunes 2022-10-30 19:36:16 +01:00
Felix Roos 8033cfc49d add sample demo tune 2022-10-30 19:36:06 +01:00
Felix Roos 882f450ee8 Merge pull request #235 from tidalcycles/vcsl-samples
add vcsl sample library
2022-10-30 19:10:32 +01:00
Felix Roos 4d60a582fe note default to 36 2022-10-30 18:49:26 +01:00
Felix Roos 7ef3d33d0e add vcsl sample library 2022-10-30 15:52:51 +01:00
Alex McLean 24328ee8ae Fix zero length queries WIP (#234)
* failing tests for zero-width queries

* support zero width timespans in splitArcs. Fixes one test, breaks a load more..

* fix fastGap
2022-10-29 23:23:10 +01:00
Felix Roos d45c380389 add two tunes 2022-10-29 22:19:11 +02:00
Felix Roos fbb3d144a1 hotfix: missing note calls in some tunes 2022-10-29 18:07:46 +02:00
Felix Roos 7e7e299bce Merge remote-tracking branch 'origin/main' into general-purpose-scheduler 2022-10-29 17:56:30 +02:00
Felix Roos d18116fcbe Merge pull request #232 from tidalcycles/out-by-default
Out by default
2022-10-29 17:54:05 +02:00
Felix Roos e38513f077 more fixes 2022-10-29 17:51:46 +02:00
Felix Roos 08c4c641ec add note calls everywhere 2022-10-29 17:38:54 +02:00
Felix Roos 5d7e46b246 started removing primitive haps from tutorial 2022-10-29 14:58:50 +02:00
Felix Roos dac906a79d fix sample name 2022-10-27 21:20:09 +02:00
Felix Roos ecfeac4d63 clearer error 2022-10-27 21:20:01 +02:00
Felix Roos db1fc399a1 add baseDir to prebake + obj params 2022-10-27 21:19:50 +02:00
Felix Roos 60616a5228 remove old defaultSynth 2022-10-27 21:19:17 +02:00
Felix Roos 699c8d5b60 different default adsr for synths and samples 2022-10-27 20:55:12 +02:00
Felix Roos 4264f013af remove webdirt + tone from tutorial
+ do not load webdirt in repl
2022-10-27 20:51:14 +02:00
Felix Roos ecc4e1803c remove all occurrences of .out() 2022-10-27 19:47:07 +02:00
Felix Roos 5c230c2d65 use webaudio output by default 2022-10-27 19:40:00 +02:00
Felix Roos 6af681354b support primitive notes + tame default gain 2022-10-27 19:39:33 +02:00
Alex McLean 5f381cf153 Patternify range (#231)
* patternify range

* patternify range

* fix test
2022-10-26 22:53:49 +01:00
Felix Roos 2ed290a214 Merge pull request #228 from tidalcycles/just-another-docs-branch
Just another docs branch
2022-10-26 21:42:12 +02:00
Felix Roos cf11472348 Merge pull request #230 from tidalcycles/reafactor-tunes
Refactor tunes away from tone
2022-10-26 21:41:12 +02:00
Felix Roos 2c14514c56 update snapshot 2022-10-26 21:37:41 +02:00
Felix Roos 053e6d8325 refactor remaining usages of tone 2022-10-26 21:30:27 +02:00
Felix Roos 603c55fda7 doc: in source value modifiers 2022-10-26 20:29:12 +02:00
MysteryHouse 113adcc5cc Core util tests (#226)
* Error message formatting, deprecate unused functions
* Add 'test-coverage' script
* Additional test coverage for core util module
* Additional tests for core util module

by @mystery-house
2022-10-20 08:26:28 +01:00
Alex McLean a5bf8f6732 fix fastgap for events that go across cycle boundaries (#225) 2022-10-06 21:35:45 +01:00
Felix Roos c4b482634f doc: begin end 2022-09-25 23:35:30 +02:00
Felix Roos 4b083d6f81 add reverb link 2022-09-25 23:23:37 +02:00
Felix Roos 04973d153b doc: legato gain velocity 2022-09-25 22:39:16 +02:00
Felix Roos 69ce7c78a4 doc: euclid + euclidLegato 2022-09-25 22:09:39 +02:00
Felix Roos b64cf197f2 doc: improve chop + loopAt examples 2022-09-25 21:57:56 +02:00
Felix Roos a8b0279853 Merge remote-tracking branch 'origin/main' into reafactor-tunes 2022-09-25 21:18:03 +02:00
Felix Roos e715e2ba2f Merge remote-tracking branch 'origin/main' into general-purpose-scheduler 2022-09-25 21:16:37 +02:00
Felix Roos 985de36647 Merge remote-tracking branch 'origin/main' into just-another-docs-branch 2022-09-25 21:16:05 +02:00
Felix Roos b7b576e38b Merge pull request #224 from tidalcycles/reverb
Reverb
2022-09-25 21:15:36 +02:00
Felix Roos 5018669ded roomsize 2022-09-25 20:08:02 +02:00
Felix Roos c5342d3eb0 snaps 2022-09-25 16:40:50 +02:00
Felix Roos 0e7a0b5754 more tunes 2022-09-25 16:37:10 +02:00
Felix Roos 933ef02df0 really simple reverb 2022-09-25 16:36:59 +02:00
Alex McLean 513e0d748d focus tweak for squeezeJoin - another go at fixing #216 (#221)
Fixes squeezeJoin, and in the process struct/keepif. fixes #216

Co-authored-by: Felix Roos <flix91@gmail.com>
2022-09-24 23:27:25 +01:00
Felix Roos 852f01fddd Merge pull request #222 from tidalcycles/negative-speed
support negative speeds
2022-09-24 23:17:21 +02:00
Felix Roos 9ebada63e9 support negative speeds 2022-09-24 23:14:43 +02:00
Felix Roos dbda70eee9 Merge pull request #213 from tidalcycles/feedbackdelay
Feedback Delay
2022-09-24 21:55:14 +02:00
Felix Roos 18bd10dfed clean up getDelay args 2022-09-24 21:51:55 +02:00
Felix Roos f76d03a0dc delay as global send via orbit 2022-09-24 21:45:23 +02:00
Alex McLean 86ba5c9c1a Merge pull request #220 from tidalcycles/fix-squeezeJoin
Fix squeeze join
2022-09-23 11:06:16 +01:00
alex 5b56fbed97 adjust use of focus in squeezeJoin - fixes #216 2022-09-23 08:00:53 +01:00
alex dfdd918ea0 attempt at fixing #216 2022-09-22 22:52:02 +01:00
Felix Roos df2c7ec1a1 doc: chop + loopAt 2022-09-22 23:20:15 +02:00
Felix Roos 0d179f2042 tutorial is now dark 2022-09-22 23:20:03 +02:00
Felix Roos 63c6a9735c Merge branch 'main' into general-purpose-scheduler 2022-09-22 21:25:44 +02:00
Felix Roos f7e3f7d187 Merge branch 'main' into feedbackdelay 2022-09-22 21:25:12 +02:00
Felix Roos cc54da5980 Merge pull request #219 from tidalcycles/webaudio-output
encapsulate webaudio output
2022-09-22 21:23:11 +02:00
Felix Roos ca82796081 getDestination collides with tone
-> do not export for now (not needed)
-> can be refactored when tone is removed
-> also prevent loading worklets in node
2022-09-22 21:19:44 +02:00
Felix Roos d092068bd2 migrate to encapsulated out 2022-09-22 20:24:59 +02:00
Felix Roos 0c1529237c Merge commit '6dbb2cb98a41edc6ad6b3458a6f7067044cb66cd' into general-purpose-scheduler 2022-09-22 19:54:58 +02:00
Felix Roos 6dbb2cb98a encapsulate out
+ encapsulate destination
+ error handling
to simplify merge scheduler branch
2022-09-22 19:50:07 +02:00
Felix Roos ead763b909 Merge remote-tracking branch 'origin/main' into reafactor-tunes 2022-09-22 19:24:28 +02:00
Felix Roos 415139851e Merge remote-tracking branch 'origin/HEAD' into just-another-docs-branch 2022-09-22 19:22:35 +02:00
Felix Roos 5c99b72e2f Merge remote-tracking branch 'origin/HEAD' into feedbackdelay 2022-09-22 19:22:08 +02:00
Felix Roos 82cb6c93cf Merge pull request #218 from tidalcycles/webdirt-feature-parity
samples now have envelopes
2022-09-22 19:18:18 +02:00
Felix Roos d21734ccf2 update snapshots 2022-09-22 19:15:53 +02:00
Felix Roos 91934006d5 adjust default envelope 2022-09-22 19:09:38 +02:00
Felix Roos 014c258c57 sample adsr support 2022-09-22 15:33:06 +02:00
Felix Roos 5e76bc3f2f Merge pull request #217 from tidalcycles/webdirt-feature-parity
sampler features + fixes
2022-09-22 00:03:30 +02:00
Felix Roos 7f6940f3a5 cut precision 2022-09-21 22:47:16 +02:00
Felix Roos 8d5682deb0 cut + loop 2022-09-21 22:44:56 +02:00
Felix Roos 819abbfa7a fix sample slicing + unit + nudge 2022-09-21 22:25:35 +02:00
Felix Roos 227ad332b8 add missing params to echo 2022-09-19 23:42:04 +02:00
Felix Roos 17c83e1a85 Merge pull request #215 from tidalcycles/just-another-docs-branch
Just another docs PR
2022-09-19 23:32:55 +02:00
Felix Roos 5d699496ca doc: chunk + chunkBack 2022-09-19 23:30:37 +02:00
Felix Roos e4f4fe81ae doc: iterBack 2022-09-19 23:21:55 +02:00
Felix Roos abe28367fb doc: iter 2022-09-19 23:19:39 +02:00
Felix Roos cc394d9f74 doc: echo + echoWith 2022-09-19 23:13:36 +02:00
Felix Roos 476b51ee31 fix deployment permissions 2022-09-19 22:40:04 +02:00
Felix Roos ec823ade14 do everything in one step 2022-09-19 22:35:56 +02:00
Felix Roos 0c3777f7d7 wait for build before deploy 2022-09-19 22:31:41 +02:00
Felix Roos a679e47c0d fix workflow 2022-09-19 22:27:56 +02:00
Felix Roos 1e82735241 rename deploy workflow 2022-09-19 22:26:34 +02:00
Felix Roos a09ec6b0b5 deployment: next try 2022-09-19 22:22:11 +02:00
Felix Roos 0134a50ffa add update button 2022-09-19 22:09:23 +02:00
Felix Roos 1da005e811 deploy after build 2022-09-19 21:58:12 +02:00
Felix Roos 8ab912429b build: npm i inside tutorial 2022-09-19 21:54:34 +02:00
Felix Roos 88d12223a5 build: add npm i in repl folder 2022-09-19 21:52:31 +02:00
Felix Roos 6c363d9c4b add rollup-plugin-visualizer in root pkg 2022-09-19 21:50:38 +02:00
Felix Roos 6d3d9659e2 try build workflow 2022-09-19 21:48:47 +02:00
Felix Roos 8977c5cef4 revert exponential adsr 2022-09-18 22:55:33 +02:00
Felix Roos d3645f6c63 fix tests 2022-09-18 22:42:30 +02:00
Felix Roos dbb057621d refactor caverave + throw out some tunes 2022-09-18 22:40:19 +02:00
Felix Roos 3a65bc0650 improve adsr 2022-09-18 22:39:40 +02:00
Felix Roos 1eb6ff8c17 add feedback delay effect 2022-09-18 21:17:16 +02:00
Felix Roos 505cc01a18 remove empty heading 2022-09-17 23:59:16 +02:00
Felix Roos fdc4bb455f fix: formatting 2022-09-17 23:54:28 +02:00
Felix Roos c1a27aa6e4 Merge pull request #212 from tidalcycles/even-more-docs
Even more docs
2022-09-17 23:47:43 +02:00
Felix Roos a14c7233d4 fix: tests 2022-09-17 23:40:56 +02:00
Felix Roos c786d77b07 make polyrhythm alias of stack #211 2022-09-17 23:38:42 +02:00
Felix Roos e4913dfb73 mark tone + webdirt deprecated
+ add superdirt param list
2022-09-17 23:35:35 +02:00
Felix Roos dfd33bab8e dedupe accumulation modifiers 2022-09-17 23:16:13 +02:00
Felix Roos 19b8f073b1 dedupe most of core api doc 2022-09-17 22:46:30 +02:00
Felix Roos b38b16f70e doc: early, late, each, every, rev + doc structure 2022-09-17 21:45:39 +02:00
Felix Roos dd69e4caff doc: rand irand perlin 2022-09-17 21:03:58 +02:00
Felix Roos 762a17d949 fix: remove TLA 2022-09-17 15:42:34 +02:00
Felix Roos d90cb23f22 Merge pull request #207 from tidalcycles/webaudio-guide
Webaudio guide
2022-09-17 15:36:53 +02:00
Felix Roos 1ccc391c8e proper disconnect onend 2022-09-17 15:32:36 +02:00
Felix Roos cafcead62e doc: web audio effects 2022-09-17 15:18:57 +02:00
Felix Roos 71ca46b21b remove headings for generated doc 2022-09-17 15:18:38 +02:00
Felix Roos acf339ad13 load worklets on startup 2022-09-17 15:18:16 +02:00
Felix Roos de4726ec8d improve sampler section 2022-09-16 23:59:46 +02:00
Felix Roos e58aff41f9 begin webaudio tutorial 2022-09-16 23:25:42 +02:00
Felix Roos 3c8acf9e0e comment out timeout:
it will cut of samples that are longer than hap..
2022-09-16 23:25:33 +02:00
Felix Roos 782e8522c5 add all default samples to mini repl 2022-09-16 23:24:47 +02:00
Felix Roos dd4464cb08 fix build: dont add sourcemaps 2022-09-16 11:05:38 +02:00
Felix Roos 3fdfd12448 hotfix: disconnect chain after use 2022-09-16 00:53:43 +02:00
Felix Roos a11d23ba62 hotfix: out should not be async 2022-09-16 00:30:37 +02:00
Felix Roos 6bab362171 Merge pull request #205 from tidalcycles/coarse-crush-shape
Coarse crush shape
2022-09-16 00:21:28 +02:00
Felix Roos 5d28c5c825 add license info 2022-09-16 00:17:42 +02:00
Felix Roos b9173ebe50 add coarse, crush and shape 2022-09-16 00:14:28 +02:00
Felix Roos 0a1577ff43 refactor kalimba 2022-09-15 21:17:39 +02:00
Felix Roos a616d6fd3e Merge pull request #201 from tidalcycles/vowel
add vowel to .out
2022-09-15 21:04:28 +02:00
Felix Roos 149b2ab9f9 make vowel work with node 2022-09-15 20:11:10 +02:00
Felix Roos 4406dd88d1 add vowel 2022-09-15 20:09:07 +02:00
Felix Roos 48a950faf8 Merge pull request #200 from tidalcycles/build-analyze
add rollup-plugin-visualizer to build
2022-09-15 16:55:52 +02:00
Felix Roos 0ffbb5cb2c ignore stats 2022-09-15 16:54:27 +02:00
Felix Roos f4c31bcf2c Merge pull request #199 from tidalcycles/docs-update
document random functions
2022-09-14 23:46:39 +02:00
Felix Roos f0e412a443 doc: chooseCycles + mini shorthands 2022-09-14 23:40:48 +02:00
Felix Roos ce91d36b7a doc: random functions 2022-09-14 23:16:24 +02:00
Felix Roos a022e5bb93 add missing external deps to react pkg 2022-09-14 21:55:09 +02:00
Felix Roos 8e61673bd6 doc: degradeBy 2022-09-14 21:54:42 +02:00
Felix Roos 88e39d22f1 add drums to mini repl 2022-09-14 21:53:41 +02:00
Felix Roos 1441374f6e Create README.md 2022-09-13 22:45:03 +02:00
Felix Roos d1cedaa3e8 add dependencies graphic
npx depcruise --include-only "^packages" -X "node_modules" --output-type dot packages | dot -T svg > dependencies.svg
2022-09-13 22:40:52 +02:00
Felix Roos 5b721f6453 package-lock 2022-09-10 23:32:33 +02:00
Felix Roos a5f05b4715 hotfix: regression of #196
- samples loaded as arrays would not be repitched
2022-09-10 23:19:23 +02:00
Felix Roos 96f49f117a add build analyzer 2022-09-10 23:04:21 +02:00
Felix Roos 88e1211762 Merge pull request #196 from tidalcycles/fix-numbers-in-sampler
Fix numbers in sampler
2022-09-09 22:04:40 +02:00
Felix Roos 59e1664223 pull in midi logic 2022-09-09 22:02:24 +02:00
Felix Roos 42922a0d75 fix: support numbers in piano / sampler 2022-09-09 21:56:07 +02:00
Felix Roos 4f8a2a0900 another round of scheduling 2022-08-26 23:58:39 +02:00
Felix Roos 9a2a26e904 add a little dot 2022-08-23 21:56:38 +02:00
Felix Roos 067c3433b6 add nano-repl build 2022-08-23 21:55:06 +02:00
Felix Roos d0b07c4890 fix latency issues for larger intervals 2022-08-23 21:52:24 +02:00
Felix Roos 24f8f48a2f nano repl now supports highlighting 2022-08-23 21:24:25 +02:00
Felix Roos acafcc9888 build react pkg 2022-08-23 21:23:44 +02:00
Felix Roos ec4cfe6f86 use new getTime callback in repl + mini repl 2022-08-23 21:23:28 +02:00
Felix Roos 7b0c80c8be getTime callback for highlighting time 2022-08-23 21:23:01 +02:00
Felix Roos 29029714ee expose pattern form useStrudel 2022-08-23 21:22:28 +02:00
Felix Roos cd1203d1e2 fix pause + remove logs 2022-08-23 20:56:09 +02:00
Felix Roos 4dfc34515c fix nano-repl prod build 2022-08-23 18:23:36 +02:00
Felix Roos 11a9f3ced3 no top level await + no evaluate on mount 2022-08-23 18:04:35 +02:00
Felix Roos 5be1a7000c cleanup 2022-08-23 17:56:01 +02:00
Felix Roos 9059c1b850 scheduler is now finally tight 2022-08-23 17:55:10 +02:00
Felix Roos ec60fe42be fix scheduler again.. add comments 2022-08-23 11:30:00 +02:00
Felix Roos 275931969e scheduler error correction failed attempt 2022-08-22 22:15:32 +02:00
Felix Roos e37e0f189a build react package 2022-08-21 11:22:30 +02:00
Felix Roos 8103943396 wait for ctx.resume 2022-08-21 11:21:36 +02:00
Felix Roos 9497c99e9e merge evaluator and scheduler hooks + use getTime 2022-08-21 11:21:19 +02:00
Felix Roos 2172d1a767 scheduler error correction via getTime 2022-08-21 11:20:15 +02:00
Felix Roos e72c47869a comment out stuff that uses tone.js 2022-08-18 20:50:20 +02:00
Felix Roos 5ea2124e91 webaudio error handling 2022-08-18 20:46:42 +02:00
Felix Roos 0c08919bfa add codemirror + keyboard shortcuts 2022-08-18 16:16:23 +02:00
Felix Roos a7562c3803 add useKeydown helper 2022-08-18 16:15:44 +02:00
Felix Roos 5f4d8f6862 add tailwind 2022-08-18 16:15:23 +02:00
Felix Roos 9c7d0951b7 pause action + started flag 2022-08-18 16:13:50 +02:00
Felix Roos 75e57c75cf add master gain + panic 2022-08-18 16:13:27 +02:00
Felix Roos 04502b05d4 better default tune + fix dirty state 2022-08-18 15:16:29 +02:00
Felix Roos e3e3a8404a nano-repl add modules + proper eval 2022-08-18 00:27:16 +02:00
Felix Roos 48bf17614f fix: runtime error reify undefined 2022-08-18 00:26:57 +02:00
Felix Roos 1941b1ff65 add react nano-repl example 2022-08-17 23:59:40 +02:00
Felix Roos 46aa3d275a package-lock 2022-08-17 23:58:47 +02:00
Felix Roos d667e790b9 export new hooks 2022-08-17 23:58:34 +02:00
Felix Roos bc345b569b add hooks for scheduler and evaluator 2022-08-17 23:57:49 +02:00
Felix Roos ee84b4e013 export webaudio out as separate function 2022-08-17 23:56:36 +02:00
Felix Roos e77129fa51 scheduler error callback 2022-08-17 23:55:06 +02:00
Felix Roos 591855919e working default tune 2022-08-17 21:29:57 +02:00
Felix Roos 7af6188a8a move scheduler to core + move audioctx to userland 2022-08-17 21:26:00 +02:00
Felix Roos 1cd31cfce9 fix getFrequency for .note 2022-08-17 21:25:04 +02:00
Felix Roos 227dda921c bump to 0.0.4 2022-08-14 18:06:50 +02:00
Felix Roos bdf2047ea1 add npte for new packages 2022-08-14 18:05:08 +02:00
Felix Roos 0522996b7f bump soundfont package for rerelease 2022-08-14 18:02:06 +02:00
Felix Roos e9e25ef8d8 Publish
- @strudel.cycles/core@0.2.0
 - @strudel.cycles/eval@0.2.0
 - @strudel.cycles/midi@0.2.0
 - @strudel.cycles/mini@0.2.0
 - @strudel.cycles/react@0.2.0
 - @strudel.cycles/soundfonts@0.2.0
 - @strudel.cycles/tonal@0.2.0
 - @strudel.cycles/tone@0.2.0
 - @strudel.cycles/webaudio@0.2.0
 - @strudel.cycles/webdirt@0.2.0
 - @strudel.cycles/xen@0.2.0
2022-08-14 17:56:28 +02:00
Felix Roos a08325c975 add soundfont2 dependency 2022-08-14 17:51:07 +02:00
Felix Roos 4d8adde9d5 Merge pull request #185 from bpow/mini-notation-random-offsets
change "stride"/"offset" of successive degradeBy/chooseIn
2022-08-14 17:40:41 +02:00
Felix Roos f2b2f4f226 Merge pull request #183 from tidalcycles/soundfont-file-support
Soundfont file support
2022-08-14 16:04:14 +02:00
Felix Roos 40bbc57269 Merge pull request #190 from tidalcycles/fix-legacy-frequency
fix regression: old way of setting frequencies was broken
2022-08-14 15:55:50 +02:00
Felix Roos 48526824d6 support old way of setting frequencies 2022-08-14 15:51:01 +02:00
Felix Roos 745c37f2d1 Merge pull request #189 from tidalcycles/fix-188
wait for prebake to finish before evaluating
2022-08-14 15:45:53 +02:00
Felix Roos 0e185b7335 wait for prebake to finish before evaluating 2022-08-14 15:43:17 +02:00
Felix Roos 596ae696f9 Merge branch 'main' into soundfont-file-support 2022-08-14 14:53:53 +02:00
Felix Roos b5e2bdf0f9 Merge pull request #186 from tidalcycles/fix-codemirror-bug
Fix codemirror bug
2022-08-14 11:30:59 +02:00
Felix Roos 4e09cc14b6 fix #178 2022-08-14 11:27:13 +02:00
Bradford Powell 58dc46b445 change "stride"/"offset" of successive degradeBy/chooseIn
This avoids (without fixing) #184).

Note that the offset in tidal is currently 0.0001, but using this
would result in excess correlation between sequential uses of
random, which would manifest in failure of the 'supports the randome
choice operator with nesting' test. So I just used 0.0002 instead
2022-08-13 21:55:17 -04:00
Felix Roos f34d0a29e8 memo all things codemirror 2022-08-13 18:39:38 +02:00
Felix Roos 365a90e72e Merge remote-tracking branch 'origin/main' into soundfont-file-support 2022-08-13 16:31:50 +02:00
Felix Roos 72f4d3efa8 Merge pull request #181 from tidalcycles/optimize-scheduler
scheduler improvements
2022-08-13 16:29:53 +02:00
Felix Roos 98f4d4de8b remove cps-sketch build 2022-08-13 16:28:31 +02:00
Felix Roos 57f84748ec Merge remote-tracking branch 'origin/HEAD' into optimize-scheduler 2022-08-13 16:26:39 +02:00
Felix Roos 4fb57d2818 Merge pull request #175 from tidalcycles/vitest
replace mocha with vitest
2022-08-12 23:10:35 +02:00
Felix Roos aff819069f relative script src 2022-08-12 22:32:37 +02:00
Felix Roos af585588af rebuild example for cps control 2022-08-12 22:30:32 +02:00
Felix Roos eaf6617a43 allow changing cps from a hap 2022-08-12 22:28:19 +02:00
Felix Roos 4b294c4aff build example 2022-08-12 22:03:35 +02:00
Felix Roos c2354bffa2 use phase to allow smooth tempo changes 2022-08-12 22:01:09 +02:00
Felix Roos ea1ffca4ae remove lastEnd 2022-08-12 01:27:01 +02:00
Felix Roos 86a68d78c1 test build 2022-08-12 00:57:36 +02:00
Felix Roos 2e4a3516c8 example: import from modules 2022-08-12 00:53:40 +02:00
Felix Roos e71fec0e95 change theme 2022-08-11 23:15:27 +02:00
Felix Roos 9478915cf4 work on scheduler:
- simplify clockworker (no audioContext)
- tick based scheduler with cps
- support cps in .out
2022-08-11 22:58:37 +02:00
Felix Roos f955d77d71 use vitest snapshot feature for tunes 2022-08-10 00:17:58 +02:00
Felix Roos c1255bfa88 vitest config via file 2022-08-10 00:17:29 +02:00
Felix Roos 9aaeee2026 disable isolate 2022-08-09 23:49:15 +02:00
Felix Roos 27b3a4083b try with isolate + add task for ui 2022-08-09 23:45:33 +02:00
Felix Roos 2f1d963126 dont use beforeAll 2022-08-09 23:45:19 +02:00
Felix Roos 235e82a348 make tests a little bit faster 2022-08-09 23:28:36 +02:00
Felix Roos 17d0b7d291 bump vitest + remove mocha 2022-08-09 23:09:02 +02:00
Felix Roos 22c60fb894 move tunes test to vitest 2022-08-09 23:08:01 +02:00
Felix Roos dc3a873abc extend -> evalScope in runtime 2022-08-09 23:07:41 +02:00
Felix Roos 543d5f0619 test with evalScope instead of extend 2022-08-09 23:07:24 +02:00
Felix Roos 8b088ab6c2 migrate mini test 2022-08-09 23:06:16 +02:00
Felix Roos 29009e14f4 Merge remote-tracking branch 'origin/HEAD' into vitest 2022-08-09 22:08:45 +02:00
Felix Roos bf3e90baf5 add contributor avatars 2022-08-08 22:49:41 +02:00
Felix Roos 3986c407ff cache loaded soundfonts 2022-08-07 23:53:14 +02:00
Felix Roos 8bd56d29d6 add sfumato soundfont player 2022-08-07 21:30:02 +02:00
Felix Roos 467b3db824 handle objects in getPlayableNoteValue 2022-08-07 21:21:44 +02:00
Felix Roos 6025dd6f79 Merge pull request #165 from bpow/randomness
incorporate elements of randomness to the mini notation
2022-08-07 00:59:07 +02:00
Bradford Powell 984f3d2781 add a "tune" and snapshot using the | and ? operators 2022-08-06 18:22:03 -04:00
Bradford Powell 0a558b963d add probabilistic tests for the ? and | mini-notation operators
The tests are probabilistic, so it is possible that if the
pseudo-random number generator changes in the future, we might
get results that fail. They work for the current PRNG, though,
and use boundaries for the number of values of different types
such that there should only be about a 1% probability that the
tests would fail by chance assuming that the PRNG returns
evenly distributed values.
2022-08-06 18:22:03 -04:00
Bradford Powell 1227d98904 add a non-probabilistic test for the ? operator
This really just tests that the ? operator faithfully gets represented
as degradeBy(0.5)
2022-08-06 18:22:03 -04:00
Bradford Powell f533e4a5d0 Change offset for "stateful random" streams
This would no longer match with Tidal (which uses
0.0001), but reduces the correlation among the
the different random streams in the mini-notation's
parsing of ? and |
2022-08-06 18:22:03 -04:00
Bradford Powell 0b00ad98e6 claim victory over the ? and | notations 2022-08-06 18:22:03 -04:00
Bradford Powell 8988408d18 update krill-parser for the changes to .pegjs file 2022-08-06 18:22:02 -04:00
Bradford Powell f858d89f7b implement random choice in mini notation
this will require update to krill-parser.js (aggregated
in later commit) to work properly
2022-08-06 18:22:02 -04:00
Bradford Powell 964ee68974 implement "?" operator in minilanguage (for degradeBy)
this will require update to krill-parser.js (aggregated
in later commit) to work properly
2022-08-06 18:22:02 -04:00
Felix Roos 8244ba7754 hotfix: prebake flag to skip fetch 2022-08-07 00:14:27 +02:00
Felix Roos 21b2184750 Merge pull request #177 from tidalcycles/soft-errors
fix some annoying bugs
2022-08-06 23:32:16 +02:00
Felix Roos 8d1c98f03e always throw error for invalid notes 2022-08-06 21:37:41 +02:00
Felix Roos 684bab99a9 Merge remote-tracking branch 'origin/main' into soft-errors 2022-08-06 21:32:47 +02:00
Felix Roos 7a4a8a4581 run all tests at once 2022-08-06 21:29:36 +02:00
Felix Roos b8843a0eb6 readd mocha dep to root package 2022-08-06 12:32:42 +02:00
Felix Roos 563dfbea43 remove mocha from packages 2022-08-06 12:30:14 +02:00
Felix Roos 488ebf8f1a replace old tests
+ ignore tune test for now
+ add happy-dom
2022-08-06 12:22:11 +02:00
Felix Roos 03158bd689 test tonal tone xen 2022-08-06 11:20:11 +02:00
Felix Roos 765f2df18e vitest eval + mini 2022-08-06 10:48:44 +02:00
Felix Roos a15d8553e0 refactor pattern tests 2022-08-06 01:31:50 +02:00
Felix Roos 3a790b03ac refactor drawLine + fraction test 2022-08-06 00:53:10 +02:00
Felix Roos 90e5e03531 refactor value.test 2022-08-06 00:50:10 +02:00
Felix Roos a4158c16f0 refactor core util.test 2022-08-06 00:47:49 +02:00
Felix Roos ffc0b364ca add vitest 2022-08-06 00:47:36 +02:00
Felix Roos 1efb8f6681 Merge pull request #173 from tidalcycles/replace-react-codemirror
Replace react-codemirror6 with @uiw/react-codemirror
2022-08-06 00:27:16 +02:00
Felix Roos 55b2d7f68f add onSelectionChange callback 2022-08-05 23:50:42 +02:00
Felix Roos 7f0e98ea93 remove old overrides 2022-08-05 23:38:45 +02:00
Felix Roos 67c21c18cf set background to 222 + remove log 2022-08-05 23:23:51 +02:00
Felix Roos 0cd82c7e57 tutorial styles 2022-08-05 23:23:17 +02:00
Felix Roos 1942c36443 fix style import 2022-08-05 23:18:03 +02:00
Felix Roos 93251582ab replace react-codemirror 2022-08-05 23:05:33 +02:00
Felix Roos decd2d6625 fixes #130 + #156 2022-08-05 16:10:37 +02:00
Felix Roos 6824dcb89b Merge pull request #99 from tidalcycles/configurable-shapeshifter
add more shapeshifter flags
2022-08-04 22:19:46 +02:00
Felix Roos eeac075a29 Merge branch 'main' into configurable-shapeshifter 2022-08-04 22:13:52 +02:00
Felix Roos b864b1dec3 Merge pull request #171 from debrisapron/dynamic-import
Amend shapeshifter to allow use of dynamic import
2022-08-04 22:06:38 +02:00
DEBRIS APRON 130fb9c217 Amend shapeshifter to allow use of dynamic import 2022-08-03 17:32:23 -07:00
Felix Roos 688a3d29fd Merge pull request #164 from tidalcycles/talk-fixes
Talk fixes
2022-08-02 23:43:07 +02:00
Felix Roos 800f2f466b darken repl background
+ dont highlight active line
2022-08-02 23:39:07 +02:00
Felix Roos 655a9ff1a4 Merge remote-tracking branch 'origin/HEAD' into talk-fixes 2022-08-02 23:17:02 +02:00
Felix Roos 12f8902c5f Merge pull request #163 from tidalcycles/pianoroll-fixes
Pianoroll fixes
2022-08-02 23:04:34 +02:00
Felix Roos 9cdb1a53f9 Merge pull request #169 from tidalcycles/fix-jsdoc
fix: jsdoc comments
2022-08-02 22:57:43 +02:00
Felix Roos f5efa18e96 fix: jsdoc comments 2022-08-02 22:56:04 +02:00
Alex McLean fcebde5abd Merge pull request #166 from tidalcycles/chooseCycles
add chooseInWith/chooseCycles
2022-07-30 22:51:11 +01:00
alex 7fbd4527e5 chooseInWith, choose2, randcat, and some reformatting 2022-07-30 22:24:26 +01:00
alex d79716c3f8 add chooseInWith/chooseCycles 2022-07-30 09:27:43 +01:00
Felix Roos 884811fd99 darken mini repl bg 2022-07-29 00:19:06 +02:00
Felix Roos 712a2ae018 .out error handling 2022-07-29 00:05:20 +02:00
Felix Roos 4f460eeb32 style errors, fixed backdrop + hide console 2022-07-29 00:03:46 +02:00
Felix Roos 913416a9d5 style fixes + hide-console option
- thicker highlighting outline
- only shade actual characters, not whole lines
- strudel hide-console will now hide console
2022-07-29 00:00:41 +02:00
Felix Roos fd61001b4d getFreq + midi2note helpers 2022-07-28 23:55:17 +02:00
Felix Roos ce4d2c17a7 minirepl optimizations:
- can now evaluate on init
- support disable-highlighting
- support keyboard shortcuts
- support flash
2022-07-28 23:55:05 +02:00
Felix Roos a42ebd7aaf log helpers 2022-07-28 23:46:30 +02:00
Felix Roos f38718004f pianoroll optimizations
- fix flickering due to global alpha mutation
- change default inactive color
- add smear option
- add playheadColor option
2022-07-28 22:27:54 +02:00
Felix Roos 1ddf968750 fix: draw playhead only once 2022-07-28 22:26:14 +02:00
Felix Roos 71dc108b2d Merge pull request #162 from larkob/euclidian
update to tutorial documentation
2022-07-28 19:26:41 +02:00
Lars Kobbe 82728be44b remove edit and pipe function (duplicate of layer and apply) 2022-07-25 22:20:06 +02:00
Lars Kobbe bebfa23cc9 add Euclidian, remove append 2022-07-24 21:20:38 +02:00
Felix Roos 1dad987073 Merge pull request #150 from larkob/prebake-emusp12
add webdirt drum samples to prebake for general availability
2022-07-12 18:58:46 +02:00
Lars Kobbe 6728abf595 added flag for node 16 LTS compatibility 2022-07-12 11:03:15 +02:00
Lars Kobbe 669fce36e9 use fetch instead of import 2022-07-12 09:46:18 +02:00
Lars Kobbe b11003c472 added json assertion 2022-07-12 08:37:21 +02:00
Alex McLean 187f80bfc9 Merge pull request #151 from tidalcycles/paper-update
Final update to demo.pdf
2022-07-12 07:34:16 +01:00
Lars Kobbe 611d216bb0 added EMuSP12 samples to prebake 2022-07-11 23:57:49 +02:00
Felix Roos 8a1cd32d50 Merge pull request #148 from tidalcycles/webaudio-optimizations
Sampler optimizations and more
2022-06-28 21:54:34 +02:00
Felix Roos 2a18b27114 rerun snapshots 2022-06-28 21:51:11 +02:00
Felix Roos 55f91143d9 rename choke -> clip 2022-06-28 21:50:08 +02:00
Felix Roos cf564a7d06 fix tests 2022-06-27 23:52:02 +02:00
Felix Roos b55067ad60 load piano samples locally 2022-06-27 23:32:45 +02:00
Felix Roos a437c698eb style version log + check if already loaded 2022-06-27 23:17:46 +02:00
Felix Roos f8ada70fe7 add tune 2022-06-27 22:40:59 +02:00
Felix Roos 196d9db3fa log core version + add warning to isPattern 2022-06-27 22:40:50 +02:00
Felix Roos e29eaf3785 fix splitSN 2022-06-27 00:57:27 +02:00
Felix Roos 7048ea473f migrate tone piano to own piano 2022-06-27 00:50:24 +02:00
Felix Roos 720b1eeb27 fix soundfonts + samples without base 2022-06-27 00:49:58 +02:00
Felix Roos 4e282dac5b migrate underground plumber 2022-06-27 00:26:29 +02:00
Felix Roos 42343254b1 fix single sampels 2022-06-27 00:26:21 +02:00
Felix Roos e98829c96b tame oscillator gain 2022-06-27 00:26:11 +02:00
Felix Roos 5791f12a28 add prebake script with piano 2022-06-27 00:04:33 +02:00
Felix Roos fe9a6e8fdd draw note property if set 2022-06-27 00:03:26 +02:00
Felix Roos dd3f4e4751 support "s" as "#" alternative inside note names 2022-06-27 00:03:06 +02:00
Felix Roos a89fa766ea support colon sign as normal char 2022-06-27 00:02:33 +02:00
Felix Roos 39c2cf6c72 add build:parser script once more.. 2022-06-27 00:01:59 +02:00
Felix Roos c1ce72469c webaudio optimizations
- samples with obejct format for pitch declaration
- support note to repitch samples
- support choke to fit samples to hap duration
- support "legacy" context.velocity in .out
- support ":" inside s or note to set n
- fix sample fadeout for soundfonts and choke
- move gain before filters
2022-06-27 00:01:28 +02:00
Felix Roos eca76dd7c4 refactor share for build without top level await 2022-06-26 13:05:36 +02:00
Felix Roos 621b2d8fc9 Merge pull request #146 from tidalcycles/share-link
can now generate short link for sharing
2022-06-26 12:58:53 +02:00
Felix Roos 4039b962b4 can now generate short link for sharing 2022-06-26 12:49:29 +02:00
Felix Roos 70cc0b93f0 build 2022-06-25 23:53:31 +02:00
Felix Roos 81e90cd4e4 small fixes 2022-06-25 23:53:27 +02:00
alex 80bd3be0a1 more citations 2022-06-24 22:40:13 +01:00
alex 829a794df7 Merge branch 'paper-update' of github.com:tidalcycles/strudel into paper-update 2022-06-24 22:39:59 +01:00
alex 00997408b8 build 2022-06-24 22:22:56 +01:00
alex 4d3bdfc52f improved ciations 2022-06-24 22:22:44 +01:00
alex b14d0926ed improved ciations 2022-06-24 22:22:28 +01:00
Felix Roos 59b46db8db add sound chapter, trim down future chapter 2022-06-24 23:16:12 +02:00
alex a240284727 paper updates 2022-06-24 21:29:18 +01:00
Felix Roos 3d314324e0 Merge pull request #144 from tidalcycles/flash-effect
flash effect on ctrl enter
2022-06-24 22:16:03 +02:00
Felix Roos b9829bb696 flash effect on ctrl enter 2022-06-24 21:13:17 +02:00
Felix Roos 85f03fb1d0 Merge pull request #142 from tidalcycles/pianoroll-object-support
Pianoroll Object Support
2022-06-22 20:18:17 +02:00
Felix Roos 69810303e5 remove old code 2022-06-22 20:17:12 +02:00
Felix Roos 5b0e31acf3 add tune 2022-06-22 20:13:41 +02:00
alex f0a934e014 Publish
- @strudel.cycles/serial@0.1.3
 - @strudel.cycles/soundfonts@0.1.1
 - @strudel.cycles/webaudio@0.1.4
2022-06-22 13:35:13 +01:00
alex 328e4db1a2 bump 2022-06-21 22:00:08 +01:00
Alex McLean a708265e14 Merge pull request #141 from tidalcycles/serial-twiddles
Serial twiddles
2022-06-21 21:57:27 +01:00
alex a0618f7f47 remove console logging 2022-06-21 21:47:29 +01:00
alex f2bd9fae01 remove hackery 2022-06-21 21:46:23 +01:00
Felix Roos 64f717f81b object support for pianoroll 2022-06-21 22:38:05 +02:00
Felix Roos fd17377c18 Merge pull request #139 from tidalcycles/soundfonts
Soundfont Support
2022-06-21 22:20:04 +02:00
alex 6698fdb6e6 Merge branch 'main' into serial-twiddles 2022-06-21 17:03:02 +01:00
alex e2eab1ee5d Publish
- @strudel.cycles/core@0.1.2
 - @strudel.cycles/eval@0.1.3
 - @strudel.cycles/midi@0.1.3
 - @strudel.cycles/mini@0.1.3
 - @strudel.cycles/react@0.1.4
 - @strudel.cycles/tonal@0.1.3
 - @strudel.cycles/tone@0.1.3
 - @strudel.cycles/webaudio@0.1.3
 - @strudel.cycles/webdirt@0.1.2
 - @strudel.cycles/xen@0.1.3
2022-06-21 16:41:54 +01:00
alex aee9bf7cc2 remove async from serial, default baudrate to 38400 2022-06-21 15:54:18 +01:00
Alex McLean 63d9d554b9 Merge pull request #140 from tidalcycles/fix-createParam
Fix createParam()
2022-06-21 13:11:50 +01:00
alex f6c04f9e74 no need to involve controls[name] 2022-06-21 12:53:00 +01:00
alex e167300194 add created param to controls 2022-06-21 12:15:35 +01:00
Felix Roos 319400ab13 remove unused sf control 2022-06-20 22:20:22 +02:00
Felix Roos 38b1717fac load fonts from forked version 2022-06-20 22:00:14 +02:00
Felix Roos d5938a016c fix looping fonts 2022-06-20 20:55:20 +02:00
Felix Roos 3ac592b18a Publish
- @strudel.cycles/core@0.1.1
 - @strudel.cycles/embed@0.1.1
 - @strudel.cycles/eval@0.1.2
 - @strudel.cycles/midi@0.1.2
 - @strudel.cycles/mini@0.1.2
 - @strudel.cycles/osc@0.1.1
 - @strudel.cycles/react@0.1.3
 - @strudel.cycles/serial@0.1.1
 - @strudel.cycles/tonal@0.1.2
 - @strudel.cycles/tone@0.1.2
 - @strudel.cycles/webaudio@0.1.2
 - @strudel.cycles/webdirt@0.1.1
 - @strudel.cycles/xen@0.1.2
2022-06-20 20:04:21 +02:00
Felix Roos 82d6103907 began soundfont implementation 2022-06-20 20:02:55 +02:00
Felix Roos b353db67d4 began soundfonts package 2022-06-19 15:31:19 +02:00
Felix Roos 5334abebaa hotfix: no sound in ios webkit 2022-06-19 11:50:00 +02:00
Felix Roos ad053361dc Merge pull request #138 from tidalcycles/webaudio-rewrite
Webaudio rewrite
2022-06-18 23:24:41 +02:00
Felix Roos ad62ccd8c7 allow _base prop for samples loader 2022-06-18 23:06:37 +02:00
Felix Roos ecd93c9a92 cache gist by default for faster eval 2022-06-18 23:06:21 +02:00
Felix Roos 774c02afab update tune 2022-06-18 21:44:32 +02:00
Felix Roos 18f1f7d83d simplify url 2022-06-18 18:31:13 +02:00
Felix Roos 9eb3266891 add comments to tune 2022-06-18 18:29:58 +02:00
Felix Roos c3a3a68054 add snapshot 2022-06-18 17:27:57 +02:00
Felix Roos 925fb30e05 fix cracks + add tune 2022-06-18 17:25:36 +02:00
alex 363895761e Merge branch 'main' of github.com:tidalcycles/strudel 2022-06-18 13:19:38 +01:00
alex c191accc64 add top-level chop 2022-06-18 13:19:14 +01:00
Felix Roos 71b6b83ab3 samples: support speed, begin and end 2022-06-18 13:56:41 +02:00
Felix Roos d532f8007e move sampler to webaudio
+ add basic sample playback to .out
2022-06-18 13:11:25 +02:00
Felix Roos 44574af3eb use closures to simplify api 2022-06-18 00:56:58 +02:00
Felix Roos faa4019b27 dont use tone audio context 2022-06-18 00:54:36 +02:00
Felix Roos c1e934d171 regenerate snapshots - update webaudio ones 2022-06-18 00:39:25 +02:00
Felix Roos 5fd88f9213 fix snapshots for objects 2022-06-18 00:38:51 +02:00
Felix Roos 2bb095d47d add controls to tune test 2022-06-17 23:40:38 +02:00
Felix Roos a4a30e8b60 add new tune 2022-06-17 23:26:07 +02:00
Felix Roos 4c05876066 rewrite webaudio + migrate tunes + empty setters 2022-06-17 23:23:51 +02:00
alex 23be3e5ba3 hackery 2022-06-17 14:45:58 +01:00
Felix Roos f69d776cf6 prepare webaudio rewrite 2022-06-16 23:53:29 +02:00
Felix Roos 25795eaecc Merge pull request #136 from tidalcycles/on-trigger
add onTrigger helper
2022-06-16 21:58:37 +02:00
Felix Roos 3e1e92a6f1 add onTrigger helper 2022-06-16 21:01:35 +02:00
Felix Roos f2f3511a2f Merge pull request #134 from tidalcycles/scheduler-improvements
Scheduler improvements
2022-06-16 20:48:23 +02:00
Felix Roos 0ce70f4d0d Merge pull request #135 from tidalcycles/trigger-simplification
remove cycle + delta from onTrigger
2022-06-16 20:48:06 +02:00
Felix Roos cac5d96c16 remove cycle + delta from onTrigger 2022-06-16 20:38:21 +02:00
Felix Roos 25d6ff1c90 can now set latency on the scheduler 2022-06-16 20:37:13 +02:00
Felix Roos 87de8c0800 automatically run onTrigger in scheduler 2022-06-16 20:36:59 +02:00
alex 34ba762b42 funky serialisation for serial 2022-06-16 13:54:53 +01:00
Felix Roos badc4bcc2f Update README.md
remove unused import
2022-06-16 14:11:25 +02:00
Felix Roos 729b4e18ab Update README.md
replace extend with evalScope
2022-06-16 14:10:29 +02:00
alex c3f03f50b3 package locks 2022-06-16 10:30:02 +01:00
alex 8fd4cfe0a3 Merge branch 'main' of github.com:yaxu/strudel into main 2022-06-16 10:17:54 +01:00
alex 8dee07082d add tutorial to setup 2022-06-16 10:17:47 +01:00
Alex McLean 11e33f5c70 Update README.md 2022-06-16 10:10:13 +01:00
Alex McLean 3d68b0c566 Update README.md 2022-06-16 10:10:01 +01:00
Felix Roos fb8dd537e0 node 16 compat 2022-06-15 21:34:56 +02:00
alex affce4a4a1 re-add serial 2022-06-15 16:21:56 +01:00
alex a479a5740b declare from/to with let, as they can be changed 2022-06-15 16:15:57 +01:00
Felix Roos 8e68b4e001 fix: WebDirt import 2022-06-14 08:39:22 +02:00
Felix Roos d10b6f04cf Merge pull request #110 from tidalcycles/create-param
add createParam + createParams
2022-06-13 21:28:27 +02:00
Felix Roos 052f2db0ea Merge pull request #131 from tidalcycles/pianoroll-enhancements
Pianoroll enhancements
2022-06-13 21:27:08 +02:00
Felix Roos 4b9a6ffee5 ignore samples 2022-06-13 21:24:40 +02:00
Felix Roos 6d6784d429 remove old comments 2022-06-05 23:59:44 +02:00
Felix Roos b3d2d3028c disable autorange by default 2022-06-05 23:47:24 +02:00
Felix Roos 68814dd97c pianoroll: hideNegative flag 2022-06-05 23:38:33 +02:00
Felix Roos ac39a609d7 pianoroll: flipTime + flipValues 2022-06-05 23:38:22 +02:00
Felix Roos ba5cf5ba83 replace from to with cycles / playhead 2022-06-05 23:38:07 +02:00
Felix Roos 394e77c152 pianoroll: autorange + fold + vertical 2022-06-05 23:37:49 +02:00
Felix Roos c7fdf5245a more flexible pianoroll 2022-06-05 23:37:24 +02:00
Felix Roos 6d91b2d984 Merge pull request #129 from stephendwolff/main
Fix link to contributing to tutorial docs
2022-06-05 13:06:02 +02:00
Stephen Wolff 36a401c6a7 Update CONTRIBUTING.md 2022-06-04 13:40:30 +01:00
Stephen Wolff cbb59eafc8 Update CONTRIBUTING.md
fix link
2022-06-04 13:35:06 +01:00
Felix Roos 5cd80b5817 fix: #122 was still not fixed for async patterns 2022-06-02 00:58:20 +02:00
Felix Roos 6306cc9c34 delete doc.json (build artifact) 2022-06-02 00:23:53 +02:00
Felix Roos e335b07efe Merge pull request #121 from tidalcycles/webdirt
Webdirt
2022-06-02 00:20:45 +02:00
Felix Roos e86144255c Merge remote-tracking branch 'origin/HEAD' into webdirt 2022-06-02 00:19:10 +02:00
Felix Roos e2c4a3b591 Merge pull request #124 from tidalcycles/ctrl-enter-fix
fix: #122 ctrl enter would add newline
2022-06-01 23:56:04 +02:00
Felix Roos 81c20e6792 fix: #122 ctrl enter would add newline 2022-06-01 23:53:30 +02:00
Felix Roos 204941c1e4 Merge pull request #123 from tidalcycles/tab-switch-bug
fix: #108
2022-06-01 18:21:56 +02:00
Felix Roos 307afa5c52 fix: #108 2022-06-01 18:19:57 +02:00
Felix Roos 92dc50e348 minor style tweaks 2022-05-30 23:34:56 +02:00
Felix Roos 5c6c5c9608 add samples helper
+ dont play samples after load
2022-05-30 23:33:49 +02:00
Felix Roos e27b8aeb66 fix cache + add cache reset 2022-05-29 22:44:26 +02:00
Felix Roos 7274a455a8 save sample list to local storage 2022-05-29 22:18:07 +02:00
Felix Roos 91dfef52ea basic sample loader from github 2022-05-29 21:06:07 +02:00
Felix Roos 9147b4e39f Update README.md 2022-05-29 18:13:07 +02:00
Felix Roos 052159ce6f rename readme 2022-05-29 18:10:04 +02:00
Felix Roos ea6d728b89 link webdirt - superdirt controls 2022-05-29 15:07:01 +02:00
Felix Roos 093049a1f8 hopefully fix sample folder for deployed version 2022-05-29 12:27:25 +02:00
Felix Roos 17fa8d904e support webdirt in minirepl
+ add section in tutorial
2022-05-29 11:51:26 +02:00
Felix Roos a996a7043d remove splitLanes from branch 2022-05-29 09:58:04 +02:00
Felix Roos 822659f7fd Merge commit 'd132a9bec58f40ccdea411ec971a0343aa1b0743' into webdirt 2022-05-29 09:56:38 +02:00
Felix Roos e1fb0acff7 pass all value props to webdirt + list available 2022-05-29 09:55:58 +02:00
Felix Roos d132a9bec5 Merge pull request #117 from tidalcycles/in-source-doc
In source doc
2022-05-29 09:54:59 +02:00
Felix Roos f9f1b55185 add webdirt with some default samples 2022-05-29 00:50:01 +02:00
Felix Roos 15b32abadf add dummy function with todo 2022-05-28 23:45:42 +02:00
Felix Roos 93e565f8df document non random signal functions 2022-05-28 23:43:42 +02:00
Felix Roos 69703072df hotfix: add missing osc import 2022-05-25 22:37:39 +02:00
Felix Roos ad3a324719 Merge branch 'in-source-doc' into binaries 2022-05-25 21:55:53 +02:00
Felix Roos 8c9e178206 add build script for binaries 2022-05-25 21:24:05 +02:00
Felix Roos 8a812dd853 reorder stuff 2022-05-24 22:48:49 +02:00
Felix Roos 7250824e6b add superdirt params 2022-05-24 22:35:06 +02:00
Felix Roos cc1a61d607 use nunjucks filters 2022-05-24 20:40:12 +02:00
Felix Roos e7fe1ab567 delete old mdx 2022-05-24 20:37:53 +02:00
Felix Roos cad24714d4 use tutorial.mdx with nunjucks 2022-05-24 20:37:29 +02:00
Felix Roos 4acdabe439 can now generate mdx from nunjucks 2022-05-24 00:03:59 +02:00
Felix Roos b5b0fbbd38 small fixes 2022-05-24 00:03:50 +02:00
Felix Roos 2680eed681 hide api doc by default 2022-05-22 21:57:04 +02:00
Felix Roos 1b8a12dd2a doc 2022-05-22 21:52:46 +02:00
Felix Roos b0c6236c24 even more doc 2022-05-22 21:42:30 +02:00
Felix Roos 8646410e6f add n + todos 2022-05-22 16:23:51 +02:00
Felix Roos b2743108f1 dont render attack yet 2022-05-22 16:01:17 +02:00
Felix Roos 4be798d15a more doc 2022-05-22 15:59:56 +02:00
Felix Roos 4c4d0b426e even more control doc + more logical grouping 2022-05-22 12:26:45 +02:00
Felix Roos 58104b5a3a document more controls 2022-05-22 11:53:29 +02:00
Felix Roos 68a3842c8c document more controls 2022-05-22 08:35:45 +02:00
Felix Roos 987cc63764 test control doc 2022-05-21 22:51:56 +02:00
Felix Roos a8672ec432 fix repl imports 2022-05-21 22:51:42 +02:00
Felix Roos a9f5bd679d jsdoc voicings 2022-05-21 21:57:37 +02:00
Felix Roos f2b5dcf466 tonal jsdoc 2022-05-21 21:52:45 +02:00
Felix Roos 6b26f999e4 autogenerate doc on build tutorial 2022-05-20 22:15:05 +02:00
Felix Roos f2a70396d1 add autogenerated api doc to bottom of tutorial 2022-05-20 21:56:55 +02:00
Felix Roos b50daed0d0 Merge remote-tracking branch 'origin/main' into in-source-doc 2022-05-20 21:46:14 +02:00
Felix Roos e664834fd9 Merge pull request #116 from tidalcycles/repl-package
react package + vite build
2022-05-20 11:49:10 +02:00
Felix Roos 4c49e30763 delete docs as now deploying to gh-pages branch 2022-05-20 11:47:34 +02:00
Felix Roos 2d2c671e6f Publish
- @strudel.cycles/eval@0.1.1
 - @strudel.cycles/midi@0.1.1
 - @strudel.cycles/mini@0.1.1
 - @strudel.cycles/react@0.1.2
 - @strudel.cycles/tonal@0.1.1
 - @strudel.cycles/tone@0.1.1
 - @strudel.cycles/webaudio@0.1.1
 - @strudel.cycles/xen@0.1.1
2022-05-20 11:45:07 +02:00
Felix Roos d2f47262de bump core deps 2022-05-20 11:43:39 +02:00
Felix Roos cb13eb7f3b remove now redundant style 2022-05-20 00:15:10 +02:00
Felix Roos 96825f9fcc Publish
- @strudel.cycles/react@0.1.1
2022-05-20 00:09:30 +02:00
Felix Roos 7eeae4292c add missing styles + fix demo 2022-05-20 00:08:50 +02:00
Felix Roos a29c5f1bd8 Publish
- @strudel.cycles/eval@0.1.0
 - @strudel.cycles/midi@0.1.0
 - @strudel.cycles/mini@0.1.0
 - @strudel.cycles/react@0.1.0
 - @strudel.cycles/tonal@0.1.0
 - @strudel.cycles/tone@0.1.0
 - @strudel.cycles/webaudio@0.1.0
 - @strudel.cycles/xen@0.1.0
2022-05-19 19:42:22 +02:00
Felix Roos b7a2386874 messed up everything 2022-05-19 19:40:47 +02:00
Felix Roos 43a0c7e604 fix cp error 2022-05-19 19:36:00 +02:00
Felix Roos 73d8afd61b revert unpublished versions 2022-05-19 19:34:02 +02:00
Felix Roos 87162a9f31 Publish
- @strudel.cycles/core@0.1.0
 - @strudel.cycles/embed@0.1.0
 - @strudel.cycles/eval@0.1.0
 - @strudel.cycles/midi@0.1.0
 - @strudel.cycles/mini@0.1.0
 - @strudel.cycles/osc@0.1.0
 - @strudel.cycles/react@0.1.0
 - @strudel.cycles/serial@0.1.0
 - @strudel.cycles/tonal@0.1.0
 - @strudel.cycles/tone@0.1.0
 - @strudel.cycles/webaudio@0.1.0
 - @strudel.cycles/xen@0.1.0
2022-05-19 19:13:46 +02:00
Felix Roos c643f10530 tutorial toc 2022-05-19 17:16:28 +02:00
Felix Roos ae81f6d573 MiniRepl: hideOutsideView flag 2022-05-19 08:39:51 +02:00
Felix Roos 44ba1f85c3 clear out before build 2022-05-18 20:40:24 +02:00
Felix Roos f34301b427 fix deploy out 2022-05-18 20:10:41 +02:00
Felix Roos 666cbf6568 add todos 2022-05-18 00:28:24 +02:00
Felix Roos f31a5a4bbb remove old todo 2022-05-18 00:25:51 +02:00
Felix Roos bbf0565007 delete react logo 2022-05-18 00:23:49 +02:00
Felix Roos c41ac9a413 add basic readme 2022-05-18 00:22:26 +02:00
Felix Roos ab1dd27875 hide todo 2022-05-18 00:21:11 +02:00
Felix Roos 788a4c9143 fix tests 2022-05-18 00:18:12 +02:00
Felix Roos 43c2f46196 small fixes 2022-05-18 00:07:37 +02:00
Felix Roos fdb60a3fc1 migrate public files + add deploy script 2022-05-17 22:55:12 +02:00
Felix Roos 6c6ea3ab9f fix favicon 2022-05-17 22:47:35 +02:00
Felix Roos 806c8925c9 new build script + fix draw 2022-05-17 22:45:23 +02:00
Felix Roos ed35f967b0 migrate repl + move imports out of minirepl 2022-05-17 22:27:22 +02:00
Felix Roos 0bcc01ed0e add missing deps 2022-05-17 21:55:37 +02:00
Felix Roos b7fac65a87 add description 2022-05-17 21:45:22 +02:00
Felix Roos 605cb98b8e package meta 2022-05-17 21:43:28 +02:00
Felix Roos b8a0559012 react packaging 2022-05-17 21:40:17 +02:00
Felix Roos fb2f63ee26 unify barrel exports 2022-05-17 21:38:47 +02:00
Felix Roos b59f36f40b basic react package build config 2022-05-17 00:32:57 +02:00
Felix Roos 2a618b42b7 add evalScope + deprecate extend 2022-05-17 00:31:20 +02:00
Felix Roos aa3db09f22 tone barrel export 2022-05-17 00:23:13 +02:00
Felix Roos 9fa01aa6ff add barrel exports 2022-05-17 00:22:50 +02:00
Felix Roos 999251e137 Merge remote-tracking branch 'origin/main' into repl-package 2022-05-15 22:55:31 +02:00
Felix Roos 55d5cc9308 fix asNumber 2022-05-15 22:55:12 +02:00
Alex McLean 58301c380b Merge pull request #113 from tidalcycles/osc-timing
Osc timing improvements
2022-05-15 21:29:25 +01:00
Alex McLean ee45337d89 Merge pull request #114 from tidalcycles/more-functions
loopAt
2022-05-15 21:28:24 +01:00
alex f2e1ee1aac Fix osc timing, and send cps, cycle and delta 2022-05-15 18:49:32 +01:00
alex ee5bc0f3a6 loopAt 2022-05-15 18:38:26 +01:00
Felix Roos 273cb81da0 use Function instead of eval
- fixes scope issues (e.g. seq duplication)
- should be much safer and much faster
2022-05-15 00:35:17 +02:00
Felix Roos 1cbf4c8c7e fix name collision 2022-05-14 23:39:31 +02:00
Felix Roos 446ddc2c11 pull out tutorial 2022-05-14 22:11:29 +02:00
Felix Roos 42d3510c74 migrate tutorial 2022-05-14 21:28:10 +02:00
Felix Roos 92c17d6376 migrate missing files + fix tests 2022-05-14 20:51:00 +02:00
Felix Roos 645ea30b53 use vite for repl 2022-05-14 20:33:55 +02:00
Felix Roos 0d63ec9146 basic react package 2022-05-14 20:27:05 +02:00
Alex McLean 9588272639 Merge pull request #112 from tidalcycles/more-functions
`.brak()`, `.inside()` and `.outside()`
2022-05-09 20:09:46 +02:00
alex aca3bea56b Implement inside/outside 2022-05-09 18:43:02 +01:00
alex a8d676641b brak() fix 2022-05-09 17:24:49 +02:00
alex 4fd843f8cf Implement brak() 2022-05-09 16:56:08 +02:00
Felix Roos 608283ba65 doc: euclid 2022-05-07 10:29:16 +02:00
Felix Roos f5e5ef8662 doc: drawLine 2022-05-07 10:27:14 +02:00
alex d5a1832f31 document some mathematical pattern methods 2022-05-06 15:42:48 +02:00
alex 73b0a3a0ef build 2022-05-06 15:29:05 +02:00
alex 6dedeae6e1 fix run-license call 2022-05-06 15:28:40 +02:00
Alex McLean 14487ed5cf Merge pull request #105 from tidalcycles/in-source-doc
In source doc
2022-05-06 15:18:41 +02:00
Felix Roos e7def57c5b add createParam + createParams 2022-05-05 20:54:49 +02:00
alex 5419b0896c more docs 2022-05-05 18:45:31 +02:00
alex f8f744dd87 standardise on hap rather than event, especially in function names 2022-05-05 17:20:36 +01:00
alex b0dfb44e96 add license to those extracted during javascript minification (temporary hack) 2022-05-05 16:45:32 +01:00
Felix Roos cdc068bb47 build 2022-05-04 23:02:05 +02:00
Felix Roos 09c5c07bfb Merge pull request #109 from tidalcycles/embed-style
Embed style
2022-05-04 22:59:30 +02:00
Felix Roos 56962196ea configure jsdoc to parse all package files 2022-05-04 22:47:13 +02:00
Felix Roos 8b4af5ce9d local testing comments 2022-05-04 22:03:09 +02:00
Felix Roos 8034eb14b6 embedded styles 2022-05-04 22:03:00 +02:00
Felix Roos 2739c89475 Merge remote-tracking branch 'origin/main' into in-source-doc 2022-05-03 08:10:19 +02:00
Alex McLean cf79083edb Merge pull request #88 from tidalcycles/reset
Reset, Restart and other composers
2022-05-03 00:40:22 +01:00
Alex McLean cbe9c9248d Merge branch 'main' into reset 2022-05-03 00:39:25 +01:00
Felix Roos e0c77a5fa8 try out jsdoc-json 2022-05-02 23:17:50 +02:00
Felix Roos 339e91b026 Merge remote-tracking branch 'origin/HEAD' into in-source-doc 2022-05-02 23:08:15 +02:00
Felix Roos 25bfdd80e3 Update README.md
add more link for all packages
2022-05-02 22:48:50 +02:00
Felix Roos 68c6d340ce Merge pull request #106 from tidalcycles/embed
/embed package: web component for repl
2022-05-02 22:47:20 +02:00
Felix Roos 91261b8b3f bump 2022-05-02 22:40:58 +02:00
Felix Roos 6e8bd1ff33 fix example 2022-05-02 22:40:40 +02:00
Felix Roos b01865f0f5 add basic embed package 2022-05-02 22:33:31 +02:00
alex 4319b6d2d1 Merge branch 'main' of github.com:tidalcycles/strudel 2022-05-02 21:27:15 +01:00
alex 53d82e5126 Prettify 2022-05-02 21:27:02 +01:00
Alex McLean 90b74a72ad Add link to packages/serial 2022-05-02 21:22:30 +01:00
alex c23f9b8629 reflect licence change to AGPL 2022-05-02 21:15:25 +01:00
Felix Roos d752d0eb5e Merge remote-tracking branch 'origin/main' into embed 2022-05-02 22:06:02 +02:00
Felix Roos 65fbdba047 Merge pull request #104 from tidalcycles/tune-tests
Tune tests
2022-05-02 22:05:33 +02:00
alex 6273b34254 Support string concatenation for add() and variants 2022-05-02 09:40:06 +01:00
alex 4779dd13c0 _asNumber: support old 'silent' parameter, renamed
as 'dropfails'
2022-05-02 09:22:00 +01:00
alex 469db7d5bd Add ption for asNumber to return original event
on fail.
Make numerical composers use asNumber.
2022-05-01 23:17:21 +01:00
alex 42269cf72b add bossa snapshot 2022-05-01 23:15:22 +01:00
Felix Roos 38bb0ca041 add cycles for all tunes 2022-05-01 23:22:54 +02:00
alex 1949071259 Merge branch 'tune-tests' into reset 2022-05-01 22:19:40 +01:00
Felix Roos a119b83b65 more readable tune test + longer snaps 2022-05-01 23:13:54 +02:00
Felix Roos c939a8a0c1 fix shoot 2022-05-01 22:47:58 +02:00
Felix Roos 5f26773c61 add repl test to root package 2022-05-01 22:35:35 +02:00
Felix Roos 6cac8ba108 basic snapshot test for tunes 2022-05-01 22:34:11 +02:00
Felix Roos 3eebccd566 add showWhole 2022-05-01 22:22:07 +02:00
alex f81190bf35 try adding some pattern docs 2022-05-01 20:46:30 +01:00
alex 065f4191f0 Rename TrigZero -> Trigzero, + more composer tests 2022-05-01 17:34:47 +01:00
alex b2d58ce0bd Use this.duration for things 2022-05-01 17:06:26 +01:00
alex 41b7939dac More composer tests 2022-05-01 17:02:40 +01:00
alex 68c63cca7e Merge branch 'main' into reset 2022-05-01 16:08:42 +01:00
Felix Roos 2348d056cb test jsdoc 2022-05-01 15:40:54 +02:00
Felix Roos f469e48970 build 2022-05-01 14:36:30 +02:00
Felix Roos 7e52fdd5ca Merge pull request #97 from tidalcycles/codemirror-6
Codemirror 6
2022-05-01 14:33:10 +02:00
Felix Roos 29fceff9b3 handle edge case 2022-05-01 14:13:20 +02:00
Felix Roos bdb5dabba5 patch holes in highlighting query span
+ make sure disable-highlighting works again
2022-05-01 11:33:25 +02:00
alex 3fe705427f binary composer fixes 2022-04-30 19:21:37 +01:00
alex 21a1fe5056 Merge branch 'codemirror-6' into reset 2022-04-30 19:13:41 +01:00
alex e40bdad6c3 Add binary composers 2022-04-30 19:12:24 +01:00
alex dcbe24d45c Merge branch 'main' into reset 2022-04-30 19:02:48 +01:00
Felix Roos d4607c68f7 highlight only events with onsets 2022-04-30 11:14:16 +02:00
alex 026ae3c8e1 reset -> trig, restart -> trigZero, then alias reset -> keepTrig, restart -> keepTrigZero 2022-04-30 09:23:42 +01:00
Felix Roos f6d128842a filter out inactive events 2022-04-29 21:56:15 +02:00
Felix Roos a6dac6ded3 Merge remote-tracking branch 'origin/HEAD' into codemirror-6 2022-04-29 21:33:15 +02:00
Felix Roos 4fcec82917 support custom dynamic highlight color 2022-04-29 21:27:12 +02:00
Felix Roos 9e46b3cd00 fix: dont highlight out of range 2022-04-29 21:14:37 +02:00
Felix Roos d56f151edb Merge branch 'main' of https://github.com/tidalcycles/strudel 2022-04-29 20:39:32 +02:00
Felix Roos 4b49c95e73 fix: .wave 2022-04-29 20:39:28 +02:00
Felix Roos cf922b036e remove old codemirror packages + styles 2022-04-29 20:38:49 +02:00
alex f7dedd6244 Try without the special case for reset/restart 2022-04-29 17:08:00 +01:00
alex 7af3c33814 Tidy and add 'keepif' 2022-04-29 17:03:38 +01:00
alex 8cd3be6f67 Merge branch 'main' into reset 2022-04-29 16:50:50 +01:00
alex 86e8ed2ac0 Trying a different naming scheme for composers 2022-04-29 16:46:17 +01:00
Felix Roos 0d1e7f5c17 fix: .wave 2022-04-29 16:27:43 +02:00
Felix Roos fc9a9e33d2 use cm6 in tutorial
+ move highlighting to hook
+ optimize tutorial loading time
2022-04-29 16:27:23 +02:00
Felix Roos f00e28ced3 Merge pull request #102 from mindofmatthew/codemirror-6-highlights
Work on Codemirror 6 highlighting
2022-04-28 23:45:53 +02:00
Alex McLean 4c29677d5b Merge pull request #101 from tidalcycles/agpl-license
Change to Affero GPL
2022-04-28 14:46:06 +01:00
alex 07b8dc3f76 Merge branch 'agpl-license' of github.com:tidalcycles/strudel into agpl-license 2022-04-28 14:43:13 +01:00
alex ee514ee8ba redo headers 2022-04-28 14:38:41 +01:00
alex 97a0fb3e18 add AGPL headers 2022-04-28 11:06:39 +01:00
Matthew ef42ca692a Work on Codemirror 6 highlighting 2022-04-27 20:57:08 -04:00
alex 9ca49c587c Change to Affero GPL 2022-04-27 09:34:47 +01:00
Alex McLean 3b38d936a8 Merge pull request #98 from tidalcycles/paper
Paper
2022-04-25 23:13:07 +01:00
Felix Roos 0d325a3ec4 add more shapeshifter flags 2022-04-25 22:52:16 +02:00
Felix Roos 7f8cdfa361 revert sound function 2022-04-25 22:49:31 +02:00
Felix Roos 8da4217d69 remove old patched osc-js 2022-04-25 22:48:59 +02:00
Felix Roos d3a04071eb remove duplicate range 2022-04-25 22:47:30 +02:00
Felix Roos 0c5903d822 Merge remote-tracking branch 'origin/HEAD' into paper 2022-04-25 22:43:41 +02:00
Felix Roos f97f8be5a4 Merge remote-tracking branch 'origin/main' into codemirror-6 2022-04-25 22:32:49 +02:00
Alex McLean d2ec9768f1 Merge pull request #90 from tidalcycles/more-functions
Fiddles with cat/stack
2022-04-25 21:10:21 +01:00
Felix Roos 37218e8764 match font size of old editor 2022-04-25 22:04:51 +02:00
Felix Roos 069fff673a fix some bugs 2022-04-25 22:00:18 +02:00
Felix Roos 5aed046b34 fix z-index 2022-04-25 21:32:25 +02:00
Felix Roos 5dea15ade9 remove background color from cm6 theme 2022-04-25 21:25:13 +02:00
Felix Roos 10487683d3 tiny bit of style 2022-04-25 20:46:12 +02:00
Felix Roos 12967f2819 use codemirror 6 2022-04-25 20:34:09 +02:00
alex 07b22a2c28 Tweaks, more inspirations, and figure 2022-04-25 10:41:16 +01:00
alex fe13a7fe34 build 2022-04-24 22:35:00 +01:00
alex 602cac5a35 tweak copyright 2022-04-24 22:34:46 +01:00
alex 11f697fa9c Tweak copyright 2022-04-24 22:34:29 +01:00
alex d5957035fa fix citations, build 2022-04-24 22:16:23 +01:00
alex b80d7d226b Merge branch 'paper' of github.com:tidalcycles/strudel into paper 2022-04-24 21:54:17 +01:00
alex 8564dafbfb Merge branch 'main' into paper 2022-04-24 21:54:11 +01:00
Felix Roos dc66dab237 future outlook + links 2022-04-24 21:36:03 +02:00
Felix Roos a32d77b24d Merge commit '47717e872b87f497990d7c1d6c3d54bfb96f2003' into paper 2022-04-24 21:00:54 +02:00
Felix Roos 23836e2345 fix reset / restart default method 2022-04-24 21:00:11 +02:00
alex 1a5c95d084 Merge branch 'more-functions' of github.com:tidalcycles/strudel into more-functions 2022-04-24 17:51:41 +01:00
alex 6a6464b0f7 Remove append, fixes #89 2022-04-24 17:51:31 +01:00
alex 60027e664f Try 'keep' instead of 'const' 2022-04-24 14:38:33 +01:00
alex 27ff329981 Prettify 2022-04-24 11:30:13 +01:00
alex df5ffb4736 Tidy up composers, supporting function patterns 2022-04-24 11:27:52 +01:00
alex a194b908e7 Export unionWithObj 2022-04-24 11:26:33 +01:00
alex 79f5faa544 Merge branch 'reset' of github.com:tidalcycles/strudel into reset 2022-04-24 01:04:14 +01:00
alex 5c3f095ef2 Experimental rejig of the pattern composers.
Now `restart` is `setRestart`, use `constRestart` for the old behavior.
Same for `reset`.
2022-04-24 01:02:32 +01:00
Felix Roos 283e5fde69 fix drawLine polyrhythm 2022-04-24 01:40:26 +02:00
Felix Roos f96ca562a2 fix restart overlap 2022-04-24 01:27:44 +02:00
Felix Roos 58a936cf33 test silence 2022-04-24 00:59:38 +02:00
Felix Roos a0d6fc47e0 improve drawLine 2022-04-24 00:56:16 +02:00
Felix Roos dd03ad6c14 support stack in drawLine 2022-04-24 00:34:04 +02:00
Felix Roos 2bbd306b94 drawLine test 2022-04-23 23:47:52 +02:00
Felix Roos 766cccf335 refactor event.duration references 2022-04-23 23:36:26 +02:00
Felix Roos 9e2e5ce581 log + drawLine 2022-04-23 23:28:43 +02:00
Felix Roos e747c0b060 remove featurelist as it's now kept up to date in #31 2022-04-23 21:08:58 +02:00
Felix Roos 67bef933be migrate tutorial cat -> seq 2022-04-23 20:38:51 +02:00
Felix Roos f1c0d8c8f8 refactor cat -> seq 2022-04-23 20:27:40 +02:00
Felix Roos dd2552eda8 add seq to factories for highlighting 2022-04-23 20:27:16 +02:00
Felix Roos ab9871640a add todo 2022-04-23 17:38:29 +02:00
alex 615f71b099 Fix evaluate test with new cat behaviour ref #87 2022-04-23 11:11:45 +01:00
alex ff418c9f0c seq -> sequence shorthand ref #87 2022-04-23 11:10:05 +01:00
alex 4c43d3d850 Make sequence a fastcat alias and change cat to be a slowcat ref #87 2022-04-23 11:01:12 +01:00
alex a4cacc079e Support subpattern sequences in stack like slowcat in ref #87 2022-04-23 09:47:12 +01:00
alex 9df20fcbc5 support catting subpatterns, fixes #87 2022-04-23 09:38:05 +01:00
alex f4dd549a41 Merge branch 'main' into more-functions 2022-04-23 09:21:47 +01:00
alex cc445e89a3 cat/append/fastcat/slowcat as pattern methods 2022-04-23 09:21:40 +01:00
Felix Roos 08f8a7a17c restart example 2022-04-22 23:47:05 +02:00
Felix Roos ab14d70c6c rename to restart 2022-04-22 23:01:37 +02:00
Felix Roos ecfc6fd31e simplify 2022-04-22 22:52:11 +02:00
Felix Roos 0fae8b2b10 first take at reset 2022-04-22 22:21:43 +02:00
Felix Roos c38e4f7206 helper functions 2022-04-22 22:21:36 +02:00
alex 47717e872b test for negative time, ref #85 2022-04-22 17:06:15 +01:00
alex 903c065e26 Use mathematical mod in slowcat, fixes #85 2022-04-22 17:02:21 +01:00
alex 3742bf384c Remove recursion from mod 2022-04-22 17:01:28 +01:00
alex 1029f8674c fix the fix for echo 2022-04-22 12:35:43 +01:00
alex c801660b2a use rational multiplication in echo 2022-04-22 12:30:16 +01:00
alex 48d4541ed7 build 2022-04-22 12:12:11 +01:00
Alex McLean 8007ea6a7e Merge pull request #83 from tidalcycles/pattern-composers
Add pattern composers, implements #82
2022-04-22 12:08:11 +01:00
alex 8e441ecb19 fix striate: union -> set 2022-04-22 12:07:23 +01:00
alex c305e82f5c Merge branch 'main' into pattern-composers 2022-04-22 11:52:36 +01:00
alex 87cfa30508 Extra test for ply (and prettify) 2022-04-22 11:51:41 +01:00
alex 2c224d5092 Make comparisons rational in _compress 2022-04-22 11:46:34 +01:00
Felix Roos 72eeaf446e fix: cycleArg imprecise fraction operation 2022-04-22 12:40:23 +02:00
Felix Roos 51a806b0ba Merge branch 'main' of https://github.com/tidalcycles/strudel 2022-04-22 11:49:42 +02:00
Felix Roos 52840f9141 add tune + fix another 2022-04-22 11:48:57 +02:00
alex 974503160d squeezeflip, tests for add including failing one.. 2022-04-22 09:51:44 +01:00
alex d9e3ff3256 Tests for set, setFlip and setSqueeze 2022-04-22 09:27:23 +01:00
alex b510ab0371 Make set work for primative patterns, allow ops accept sequence 2022-04-22 09:26:39 +01:00
Felix Roos 5eba78d795 Merge pull request #84 from mindofmatthew/tidying
Tidy up a couple of old files
2022-04-21 20:57:45 +02:00
Matthew Kaney 884c13a22d Remove old files 2022-04-21 13:14:37 -04:00
Alex McLean 90c5605409 Merge pull request #76 from tidalcycles/more-functions
add `striate()`
2022-04-21 14:21:29 +01:00
alex 3ae6443c59 Tidy test and console logs 2022-04-21 14:17:28 +01:00
alex b370c405da Add pattern composers, implements #82 2022-04-21 14:13:26 +01:00
Felix Roos 36d1a68b9a build 2022-04-20 20:22:50 +02:00
Felix Roos 58bbbecb2d package-lock 2022-04-20 20:19:56 +02:00
Felix Roos 1cdff32b5c Merge pull request #77 from tidalcycles/webaudio-compat
Webaudio in REPL
2022-04-20 20:17:26 +02:00
Felix Roos 7dbdb005b0 fix adsr + add example tune 2022-04-20 20:15:36 +02:00
Felix Roos e6c15dc3c5 add waa example 2022-04-19 21:46:44 +02:00
Felix Roos 1778d19bde Merge remote-tracking branch 'origin/main' into webaudio-compat 2022-04-19 21:35:08 +02:00
alex 56c3c0462c build 2022-04-19 18:16:00 +01:00
Alex McLean 80102353d6 Merge pull request #80 from tidalcycles/webserial
Basic webserial support
2022-04-19 14:31:34 +01:00
alex d7dc158861 Tidy up 2022-04-19 14:28:16 +01:00
alex b52c42c31d First go at serial output 2022-04-19 13:40:01 +01:00
Felix Roos f8739e341b respect midi numbers 2022-04-18 18:57:28 +02:00
Felix Roos 1ead12a2a3 patternify filter 2022-04-18 18:57:02 +02:00
Felix Roos c2feb6e214 remove logs 2022-04-18 18:45:18 +02:00
Felix Roos 3d74b8a2fa Merge commit '83a46c68dc6583ad36b256bc0d03e0913ecbc1f0' into webaudio-compat 2022-04-18 18:33:47 +02:00
Felix Roos 83a46c68dc webaudio@0.0.6 2022-04-18 15:03:11 +02:00
Felix Roos bcefce9df7 package-lock 2022-04-18 14:54:19 +02:00
Felix Roos dcb5af3339 fix: core imports in scheduler 2022-04-18 14:51:47 +02:00
alex 1d56d79757 add striate() 2022-04-17 23:18:01 +01:00
alex 0b370bd40d Make intersection_e actually raise an exception 2022-04-17 18:38:34 +01:00
alex 07a5ae83b5 build 2022-04-17 18:31:20 +01:00
Alex McLean cc60addbaa Merge pull request #75 from tidalcycles/more-tests
Try to fix appLeft / appRight
2022-04-17 18:29:48 +01:00
alex 30b7429169 Fix appLeft/appRight to discard nonmatching events 2022-04-17 18:28:55 +01:00
alex 28ebf6559e Fix steady() 2022-04-17 18:25:38 +01:00
alex 1c6e3dd9a6 A couple of tests for continuous haps/patterns 2022-04-17 18:23:34 +01:00
Felix Roos 6bba661e24 experiment with passing time to withAudioNode 2022-04-17 12:01:13 +02:00
alex eccb20c3b7 Fix choose and add weighted wchoose 2022-04-16 23:23:15 +01:00
Felix Roos f210c4425b make webaudio compatible with repl
+ rename osc to wave
+ migrate repl.html
2022-04-16 21:39:14 +02:00
Felix Roos e0e3ab941e remove experimental tone tutorial 2022-04-16 21:38:23 +02:00
Felix Roos 9cc568fe3e remove tonejs experimental features 2022-04-16 21:36:10 +02:00
Felix Roos a638f9505f test fromMidi + getFrequency 2022-04-16 21:34:19 +02:00
Felix Roos 1b35dd0c55 add preliminary getFrequency 2022-04-16 21:34:05 +02:00
alex d394b4939f build 2022-04-16 18:34:11 +01:00
alex c751d4eb79 Make sure random numbers are positive 2022-04-16 18:32:17 +01:00
alex bb147abb7f Merge branch 'main' of github.com:tidalcycles/strudel 2022-04-16 15:06:02 +01:00
alex 1c3793e2ef Add someCycles and someCyclesBy 2022-04-16 15:05:56 +01:00
alex 1274641f89 Tweak applicative 2022-04-16 15:05:37 +01:00
Felix Roos 803b50535f add repl link 2022-04-16 15:49:40 +02:00
Felix Roos 028af735c9 remove mini for now 2022-04-16 15:46:48 +02:00
Felix Roos d42cd6efaf Publish
- @strudel.cycles/mini@0.0.7
 - @strudel.cycles/webaudio@0.0.5
2022-04-16 15:37:05 +02:00
Felix Roos 2cf129408b use skypack in example 2022-04-16 15:36:49 +02:00
Felix Roos 0ed1c75c38 fix core dependency 2022-04-16 15:35:01 +02:00
Felix Roos 5588b62b40 Publish
- @strudel.cycles/webaudio@0.0.4
2022-04-16 15:24:40 +02:00
Felix Roos 03cb80b75b add core dependeny 2022-04-16 15:24:24 +02:00
Felix Roos 86a3fd6e22 Publish
- @strudel.cycles/webaudio@0.0.3
2022-04-16 15:17:30 +02:00
Felix Roos 27ebe7ba73 stub change 2022-04-16 15:17:02 +02:00
Felix Roos 0ce2dcacef Publish
- @strudel.cycles/core@0.0.5
 - @strudel.cycles/eval@0.0.5
 - @strudel.cycles/midi@0.0.6
 - @strudel.cycles/mini@0.0.6
 - @strudel.cycles/tonal@0.0.5
 - @strudel.cycles/tone@0.0.6
 - @strudel.cycles/xen@0.0.5
2022-04-16 15:14:29 +02:00
Felix Roos 6c8fc6bb21 core publish 2022-04-16 15:12:06 +02:00
Felix Roos 0e26d4e741 Publish
- @strudel.cycles/core@0.0.4
 - @strudel.cycles/eval@0.0.4
 - @strudel.cycles/midi@0.0.5
 - @strudel.cycles/mini@0.0.5
 - @strudel.cycles/osc@0.0.2
 - @strudel.cycles/tonal@0.0.4
 - @strudel.cycles/tone@0.0.5
 - @strudel.cycles/webaudio@0.0.2
 - @strudel.cycles/xen@0.0.4
2022-04-16 15:10:49 +02:00
alex 3d6f01c872 build 2022-04-16 12:39:02 +01:00
alex 4894588284 fix degrade/undegrade 2022-04-16 12:37:47 +01:00
alex 7adea0ac65 build 2022-04-16 12:29:05 +01:00
Alex McLean 138c84cd5f Merge pull request #74 from tidalcycles/more-functions
More random functions
2022-04-16 12:26:57 +01:00
alex d283791f77 Merge branch 'more-functions' of github.com:tidalcycles/strudel into more-functions 2022-04-16 12:24:27 +01:00
alex 911d9d17d6 undegrade, sometimes, sometimesBy, sometimesByPre, often, rarely, almostNever, almostAlways, never, always 2022-04-16 12:19:42 +01:00
alex 8abbaf2e56 undegrade, sometimes, sometimesBy, sometimesByPre, often, rarely, almostNever, almostAlways, never, always 2022-04-16 12:18:44 +01:00
alex dca8b46abf add degrade/degradeBy 2022-04-16 11:40:47 +01:00
Alex McLean 2b968c4387 Merge pull request #73 from tidalcycles/more-functions
Port `perlin` noise, `rangex`, and `palindrome`
2022-04-16 10:13:25 +01:00
alex c88508ace3 tidy 2022-04-16 10:12:01 +01:00
alex b4adbcd6cb Merge branch 'main' into more-functions 2022-04-16 10:10:00 +01:00
alex 031b93f062 fix palindrome 2022-04-16 10:09:47 +01:00
alex f1ac9c4443 perlin noise 2022-04-16 10:03:00 +01:00
alex 544e32e0f8 add 'constant' 2022-04-16 10:02:35 +01:00
Felix Roos f8f806e8eb Merge pull request #26 from tidalcycles/webaudio
webaudio package
2022-04-16 10:26:06 +02:00
Felix Roos 2aed40d99b add example info 2022-04-16 10:24:09 +02:00
Felix Roos d0443a7f41 Merge remote-tracking branch 'origin/HEAD' into webaudio 2022-04-16 10:21:41 +02:00
Felix Roos 1d83ad5282 add randomBells 2022-04-16 00:13:18 +02:00
alex 8fda84c15a palindrome 2022-04-15 22:42:03 +01:00
alex 939bc643be rangex 2022-04-15 22:41:39 +01:00
alex c163039c6e build 2022-04-15 22:06:02 +01:00
Felix Roos 9c6652b19d remove old imports 2022-04-15 21:45:55 +02:00
Felix Roos 2510399017 Merge remote-tracking branch 'origin/HEAD' into webaudio 2022-04-15 20:54:33 +02:00
Felix Roos 9d2cbbaa2c fix notes example 2022-04-15 20:40:58 +02:00
Alex McLean f47d4d0c9d Merge pull request #70 from tidalcycles/more-functions
More randomness, fix `rand`, and add `brand`, `irand` and `choose`
2022-04-15 19:18:06 +01:00
alex f41d89515c Merge branch 'main' into more-functions 2022-04-15 19:15:32 +01:00
alex ea16d6b050 Add choose, fix rand to be unipolar. 2022-04-15 16:05:48 +01:00
alex 19f7dc1657 add brand (boolean rand) and brandBy 2022-04-15 15:05:30 +01:00
alex b674014377 Ignore continuous haps (those without a whole) 2022-04-15 15:04:16 +01:00
Alex McLean 802ed9d481 Merge pull request #69 from tidalcycles/more-functions
First effort at rand()
2022-04-15 10:29:51 +01:00
alex 1f1b20041c Merge branch 'main' of github.com:tidalcycles/strudel into more-functions 2022-04-15 10:15:12 +01:00
alex 3ae0762f62 First effort at rand() 2022-04-15 10:14:51 +01:00
alex 89934886f7 initial demo submission 2022-04-15 08:55:53 +01:00
Felix Roos 233cc4bdc4 update task instructions 2022-04-15 09:33:46 +02:00
alex f278c85f2a more citations 2022-04-14 20:55:07 +01:00
Felix Roos 8dde34565a add speakerman 2022-04-14 19:06:33 +02:00
Felix Roos 14774ae687 build 2022-04-14 18:26:53 +02:00
Felix Roos ed4156530b add build script 2022-04-14 18:18:53 +02:00
Felix Roos 45e8cd104b package-lock 2022-04-14 17:42:51 +02:00
Felix Roos fc195eae1e Merge pull request #68 from tidalcycles/osc-fixed
use new fixed version of osc-js package
2022-04-14 17:41:18 +02:00
Felix Roos 18d8049f37 use new fixed version of osc-js package 2022-04-14 17:37:44 +02:00
alex 21e328569b A bit more blah blah 2022-04-14 09:12:56 +01:00
Felix Roos ff32485f67 fix header 2022-04-14 00:35:15 +02:00
Felix Roos d718eb0be2 add readme 2022-04-14 00:32:45 +02:00
Felix Roos 325eec2c6f refactor scheduler constructor + add onEvent 2022-04-14 00:32:41 +02:00
Felix Roos 5629c0ee72 npm i 2022-04-14 00:32:09 +02:00
alex 369604aa42 Merge branch 'main' of github.com:tidalcycles/strudel into paper 2022-04-13 23:16:07 +01:00
Felix Roos db20ff93c7 fix lockfile 2022-04-14 00:15:27 +02:00
Felix Roos 192eb28ac7 Merge remote-tracking branch 'origin/main' into webaudio 2022-04-14 00:12:47 +02:00
alex 023da097a1 A bit of background 2022-04-13 23:09:53 +01:00
Felix Roos 02738a0694 Merge pull request #67 from tidalcycles/speak
Speech output
2022-04-14 00:09:17 +02:00
Felix Roos 61892bdf3d fix minirepl import 2022-04-13 23:58:51 +02:00
Felix Roos 02ece1183e export patternify 2022-04-13 23:58:44 +02:00
Felix Roos 38fe310a7c fix import 2022-04-13 23:58:34 +02:00
Felix Roos 70fbbd65e9 Merge remote-tracking branch 'origin/main' into speak 2022-04-13 23:58:24 +02:00
Alex McLean 2973223fb1 Merge pull request #62 from tidalcycles/tidy-modules
Separate out strudel.mjs, make index.mjs aggregate module
2022-04-13 22:55:32 +01:00
Felix Roos 1dd19c0831 add speak output 2022-04-13 23:25:55 +02:00
Felix Roos 16e2c97e0c export patternify helpers 2022-04-13 23:25:18 +02:00
alex 050296d0c2 make separate signal module 2022-04-13 17:41:48 +01:00
alex f75da0e2e3 separate out strudel.mjs, make index.mjs aggregate module 2022-04-13 17:25:02 +01:00
Alex McLean 0396c3f475 Merge pull request #61 from tidalcycles/more-functions
More functions
2022-04-13 16:26:45 +01:00
alex 97044fee16 build 2022-04-13 16:25:58 +01:00
alex ca4bffe5a1 compress 2022-04-13 16:20:34 +01:00
alex 0df67fa920 patternify zoom 2022-04-13 16:04:57 +01:00
alex ec3371c4ff Allow linger to accept non-fractions 2022-04-13 15:59:36 +01:00
alex dcc5f66691 Merge branch 'main' of github.com:tidalcycles/strudel into more-functions 2022-04-13 15:51:36 +01:00
alex ec10f349bd Add _zoom and linger 2022-04-13 15:51:23 +01:00
Alex McLean 3b9e854042 Merge pull request #56 from tidalcycles/more-functions
More functions
2022-04-13 09:04:29 +01:00
alex 9eba883978 move some utilities to utils.mjs 2022-04-13 09:03:31 +01:00
alex fb826bed70 sort classes to top of export list 2022-04-13 08:44:38 +01:00
alex 2797856f50 sort exports 2022-04-13 08:40:04 +01:00
alex ad69fa19b6 Prettify 2022-04-13 08:38:08 +01:00
alex 0ad80c1af9 fix citations 2022-04-12 23:49:21 +01:00
Felix Roos 2060e86875 add queryArc + update readme 2022-04-13 00:25:53 +02:00
Felix Roos 87605ca25e Merge branch 'main' of https://github.com/tidalcycles/strudel 2022-04-13 00:15:39 +02:00
Felix Roos 3cd10bf4b3 package-lock 2022-04-13 00:15:36 +02:00
Felix Roos 6bdb0fee55 fix server import 2022-04-13 00:15:09 +02:00
alex 7182894eb6 reference links 2022-04-12 23:14:06 +01:00
Felix Roos 42e2531e8d readme additions 2022-04-13 00:09:04 +02:00
Felix Roos 171f845069 add setup script 2022-04-12 23:54:56 +02:00
Felix Roos f9b043dc7e remove osc-js folder + remove umd stuff 2022-04-12 23:54:13 +02:00
Felix Roos e069e66952 patch osc for client 2022-04-12 23:42:46 +02:00
Felix Roos c9d7a2f313 osc instructions 2022-04-12 22:58:13 +02:00
alex c69af72060 Merge branch 'main' of github.com:tidalcycles/strudel 2022-04-12 21:49:32 +01:00
alex 4111a12cbf hard temporary fork of osc-js 2022-04-12 21:48:48 +01:00
alex 57c1c4e016 more info 2022-04-12 21:48:29 +01:00
alex 324dcd7ef8 use local osc.js 2022-04-12 21:48:11 +01:00
Felix Roos c604f920a0 add root scripts 2022-04-12 20:14:48 +02:00
Felix Roos f8cbd67557 fix: disable highlighting 2022-04-12 20:14:08 +02:00
alex 3c31891774 Add range2 2022-04-12 17:53:40 +01:00
alex 0e5dc4f368 add range 2022-04-12 17:48:09 +01:00
alex e75d8048fe rename range > listRange and remove from exports 2022-04-12 16:54:27 +01:00
alex 7c10d171f6 patternify jux, add juxBy 2022-04-12 16:49:27 +01:00
Alex McLean 5aa01ce91c Merge pull request #27 from tidalcycles/osc
OSC and SuperDirt support
2022-04-12 16:04:04 +01:00
Alex McLean 86bb92d3be Merge pull request #50 from tidalcycles/chop
Implement `chop()`
2022-04-12 12:24:14 +01:00
alex e199564415 Patternify chop() 2022-04-12 12:22:04 +01:00
alex 51db0eaf40 Test and fix chop / squeezebind 2022-04-12 12:16:02 +01:00
alex 83c9200e7d Prettify 2022-04-12 12:01:19 +01:00
alex 529d448383 squeezeBind itself + tidying 2022-04-12 12:00:39 +01:00
alex 8ea59067ce rename inner <> outer bind and join 2022-04-12 11:55:56 +01:00
Alex McLean ac5c844f0b Merge pull request #48 from tidalcycles/squeezejoin
First run at squeezeBind, ref #32
2022-04-12 11:37:32 +01:00
alex b10e0c3a15 Add ply() 2022-04-12 11:31:20 +01:00
alex c2cc6b6dc8 Working squeezeBind 2022-04-12 11:22:53 +01:00
alex 357b0ee467 First run at squeezeBind, ref #32 2022-04-12 10:53:22 +01:00
Alex McLean ac409965d5 Merge pull request #44 from tidalcycles/fix-polymeter
Fix polymeter
2022-04-11 23:03:37 +01:00
alex c596fe33a9 Fix polymeter 2022-04-11 23:01:26 +01:00
Felix Roos 914bc117a1 some loose references 2022-04-11 23:26:17 +02:00
Felix Roos 4dbe366978 just a little plumber tune 2022-04-11 23:25:13 +02:00
Felix Roos 7ca8c8d298 fix "every" example 2022-04-11 23:07:53 +02:00
Felix Roos cf7b2b2acf Merge pull request #40 from tidalcycles/compose
Compose
2022-04-11 22:39:43 +02:00
Felix Roos 81598aefce remove ramda dep + update lockfiles 2022-04-11 22:37:28 +02:00
Felix Roos 9effc166bb use own compose 2022-04-11 22:32:53 +02:00
Felix Roos de3c453763 add pipe + compose 2022-04-11 22:31:02 +02:00
Alex McLean 9da114d965 Merge branch 'main' into osc 2022-04-11 21:10:37 +01:00
Felix Roos 3f603eb84f Merge pull request #38 from bwagner/patch-2
Update tutorial.mdx
2022-04-11 21:49:34 +02:00
Bernhard Wagner 3f1df8faa6 Update tutorial.mdx 2022-04-11 18:08:23 +02:00
Felix Roos 2a3af80deb Merge pull request #37 from bwagner/patch-1
Update tutorial.mdx
2022-04-11 08:43:44 +02:00
Bernhard Wagner abfff8bcf1 Update tutorial.mdx
seperating -> separating
2022-04-11 08:34:11 +02:00
Felix Roos c6d7dabada Create CONTRIBUTING.md 2022-04-10 01:01:02 +02:00
Felix Roos 0c61bb0063 Update featurelist.md
tick some boxes
2022-04-09 22:10:27 +02:00
Felix Roos 0f003abf52 Merge remote-tracking branch 'origin/HEAD' into paper 2022-04-09 18:35:44 +02:00
Felix Roos 80393bf765 Publish
- @strudel.cycles/core@0.0.3
 - @strudel.cycles/eval@0.0.3
 - @strudel.cycles/midi@0.0.4
 - @strudel.cycles/mini@0.0.4
 - @strudel.cycles/tonal@0.0.3
 - @strudel.cycles/tone@0.0.4
 - @strudel.cycles/xen@0.0.3
2022-04-05 23:44:40 +02:00
Felix Roos f43ecf1a85 fix readme instructions 2022-04-05 23:41:10 +02:00
Felix Roos a242c0654b dont create defaultSynth on start 2022-04-05 23:40:21 +02:00
Felix Roos fb1976a6bc add .range 2022-04-05 23:37:27 +02:00
Felix Roos 0e7b345010 some more sprinkles of text 2022-04-05 23:37:14 +02:00
Felix Roos fd28cfc4f8 dont create defaultSynth on start 2022-04-05 23:36:37 +02:00
Felix Roos b20467d6e3 add more shapeshifter flags 2022-04-03 00:45:51 +02:00
Felix Roos 068b95eacb add shapeshifter snippets 2022-04-03 00:44:30 +02:00
Felix Roos 95e4239fd5 pattern comparison snippets 2022-04-03 00:04:00 +02:00
Felix Roos 05c900d291 patch osc-js browser version 2022-04-03 00:03:18 +02:00
Felix Roos f698078f94 add sound synonm 2022-04-03 00:03:05 +02:00
Felix Roos a54b6f0359 Merge remote-tracking branch 'origin/osc' into paper 2022-04-03 00:02:21 +02:00
Felix Roos c8e9fe519f osc timing now hopefully works everywhere 2022-04-02 22:41:04 +02:00
Felix Roos 0c726d835d fix keybindings on safari 2022-04-02 22:40:35 +02:00
Felix Roos 86b1e992a1 fix absolute time 2022-04-02 21:46:56 +02:00
alex c3b15fffa4 remove duplication 2022-04-02 18:48:30 +01:00
alex 7bbac0ed23 newline 2022-04-02 18:40:27 +01:00
alex 1fb1d15d4c add all the superdirt controls 2022-04-02 18:38:20 +01:00
alex 64ea9b7c8b controls (renamed from packages/osc/superdirt.mjs 2022-04-02 17:32:36 +01:00
Felix Roos 5a03386ad5 package-lock 2022-04-02 18:14:10 +02:00
alex acca363a4e move osc/superdirt to core/controls 2022-04-02 16:06:42 +01:00
alex e28a411408 Make param args a sequence, remove some redundancy 2022-04-02 16:03:50 +01:00
alex 89a7bd4e7d superdirt parameters 2022-04-01 23:17:52 +01:00
alex 46b2e82b43 formatting 2022-04-01 23:15:54 +01:00
alex 723b239fda formatting 2022-04-01 23:15:39 +01:00
Felix Roos bfb757b3b1 remove logs 2022-04-01 21:02:11 +02:00
Felix Roos 7fb9c3bf1e move core repl + add package 2022-04-01 20:54:54 +02:00
alex bf7c8cebc4 tidy 2022-04-01 15:38:06 +01:00
alex ac01a621be workaround for osc-js timestamp bug, reduce latency 2022-04-01 15:37:50 +01:00
Felix Roos 47a046ca1d begin webaudio package 2022-04-01 15:44:17 +02:00
Felix Roos 4ef70d2a15 Merge branch 'osc' of https://github.com/tidalcycles/strudel into osc 2022-03-29 22:17:46 +02:00
Felix Roos ee0d835cd8 add core examples 2022-03-29 22:16:36 +02:00
alex 330263028e it seems the custom handler wasn't being used 2022-03-29 17:04:00 +01:00
alex d0d19778a4 try sending osc in timestamped bundle with added latency 2022-03-29 17:03:30 +01:00
alex 0bfbd87bbf try to send osc as timestamped bundle 2022-03-29 16:39:52 +01:00
alex ba095d8e7f Stop failing on no tests 2022-03-29 15:36:56 +01:00
alex 0b8919de61 send actual osc parameters 2022-03-29 08:12:34 +01:00
alex 7fca7e6bd9 attempt to send an OSC message 2022-03-28 22:10:20 +01:00
alex 69884c61b4 first (broken) attempt 2022-03-28 21:41:49 +01:00
Felix Roos ed6cf2ecf1 enlarge button 2022-03-28 21:24:44 +02:00
Felix Roos 0be0347f8b basic communication with superdirt 2022-03-28 21:22:24 +02:00
762 changed files with 129100 additions and 62016 deletions
+19
View File
@@ -0,0 +1,19 @@
{
"env": {
"node": true,
"browser": true,
"es2021": true
},
"extends": ["eslint:recommended"],
"overrides": [],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": ["import"],
"rules": {
"no-unused-vars": ["warn", { "destructuredArrayIgnorePattern": ".", "ignoreRestSiblings": false }],
"import/no-extraneous-dependencies": ["error", {"devDependencies": true}]
},
"files": ["**/*.mjs", "**/*.js"]
}
+40
View File
@@ -0,0 +1,40 @@
name: Build and Deploy to beta (warm.strudel.cc)
on:
push:
branches:
- main
# Allow one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
build:
runs-on: docker
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 9.12.2
- uses: actions/setup-node@v4
with:
node-version: 20
# cache: "pnpm"
- name: Install Dependencies
run: pnpm install
- name: Build
run: pnpm build
- name: Deploy
run: |
eval $(ssh-agent -s)
echo "$SSH_PRIVATE_KEY" | ssh-add -
apt update && apt install -y rsync
mkdir ~/.ssh
ssh-keyscan matrix.toplap.org > ~/.ssh/known_hosts
rsync -atv --delete --delete-after --progress ./website/dist/ strudel@matrix.toplap.org:/home/strudel/deploy/warm.strudel.cc
+37
View File
@@ -0,0 +1,37 @@
name: Build and Deploy to live (strudel.cc)
on: [workflow_dispatch]
# Allow one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
build:
runs-on: docker
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 9.12.2
- uses: actions/setup-node@v4
with:
node-version: 20
# cache: "pnpm"
- name: Install Dependencies
run: pnpm install
- name: Build
run: pnpm build
- name: Deploy
run: |
eval $(ssh-agent -s)
echo "$SSH_PRIVATE_KEY" | ssh-add -
apt update && apt install -y rsync
mkdir ~/.ssh
ssh-keyscan matrix.toplap.org > ~/.ssh/known_hosts
rsync -atv --delete --delete-after --progress ./website/dist/ strudel@matrix.toplap.org:/home/strudel/deploy/strudel.cc
+26
View File
@@ -0,0 +1,26 @@
name: Strudel tests
on: [push, pull_request]
jobs:
build:
runs-on: docker
strategy:
matrix:
node-version: [20]
steps:
- uses: actions/checkout@v4
- name: apt install ztd
run: apt update && apt install -y zstd
- uses: pnpm/action-setup@v4
with:
version: 9.12.2
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "pnpm"
- run: pnpm install
- run: pnpm run format-check
- run: pnpm run lint
- run: pnpm test
-19
View File
@@ -1,19 +0,0 @@
name: Strudel tests
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16, 17]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm install
- run: npm test
+119 -1
View File
@@ -1,4 +1,5 @@
dist
out
!docs/dist
dist-*
cabal-dev
@@ -26,4 +27,121 @@ node_modules/
.DS_Store
repl-parcel
mytunes.ts
doc
doc
out
.parcel-cache
repl_old
tutorial.rendered.mdx
doc.json
talk/public/EmuSP12
talk/public/samples
server/samples/old
repl/stats.html
coverage
public/icons/apple-splash-*
dev-dist
Dirt-Samples
tidal-drum-machines
webaudiofontdata
src-tauri/target
### BEGIN Visual Studio Code ###
# Blanket, recursive exclude for .vscode directory and files
.vscode/**/*
# Unexclude specific files and directories within .vscode
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
### END Visual Studio Code ###
# BEGIN JetBrains -> END JetBrains
# for JetBrains IDE users, e.g. WebStorm. Source: https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# AWS User-specific
.idea/**/aws.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# SonarLint plugin
.idea/sonarlint/
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
# END JetBrains -> BEGIN JetBrains
samples/*
!samples/README.md
.idea/
+1
View File
@@ -0,0 +1 @@
22
+16
View File
@@ -0,0 +1,16 @@
*.md
*.json
*.yml
*.
**/out
**/dist
packages/mini/krill-parser.js
packages/xen/tunejs.js
paper
pnpm-lock.yaml
pnpm-workspace.yaml
**/dev-dist
website/.astro
!tidal-drum-machines.json
!tidal-drum-machines-alias.json
.pnpm-store
+14 -15
View File
@@ -1,16 +1,15 @@
{
"printWidth": 120,
"useTabs": false,
"tabWidth": 2,
"semi": true,
"singleQuote": true,
"jsxSingleQuote": false,
"trailingComma": "all",
"bracketSpacing": true,
"jsxBracketSameLine": false,
"arrowParens": "always",
"proseWrap": "preserve",
"htmlWhitespaceSensitivity": "css",
"endOfLine": "lf"
}
"printWidth": 120,
"useTabs": false,
"tabWidth": 2,
"semi": true,
"singleQuote": true,
"jsxSingleQuote": false,
"trailingComma": "all",
"bracketSpacing": true,
"bracketSameLine": false,
"arrowParens": "always",
"proseWrap": "preserve",
"htmlWhitespaceSensitivity": "css",
"endOfLine": "lf"
}
+5 -1
View File
@@ -2,5 +2,9 @@
"cSpell.words": [
"subspan",
"vals"
]
],
"yaml.schemas": {
"https://json.schemastore.org/github-workflow.json": "file:///home/felix/projects/strudel/.github/workflows/deploy.yml"
},
"testing.automaticallyOpenPeekView": "never"
}
+88
View File
@@ -0,0 +1,88 @@
# changelog
NOTE: you can generate this with `node warm.js`. it might still not be perfectly sorted...
## november 2025
- 2025-11-27T22:03:53+01:00 [perf] in `noise`, let noiseMix do the disconnect when it exists by jeromew in: [#1783](https://codeberg.org/uzu/strudel/pulls/1783)
- 2025-11-27T22:01:01+01:00 Bug Fix: Retries for sounds tab by glossing in: [#1754](https://codeberg.org/uzu/strudel/pulls/1754)
- 2025-11-27T20:36:46+01:00 [hydra] return the hydra object when await initHydra(..) is called by jeromew in: [#1784](https://codeberg.org/uzu/strudel/pulls/1784)
- 2025-11-27T20:36:14+01:00 Use errorLogger for query and tonal errors by glossing in: [#1782](https://codeberg.org/uzu/strudel/pulls/1782)
- 2025-11-27T20:27:10+01:00 [perf] level 5 `connect-leak` on `vowel` by jeromew in: [#1779](https://codeberg.org/uzu/strudel/pulls/1779)
- 2025-11-26T08:23:38+01:00 feat: add prebake script import button for loading .strudel files by daslyfe in: [#1774](https://codeberg.org/uzu/strudel/pulls/1774)
- 2025-11-26T07:39:28+01:00 Fix Sampler port trampling by Dayglo in: [#1717](https://codeberg.org/uzu/strudel/pulls/1717)
- 2025-11-25T20:59:09+01:00 Feat: Hook up octave and fix example by glossing in: [#1773](https://codeberg.org/uzu/strudel/pulls/1773)
- 2025-11-25T20:48:09+01:00 [perf] fix `connect-leak` in `tremolo` param by jeromew in: [#1780](https://codeberg.org/uzu/strudel/pulls/1780)
- 2025-11-24T17:51:20+01:00 filter modulation improvements! by daslyfe in: [#1769](https://codeberg.org/uzu/strudel/pulls/1769)
- 2025-11-24T01:20:53+01:00 Add o as a synonym for orbit by daslyfe in: [#1766](https://codeberg.org/uzu/strudel/pulls/1766)
- 2025-11-23T22:23:26+01:00 [perf] fix `connect-leak` in `fm` modulation by jeromew in: [#1758](https://codeberg.org/uzu/strudel/pulls/1758)
- 2025-11-23T09:47:24+01:00 Fix interoperability issue between `all` and `await initHydra()` by jeromew in: [#1663](https://codeberg.org/uzu/strudel/pulls/1663)
- 2025-11-23T04:23:06+01:00 Bug fix: Swap l/r gains with temp variable by glossing in: [#1768](https://codeberg.org/uzu/strudel/pulls/1768)
- 2025-11-23T00:52:28+01:00 FIX: prevent LFO filter modulation from popping from negative values by daslyfe in: [#1767](https://codeberg.org/uzu/strudel/pulls/1767)
- 2025-11-21T01:56:11+01:00 Bug Fix: Use frac due to negative frequencies from FM by glossing in: [#1759](https://codeberg.org/uzu/strudel/pulls/1759)
- 2025-11-20T19:48:16+01:00 [perf] fix `connect-leak` added by #1742 when noise() is not used by jeromew in: [#1757](https://codeberg.org/uzu/strudel/pulls/1757)
- 2025-11-20T14:51:00+01:00 [perf] fix `connect-leak` in `delay` effect by jeromew in: [#1755](https://codeberg.org/uzu/strudel/pulls/1755)
- 2025-11-20T14:49:41+01:00 [perf] fix `connect leak` when .noise() is in the mix by jeromew in: [#1742](https://codeberg.org/uzu/strudel/pulls/1742)
- 2025-11-18T23:52:45+01:00 wchooseCycles has now notes in an example by scrappy_fiddler in: [#1748](https://codeberg.org/uzu/strudel/pulls/1748)
- 2025-11-17T05:31:54+01:00 Feature: Partials by glossing in: [#1659](https://codeberg.org/uzu/strudel/pulls/1659)
- 2025-11-16T22:06:14+01:00 README: update superdough documentation by TristanMlct in: [#1741](https://codeberg.org/uzu/strudel/pulls/1741)
- 2025-11-16T21:08:54+01:00 Worklet optimizations by glossing in: [#1730](https://codeberg.org/uzu/strudel/pulls/1730)
- 2025-11-15T14:59:30+01:00 [perf] disconnect Offline AudioNode connections in generateReverb by jeromew in: [#1740](https://codeberg.org/uzu/strudel/pulls/1740)
- 2025-11-15T14:57:47+01:00 [perf] disconnect `send` effect AudioNode when `room` is used by jeromew in: [#1736](https://codeberg.org/uzu/strudel/pulls/1736)
- 2025-11-12T21:22:34+01:00 [supradough] fix: unstable filter by froos in: [#1593](https://codeberg.org/uzu/strudel/pulls/1593)
- 2025-11-12T21:12:07+01:00 Fix link syntax in `project-start` by Kissaki in: [#1724](https://codeberg.org/uzu/strudel/pulls/1724)
- 2025-11-12T21:06:13+01:00 Fix web README sample code by Kissaki in: [#1725](https://codeberg.org/uzu/strudel/pulls/1725)
- 2025-11-12T20:59:39+01:00 Fix typo: 'studel' -> 'strudel' by drhayes in: [#1726](https://codeberg.org/uzu/strudel/pulls/1726)
- 2025-11-12T15:23:41+01:00 fix for node 24 support in tests - #1718 by ausav in: [#1719](https://codeberg.org/uzu/strudel/pulls/1719)
- 2025-11-11T09:00:49+01:00 soundAlias example fix by PepsiiMan in: [#1720](https://codeberg.org/uzu/strudel/pulls/1720)
- 2025-11-10T08:18:36+01:00 fix: Make Supradough package build by munshkr in: [#1711](https://codeberg.org/uzu/strudel/pulls/1711)
- 2025-11-10T08:18:00+01:00 added docs for spaces in scale names by ondras in: [#1715](https://codeberg.org/uzu/strudel/pulls/1715)
- 2025-11-10T02:44:01+01:00 Feature: LFOs for Filters by glossing in: [#1636](https://codeberg.org/uzu/strudel/pulls/1636)
- 2025-11-05T17:07:00+01:00 improvement: sync midi messages to audio context clock by daslyfe in: [#1708](https://codeberg.org/uzu/strudel/pulls/1708)
- 2025-11-04T19:36:14+01:00 Add stick button mappings to gamepad implementation and improve docs by kaosuryoko in: [#1696](https://codeberg.org/uzu/strudel/pulls/1696)
- 2025-11-04T19:29:35+01:00 Refactor sound stopping and triggering logic in SoundsTab component by IJOL in: [#1688](https://codeberg.org/uzu/strudel/pulls/1688)
- 2025-11-04T19:13:21+01:00 Add setting to toggle pattern auto-start on pattern change by moumar in: [#1690](https://codeberg.org/uzu/strudel/pulls/1690)
- 2025-11-04T18:58:50+01:00 Voicings JSDoc by sharkeys_lunchbox in: [#1686](https://codeberg.org/uzu/strudel/pulls/1686)
- 2025-11-01T07:50:40+01:00 FIX: Loading local samples uses too much memory by daslyfe in: [#1706](https://codeberg.org/uzu/strudel/pulls/1706)
## october 2025
- 2025-10-28T22:58:24+01:00 Bug Fix: Handle scale-for-notes when n also supplied by glossing in: [#1625](https://codeberg.org/uzu/strudel/pulls/1625)
- 2025-10-28T22:51:16+01:00 Repurpose vim shortcuts for usability by dtricks in: [#1624](https://codeberg.org/uzu/strudel/pulls/1624)
- 2025-10-28T22:35:21+01:00 Add support for euclidian in mondo with `bd&3:8` by TristanCacqueray in: [#1630](https://codeberg.org/uzu/strudel/pulls/1630)
- 2025-10-27T10:42:07+01:00 Use bunny cdn for all samples and json files by yaxu in: [#1701](https://codeberg.org/uzu/strudel/pulls/1701)
- 2025-10-26T22:52:54+01:00 degithub - switch some samples to bunnycdn by yaxu in: [#1697](https://codeberg.org/uzu/strudel/pulls/1697)
- 2025-10-26T17:09:22+01:00 Fix ZZFX example by moumar in: [#1685](https://codeberg.org/uzu/strudel/pulls/1685)
- 2025-10-23T15:56:04+02:00 Make osc port and host configurable. Changes dependencies. by yaxu in: [#1682](https://codeberg.org/uzu/strudel/pulls/1682)
- 2025-10-23T03:47:31+02:00 Adds back shape to superdough by glossing in: [#1672](https://codeberg.org/uzu/strudel/pulls/1672)
- 2025-10-22T22:15:19+02:00 Fix sampler.mjs githubPath by jeromew in: [#1684](https://codeberg.org/uzu/strudel/pulls/1684)
- 2025-10-22T16:20:50+02:00 Fix onPaint for widgets by yaxu in: [#1658](https://codeberg.org/uzu/strudel/pulls/1658)
- 2025-10-22T15:19:12+02:00 Fix a bug introduced by #4e17cfbdd6 by milliganf in: [#1679](https://codeberg.org/uzu/strudel/pulls/1679)
- 2025-10-18T04:29:20+02:00 Bug Fix: Wavetable: phase wrapping at 1 and detune by glossing in: [#1620](https://codeberg.org/uzu/strudel/pulls/1620)
- 2025-10-16T20:26:28+02:00 github samples: default to "samples" if repository is not specified by prezmop in: [#1644](https://codeberg.org/uzu/strudel/pulls/1644)
- 2025-10-16T17:33:39+02:00 Docs: add example of custom chained function by dariusk in: [#1642](https://codeberg.org/uzu/strudel/pulls/1642)
- 2025-10-14T12:39:48+02:00 textbox by yaxu in: [#1650](https://codeberg.org/uzu/strudel/pulls/1650)
- 2025-10-13T07:05:57+02:00 Feature: Wavetable FM by glossing in: [#1623](https://codeberg.org/uzu/strudel/pulls/1623)
- 2025-10-12T20:43:42+02:00 fix: repair REPL sample sources and URL concat (#1640) by erikfox in: [#1646](https://codeberg.org/uzu/strudel/pulls/1646)
- 2025-10-10T11:25:02+02:00 Add control-metadata by yaxu in: [#1634](https://codeberg.org/uzu/strudel/pulls/1634)
- 2025-10-07T22:59:39+02:00 Fix MQTT: change the trigger handler to match new hap by jurrchen in: [#1629](https://codeberg.org/uzu/strudel/pulls/1629)
- 2025-10-05T21:42:19+02:00 Fix case sensitivity for synonym search by vvolhejn in: [#1618](https://codeberg.org/uzu/strudel/pulls/1618)
- 2025-10-01T08:56:35+02:00 Optimize wavetable synth by glossing in: [#1613](https://codeberg.org/uzu/strudel/pulls/1613)
- 2025-10-01T02:02:33+02:00 fix: pattern switching by daslyfe in: [#1616](https://codeberg.org/uzu/strudel/pulls/1616)
## September 2025
- 2025-09-29T02:10:54+02:00 fix wavetable JSON by daslyfe in: [#1611](https://codeberg.org/uzu/strudel/pulls/1611)
- 2025-09-28T21:28:16+02:00 rename wavetable controls to match existing naming conventions by daslyfe in: [#1610](https://codeberg.org/uzu/strudel/pulls/1610)
- 2025-09-27T23:28:13+02:00 Feature: Wavetable synth improvements by glossing in: [#1607](https://codeberg.org/uzu/strudel/pulls/1607)
- 2025-09-27T21:43:10+02:00 wavetable improvements by daslyfe in: [#1608](https://codeberg.org/uzu/strudel/pulls/1608)
- 2025-09-26T08:48:46+02:00 create orbit based DJ filter by daslyfe in: [#1603](https://codeberg.org/uzu/strudel/pulls/1603)
- 2025-09-23T13:28:20+02:00 fix: time signal by daslyfe in: [#1583](https://codeberg.org/uzu/strudel/pulls/1583)
- 2025-09-21T16:16:06+02:00 mondo: fix all + setcpm + setcps by froos in: [#1600](https://codeberg.org/uzu/strudel/pulls/1600)
- 2025-09-19T21:59:43+02:00 fix: osc error message by froos in: [#1597](https://codeberg.org/uzu/strudel/pulls/1597)
- 2025-09-18T21:09:56+02:00 osc: --debug flag to see incoming messages by froos in: [#1595](https://codeberg.org/uzu/strudel/pulls/1595)
- 2025-09-17T14:12:10+02:00 simplify osc usage by froos in: [#1588](https://codeberg.org/uzu/strudel/pulls/1588)
- 2025-09-16T16:59:58+02:00 dev: logger errors to console in dev mode by daslyfe in: [#1585](https://codeberg.org/uzu/strudel/pulls/1585)
- 2025-09-15T22:52:14+02:00 add tic80 font by froos in: [#1579](https://codeberg.org/uzu/strudel/pulls/1579)
- 2025-09-15T00:00:19+02:00 supradough: fix delay + add some jsdoc types by froos in: [#1578](https://codeberg.org/uzu/strudel/pulls/1578)
+246
View File
@@ -0,0 +1,246 @@
# 🌀 Contributing to Strudel 🌀
Thanks for wanting to contribute!!! There are many ways you can add value to this project
## Move to codeberg
Along with many other live coding projects, we have moved from Microsoft's Github platform to Codeberg for ethical reasons. Please don't fork the project back to github.
## Communication Channels
To get in touch with the community, either
- [join the Uzulang Discord Server](https://discord.com/invite/HGEdXmRkzT) and go to the strudel channels (Uzulangs are a family of live coding languages inspired by each other, including TidalCycles as well as Strudel)
- Find related discussions on the [tidal club forum](https://club.tidalcycles.org/)
## Ask a Question
If you have any questions about strudel, make sure you've glanced through the
[docs](https://strudel.cc/learn/) to find out if it answers your question.
If not, use one of the Communication Channels above!
Don't be afraid to ask! Your question might be of great value for other people too.
## Give Feedback
No matter if you've used the Strudel REPL or if you are using the strudel packages, we are happy to hear some feedback.
Use one of the Communication Channels listed above and drop us a line or two!
## Share Music
If you made some music with strudel, you can give back some love and share what you've done!
Use one of the Communication Channels listed above.
(There used to be a random selection of contributed patterns in the REPL, but that is unfortunately disabled for now due to abuse)
## Improve the Docs
If you find some weak spots in the [docs](https://strudel.cc/workshop/getting-started/), you can edit each file directly on codeberg. There are "Edit this page" links in the right sidebar that take you to the right place.
## Propose a Feature
If you want a specific feature that is not part of strudel yet, feel free to use one of the communication channels above. Please bear in mind that this is a free/open source project, oriented around collaborative discussion. Maybe you even want to help with the implementation of that feature!
## Contribute a feature
Pull requests welcome! Consider starting with discussion or proof-of-concept first, rather than do loads of work on something and then find it doesn't fit the collective goals of the project, or something like that.
At the time of writing we have a PR backlog, and generally prioritise bugfixes and contributions that have arisen through community discussion.
### AI/LLM policy
Strudel is a project handmade by humans, with thought and nuance.
If you have used LLMs (so called 'AI'), please detail that in the pull request. We are still developing our response to the onslaught of LLM technology, but for practical and legal reasons are currently not accepting wholly LLM-generated code. We are also not accepting PRs that add LLM features to strudel itself.
There are #llm-chat and #llm-share channels on our discord. Please do not discuss or share LLM-related things outside of those channels.
## Report a Bug
If you've found a bug, or some behaviour that does not seem right, you are welcome to file an [issue](https://codeberg.org/uzu/strudel/issues).
Please check that it has not been reported before.
## Fix a Bug
To fix a bug that has been reported,
1. check that nobody else is already fixing it and respond to the issue to let people know you're on it
2. fork the repository
3. make sure you've setup the project (see below)
4. hopefully fix the bug
5. make sure the tests pass
6. send a pull request
## Write Tests
There are still many tests that have not been written yet! Reading and writing tests is a great opportunity to get familiar with the codebase.
You can find the tests in each package in the `test` folder. To run all tests, run `pnpm test` from the root folder.
## Project Setup
To get the project up and running for development, make sure you have installed:
- [git](https://git-scm.com/)
- [node](https://nodejs.org/en/) >= 18
- [pnpm](https://pnpm.io/) (`curl -fsSL https://get.pnpm.io/install.sh | env PNPM_VERSION=8.11.0 sh -`)
then, do the following:
```sh
git clone https://codeberg.org/uzu/strudel.git && cd strudel
pnpm i # install at root to symlink packages
pnpm start # start repl
```
Those commands might look slightly different for your OS.
Please report any problems you've had with the setup instructions!
## Code Style
To make sure the code changes only where it should, we are using prettier to unify the code style.
- You can format all files at once by running `pnpm codeformat` from the project root
- Run `pnpm format-check` from the project root to check if all files are well formatted
If you use VSCode, you can
1. install [the prettier extension](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)
2. open command palette and run "Format Document With..."
3. Choose "Configure Default Formatter..."
4. Select prettier
## ESLint
To prevent unwanted runtime errors, this project uses [eslint](https://eslint.org/).
- You can check for lint errors by running `pnpm lint`
There are also eslint extensions / plugins for most editors.
## Running Tests
- Run all tests with `pnpm test`
- Run all tests with UI using `pnpm test-ui`
## Running all CI Checks
When opening a PR, the CI runner will (once approved by a human) check the code style and eslint, as well as run all tests. You can run the same check with `pnpm check`.
## Package Workflow
The project is split into multiple [packages](https://codeberg.org/uzu/strudel/src/branch/main/packages) with independent versioning.
When you run `pnpm i` on the root folder, [pnpm workspaces](https://pnpm.io/workspaces) will install all dependencies of all subpackages. This will allow any js file to import `@strudel/<package-name>` to get the local version,
allowing to develop multiple packages at the same time.
## Package Publishing
To publish all packages that have been changed since the last release, run:
```sh
npm login
# this will increment all the versions in package.json files of non private packages to selected versions
npx lerna version --no-private
# publish all packages inside /packages using pnpm! don't use lerna to publish!!
pnpm --filter "./packages/**" publish --dry-run
# the last command was only a dry-run. if everything looks ok, run this:
pnpm --filter "./packages/**" publish --access public
```
To manually publish a single package, increase the version in the `package.json`, then run `pnpm publish`.
Important: Always publish with `pnpm`, as `npm` does not support overriding main files in `publishConfig`, which is done in all the packages.
## useful commands
```sh
#regenerate the test snapshots (ex: when updating or creating new pattern functions)
pnpm snapshot
#start the OSC server
pnpm run osc
#build the standalone version
pnpm tauri build
```
## version tag patching
here's a little guide on how to patch patterns in the database to prevent breaking old patterns due to breaking changes in newer versions.
the general tactic is to use `// @version x.y` to tag a pattern with a specific strudel version. when a pattern is evaluated, this metadata will de-activate any breaking changes that came after the specified version.
for example, in version 1.1, the default value for `fanchor` was changed from `0.5` to `0`.
if play a pattern that was made before that change, sounds that use filter evenlopes can sound very different, so by adding `// @version 1.0` will make it sound like it used to.
before releasing a new version with breaking changes, we can edit all patterns in the database, inserting the version tag they were created under:
as an example, to release version 1.2, do the following:
1. get date range
```sh
# get date of last version:
git log -1 --format=%aI @strudel/core@1.1.0
# 2024-05-31T23:07:26+02:00
# get date of current version:
git log -1 --format=%aI @strudel/core@1.2.0
# 2025-05-01T12:39:24+02:00
# might also use todays timestamp if version is not yet released
```
now we know, all patterns between these 2 dates have to receive a version tag (unless they already have one).
2. get patterns in question
```sql
SELECT *
FROM code_v1
WHERE code NOT LIKE '%@version%'
AND created_at > '2024-05-31T23:07:26+02:00'
AND created_at < '2025-05-01T12:39:24+02:00'
ORDER BY created_at ASC;
```
this gives us all unversioned patterns that were saved between 1.1.0 and 1.2.0. in this case, it's 9373 patterns!
3. insert version tags
we are now ready to insert the version tag to these patterns.
before updating thousands of patterns, it's probably a good idea to test if a single one gets udpated:
```sql
UPDATE code_v1
SET code = code || E'\n// @version 1.1'
WHERE hash = 'Ns2sMB40yIw4';
```
after [verifying](https://strudel.cc/?Ns2sMB40yIw4) that the version tag has been added, let's insert it everywhere:
```sql
UPDATE code_v1
SET code = code || E'\n// @version 1.1'
WHERE code NOT LIKE '%@version%'
AND created_at > '2024-05-31T23:07:26+02:00'
AND created_at < '2025-05-01T12:39:24+02:00'
```
4. verify
we can verify that the edits worked by querying all patterns that contain the new version tag:
```sql
SELECT *
FROM code_v1
WHERE code LIKE '%@version 1.1%'
AND created_at > '2024-05-31T23:07:26+02:00'
AND created_at < '2025-05-01T12:39:24+02:00'
ORDER BY created_at ASC;
```
## Have Fun
Remember to have fun, and that this project is driven by the passion of volunteers!
+21
View File
@@ -0,0 +1,21 @@
FROM node:24
WORKDIR /app
RUN npm install pnpm --global
COPY pnpm-workspace.yaml ./
COPY package.json pnpm-lock.yaml ./
COPY packages/ ./packages/
COPY examples/ ./examples/
RUN mkdir -p website/public
COPY website/package.json ./website/
RUN pnpm install
COPY . .
EXPOSE 4321
CMD ["pnpm", "dev"]
+64 -77
View File
@@ -1,5 +1,5 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
@@ -7,17 +7,15 @@
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
@@ -26,44 +24,34 @@ them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
@@ -72,7 +60,7 @@ modification follow.
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
@@ -549,35 +537,45 @@ to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
@@ -635,40 +633,29 @@ the "copyright" line and a pointer to where the full notice is found.
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
GNU Affero General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
For more information on this, and how to apply and follow the GNU AGPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
+33 -24
View File
@@ -1,43 +1,52 @@
# strudel
[![Strudel test status](https://github.com/tidalcycles/strudel/actions/workflows/test.yml/badge.svg)](https://github.com/tidalcycles/strudel/actions)
Live coding patterns on the web
An experiment in making a [Tidal](https://github.com/tidalcycles/tidal/) using web technologies. This is unstable software, please tread carefully.
Try it here: https://strudel.tidalcycles.org/
- Try it here: <https://strudel.cc>
- Docs: <https://strudel.cc/learn>
- Source: https://codeberg.org/uzu/strudel/
* Along with many other live coding projects, we have moved from Microsoft's Github platform to Codeberg for ethical reasons. **Please don't fork the project back to github**.
- Technical Blog Post: <https://loophole-letters.vercel.app/strudel>
- 1 Year of Strudel Blog Post: <https://loophole-letters.vercel.app/strudel1year>
- 2 Years of Strudel Blog Post: <https://strudel.cc/blog/#year-2>
Tutorial: https://strudel.tidalcycles.org/tutorial/
## Local development
## Running Locally
Run the REPL locally:
After cloning the project, you can run the REPL locally:
```bash
npm install
npx lerna bootstrap
cd repl
npm install
npm run start
```
1. Install [Node.js](https://nodejs.org/) 18 or newer
2. Install [pnpm](https://pnpm.io/installation)
3. Install dependencies by running the following command:
```bash
pnpm i
```
4. Run the development server:
```bash
pnpm dev
```
## Publish Packages
## Using Strudel In Your Project
To publish, just run:
This project is organized into many [packages](./packages), which are also available on [npm](https://www.npmjs.com/search?q=%40strudel).
```sh
npx lerna version
```
Read more about how to use these in your own project [here](https://strudel.cc/technical-manual/project-start).
This will publish all packages that changed since the last version.
You will need to abide by the terms of the [GNU Affero Public Licence v3](LICENSE). As such, Strudel code can only be shared within free/open source projects under the same license -- see the license for details.
## Style
Licensing info for the default sound banks can be found over on the [dough-samples](https://github.com/felixroos/dough-samples/blob/main/README.md) repository.
For now, please try to copy the style of surrounding code. VS Code users can install the 'prettier' add-on which will use the .prettierrc configuration file for automatic formatting.
## Contributing
There are many ways to contribute to this project! See [contribution guide](./CONTRIBUTING.md). You can find the full list of contributors [here](https://codeberg.org/uzu/strudel/activity/contributors).
## Community
There is a #strudel channel on the TidalCycles discord: https://discord.com/invite/HGEdXmRkzT
There is a #strudel channel on the TidalCycles discord: <https://discord.com/invite/HGEdXmRkzT>
You can also ask questions and find related discussions on the tidal club forum: https://club.tidalcycles.org/
You can also ask questions and find related discussions on the tidal club forum: <https://club.tidalcycles.org/>
The discord and forum is shared with the haskell (tidal) and python (vortex) siblings of this project.
The discord and forum is shared with the haskell (tidal) and python (vortex) siblings of this project.
We also have a mastodon account: <a rel="me" href="https://social.toplap.org/@strudel">social.toplap.org/@strudel</a>
+22
View File
@@ -0,0 +1,22 @@
import { queryCode, testCycles } from '../test/runtime.mjs';
import * as tunes from '../website/src/repl/tunes.mjs';
import { describe, bench } from 'vitest';
import { calculateSteps } from '../packages/core/index.mjs';
const tuneKeys = Object.keys(tunes);
describe('renders tunes', () => {
tuneKeys.forEach((key) => {
describe(key, () => {
calculateSteps(true);
bench(`+steps`, async () => {
await queryCode(tunes[key], testCycles[key] || 1);
});
calculateSteps(false);
bench(`-steps`, async () => {
await queryCode(tunes[key], testCycles[key] || 1);
});
calculateSteps(true);
});
});
});
View File
-1
View File
@@ -1 +0,0 @@
strudel.tidalcycles.org
-16
View File
@@ -1,16 +0,0 @@
{
"files": {
"main.css": "/static/css/main.0d689283.css",
"main.js": "/static/js/main.77e38ada.js",
"static/js/787.8f7ec9e0.chunk.js": "/static/js/787.8f7ec9e0.chunk.js",
"static/media/logo.svg": "/static/media/logo.ac95051720b3dccfe511e0e02d8e1029.svg",
"index.html": "/index.html",
"main.0d689283.css.map": "/static/css/main.0d689283.css.map",
"main.77e38ada.js.map": "/static/js/main.77e38ada.js.map",
"787.8f7ec9e0.chunk.js.map": "/static/js/787.8f7ec9e0.chunk.js.map"
},
"entrypoints": [
"static/css/main.0d689283.css",
"static/js/main.77e38ada.js"
]
}
+16
View File
@@ -0,0 +1,16 @@
all: iclc2023.pdf iclc2023.html
clean:
rm iclc2023.pdf iclc2023.html
iclc2023.html: iclc2023.md citations.json
pandoc --template=pandoc/iclc.html --citeproc --number-sections iclc2023.md -o iclc2023.html
iclc2023.pdf: iclc2023.md citations.json pandoc/iclc.latex pandoc/iclc.sty
pandoc --template=pandoc/iclc.latex --citeproc --number-sections iclc2023.md -o iclc2023.pdf
iclc2023.docx: iclc2023.md citations.json
pandoc --citeproc --number-sections iclc2023.md -o iclc2023.docx
iclc2023x.pdf: iclc2023.md citations.json pandoc/iclc.latex pandoc/iclc.sty
pandoc --template=pandoc/iclc.latex --citeproc --number-sections iclc2023.md --pdf-engine=xelatex -o iclc2023x.pdf
+22
View File
@@ -0,0 +1,22 @@
# paper
## iclc2023
from the strudel project root:
```sh
npm run iclc
npm run iclc-nocite # try this if you get an error
```
## old
Work in progress on a paper about strudel
To build you will need
- pandoc
- pandoc-url2cite (`npm install -g pandoc-url2cite`)
- latex/xelatex
- python
- pandocfilters (`pip3 install pandocfilters`)
File diff suppressed because one or more lines are too long
+214
View File
@@ -0,0 +1,214 @@
---
bibliography: citations.json
date: 2022-06-24
title: "Strudel: Algorithmic Patterns for the Web"
---
# Introduction
This paper introduces Strudel (or sometimes 'StrudelCycles'), an
alternative implementation of the Tidal (or 'TidalCycles') live coding
system, using the JavaScript programming language. Strudel is an attempt
to make live coding more accessible, by creating a system that runs
entirely in the browser, while opening Tidal's approach to algorithmic
patterns [@mcleanAlgorithmicPattern2020a] up to modern audio/visual web
technologies. The Strudel REPL is a live code editor dedicated to
manipulating Strudel patterns while they play, with builtin visual
feedback. While Strudel is written in JavaScript, the API is optimized
for simplicity and readability by applying code transformations on the
syntax tree level, allowing language operations that would otherwise be
impossible. The application supports multiple ways to output sound,
including Tone.js, Web Audio nodes, OSC (Open Sound Control) messages,
Web Serial and Web MIDI. The project is split into multiple packages,
allowing granular reuse in other applications. Apart from TidalCycles,
Strudel draws inspiration from many prior existing projects like
TidalVortex [@mcleanTidalVortexZero2022], Gibber
[@robertsGibberLiveCoding2012], Estuary
[@ogbornEstuaryBrowserbasedCollaborative2017], Hydra [@jackHydra2022],
Ocarina [@solomonPurescriptocarina2022] and Feedforward
[@mcleanFeedforward2020].
# Porting from Haskell
The original Tidal is implemented as a domain specific language (DSL),
embedded in the Haskell pure functional programming language, taking
advantage of Haskell's terse syntax and advanced, 'strong' type system.
Javascript on the other hand, is a multi-paradigm programming language,
with a dynamic type system. Because Tidal leans heavily on many of
Haskell's more unique features, it was not always clear that it could
meaningfully be ported to a multi-paradigm scripting language. However,
this already proved to be the case with an earlier port to Python
\[TidalVortex; @mcleanTidalVortexZero2022\], and we have now
successfully implemented Tidal's pure functional representation of
patterns in Strudel, including partial application, and functor,
applicative and monad structures. Over the past few months since the
project started in January 2022, a large part of Tidal's functionality
has already been ported, including its mini-notation for polymetric
sequences, and a large part of its library of pattern manipulations. The
result is a terse and highly composable system, where just about
everything is a pattern, that may be transformed and combined with other
patterns in a myriad of ways.
# Representing Patterns
Patterns are the essence of Tidal. Its patterns are abstract entities
that represent flows of time as functions, adapting a technique called
pure functional reactive programming. Taking a time span as its input, a
Pattern can output a set of events that happen within that time span. It
depends on the structure of the Pattern how the events are located in
time. From now on, this process of generating events from a time span
will be called **querying**. Example:
<MiniRepl tune={`const pattern = sequence(c3, [e3, g3]);
const events = pattern.query(0, 1);
console.log(events.map(e => e.show()))`} />
In this example, we create a pattern using the `sequence` function and
**query** it for the time span from `0` to `1`. Those numbers represent
units of time called **cycles**. The length of one cycle depends on the
tempo, which defaults to one cycle per second. The resulting events are:
<MiniRepl tune={`[{ value: 'c3', begin: 0, end: 1/2 },
{ value: 'e3', begin: 1/2, end: 3/4 },
{ value: 'g3', begin: 3/4, end: 1 }]`} />
Each event has a value, a begin time and an end time, where time is
represented as a fraction. In the above case, the events are placed in
sequential order, where c3 takes the first half, and e3 and g3 together
take the second half. This temporal placement is the result of the
`sequence` function, which divides its arguments equally over one cycle.
If an argument is an array, the same rule applies to that part of the
cycle. In the example, e3 and g3 are divided equally over the second
half of the whole cycle.
In the REPL, the user only has to type in the pattern itself, the
querying will be handled by the scheduler. The scheduler will repeatedly
query the pattern for events, which then will be used for playback.
![Screenshot of the Strudel editor, including piano-roll
visualisation.](images/strudel-screenshot.png){width="43%"}
# Making Patterns
In practice, the end-user live coder will not deal with constructing
patterns directly, but will rather build patterns using Strudel's
extensive combinator library to create, combine and transform patterns.
The live coder may use the `sequence` function as already seen above, or
more often the mini-notation for even terser notation of rhythmic
sequences. Such sequences are often treated only a starting point for
manipulation, where they then are undergo pattern transformations such
as repetition, symmetry, interference/combination or randomisation,
potentially at multiple timescales. Because Strudel patterns are
represented as pure functions of time rather than as data structures,
very long and complex generative results can be represented and
manipulated without having to store the resulting sequences in memory.
# Pattern Example
The following example showcases how patterns can be utilized to create
musical complexity from simple parts, using repetition and interference:
<MiniRepl tune={`"<0 2 [4 6](3,4,1) 3*2>".scale('D minor')
.off(1/4, scaleTranspose(2))
.off(1/2, scaleTranspose(6))
.legato(.5)
.echo(4, 1/8, .5)
.tone((await piano()).chain(out()))
.pianoroll()`} />
The pattern starts with a rhythm of numbers in mini notation, which are
interpreted inside the scale of D minor. Without the scale function, the
first line can be expressed as:
<MiniRepl tune={`"<d3 f3 [a3 c3](3, 4, 1) g3*2>"`} />
This line could also be expressed without mini notation:
<MiniRepl tune={`slowcat(d3, f3, [a3, c3].euclid(3, 4, 1), g3.fast(2))`} />
Here is a short description of all the functions used:
- `slowcat`: play elements sequentially, where each lasts one cycle
- `brackets`: elements inside brackets are divided equally over the
time of their parent
- `euclid(p, s, o)`: place p pulses evenly over s steps, with offset o
[@toussaintEuclideanAlgorithmGenerates2005]
- `fast(n)`: speed up by n. `g3.fast(2)` will play g3 two times.
- `off(n, f)`: copy each event, offset it by n cycles and apply
function f
- `legato(n)`: multiply duration of event with n
- `echo(t, n, v)`: copy each event t times, with n cycles in between
each copy, decreasing velocity by v
- `tone(instrument)`: play back each event with the given Tone.js
instrument
- `pianoroll()`: visualize events as midi notes in a pianoroll
# Ways to make Sound
To generate sound, Strudel supports different outputs:
- Tone.js
- Web Audio API
- WebDirt, a js recreation of Tidal's *Dirt* sample engine
- OSC via osc-js
- MIDI via WebMIDI
Tone.js proved to be limited for the use case of Strudel, where each
individual event could potentially have a completely different audio
graph. While the Web Audio API takes a *fire-and-forget* approach,
creating a lot of Tone.js instruments and effects causes performance
issues quickly. For that reason, we chose to search for alternatives.
Strudel's Web Audio API output creates a new audio graph for each event.
It currently supports basic oscillators, sample playback, envelopes,
filters and an experimental support for soundfonts.
WebDirt [@ogbornDktr0WebDirt2022] was created as part of the Estuary
Live Coding System [@ogbornEstuaryBrowserbasedCollaborative2017], and
proved to be a solid choice for handling samples in Strudel as well.
Using OSC, it is possible to send messages to SuperDirt
[@SuperDirt2022], which is what Tidal does to generate sound. The
downside of using OSC is that it requires the user to install
SuperCollider and its sc3plugins library, which can be difficult.
The MIDI output can be used to send MIDI messages to either external
instruments or to other programs on the same device. Web MIDI is
currently only supported on Chromium-based browsers.
# Future Outlook
The project is still young, with many features on the horizon. As
general guiding principles, Strudel aims to be
1. accessible
2. consistent with Tidal's approach to pattern
3. modular and extensible
For the future, it is planned to integrate alternative sound engines
such as Glicol [@lanChaosprintGlicol2022] and Faust
[@FaustProgrammingLanguage2022]. To improve compatibility with Tidal,
more Tidal functions are planned to be ported, as well as full
compatibility with SuperDirt. Besides sound, other ways to render events
are being explored, such as graphical, and choreographic output. We are
also looking into alternative ways of editing patterns, including
multi-user editing for network music, parsing a novel syntax to escape
the constraints of javascript, and developing hardware/e-textile
interfaces.
# Links
The Strudel REPL is available at <https://strudel.cc>,
including an interactive tutorial. The repository is at
<https://codeberg.org/uzu/strudel/releases>, all the code is open source
under the GPL-3.0 License.
# Acknowledgments
Thanks to the Strudel and wider Tidal, live coding, webaudio and
free/open source software communities for inspiration and support. Alex
McLean's work on this project is supported by a UKRI Future Leaders
Fellowship \[grant number MR/V025260/1\].
# References {#references .unnumbered}
+137
View File
@@ -0,0 +1,137 @@
---
title: 'Strudel: Algorithmic Patterns for the Web'
date: '2022-06-24'
bibliography: citations.json
---
# Introduction
This paper introduces Strudel (or sometimes 'StrudelCycles'), an alternative implementation of the Tidal (or 'TidalCycles') live coding system, using the JavaScript programming language. Strudel is an attempt to make live coding more accessible, by creating a system that runs entirely in the browser, while opening Tidal's approach to algorithmic patterns [@mcleanAlgorithmicPattern2020a] up to modern audio/visual web technologies. The Strudel REPL is a live code editor dedicated to manipulating Strudel patterns while they play, with builtin visual feedback. While Strudel is written in JavaScript, the API is optimized for simplicity and readability by applying code transformations on the syntax tree level, allowing language operations that would otherwise be impossible. The application supports multiple ways to output sound, including Tone.js, Web Audio nodes, OSC (Open Sound Control) messages, Web Serial and Web MIDI. The project is split into multiple packages, allowing granular reuse in other applications. Apart from TidalCycles, Strudel draws inspiration from many prior existing projects like TidalVortex [@mcleanTidalVortexZero2022], Gibber [@robertsGibberLiveCoding2012], Estuary [@ogbornEstuaryBrowserbasedCollaborative2017], Hydra [@jackHydra2022], Ocarina [@solomonPurescriptocarina2022] and Feedforward [@mcleanFeedforward2020].
# Porting from Haskell
The original Tidal is implemented as a domain specific language (DSL), embedded in the Haskell pure functional programming language, taking advantage of Haskell's terse syntax and advanced, 'strong' type system. Javascript on the other hand, is a multi-paradigm programming language, with a dynamic type system. Because Tidal leans heavily on many of Haskell's more unique features, it was not always clear that it could meaningfully be ported to a multi-paradigm scripting language. However, this already proved to be the case with an earlier port to Python [TidalVortex; @mcleanTidalVortexZero2022], and we have now successfully implemented Tidal's pure functional representation of patterns in Strudel, including partial application, and functor, applicative and monad structures. Over the past few months since the project started in January 2022, a large part of Tidal's functionality has already been ported, including its mini-notation for polymetric sequences, and a large part of its library of pattern manipulations. The result is a terse and highly composable system, where just about everything is a pattern, that may be transformed and combined with other patterns in a myriad of ways.
# Representing Patterns
Patterns are the essence of Tidal. Its patterns are abstract entities that represent flows of time as functions, adapting a technique called pure functional reactive programming.
Taking a time span as its input, a Pattern can output a set of events that happen within that time span.
It depends on the structure of the Pattern how the events are located in time.
From now on, this process of generating events from a time span will be called **querying**.
Example:
```js
const pattern = sequence(c3, [e3, g3]);
const events = pattern.query(0, 1);
console.log(events.map(e => e.show()))
```
In this example, we create a pattern using the `sequence` function and **query** it for the time span from `0` to `1`.
Those numbers represent units of time called **cycles**. The length of one cycle depends on the tempo, which defaults to one cycle per second.
The resulting events are:
```js
[{ value: 'c3', begin: 0, end: 1/2 },
{ value: 'e3', begin: 1/2, end: 3/4 },
{ value: 'g3', begin: 3/4, end: 1 }]
```
Each event has a value, a begin time and an end time, where time is represented as a fraction.
In the above case, the events are placed in sequential order, where c3 takes the first half, and e3 and g3 together take the second half.
This temporal placement is the result of the `sequence` function, which divides its arguments equally over one cycle.
If an argument is an array, the same rule applies to that part of the cycle. In the example, e3 and g3 are divided equally over the second half of the whole cycle.
In the REPL, the user only has to type in the pattern itself, the querying will be handled by the scheduler.
The scheduler will repeatedly query the pattern for events, which then will be used for playback.
![Screenshot of the Strudel editor, including piano-roll visualisation.](images/strudel-screenshot.png){ width=43% }
# Making Patterns
In practice, the end-user live coder will not deal with constructing patterns directly, but will rather build patterns using Strudel's extensive combinator library to create, combine and transform patterns.
The live coder may use the `sequence` function as already seen above, or more often the mini-notation for even terser notation of rhythmic sequences. Such sequences are often treated only a starting point for manipulation, where they then are undergo pattern transformations such as repetition, symmetry, interference/combination or randomisation, potentially at multiple timescales. Because Strudel patterns are represented as pure functions of time rather than as data structures, very long and complex generative results can be represented and manipulated without having to store the resulting sequences in memory.
# Pattern Example
The following example showcases how patterns can be utilized to create musical complexity from simple parts, using repetition and interference:
```js
"<0 2 [4 6](3,4,1) 3*2>".scale('D minor')
.off(1/4, scaleTranspose(2))
.off(1/2, scaleTranspose(6))
.legato(.5)
.echo(4, 1/8, .5)
.tone((await piano()).chain(out()))
.pianoroll()
```
The pattern starts with a rhythm of numbers in mini notation, which are interpreted inside the scale of D minor.
Without the scale function, the first line can be expressed as:
```js
"<d3 f3 [a3 c3](3, 4, 1) g3*2>"
```
This line could also be expressed without mini notation:
```js
slowcat(d3, f3, [a3, c3].euclid(3, 4, 1), g3.fast(2))
```
Here is a short description of all the functions used:
- `slowcat`: play elements sequentially, where each lasts one cycle
- `brackets`: elements inside brackets are divided equally over the time of their parent
- `euclid(p, s, o)`: place p pulses evenly over s steps, with offset o [@toussaintEuclideanAlgorithmGenerates2005]
- `fast(n)`: speed up by n. `g3.fast(2)` will play g3 two times.
- `off(n, f)`: copy each event, offset it by n cycles and apply function f
- `legato(n)`: multiply duration of event with n
- `echo(t, n, v)`: copy each event t times, with n cycles in between each copy, decreasing velocity by v
- `tone(instrument)`: play back each event with the given Tone.js instrument
- `pianoroll()`: visualize events as midi notes in a pianoroll
# Ways to make Sound
To generate sound, Strudel supports different outputs:
- Tone.js
- Web Audio API
- WebDirt, a js recreation of Tidal's *Dirt* sample engine
- OSC via osc-js
- MIDI via WebMIDI
Tone.js proved to be limited for the use case of Strudel, where each individual event could potentially have a completely different audio graph.
While the Web Audio API takes a *fire-and-forget* approach, creating a lot of Tone.js instruments and effects causes performance issues quickly. For that reason, we chose to search for alternatives.
Strudel's Web Audio API output creates a new audio graph for each event. It currently supports basic oscillators, sample playback, envelopes, filters and
an experimental support for soundfonts.
WebDirt [@ogbornDktr0WebDirt2022] was created as part of the Estuary Live Coding System [@ogbornEstuaryBrowserbasedCollaborative2017], and proved to be a solid choice for handling samples in Strudel as well.
Using OSC, it is possible to send messages to SuperDirt [@SuperDirt2022], which is what Tidal does to generate sound.
The downside of using OSC is that it requires the user to install SuperCollider and its sc3plugins library, which can be difficult.
The MIDI output can be used to send MIDI messages to either external instruments or to other programs on the same device.
Web MIDI is currently only supported on Chromium-based browsers.
# Future Outlook
The project is still young, with many features on the horizon. As general guiding principles, Strudel aims to be
1. accessible
2. consistent with Tidal's approach to pattern
3. modular and extensible
For the future, it is planned to integrate alternative sound engines such as Glicol [@lanChaosprintGlicol2022] and Faust [@FaustProgrammingLanguage2022]. To improve compatibility with Tidal, more Tidal functions are planned to be ported, as well as full compatibility with SuperDirt. Besides sound, other ways to render events are being explored, such as graphical, and choreographic output. We are also looking into alternative ways of editing patterns, including multi-user editing for network music, parsing a novel syntax to escape the constraints of javascript, and developing hardware/e-textile interfaces.
# Links
The Strudel REPL is available at <https://strudel.cc>, including an interactive tutorial.
The repository is at <https://codeberg.org/uzu/strudel/releases>, all the code is open source under the GPL-3.0 License.
# Acknowledgments
Thanks to the Strudel and wider Tidal, live coding, webaudio and free/open source software communities for inspiration and support. Alex McLean's work on this project is supported by a UKRI Future Leaders Fellowship [grant number MR/V025260/1].
# References
Binary file not shown.
+97
View File
@@ -0,0 +1,97 @@
**Submission ID:** 8
**Title:** Strudel: live coding patterns on the Web
**Status:** Accept
**Reviewer 1:**
Author Comments: * Summary of the contribution:\
This paper describes Strudel, a Web-based implementation of Tidal Cycles. It is generally a good overview of the system which could help prospective users understand how it works beyond the manual, and it provides many code examples. The most interesting contribution is the comparison between the Haskell and JavaScript features for this case.
* On theme (1-5):\
1
* Citation quality (1-5):\
5
* Missing references:\
not answered
* Suggested improvements:\
This paper is a good introduction to Strudel. The style is mostly illustrative, but it is hard to understand where the Tidal syntax is being introduced vs where the specific Strudel features are used. Thus, the best way to improve it would be to focus on Strudel. Also, it would be good to give a better hint on what output method would be preferable. Also the title of Section 9 should compare Strudel to Tidal or Haskell to JavaScript.
The paper is driven by examples, but many are a bit difficult to follow, here are some issues:\
Section 4 - the mini-notation example does not look terser despite the text.\
Section 5 - echo funciton is not used.\
Sections 7.11 and 7.12 - the same (mini-notation) example is used so it is not clear what relation there is between transpilation and using mini-notation. Also please reference peggy\
Sectin 7.3.2 The sawtooth waveform has been used in all examples, so it would be clearer if it was used here (maybe cutoff as well).
Generally, beyond the language differences, what does Strudel contribute with respect to Haskell-based Tidal? I would say that there is a lot to be gained in terms of installation, availability and potential for collaboration.
* Clarity (1-5):\
4
* Corrections required:\
No contentious / incorrect claims
* Other Changes if Published:\
not answered
* Correct Template used?\
Yes
* All materials provided?\
Yes
* Wordcount respected?\
Yes
* Have any deviations, errors or omissions impacted your ability to give a fair review?\
No
**Reviewer 2:**
Author Comments: * Summary of the contribution:\
This proposal presents Strudel, an online, JavaScript-native approach to algorithmic pattern composition that in many ways mirrors TidalCycles. TidalCycles, developed by one of the authors, is a key software piece for live coding. Perhaps the most difficult aspects of Tidal are related to Haskell and Haskell's dependency system that makes it very difficult to install. Haskell in itself is a difficult language to grasp; if Tidal users would like to expand and 'personalise' the possibilities of the software, they would have to get familiar with the particularities of Haskell. JavaScript is a multi-paradigm language that is used for web development can make pattern-based, algorithmic composition more popular. The process of bringing Tidal's paradigm to a dynamic type system seems to be an important part of this research. I enjoy and find very interesting the dialectical process that occurs between Strudel and Tidal, where the implementation of Tidal concepts in Strudel simultaneously transforms Tidal, either by introspection (finding bugs, etc.) or by bringing back to Tidal new insights that are clear in JavaScript. I think moving to TypeScript makes sense; perhaps a small section where the decision to use JavaScript is discussed a little further could be helpful for readers (beyond accessibility). Overall, this paper is clear and presents software that is a key development for live coding and will be a great addition to the next ICLC.
* On theme (1-5):\
4
* Citation quality (1-5):\
5
* Missing references:\
not answered
* Suggested improvements:\
Tidal-Strudel parity seems to be on the immediate horizon, but I wonder if this parity is transient and if the ultimate goal of Strudel is to ultimately diverge from Tidal. Perhaps the project is in its early stages, and this is not clear, but it would be interesting to get some insights on the authors' intentions. Personally, I think that a key discussion that needs to happen in live coding communities and development nodes is that of what is understood as multilingual live coding. Tidal's paradigm is implemented in a number of programming languages (as well as platforms such as Estuary), each with its own set of features and challenges: some are functional reactive programming, type strict oriented, while others are multi-paradigm, dynamic type oriented, etc. This seems to suggest that it is possible for many programming languages to adopt one single understanding of how to make music. Perhaps further considerations should be made as to whether we need one single grammar to name and express all music structures or whether we need environments and software that help difference to proliferate in terms of music/sound art/art idiosyncrasies. Perhaps questions in this direction are beyond the scope of this paper and I hope this comment is taken as productive feedback for the authors.
* Clarity (1-5):\
4
* Corrections required:\
Nothing contentious or incorrect to note.
* Other Changes if Published:\
The example shown on page 3 under "Pattern Example" seems to be different from its explanation. The explanations do not mention scale but mention echo, which is not present in the example. I would double check all the code examples inc ase I missed something like this.
* Correct Template used?\
Yes
* All materials provided?\
Yes
* Wordcount respected?\
Yes
* Have any deviations, errors or omissions impacted your ability to give a fair review?\
no
* General remarks:\
This proposal presents Strudel, an online, JavaScript-native approach to algorithmic pattern composition that in many ways mirrors TidalCycles. TidalCycles, developed by one of the authors, is a key software piece for live coding. Perhaps the most difficult aspects of Tidal are related to Haskell and Haskell's dependency system that makes it very difficult to install. Haskell in itself is a difficult language to grasp; if Tidal users would like to expand and 'personalise' the possibilities of the software, they would have to get familiar with the particularities of Haskell. JavaScript is a multi-paradigm language that can make pattern-based, algorithmic composition more popular. The process of bringing Tidal's paradigm to a dynamic type system seems to be an important part of this research. I enjoy and find very interesting the dialectical process that occurs between Strudel and Tidal, where the implementation of Tidal concepts in Strudel simultaneously transforms Tidal, either by introspection (finding bugs, etc.) or by bringing back to Tidal new insights that are clear in JavaScript. I think moving to TypeScript makes sense; perhaps a small section where the decision to use JavaScript is discussed a little further could be helpful for readers (beyond accessibility). I am curious, did the authors consider PureScript? I can see how, in terms of popularity, PureScript is a lateral move coming from Haskell, but an explicit explanation about the (maybe) obvious candidates would be interesting.\
Tidal-Strudel parity seems to be on the immediate horizon, but I wonder if this parity is transient and if the ultimate goal of Strudel is to ultimately diverge from Tidal. Perhaps the project is in its early stages, and this is not clear, but it would be interesting to get some insights on the authors' intentions. Personally, I think that a key discussion that needs to happen in live coding communities and development nodes is that of what is understood as multilingual live coding. Tidal's paradigm is implemented in a number of programming languages (as well as platforms such as Estuary), each with its own set of features and challenges: some are functional reactive programming, type strict oriented, while others are multi-paradigm, dynamic type oriented, etc. This seems to suggest that it is possible for many programming languages to adopt one single understanding of how to make music. Perhaps further considerations should be made as to whether we need one single grammar to name and express all music structures or whether we need environments and software that help difference to proliferate in terms of music/sound art/art idiosyncrasies. Perhaps questions in this direction are beyond the scope of this paper and I hope this last comment is taken as productive feedback for the authors.
Overall, this paper is clear and presents software that is a key development for live coding and will be a great addition to the next ICLC.
PS. The example shown on page 3 under "Pattern Example" seems to be different from its explanation. The explanations do not mention scale but mention echo, which is not present in the example.
+954
View File
@@ -0,0 +1,954 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="generator" content="pandoc" />
<meta name="date" content="2022-12-14" />
<title>Strudel: live coding patterns on the Web</title>
<style type="text/css">
code {
white-space: pre;
}
</style>
<style type="text/css">
pre > code.sourceCode {
white-space: pre;
position: relative;
}
pre > code.sourceCode > span {
display: inline-block;
line-height: 1.25;
}
pre > code.sourceCode > span:empty {
height: 1.2em;
}
.sourceCode {
overflow: visible;
}
code.sourceCode > span {
color: inherit;
text-decoration: inherit;
}
div.sourceCode {
margin: 1em 0;
}
pre.sourceCode {
margin: 0;
}
@media screen {
div.sourceCode {
overflow: auto;
}
}
@media print {
pre > code.sourceCode {
white-space: pre-wrap;
}
pre > code.sourceCode > span {
text-indent: -5em;
padding-left: 5em;
}
}
pre.numberSource code {
counter-reset: source-line 0;
}
pre.numberSource code > span {
position: relative;
left: -4em;
counter-increment: source-line;
}
pre.numberSource code > span > a:first-child::before {
content: counter(source-line);
position: relative;
left: -1em;
text-align: right;
vertical-align: baseline;
border: none;
display: inline-block;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
padding: 0 4px;
width: 4em;
color: #aaaaaa;
}
pre.numberSource {
margin-left: 3em;
border-left: 1px solid #aaaaaa;
padding-left: 4px;
}
div.sourceCode {
}
@media screen {
pre > code.sourceCode > span > a:first-child::before {
text-decoration: underline;
}
}
code span.al {
color: #ff0000;
font-weight: bold;
} /* Alert */
code span.an {
color: #60a0b0;
font-weight: bold;
font-style: italic;
} /* Annotation */
code span.at {
color: #7d9029;
} /* Attribute */
code span.bn {
color: #40a070;
} /* BaseN */
code span.bu {
color: #008000;
} /* BuiltIn */
code span.cf {
color: #007020;
font-weight: bold;
} /* ControlFlow */
code span.ch {
color: #4070a0;
} /* Char */
code span.cn {
color: #880000;
} /* Constant */
code span.co {
color: #60a0b0;
font-style: italic;
} /* Comment */
code span.cv {
color: #60a0b0;
font-weight: bold;
font-style: italic;
} /* CommentVar */
code span.do {
color: #ba2121;
font-style: italic;
} /* Documentation */
code span.dt {
color: #902000;
} /* DataType */
code span.dv {
color: #40a070;
} /* DecVal */
code span.er {
color: #ff0000;
font-weight: bold;
} /* Error */
code span.ex {
} /* Extension */
code span.fl {
color: #40a070;
} /* Float */
code span.fu {
color: #06287e;
} /* Function */
code span.im {
color: #008000;
font-weight: bold;
} /* Import */
code span.in {
color: #60a0b0;
font-weight: bold;
font-style: italic;
} /* Information */
code span.kw {
color: #007020;
font-weight: bold;
} /* Keyword */
code span.op {
color: #666666;
} /* Operator */
code span.ot {
color: #007020;
} /* Other */
code span.pp {
color: #bc7a00;
} /* Preprocessor */
code span.sc {
color: #4070a0;
} /* SpecialChar */
code span.ss {
color: #bb6688;
} /* SpecialString */
code span.st {
color: #4070a0;
} /* String */
code span.va {
color: #19177c;
} /* Variable */
code span.vs {
color: #4070a0;
} /* VerbatimString */
code span.wa {
color: #60a0b0;
font-weight: bold;
font-style: italic;
} /* Warning */
</style>
<link rel="stylesheet" href="css/iclc.css" />
</head>
<body>
<div id="header">
<h1 class="title">Strudel: live coding patterns on the Web</h1>
<ul id="authorlist">
<li>true</li>
<li>true</li>
</ul>
<h3 class="date">2022-12-14</h3>
</div>
<h2 class="abstract">Abstract</h2>
<div id="abstract">
<p>
This paper introduces Strudel, which brings the TidalCycles approach to live coding algorithmic patterns to
native JavaScript and the web. We begin by giving a little background of the first year of development, before
sharing some detail about its implementation and examples of use. We go on to outline the wide range of
synthesis and other outputs available in Strudel, including WebAudio, MIDI, OSC (for SuperDirt), WebSerial and
CSound, and introduce Strudels REPL live editor, including its built-in visualisations. We then compare Strudel
with Tidal, the trade-offs involved between JavaScript and Haskell, and the unique capabilities offered by
Strudel for aligning patterns.
</p>
</div>
<h1 data-number="1" id="introduction"><span class="header-section-number">1</span> Introduction</h1>
<p>
In the following paper, we introduce <em>Strudel</em>, an alternative implementation of the TidalCycles (or
Tidal for short) live coding system, using the JavaScript programming language. Strudel is an attempt to make
live coding more accessible, by creating a system that runs entirely in the browser, while opening Tidals
approach to algorithmic patterns
<span class="citation" data-cites="mcleanAlgorithmicPattern2020a">(Mclean 2020)</span> up to modern audio/visual
web technologies. The Strudel REPL is a live code editor dedicated to manipulating patterns while they play, with
builtin visual feedback. While Strudel is written in JavaScript, the API is optimized for simplicity and
readability by applying code transformations on the syntax tree level, allowing language operations that would
otherwise be impossible. The application supports multiple ways to output sound, including Tone.js, Web Audio
Nodes, OSC (Open Sound Control) messages, Web Serial, Web MIDI and Csound. The project is split into multiple
packages, allowing granular reuse in other applications. Apart from TidalCycles, Strudel draws inspiration from
many prior existing projects like TidalVortex
<span class="citation" data-cites="mcleanTidalVortexZero2022">(McLean et al. 2022)</span>, Gibber
<span class="citation" data-cites="robertsGibberLiveCoding2012">(Roberts and Kuchera-morin 2012)</span>, Estuary
<span class="citation" data-cites="ogbornEstuaryBrowserbasedCollaborative2017">(Ogborn et al. 2017)</span>, Hydra
<span class="citation" data-cites="jackHydra2022">(Jack [2022] 2022)</span>, Ocarina
<span class="citation" data-cites="solomonPurescriptocarina2022">(Solomon [2021] 2022)</span> and Feedforward
<span class="citation" data-cites="mcleanFeedforward2020">(McLean 2020)</span>. This paper expands the Strudel
Demo paper for the Web Audio Conference 2022
<span class="citation" data-cites="StrudelWAC2022">(Roos and McLean 2022)</span>.
</p>
<p>
The first tentative commit to the Strudel project was on 22nd January 2022 by Alex McLean, with the core
representation implemented over the following few days. Although this was his first attempt at a JavaScript-based
application, by 27th January, Alex had managed to upload the initial version to the npm javascript package
database, sharing with the wider community for comment. By 4th February, Felix Roos had discovered Strudel and
contributed a REPL user interface to it, and then contributed a scheduler the next day, so that Strudel could
already make sound. At this point, Alex and Felix shared ownership to the repository, and the project has since
proved to be a productive confluence of Felixs own work into music representation and visualisation, with Alexs
experience with making Tidal. Felix has since become the primary contributor to Strudel, with Alex continuing to
jump between developing both Strudel and Tidal. Aspects of Strudels development have therefore fed back into
TidalCycles, and both systems have maintained a shared conceptual underpinning. We plan to continue working
towards feature parity between these systems, although within the syntactical trade-offs and library ecosystems of
JavaScript and Haskell, some divergence is inevitable and healthy.
</p>
<p>
Over the first year of its life, Strudel is now a fully-fledged live coding environment, porting Tidals core
represention of patterns, pattern transformations, and mininotation for polymetric sequences, combined with a
wealth of features for synthesising and visualising those patterns.
</p>
<h1 data-number="2" id="from-tidal-to-strudel-and-back">
<span class="header-section-number">2</span> From Tidal to Strudel and back
</h1>
<p>
As mentioned above, the original Tidal is implemented as a domain specific language (DSL) embedded in the Haskell
pure functional programming language, and takes advantage of Haskells terse syntax and advanced, strong type
system. JavaScript on the other hand, is a multi-paradigm programming language, with a dynamic type system.
Because Tidal leans heavily on many of Haskells more unique features, it was not always clear that it could
meaningfully be ported to a multi-paradigm scripting language. However, this possibility was already demonstrated
with an earlier port to Python [TidalVortex;
<span class="citation" data-cites="mcleanTidalVortexZero2022">McLean et al. (2022)</span>], and we have now
successfully implemented Tidals pure functional representation of patterns in Strudel, including partial
application, currying, and the functor, applicative and monadic structures that underlie Tidals expressive
pattern transformations. The result is a terse and highly composable system, where everything is either a pattern,
or a function for combining and manipulating patterns, offering a rich creative ground for exploration.
</p>
<p>
This development process has been far from a one-way port, however. The process of porting Tidals concepts has
also opened up new possibilities, some just from revisiting every design decision, and some from the particular
affordances and constraints offered by JavaScript. This has lead to new features (and indeed bugfixes) that have
found their way back to Tidal where appropriate, and ongoing work that we will return to in the conclusion of this
paper.
</p>
<h1 data-number="3" id="representing-patterns">
<span class="header-section-number">3</span> Representing Patterns
</h1>
<p>
Patterns are the essence of Tidal. Its patterns are abstract entities that represent flows of time as functions,
adapting a technique called pure functional reactive programming. Taking a time span as its input, a Pattern can
output a set of events that happen within that time span. It depends on the structure of the Pattern how the
events are located in time. From now on, this process of generating events from a time span will be called
<strong>querying</strong>. Example:
</p>
<div class="sourceCode" id="cb1">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="kw">const</span> pattern <span class="op">=</span> <span class="fu">sequence</span>(c3<span class="op">,</span> [e3<span class="op">,</span> g3])</span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="kw">const</span> events <span class="op">=</span> pattern<span class="op">.</span><span class="fu">queryArc</span>(<span class="dv">0</span><span class="op">,</span> <span class="dv">1</span>)</span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="bu">console</span><span class="op">.</span><span class="fu">log</span>(events<span class="op">.</span><span class="fu">map</span>(e <span class="kw">=&gt;</span> e<span class="op">.</span><span class="fu">show</span>()))</span></code></pre>
</div>
<p>
In this example, we create a pattern using the <code>sequence</code> function and <strong>query</strong> it for
the time span from <code>0</code> to <code>1</code>. Those numbers represent units of time called
<strong>cycles</strong>. The length of one cycle depends on the tempo, which defaults to one cycle per second. The
resulting events are:
</p>
<div class="sourceCode" id="cb2">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>[{ <span class="dt">value</span><span class="op">:</span> <span class="st">&#39;c3&#39;</span><span class="op">,</span> <span class="dt">begin</span><span class="op">:</span> <span class="dv">0</span><span class="op">,</span> <span class="dt">end</span><span class="op">:</span> <span class="dv">1</span><span class="op">/</span><span class="dv">2</span> }<span class="op">,</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a>{ <span class="dt">value</span><span class="op">:</span> <span class="st">&#39;e3&#39;</span><span class="op">,</span> <span class="dt">begin</span><span class="op">:</span> <span class="dv">1</span><span class="op">/</span><span class="dv">2</span><span class="op">,</span> <span class="dt">end</span><span class="op">:</span> <span class="dv">3</span><span class="op">/</span><span class="dv">4</span> }<span class="op">,</span></span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a>{ <span class="dt">value</span><span class="op">:</span> <span class="st">&#39;g3&#39;</span><span class="op">,</span> <span class="dt">begin</span><span class="op">:</span> <span class="dv">3</span><span class="op">/</span><span class="dv">4</span><span class="op">,</span> <span class="dt">end</span><span class="op">:</span> <span class="dv">1</span> }]</span></code></pre>
</div>
<p>
Each event has a value, a begin time and an end time, where time is represented as a fraction. In the above case,
the events are placed in sequential order, where c3 takes the first half, and e3 and g3 together take the second
half. This temporal placement is the result of the <code>sequence</code> function, which divides its arguments
equally over one cycle. If an argument is an array, the same rule applies to that part of the cycle. In the
example, e3 and g3 are divided equally over the second half of the whole cycle.
</p>
<p>
The above examples do not represent how Strudel is used in practice. In the live coding editor, the user only has
to type in the pattern itself, the querying will be handled by the scheduler. The scheduler will repeatedly query
the pattern for events, which are then scheduled as sound synthesis or other event triggers. Also, the above event
data structure has been simplified for readability.
</p>
<figure>
<img
src="images/strudel-screenshot2.png"
style="width: 60%"
alt="Screenshot of the Strudel REPL live coding editor, including piano-roll visualisation."
/>
<figcaption aria-hidden="true">
Screenshot of the Strudel REPL live coding editor, including piano-roll visualisation.
</figcaption>
</figure>
<h1 data-number="4" id="making-patterns"><span class="header-section-number">4</span> Making Patterns</h1>
<p>
In practice, the end-user live coder will not deal with constructing patterns directly, but will rather build
patterns using Strudels extensive combinator library to create, combine and transform patterns.
</p>
<p>
The live coder will rarely use the <code>sequence</code> function as seen above, as sequencing is implicit in many
functions. For example in the following, the <code>note</code> function constructs a pattern of notes, sequencing
its arguments in the same manner as the previous example.
</p>
<div class="sourceCode" id="cb3">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="fu">note</span>(c3<span class="op">,</span> [e3<span class="op">,</span> g3])</span></code></pre>
</div>
<p>
Perhaps more often, they will use the mini-notation for even terser notation of rhythmic sequences: [^This last
example is also valid Tidal code, albeit the parenthesis is not required in its Haskell syntax in this case. Tidal
does not support passing sequences as lists directly to the <code>note</code> function, however.].
</p>
<div class="sourceCode" id="cb4">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="fu">note</span>(<span class="st">&quot;c3 [e3 g3]&quot;</span>)</span></code></pre>
</div>
<p>
Such sequences are often treated only a starting point for manipulation, where they then undergo pattern
transformations such as repetition, symmetry, interference/combination or randomisation, potentially at multiple
timescales. Because Strudel patterns are represented as pure functions of time rather than as data structures,
very long and complex generative results can be represented and manipulated without having to store the resulting
sequences in memory.
</p>
<h1 data-number="5" id="pattern-example"><span class="header-section-number">5</span> Pattern Example</h1>
<p>
The following example showcases how patterns can be utilized to create musical complexity from simple parts, using
repetition and interference:
</p>
<div class="sourceCode" id="cb5">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="st">&quot;&lt;0 2 [4 6](3,4,1) 3&gt;&quot;</span></span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="op">.</span><span class="fu">off</span>(<span class="dv">1</span><span class="op">/</span><span class="dv">4</span><span class="op">,</span> <span class="fu">add</span>(<span class="dv">2</span>))</span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a><span class="op">.</span><span class="fu">off</span>(<span class="dv">1</span><span class="op">/</span><span class="dv">2</span><span class="op">,</span> <span class="fu">add</span>(<span class="dv">6</span>))</span>
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a><span class="op">.</span><span class="fu">scale</span>(<span class="st">&#39;D minor&#39;</span>)</span>
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a><span class="op">.</span><span class="fu">legato</span>(<span class="op">.</span><span class="dv">25</span>)</span>
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a><span class="op">.</span><span class="fu">note</span>()<span class="op">.</span><span class="fu">s</span>(<span class="st">&quot;sawtooth square&quot;</span>)</span>
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true" tabindex="-1"></a><span class="op">.</span><span class="fu">delay</span>(<span class="op">.</span><span class="dv">8</span>)<span class="op">.</span><span class="fu">delaytime</span>(<span class="op">.</span><span class="dv">125</span>)</span></code></pre>
</div>
<p>
The pattern starts with a rhythm of numbers in mini notation, which are later interpreted inside the scale of D
minor. The first line could also be expressed without mini notation:
</p>
<div class="sourceCode" id="cb6">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="fu">cat</span>(<span class="dv">0</span><span class="op">,</span> <span class="dv">2</span><span class="op">,</span> [<span class="dv">4</span><span class="op">,</span> <span class="dv">6</span>]<span class="op">.</span><span class="fu">euclid</span>(<span class="dv">3</span><span class="op">,</span> <span class="dv">4</span><span class="op">,</span> <span class="dv">1</span>)<span class="op">,</span> <span class="dv">3</span>)</span></code></pre>
</div>
<p>
These numbers then undergo various pattern transformations. Here is a short description of all the functions used:
</p>
<ul>
<li><code>cat</code>: play elements sequentially, where each lasts one cycle</li>
<li><code>brackets</code>: elements inside brackets are divided equally over the time of their parent</li>
<li>
<code>.euclid(p, s, o)</code>: place p pulses evenly over s steps, with offset o
<span class="citation" data-cites="toussaintEuclideanAlgorithmGenerates2005">(Toussaint 2005)</span>
</li>
<li>
<code>.off(n, f)</code>: layers a pattern on top of itself, with the new layer offset by n cycles, and with
function f applied
</li>
<li><code>.legato(n)</code>: multiply the duration of all events in a pattern by a factor of n</li>
<li>
<code>.echo(t, n, v)</code>: copy each event t times, with n cycles in between each copy, decreasing velocity by
v
</li>
<li><code>.note()</code>: interpretes values as notes</li>
<li><code>.s(name)</code>: play back each event with the given sound</li>
<li><code>.delay(wet)</code>: add delay</li>
<li><code>.delaytime(t)</code>: set delay time</li>
</ul>
<p>Much of the above will be familiar to Tidal users.</p>
<!-- This example shows some of Strudel's unique support for chords and transposition familiar to students of Western music theory. This differs a little from Tidal's approach and thanks to the integration of the javascript library XXX (*TODO* ? or is this all your work Felix?), Strudel's support for tonal transformations such as voice leading is perhaps respects more advanced than Tidal. -->
<h1 data-number="6" id="ways-to-make-sound-and-other-events">
<span class="header-section-number">6</span> Ways to make Sound (and other events)
</h1>
<p>To generate sound, Strudel supports bindings for different outputs:</p>
<ul>
<li>Tone.js (deprecated)</li>
<li>Web Audio API</li>
<li>WebDirt, a js recreation of Tidals <em>Dirt</em> sample engine (deprecated)</li>
<li>OSC via osc-js, compatible with superdirt</li>
<li>Csound via the Csound WebAssembly build</li>
<li>MIDI via WebMIDI</li>
<li>Serial via WebSerial</li>
</ul>
<p>
At first, we used Tone.js as sound output, but it proved to be limited for the use case of Strudel, where each
individual event could potentially have a completely different audio graph. While the Web Audio API takes a
<em>fire-and-forget</em> approach, creating a lot of Tone.js instruments and effects causes performance issues
quickly. For that reason, we chose to search for alternatives.
</p>
<p>
Strudels new default output uses the Web Audio API to create a new audio graph for each event. It currently
supports basic oscillators, sample playback, various effects and an experimental support for soundfonts.
</p>
<p>
WebDirt <span class="citation" data-cites="ogbornDktr0WebDirt2022">(Ogborn [2016] 2022)</span> was created as part
of the Estuary Live Coding System
<span class="citation" data-cites="ogbornEstuaryBrowserbasedCollaborative2017">(Ogborn et al. 2017)</span>, and
proved to be a solid choice for handling samples in Strudel as well. We are however focused on working more
directly with the Web Audio API to be able to integrate new features more tightly.
</p>
<p>
Using the OSC protocol via Strudels provided Node.js-based OSC proxy server, it is possible to send network
messages to trigger events. This is mainly used to render sound using SuperDirt
<span class="citation" data-cites="SuperDirt2022">(<em>SuperDirt</em> [2015] 2022)</span>, which is the
well-developed Supercollider-based synthesis framework that Tidal live coders generally use as standard.
</p>
<p>
Recently, the experimental integration of Csound proved to bring a new dimension of sound design capabilities to
Strudel. Thanks to the WebAssembly distribution of this classic system
<span class="citation" data-cites="CsoundWebAssembly">(Yi, Lazzarini, and Costello 2018)</span>, Csound
orchestra synthesisers can be embedded in and then patterned with Strudel code.
</p>
<p>
MIDI output can also be used to send MIDI messages to either external instruments or to other programs on the same
device. Unlike OSC, Strudel is able to send MIDI directly without requiring additional proxy software, but only
from web browsers that support it (at the time of writing, this means Chromium-based browsers).
</p>
<p>
Finally, Strudel supports Serial output, for example to trigger events via microcontrollers. This has already been
explored for robot choreography by Kate Sicchio and Alex McLean, via a performance presented at the International
Conference on Live Interfaces 2022.
</p>
<h1 data-number="7" id="the-strudel-repl"><span class="header-section-number">7</span> The Strudel REPL</h1>
<p>
While Strudel can be used as a library in any JavaScript codebase, its main, reference user interface is the
Strudel REPL[^REPL stands for read, evaluate, print/play, loop. It is friendly jargon for an interactive
programming interface from computing heritage, usually for a commandline interface but also applied to live coding
editors.], which is a browser-based live coding environment. This live code editor is dedicated to manipulating
Strudel patterns while they play. The REPL features built-in visual feedback, which highlights which elements in
the patterned (mini-notation) sequences are influencing the event that is currently being played. This feedback is
designed to support both learning and live use of Strudel.
</p>
<p>
Besides a UI for playback control and meta information, the main part of the REPL interface is the code editor
powered by CodeMirror. In it, the user can edit and evaluate pattern code live, using one of the available
synthesis outputs to create music and/or sound art. The control flow of the REPL follows 3 basic steps:
</p>
<ol type="1">
<li>
The user writes and updates code. Each update transpiles and evaluates it to create a
<code>Pattern</code> instance
</li>
<li>
While the REPL is running, the <code>Scheduler</code> queries the active <code>Pattern</code> by a regular
interval, generating <code>Events</code> (also known as <code>Haps</code> in Strudel) for the next time span.
</li>
<li>
For each scheduling tick, all generated <code>Events</code> are triggered by calling their
<code>onTrigger</code> method, which is set by the output.
</li>
</ol>
<figure>
<img
src="https://github.com/tidalcycles/strudel/raw/talk/talk/public/strudelflow.png?raw=true"
style="width: 43%"
alt="REPL control flow"
/>
<figcaption aria-hidden="true">REPL control flow</figcaption>
</figure>
<h2 data-number="7.1" id="user-code"><span class="header-section-number">7.1</span> User Code</h2>
<p>To create a <code>Pattern</code> from the user code, two steps are needed:</p>
<ol type="1">
<li>Transpile the JS input code to make it functional</li>
<li>Evaluate the transpiled code</li>
</ol>
<h3 data-number="7.1.1" id="transpilation-evaluation">
<span class="header-section-number">7.1.1</span> Transpilation &amp; Evaluation
</h3>
<p>
In the JavaScript world, using transpilation is a common practise to be able to use language features that are not
supported by the base language. Tools like <code>babel</code> will transpile code that contains unsupported
language features into a version of the code without those features.
</p>
<p>
In the same tradition, Strudel can add a transpilation step to simplify the user code in the context of live
coding. For example, the Strudel REPL lets the user create mini notation patterns using just double quoted
strings, while single quoted strings remain what they are:
</p>
<div class="sourceCode" id="cb7">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="st">&quot;c3 [e3 g3]*2&quot;</span></span></code></pre>
</div>
<p>is transpiled to:</p>
<div class="sourceCode" id="cb8">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">mini</span>(<span class="st">&quot;c3 [e3 g3]*2&quot;</span>)<span class="op">.</span><span class="fu">withMiniLocation</span>([<span class="dv">1</span><span class="op">,</span><span class="dv">0</span><span class="op">,</span><span class="dv">0</span>]<span class="op">,</span>[<span class="dv">1</span><span class="op">,</span><span class="dv">14</span><span class="op">,</span><span class="dv">14</span>])</span></code></pre>
</div>
<p>
Here, the string is wrapped in <code>mini</code>, which will create a pattern from a mini notation string.
Additionally, the <code>withMiniLocation</code> method passes the original source code location of the string to
the pattern, which enables highlighting active events.
</p>
<p>
Other convenient features like pseudo variables, operator overloading and top level await are possible with
transpilation.
</p>
<p>After the transpilation, the code is ready to be evaluated into a <code>Pattern</code>.</p>
<p>
Behind the scenes, the user code string is parsed with <code>acorn</code>, turning it into an Abstract Syntax Tree
(AST). The AST allows changing the structure of the code before generating the transpiled version using
<code>escodegen</code>.
</p>
<h3 data-number="7.1.2" id="mini-notation"><span class="header-section-number">7.1.2</span> Mini Notation</h3>
<p>
While the transpilation allows JavaScript to express Patterns in a less verbose way, it is still preferable to use
the Mini Notation as a more compact way to express rhythm. Strudel aims to provide the same Mini Notation features
and syntax as used in Tidal.
</p>
<p>
The Mini Notation parser is implemented using <code>peggy</code>, which allows generating performant parsers for
Domain Specific Languages (DSLs) using a concise grammar notation. The generated parser turns the Mini Notation
string into an AST which is used to call the respective Strudel functions with the given structure. For example,
<code>"c3 [e3 g3]*2"</code> will result in the following calls:
</p>
<div class="sourceCode" id="cb9">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="fu">seq</span>(</span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">reify</span>(<span class="st">&#39;c3&#39;</span>)<span class="op">.</span><span class="fu">withLocation</span>([<span class="dv">1</span><span class="op">,</span><span class="dv">1</span><span class="op">,</span><span class="dv">1</span>]<span class="op">,</span> [<span class="dv">1</span><span class="op">,</span><span class="dv">4</span><span class="op">,</span><span class="dv">4</span>])<span class="op">,</span></span>
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">seq</span>(</span>
<span id="cb9-4"><a href="#cb9-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">reify</span>(<span class="st">&#39;e3&#39;</span>)<span class="op">.</span><span class="fu">withLocation</span>([<span class="dv">1</span><span class="op">,</span><span class="dv">5</span><span class="op">,</span><span class="dv">5</span>]<span class="op">,</span> [<span class="dv">1</span><span class="op">,</span><span class="dv">8</span><span class="op">,</span><span class="dv">8</span>])<span class="op">,</span></span>
<span id="cb9-5"><a href="#cb9-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">reify</span>(<span class="st">&#39;g3&#39;</span>)<span class="op">.</span><span class="fu">withLocation</span>([<span class="dv">1</span><span class="op">,</span><span class="dv">8</span><span class="op">,</span><span class="dv">8</span>]<span class="op">,</span> [<span class="dv">1</span><span class="op">,</span><span class="dv">10</span><span class="op">,</span><span class="dv">10</span>])<span class="op">,</span></span>
<span id="cb9-6"><a href="#cb9-6" aria-hidden="true" tabindex="-1"></a> )<span class="op">.</span><span class="fu">fast</span>(<span class="dv">2</span>)</span>
<span id="cb9-7"><a href="#cb9-7" aria-hidden="true" tabindex="-1"></a>)</span></code></pre>
</div>
<h3 data-number="7.1.3" id="highlighting-locations">
<span class="header-section-number">7.1.3</span> Highlighting Locations
</h3>
<p>
As seen in the examples above, both the JS and the Mini Notation parser add source code locations using
<code>withMiniLocation</code> and <code>withLocation</code> methods. While the JS parser adds locations relative
to the user code as a whole, the Mini Notation adds locations relative to the position of the mini notation
string. The absolute location of elements within Mini Notation can be calculated by simply adding both locations
together. This absolute location can be used to highlight active events in real time.
</p>
<h2 data-number="7.2" id="scheduling-events"><span class="header-section-number">7.2</span> Scheduling Events</h2>
<p>
After an instance of <code>Pattern</code> is obtained from the user code, it is used by the scheduler to get
queried for events. Once started, the scheduler runs at a fixed interval to query active pattern for events
withing the current intervals time span. A simplified implementation looks like this:
</p>
<div class="sourceCode" id="cb10">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="kw">let</span> pattern <span class="op">=</span> <span class="fu">seq</span>(<span class="st">&#39;c3&#39;</span><span class="op">,</span> [<span class="st">&#39;e3&#39;</span><span class="op">,</span> <span class="st">&#39;g3&#39;</span>])<span class="op">;</span> <span class="co">// pattern from user</span></span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a><span class="kw">let</span> interval <span class="op">=</span> <span class="fl">0.5</span><span class="op">;</span> <span class="co">// query interval in seconds</span></span>
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true" tabindex="-1"></a><span class="kw">let</span> time <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> <span class="co">// beginning of current time span</span></span>
<span id="cb10-4"><a href="#cb10-4" aria-hidden="true" tabindex="-1"></a><span class="kw">let</span> minLatency <span class="op">=</span> <span class="op">.</span><span class="dv">1</span><span class="op">;</span> <span class="co">// min time before a hap should trigger</span></span>
<span id="cb10-5"><a href="#cb10-5" aria-hidden="true" tabindex="-1"></a><span class="pp">setInterval</span>(() <span class="kw">=&gt;</span> {</span>
<span id="cb10-6"><a href="#cb10-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">const</span> haps <span class="op">=</span> pattern<span class="op">.</span><span class="fu">queryArc</span>(time<span class="op">,</span> time <span class="op">+</span> interval)<span class="op">;</span></span>
<span id="cb10-7"><a href="#cb10-7" aria-hidden="true" tabindex="-1"></a> time <span class="op">+=</span> interval<span class="op">;</span> <span class="co">// increment time</span></span>
<span id="cb10-8"><a href="#cb10-8" aria-hidden="true" tabindex="-1"></a> haps<span class="op">.</span><span class="fu">forEach</span>((hap) <span class="kw">=&gt;</span> {</span>
<span id="cb10-9"><a href="#cb10-9" aria-hidden="true" tabindex="-1"></a> <span class="kw">const</span> deadline <span class="op">=</span> hap<span class="op">.</span><span class="at">whole</span><span class="op">.</span><span class="at">begin</span> <span class="op">-</span> time <span class="op">+</span> minLatency<span class="op">;</span></span>
<span id="cb10-10"><a href="#cb10-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">onTrigger</span>(hap<span class="op">,</span> deadline<span class="op">,</span> duration)<span class="op">;</span></span>
<span id="cb10-11"><a href="#cb10-11" aria-hidden="true" tabindex="-1"></a> })<span class="op">;</span></span>
<span id="cb10-12"><a href="#cb10-12" aria-hidden="true" tabindex="-1"></a>}<span class="op">,</span> interval <span class="op">*</span> <span class="dv">1000</span>)<span class="op">;</span> <span class="co">// query each &quot;interval&quot; seconds</span></span></code></pre>
</div>
<p>
Note that the above code is simplified for illustrative purposes. The actual implementation has to work around
imprecise callbacks of <code>setInterval</code>. More about the implementation details can be read in
<a href="https://loophole-letters.vercel.app/web-audio-scheduling">this blog post</a>.
</p>
<p>
The fact that <code>Pattern.queryArc</code> is a pure function that maps a time span to a set of events allows us
to choose any interval we like without changing the resulting output. It also means that when the pattern is
changed from outside, the next scheduling callback will work with the new pattern, keeping its clock running.
</p>
<p>
The latency between the time the pattern is evaluated and the change is heard is between
<code>minLatency</code> and <code>interval + minLatency</code>, in our example between 100ms and 600ms. In
Strudel, the current query interval is 50ms with a minLatency of 100ms, meaning the latency is between 50ms and
150ms.
</p>
<h2 data-number="7.3" id="output"><span class="header-section-number">7.3</span> Output</h2>
<p>
The last step is to trigger each event in the chosen output. This is where the given time and value of each event
is used to generate audio or any other form of time based output. The default output of the Strudel REPL is the
WebAudio output. To understand what an output does, we first have to understand what control parameters are.
</p>
<h3 data-number="7.3.1" id="control-parameters">
<span class="header-section-number">7.3.1</span> Control Parameters
</h3>
<p>
To be able to manipulate multiple aspects of sound in parallel, so called control parameters are used to shape the
value of each event. Example:
</p>
<div class="sourceCode" id="cb11">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="fu">note</span>(<span class="st">&quot;c3 e3&quot;</span>)<span class="op">.</span><span class="fu">cutoff</span>(<span class="dv">1000</span>)<span class="op">.</span><span class="fu">s</span>(<span class="st">&#39;sawtooth&#39;</span>)</span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a> <span class="op">.</span><span class="fu">queryArc</span>(<span class="dv">0</span><span class="op">,</span> <span class="dv">1</span>)<span class="op">.</span><span class="fu">map</span>(hap <span class="kw">=&gt;</span> hap<span class="op">.</span><span class="at">value</span>)</span>
<span id="cb11-3"><a href="#cb11-3" aria-hidden="true" tabindex="-1"></a><span class="co">/* [</span></span>
<span id="cb11-4"><a href="#cb11-4" aria-hidden="true" tabindex="-1"></a><span class="co"> { note: &#39;c3&#39;, cutoff: 1000, s: &#39;sawtooth&#39; }</span></span>
<span id="cb11-5"><a href="#cb11-5" aria-hidden="true" tabindex="-1"></a><span class="co"> { note: &#39;e3&#39;, cutoff: 1000, s: &#39;sawtooth&#39; }</span></span>
<span id="cb11-6"><a href="#cb11-6" aria-hidden="true" tabindex="-1"></a><span class="co">] */</span></span></code></pre>
</div>
<p>
Here, the control parameter functions <code>note</code>, <code>cutoff</code> and <code>s</code> are used, where
each controls a different property in the value object. Each control parameter function accepts a primitive value,
a list of values to be sequenced into a <code>Pattern</code>, or a <code>Pattern</code>. In the example,
<code>note</code> gets a <code>Pattern</code> from a Mini Notation expression (double quoted), while
<code>cutoff</code> and <code>s</code> are given a <code>Number</code> and a (single quoted)
<code>String</code> respectively.
</p>
<p>
Strudel comes with a large default set of control parameter functions that are based on the ones used by Tidal and
SuperDirt, focusing on music and audio terminology. It is however possible to create custom control paramters for
any purpose:
</p>
<div class="sourceCode" id="cb12">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="kw">const</span> { x<span class="op">,</span> y } <span class="op">=</span> <span class="fu">createParams</span>(<span class="st">&#39;x&#39;</span><span class="op">,</span> <span class="st">&#39;y&#39;</span>)</span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a><span class="fu">x</span>(sine<span class="op">.</span><span class="fu">range</span>(<span class="dv">0</span><span class="op">,</span> <span class="dv">200</span>))<span class="op">.</span><span class="fu">y</span>(cosine<span class="op">.</span><span class="fu">range</span>(<span class="dv">0</span><span class="op">,</span><span class="dv">200</span>))</span></code></pre>
</div>
<p>
This example creates the custom control parameters <code>x</code> and <code>y</code> which are then used to form a
pattern that descibes the coordinates of a circle.
</p>
<h3 data-number="7.3.2" id="outputs"><span class="header-section-number">7.3.2</span> Outputs</h3>
<p>
Now that we know how the value of an event is manipulated using control parameters, we can look at how outputs can
use that value to generate anything. The scheduler above was calling the <code>onTrigger</code> function which is
used to implement the output. A very simple version of the web audio output could look like this:
</p>
<div class="sourceCode" id="cb13">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="kw">function</span> <span class="fu">onTrigger</span>(hap<span class="op">,</span> deadline<span class="op">,</span> duration) {</span>
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true" tabindex="-1"></a> <span class="kw">const</span> { note } <span class="op">=</span> hap<span class="op">.</span><span class="at">value</span><span class="op">;</span></span>
<span id="cb13-3"><a href="#cb13-3" aria-hidden="true" tabindex="-1"></a> <span class="kw">const</span> time <span class="op">=</span> <span class="fu">getAudioContext</span>()<span class="op">.</span><span class="at">currentTime</span> <span class="op">+</span> deadline<span class="op">;</span></span>
<span id="cb13-4"><a href="#cb13-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">const</span> o <span class="op">=</span> <span class="fu">getAudioContext</span>()<span class="op">.</span><span class="fu">createOscillator</span>()<span class="op">;</span></span>
<span id="cb13-5"><a href="#cb13-5" aria-hidden="true" tabindex="-1"></a> o<span class="op">.</span><span class="at">frequency</span><span class="op">.</span><span class="at">value</span> <span class="op">=</span> <span class="fu">getFreq</span>(note)<span class="op">;</span></span>
<span id="cb13-6"><a href="#cb13-6" aria-hidden="true" tabindex="-1"></a> o<span class="op">.</span><span class="fu">start</span>(time)<span class="op">;</span></span>
<span id="cb13-7"><a href="#cb13-7" aria-hidden="true" tabindex="-1"></a> o<span class="op">.</span><span class="fu">stop</span>(time <span class="op">+</span> <span class="bu">event</span><span class="op">.</span><span class="at">duration</span>)<span class="op">;</span></span>
<span id="cb13-8"><a href="#cb13-8" aria-hidden="true" tabindex="-1"></a> o<span class="op">.</span><span class="fu">connect</span>(<span class="fu">getAudioContext</span>()<span class="op">.</span><span class="at">destination</span>)<span class="op">;</span></span>
<span id="cb13-9"><a href="#cb13-9" aria-hidden="true" tabindex="-1"></a>}</span></code></pre>
</div>
<p>
The above example will create an <code>OscillatorNode</code> for each event, where the frequency is controlled by
the <code>note</code> param. In essence, this is how the WebAudio API output of Strudel works, only with many more
parameters to control synths, samples and effects.
</p>
<h1 data-number="8" id="pattern-alignment-and-combination">
<span class="header-section-number">8</span> Pattern alignment and combination
</h1>
<p>
One core aspect of Strudel, inherited from Tidal, is the flexible way that patterns can be combined, irrespective
of their structure. Its declarative approach means a live coder does not have to think about the details of
<em>how</em> this is done, only <em>what</em> is to be done.
</p>
<p>
As a simple example, consider two number patterns <code>"0 [1 2] 3"</code>, and <code>"10 20"</code>. The first
has three contiguous steps of equal lengths, with the second step broken down into two substeps, giving four
events in total. There are a very large number of ways in which the structure of these two patterns could be
combined, but the default method in both Strudel and Tidal is to line up the cycles of the two patterns, and then
take events from the first pattern and match them with those in the second pattern. Therefore, the following two
lines are equivalent:
</p>
<div class="sourceCode" id="cb14">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="st">&quot;0 [1 2] 3&quot;</span><span class="op">.</span><span class="fu">add</span>(<span class="st">&quot;10 20&quot;</span>)</span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a><span class="st">&quot;10 [11 22] 23&quot;</span></span></code></pre>
</div>
<p>
Where the events only partially overlap, they are treated as fragments of the event in the first pattern. This is
a little difficult to conceptualise, but lets start by comparing the two patterns in the following example:
</p>
<div class="sourceCode" id="cb15">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="st">&quot;0 1 2&quot;</span><span class="op">.</span><span class="fu">add</span>(<span class="st">&quot;10 20&quot;</span>)</span>
<span id="cb15-2"><a href="#cb15-2" aria-hidden="true" tabindex="-1"></a><span class="st">&quot;10 [11 21] 20&quot;</span></span></code></pre>
</div>
<p>
They are similar to the previous example in that the number <code>1</code> is split in two, with its two halves
added to <code>10</code> and <code>20</code> respectively. However, the <code>11</code> remembers that it is a
fragment of that original <code>1</code> event, and so is treated as having a duration of a third of a cycle,
despite only being active for a sixth of a cycle. Likewise, the <code>21</code> is also a fragment of that
original <code>1</code> event, but a fragment of its second half. Because the start of its event is missing, it
wouldnt actually trigger a sound (unless it underwent further pattern transformations/combinations).
</p>
<p>
In practice, the effect of this default, implicit method for combining two patterns is that the second pattern is
added <em>in</em> to the first one, and indeed this can be made explicit:
</p>
<div class="sourceCode" id="cb16">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="st">&quot;0 1 2&quot;</span><span class="op">.</span><span class="at">add</span><span class="op">.</span><span class="fu">in</span>(<span class="st">&quot;10 20&quot;</span>)</span></code></pre>
</div>
<p>This makes way for other ways to align the pattern, and several are already defined, in particular:</p>
<ul>
<li>
<code>in</code> - as explained above, aligns cycles, and applies values from the pattern on the right
<em>in</em> to the pattern on the left.
</li>
<li>
<code>out</code> - as with <code>in</code>, but values are applied <em>out</em> of the pattern on the left
(i.e. <em>in</em> to the one on the right).
</li>
<li>
<code>mix</code> - structures from both patterns are combined, so that the new events are not fragments but are
created at intersections of events from both sides.
</li>
<li>
<code>squeeze</code> - cycles from the pattern on the right are squeezed into events on the left. So that
e.g. <code>"0 1 2".add.squeeze("10 20")</code> is equivalent to <code>"[10 20] [11 21] [12 22]"</code>.
</li>
<li>
<code>squeezeout</code> - as with <code>squeeze</code>, but cycles from the left are squeezed into events on the
right. So, <code>"0 1 2".add.squeezeout("10 20")</code> is equivalent to <code>[10 11 12] [20 21 22]</code>.
</li>
<li>
<code>trig</code> is similar to <code>squeezeout</code> in that cycles from the right are aligned with events on
the left. However those cycles are not squeezed, rather they are truncated to fit the event. So
<code>"0 1 2 3 4 5 6 7".add.trig("10 [20 30]")</code> would be equivalent to
<code>10 11 12 13 20 21 30 31</code>. In effect, events on the right trigger cycles on the left.
</li>
<li>
<code>trigzero</code> is similar to <code>trig</code>, but the pattern is triggered from its very first cycle,
rather than from the current cycle. <code>trig</code> and <code>trigzero</code> therefore only give different
results where the leftmost pattern differs from one cycle to the next.
</li>
</ul>
<p>
We will save going deeper into the background, design and practicalities of these alignment functions for future
publications. However in the next section, we take them as a case study for looking at the different design
affordances offered by Haskell to Tidal, and JavaScript to Strudel.
</p>
<h1 data-number="9" id="comparing-strudel-and-haskell-in-use">
<span class="header-section-number">9</span> Comparing Strudel and Haskell in use
</h1>
<p>
Unlike Haskell, JavaScript lacks the ability to define custom infix operators, or change the meaning of existing
ones. So the above Strudel example of <code>"0 1 2".add.out("10 20")</code> is equivalent to the Tidal expression
<code>"0 1 2" +| "10 20"</code>, where the vertical bar in the operator <code>+|</code> stands for
<code>out</code> (where <code>a |+ b</code> would be equivalent of <code>a.add.in(b)</code>).
</p>
<p>
From this we can already see that Tidal tends towards brevity through mixing infix operators with functions, and
Strudel tends towards spelling out operations which are joined together with the <code>.</code> operator. This
then is the design trade-off of Tidals tersity, versus Strudels simplicity.
</p>
<p>To demonstrate this, consider the following Tidal pattern:</p>
<pre
class="tidal"
><code>iter 4 $ every 3 (||+ n &quot;10 20&quot;) $ (n &quot;0 1 3&quot;) # s &quot;triangle&quot; # crush 4</code></pre>
<p>This can be directly translated to the Strudel equivalent:</p>
<div class="sourceCode" id="cb18">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="fu">iter</span>(<span class="dv">4</span><span class="op">,</span> <span class="fu">every</span>(<span class="dv">3</span><span class="op">,</span> add<span class="op">.</span><span class="fu">squeeze</span>(<span class="st">&quot;10 20&quot;</span>)<span class="op">,</span> <span class="fu">n</span>(<span class="st">&quot;0 1 3&quot;</span>)<span class="op">.</span><span class="fu">s</span>(<span class="st">&quot;triangle&quot;</span>)<span class="op">.</span><span class="fu">crush</span>(<span class="dv">4</span>)))</span></code></pre>
</div>
<p>Although for a more canonical Strudel expression, we would reorder it as:</p>
<div class="sourceCode" id="cb19">
<pre
class="sourceCode js"
><code class="sourceCode javascript"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a><span class="fu">n</span>(<span class="st">&quot;0 1 3&quot;</span>)<span class="op">.</span><span class="fu">every</span>(<span class="dv">3</span><span class="op">,</span> add<span class="op">.</span><span class="fu">squeeze</span>(<span class="st">&quot;10 20&quot;</span>))<span class="op">.</span><span class="fu">iter</span>(<span class="dv">4</span>)<span class="op">.</span><span class="fu">s</span>(<span class="st">&quot;triangle&quot;</span>)<span class="op">.</span><span class="fu">crush</span>(<span class="dv">4</span>)</span></code></pre>
</div>
<p>
The Strudel example uses the <code>.</code> method call operator for all operations and combinations, whereas the
Tidal example has <code>#</code> for the default method for combining patterns and uses infix operators for other
methods. The lack of parenthesis in the Tidal example is partly due to the way that arguments are applied to
Haskells functions, and partly due to the use of the <code>$</code> operator as an alternative way to establish
precedence and control the order of evaluation.
</p>
<p>
Considering the above, we argue that the Haskell syntax is a little cleaner, but that the Strudel syntax is easier
to learn. Our informal observation is that while Haskells dollar <code>$</code> operator is very useful in making
code easier to work with, it is one of the most difficult aspects of Tidal use for beginners to learn. On the
other hand, the deeper levels of parenthesis in Strudel code can be difficult to keep track of, especially while
coding under pressure of live musical performance. However this difficulty can be largely be mitigated by
reordering expressions, and further mitigated by supporting editor features.
</p>
<p>
With Strudel, we have little choice but to embrace the affordances and constraints offered by JavaScript, and
while designing a domain-specific language entirely based on method calls is a challenge, through creative
adoption of functional programming techniques like partial application, we are so far very happy with the results.
Tidals functional reactive approach to pattern-making has in general translated well to JavaScript, and
opportunities and constraints have overall traded off to create a very approachable and useable live coding
environment.
</p>
<h2 data-number="9.1" id="the-trade-off-of-flexible-typing">
<span class="header-section-number">9.1</span> The trade-off of flexible typing
</h2>
<p>
We have identified one problem with porting Tidal to JavaScript where we have missed Haskells strict typing and
type inference. In both Tidal and Strudel, time is rational, where any point in time is represented as the ratio
of two integers. This allows representation of musical ratios such that are impossible to represent accurately
using the more common floating point numbers. However while libraries are available that support rational numbers
in JavaScript, the lack of strict typing means that it is easy to implement pattern methods where computationally
expensive conversion from floating point to rational numbers are performed late, and therefore often enough to
overload the CPUs, due to the large number of iterative calculations required to estimate a ratio for a given
floating point number. To mitigate this problem, we might consider moving to TypeScript in the future.
</p>
<h1 data-number="10" id="future-outlook"><span class="header-section-number">10</span> Future Outlook</h1>
<p>
The project is still young, with many features on the horizon. As general guiding principles, Strudel aims to be
</p>
<ol type="1">
<li>accessible</li>
<li>consistent with Tidals approach to pattern</li>
<li>modular and extensible</li>
</ol>
<p>
While Haskells type system makes it a great language for the ongoing development of Tidals inner representation
of pattern, JavaScripts vibrant ecosystem, flexibility and accessibility makes it a great host for more ad-hoc
experiments, including interface design. For the future, it is planned to integrate additional alternative sound
engines such as Glicol <span class="citation" data-cites="lanChaosprintGlicol2022">(Lan [2020] 2022)</span> and
Faust
<span class="citation" data-cites="FaustProgrammingLanguage2022"
>(<em>Faust - Programming Language for Audio Applications and Plugins</em> [2016] 2022)</span
>. Strudel is already approaching feature parity with Tidal, but there are more Tidal functions to be ported, and
work to be done to improve compatibility with Tidals mininotation. Tidal version 2.0 is under development, which
brings a new representation for sequences to its patterns, which will then be brought to Strudel. Besides sound,
other ways to render events are being explored, such as graphical, and choreographic output. We are also looking
into alternative ways of editing patterns, including multi-user editing for network music, parsing a novel syntax
to escape the constraints of javascript, and developing hardware/e-textile interfaces. In summary, there is a lot
of fun ahead.
</p>
<h1 data-number="11" id="links"><span class="header-section-number">11</span> Links</h1>
<p>
The Strudel REPL is available at <a href="https://strudel.cc" class="uri">https://strudel.cc</a>, including an
interactive tutorial. The repository is at
<a href="https://github.com/tidalcycles/strudel" class="uri">https://github.com/tidalcycles/strudel</a>, all the
code is open source under the AGPL-3.0 License.
</p>
<h1 data-number="12" id="acknowledgments"><span class="header-section-number">12</span> Acknowledgments</h1>
<p>
Thanks to the Strudel and wider Tidal, live coding, WebAudio and free/open source software communities for
inspiration and support. Alex McLeans work on this project is supported by a UKRI Future Leaders Fellowship
[grant number MR/V025260/1].
</p>
<h1 class="unnumbered" id="references">References</h1>
<div id="refs" class="references csl-bib-body hanging-indent" role="doc-bibliography">
<div id="ref-FaustProgrammingLanguage2022" class="csl-entry" role="doc-biblioentry">
<em>Faust - Programming Language for Audio Applications and Plugins</em>. (2016) 2022. C++. GRAME.
<a href="https://github.com/grame-cncm/faust">https://github.com/grame-cncm/faust</a>.
</div>
<div id="ref-jackHydra2022" class="csl-entry" role="doc-biblioentry">
Jack, Olivia. (2022) 2022. <em>Hydra</em>.
<a href="https://github.com/ojack/hydra">https://github.com/ojack/hydra</a>.
</div>
<div id="ref-lanChaosprintGlicol2022" class="csl-entry" role="doc-biblioentry">
Lan, Qichao. (2020) 2022. <em>Chaosprint/Glicol</em>. Rust.
<a href="https://github.com/chaosprint/glicol">https://github.com/chaosprint/glicol</a>.
</div>
<div id="ref-mcleanAlgorithmicPattern2020a" class="csl-entry" role="doc-biblioentry">
Mclean, Alex. 2020. <span>“Algorithmic Pattern.”</span> In
<em>Proceedings of the International Conference on New Interfaces for Musical Expression</em>, 265--270.
Birmingham, UK. <a href="https://zenodo.org/record/4813352">https://zenodo.org/record/4813352</a>.
</div>
<div id="ref-mcleanFeedforward2020" class="csl-entry" role="doc-biblioentry">
McLean, Alex. 2020. <span>“Feedforward.”</span> In
<em>Proceedings of New Interfaces for Musical Expression</em>. Birmingham.
<a href="https://zenodo.org/record/6353969">https://zenodo.org/record/6353969</a>.
</div>
<div id="ref-mcleanTidalVortexZero2022" class="csl-entry" role="doc-biblioentry">
McLean, Alex, Raphaël Forment, Sylvain Le Beux, and Damián Silvani. 2022. <span>“TidalVortex Zero.”</span> In
<em>Proceedings of the 7th International Conference on Live Coding</em>. Limerick, Ireland: Zenodo.
<a href="https://doi.org/10.5281/zenodo.6456380">https://doi.org/10.5281/zenodo.6456380</a>.
</div>
<div id="ref-ogbornDktr0WebDirt2022" class="csl-entry" role="doc-biblioentry">
Ogborn, David. (2016) 2022. <em>Dktr0/WebDirt</em>. JavaScript.
<a href="https://github.com/dktr0/WebDirt">https://github.com/dktr0/WebDirt</a>.
</div>
<div id="ref-ogbornEstuaryBrowserbasedCollaborative2017" class="csl-entry" role="doc-biblioentry">
Ogborn, David, Jamie Beverley, Luis Navarro del Angel, Eldad Tsabary, and Alex McLean. 2017.
<span>“Estuary: Browser-Based Collaborative Projectional Live Coding of Musical Patterns.”</span> In
<em>Proceedings of the International Conference on Live Coding</em>, 11. Morelia.
</div>
<div id="ref-robertsGibberLiveCoding2012" class="csl-entry" role="doc-biblioentry">
Roberts, Charles, and Joann Kuchera-morin. 2012. <span>“Gibber: Live Coding Audio in the Browser.”</span> In
<em>In Proceedings of the 2012 International Computer Music Conference</em>.
</div>
<div id="ref-StrudelWAC2022" class="csl-entry" role="doc-biblioentry">
Roos, Felix, and Alex McLean. 2022. <span>“Strudel: Algorithmic Patterns for the Web.”</span> In. Zenodo.
<a href="https://doi.org/10.5281/zenodo.6768844">https://doi.org/10.5281/zenodo.6768844</a>.
</div>
<div id="ref-solomonPurescriptocarina2022" class="csl-entry" role="doc-biblioentry">
Solomon, Mike. (2021) 2022. <em>Purescript-Ocarina</em>. PureScript.
<a href="https://github.com/mikesol/purescript-ocarina">https://github.com/mikesol/purescript-ocarina</a>.
</div>
<div id="ref-SuperDirt2022" class="csl-entry" role="doc-biblioentry">
<em>SuperDirt</em>. (2015) 2022. SuperCollider. musikinformatik.
<a href="https://github.com/musikinformatik/SuperDirt">https://github.com/musikinformatik/SuperDirt</a>.
</div>
<div id="ref-toussaintEuclideanAlgorithmGenerates2005" class="csl-entry" role="doc-biblioentry">
Toussaint, Godfried. 2005. <span>“The Euclidean Algorithm Generates Traditional Musical Rhythms.”</span> In
<em>In Proceedings of BRIDGES: Mathematical Connections in Art, Music and Science</em>, 4756.
<a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.62.231"
>http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.62.231</a
>.
</div>
<div id="ref-CsoundWebAssembly" class="csl-entry" role="doc-biblioentry">
Yi, Steven, Victor Lazzarini, and Edward Costello. 2018.
<span>“WebAssembly AudioWorklet Csound.”</span> In. Berlin, Germany.
<a href="https://mural.maynoothuniversity.ie/16018/">https://mural.maynoothuniversity.ie/16018/</a>.
</div>
</div>
</body>
</html>
+460
View File
@@ -0,0 +1,460 @@
---
title: 'Strudel: live coding patterns on the Web'
author:
- name: Felix Roos
affiliation: Unaffiliated
email: flix91@gmail.com
- name: Alex McLean
affiliation: Then Try This
email: alex@slab.org
abstract: |
This paper introduces Strudel, which brings the TidalCycles approach to live coding algorithmic patterns to native JavaScript and the web. We begin by giving a little background of the first year of development, before sharing some detail about its implementation and examples of use. We go on to outline the wide range of synthesis and other outputs available in Strudel, including WebAudio, MIDI, OSC (for SuperDirt), WebSerial and CSound, and introduce Strudel's REPL live editor, including its built-in visualisations. We then compare Strudel with Tidal, the trade-offs involved between JavaScript and Haskell, and the unique capabilities offered by Strudel for aligning patterns, before concluding with some thoughts about the future.
bibliography: citations.json
fontsize: 11pt
geometry: margin=2cm
fontfamily: libertine
fontfamily: inconsolata
mainfont: Linux Libertine O
monofont: Inconsolata
date: '2022-12-14'
---
# Introduction
In the following paper, we introduce *Strudel*, an alternative
implementation of the TidalCycles (or 'Tidal' for short) live coding
system, using the JavaScript programming language. Strudel is an
attempt to make live coding more accessible, by creating a system that
runs entirely in the browser, while opening Tidal's approach to
algorithmic patterns [@mcleanAlgorithmicPattern2020a] up to modern
audio/visual web technologies. The Strudel REPL is a live code editor
dedicated to manipulating patterns while they play, with builtin
visual feedback. While Strudel is written in JavaScript, the API is
optimized for simplicity and readability by applying code
transformations on the syntax tree level, allowing language operations
that would otherwise be impossible. The application supports multiple
ways to output sound, including Tone.js, Web Audio Nodes, OSC (Open
Sound Control) messages, Web Serial, Web MIDI and Csound. The project
is split into multiple packages, allowing granular reuse in other
applications. Apart from TidalCycles, Strudel draws inspiration from
many prior existing projects like TidalVortex
[@mcleanTidalVortexZero2022], Gibber [@robertsGibberLiveCoding2012],
Estuary [@ogbornEstuaryBrowserbasedCollaborative2017], Hydra
[@jackHydra2022], Ocarina [@solomonPurescriptocarina2022] and
Feedforward [@mcleanFeedforward2020]. This paper expands the Strudel
Demo paper for the Web Audio Conference 2022 [@StrudelWAC2022].
The first tentative commit to the Strudel project was on 22nd January
2022 by Alex McLean, with the core representation implemented over the
following few days. Although this was his first attempt at a
JavaScript-based application, by 27th January, Alex had managed to
upload the initial version to the 'npm' javascript package database,
sharing with the wider community for comment. By 4th February, Felix
Roos had discovered Strudel and contributed a 'REPL' user interface to
it, and then contributed a scheduler the next day, so that Strudel
could already make sound. At this point, Alex and Felix shared
ownership to the repository, and the project has since proved to be a
productive confluence of Felix's own work into music representation
and visualisation, with Alex's experience with making Tidal. Felix has
since become the primary contributor to Strudel, with Alex continuing
to jump between developing both Strudel and Tidal. Aspects of
Strudel's development have therefore fed back into TidalCycles, and
both systems have maintained a shared conceptual underpinning. We plan
to continue working towards feature parity between these systems,
although within the syntactical trade-offs and library ecosystems of
JavaScript and Haskell, some divergence is inevitable and healthy.
Over the first year of its life, Strudel is now a fully-fledged live
coding environment, porting Tidal's core represention of patterns,
pattern transformations, and mini-notation for polymetric sequences,
combined with a wealth of features for synthesising and visualising
those patterns.
# From Tidal to Strudel and back
As mentioned above, the original Tidal is implemented as a domain specific language (DSL) embedded in the Haskell pure functional programming language, and takes advantage of Haskell's terse syntax and advanced, 'strong' type system. JavaScript on the other hand, is a multi-paradigm programming language, with a dynamic type system. Because Tidal leans heavily on many of Haskell's more unique features, it was not always clear that it could meaningfully be ported to a multi-paradigm scripting language. However, this possibility was already demonstrated with an earlier port to Python [TidalVortex; @mcleanTidalVortexZero2022], and we have now successfully implemented Tidal's pure functional representation of patterns in Strudel, including partial application, currying, and the functor, applicative and monadic structures that underlie Tidal's expressive pattern transformations. The result is a terse and highly composable system, where everything is either a pattern, or a function for combining and manipulating patterns, offering a rich creative ground for exploration.
This development process has been far from a one-way port, however. The process of porting Tidal's concepts has also opened up new possibilities, some just from revisiting every design decision, and some from the particular affordances and constraints offered by JavaScript. This has lead to new features (and indeed bugfixes) that have found their way back to Tidal where appropriate, and ongoing work that we will return to in the conclusion of this paper.
# Representing Patterns
Patterns are the essence of Tidal. Its patterns are abstract entities that represent flows of time as functions, adapting a technique called pure functional reactive programming. Taking a time span as its input, a Pattern can output a set of events that happen within that time span. It depends on the structure of the Pattern how the events are located in time.
From now on, this process of generating events from a time span will be called **querying**.
Example:
```js
const pattern = sequence(c3, [e3, g3])
const events = pattern.queryArc(0, 1)
console.log(events.map(e => e.show()))
```
In this example, we create a pattern using the `sequence` function and **query** it for the time span from `0` to `1`.
Those numbers represent units of time called **cycles**. The length of one cycle depends on the tempo, which defaults to one cycle per second.
The resulting events are:
```js
["[ 0/1 -> 1/2 | c3 ]",
"[ 1/2 -> 3/4 | e3 ]",
"[ 3/4 -> 1/1 | g3 ]"
]
```
Each event has a value, a begin time and an end time, where time is represented as a fraction. In the above case, the events are placed in sequential order, where c3 takes the first half, and e3 and g3 together take the second half. This temporal placement is the result of the `sequence` function, which divides its arguments equally over one cycle. If an argument is an array, the same rule applies to that part of the cycle. In the example, e3 and g3 are divided equally over the second half of the whole cycle.
Note that the query function is not just a way to access a pattern, but true to the principles of functional programming, is the pattern itself. This means that in theory there is no way to change a pattern, it is opaque as a pure function. In practice though, Strudel and Tidal are all about transforming patterns, so how is this done? The answer is, by replacing the pattern with a new one, that calls the old one. This new one is only able to manipulate the query before passing it to the old pattern, and manipulate the results from it before returning them to caller. But, this is enough to support all the temporal and structural manipulations provided by Strudel (and Tidal's) extensive library of functions.
The above examples do not represent how Strudel is used in practice. In the live coding editor, the user only has to type in the pattern itself, the querying will be handled by the scheduler. The scheduler will repeatedly query the pattern for events, which are then scheduled as sound synthesis or other event triggers.
Also, the above event data structure has been simplified for readability.
![Screenshot of the Strudel 'REPL' live coding editor, including piano-roll visualisation.](images/strudel-screenshot2.png){ width=60% }
# Making Patterns
In practice, the end-user live coder will not deal with constructing patterns directly, but will rather build patterns using Strudel's extensive combinator library to create, combine and transform patterns.
The live coder will rarely use the `sequence` function as seen above, as sequencing is implicit in many functions. For example in the following, the `note` function constructs a pattern of notes, sequencing its arguments in the same manner as the previous example.
```js
note(c3, [e3, g3])
```
Perhaps more often, they will use the mini-notation for even terser notation of rhythmic sequences: ^[This last example is also valid Tidal code, albeit the parenthesis is not required in its Haskell syntax in this case. Tidal does not support passing sequences as lists directly to the `note` function, however.].
```js
note("c3 [e3 g3]")
```
Such sequences are often treated only as a starting point for manipulation, where they then undergo pattern transformations such as repetition, symmetry, interference/combination or randomisation, potentially at multiple timescales. Because Strudel patterns are represented as pure functions of time rather than as data structures, very long and complex generative results can be represented and manipulated without having to store the resulting sequences in memory.
# Pattern Example
The following example showcases how patterns can be utilized to create musical complexity from simple parts, using repetition and interference:
```js
"<0 2 [4 6](3,4,1) 3>"
.off(1/4, add(2))
.off(1/2, add(6))
.scale('D minor')
.legato(.25)
.note().s("sawtooth square")
.delay(.8).delaytime(.125)
```
The pattern starts with a rhythm of numbers in mini-notation, which are later interpreted inside the scale of D minor.
The first line could also be expressed without mini-notation:
```js
cat(0, 2, [4, 6].euclid(3, 4, 1), 3)
```
These numbers then undergo various pattern transformations. Here is a short description of all the functions used:
- `cat`: play elements sequentially, where each lasts one cycle
- `brackets`: elements inside brackets are divided equally over the time of their parent
- `.euclid(p, s, o)`: place p pulses evenly over s steps, with offset o [@toussaintEuclideanAlgorithmGenerates2005]
- `.off(n, f)`: layers a pattern on top of itself, with the new layer offset by n cycles, and with function f applied
- `.legato(n)`: multiply the duration of all events in a pattern by a factor of n
- `.echo(t, n, v)`: copy each event t times, with n cycles in between each copy, decreasing velocity by v
- `.note()`: interpretes values as notes
- `.s(name)`: play back each event with the given sound
- `.delay(wet)`: add delay
- `.delaytime(t)`: set delay time
Much of the above will be familiar to Tidal users.
<!-- This example shows some of Strudel's unique support for chords and transposition familiar to students of Western music theory. This differs a little from Tidal's approach and thanks to the integration of the javascript library XXX (*TODO* ? or is this all your work Felix?), Strudel's support for tonal transformations such as voice leading is perhaps respects more advanced than Tidal. -->
# Ways to make Sound (and other events)
To generate sound, Strudel supports bindings for different outputs:
- Tone.js (deprecated)
- Web Audio API
- WebDirt, a js recreation of Tidal's *Dirt* sample engine (deprecated)
- OSC via osc-js, compatible with superdirt
- Csound via the Csound WebAssembly build
- MIDI via WebMIDI
- Serial via WebSerial
At first, we used Tone.js as sound output, but it proved to be limited for the use case of Strudel, where each individual event could potentially have a completely different audio graph.
While the Web Audio API takes a *fire-and-forget* approach, creating a lot of Tone.js instruments and effects causes performance issues quickly. For that reason, we chose to search for alternatives.
Strudel's new default output uses the Web Audio API to create a new audio graph for each event. It currently supports basic oscillators, sample playback, various effects and an experimental support for soundfonts.
WebDirt [@ogbornDktr0WebDirt2022] was created as part of the Estuary Live Coding System [@ogbornEstuaryBrowserbasedCollaborative2017], and proved to be a solid choice for handling samples in Strudel as well. We are however focused on working more directly with the Web Audio API to be able to integrate new features more tightly.
Using the OSC protocol via Strudel's provided Node.js-based OSC proxy server, it is possible to send network messages to trigger events. This is mainly used to render sound using SuperDirt [@SuperDirt2022], which is the well-developed Supercollider-based synthesis framework that Tidal live coders generally use as standard.
Recently, the experimental integration of Csound proved to bring a new dimension of sound design capabilities to Strudel. Thanks to the WebAssembly distribution of this classic system [@CsoundWebAssembly], Csound 'orchestra' synthesisers can be embedded in and then patterned with Strudel code.
MIDI output can also be used to send MIDI messages to either external instruments or to other programs on the same device. Unlike OSC, Strudel is able to send MIDI directly without requiring additional proxy software, but only from web browsers that support it (at the time of writing, this means Chromium-based browsers).
Finally, Strudel supports Serial output, for example to trigger events
via microcontrollers. This has already been explored for robot
choreography by Kate Sicchio and Alex McLean, via a performance
presented at the International Conference on Live Interfaces 2022.
# The Strudel REPL
While Strudel can be used as a library in any JavaScript codebase, its main, reference user interface is the Strudel REPL^[REPL stands for read, evaluate, print/play, loop. It is friendly jargon for an interactive programming interface from computing heritage, usually for a commandline interface but also applied to live coding editors.], which is a browser-based live coding environment. This live code editor is dedicated to manipulating Strudel patterns while they play. The REPL features built-in visual feedback, highlighting which elements in the patterned (mini-notation) sequences are influencing the event that is currently being played. This feedback is designed to support both learning and live use of Strudel.
Besides a UI for playback control and meta information, the main part of the REPL interface is the code editor powered by CodeMirror. In it, the user can edit and evaluate pattern code live, using one of the available synthesis outputs to create music and/or sound art. The control flow of the REPL follows 3 basic steps:
1. The user writes and updates code. Each update transpiles and evaluates it to create a `Pattern` instance
2. While the REPL is running, the `Scheduler` queries the active `Pattern` by a regular interval, generating `Events` (also known as `Haps` in Strudel) for the next time span.
3. For each scheduling tick, all generated `Events` are triggered by calling their `onTrigger` method, which is set by the output.
![REPL control flow](images/strudelflow.png){ width=43% }
## User Code
To create a `Pattern` from the user code, two steps are needed:
1. Transpile the JS input code to make it functional
2. Evaluate the transpiled code
### Transpilation & Evaluation
In the JavaScript world, using transpilation is a common practise to be able to use language features that are not supported by the base language. Tools like `babel` will transpile code that contains unsupported language features into a version of the code without those features.
In the same tradition, Strudel can add a transpilation step to simplify the user code in the context of live coding. For example, the Strudel REPL lets the user create mini-notation patterns using just double quoted strings, while single quoted strings remain what they are:
```js
"c3 [e3 g3]*2"
```
is transpiled to:
```js
mini("c3 [e3 g3]*2").withMiniLocation([1,0,0],[1,14,14])
```
Here, the string is wrapped in `mini`, which will create a pattern from a mini-notation string. Additionally, the `withMiniLocation` method passes the original source code location of the string to the pattern, which enables highlighting active events.
Other convenient features like pseudo variables, operator overloading and top level await are possible with transpilation.
After the transpilation, the code is ready to be evaluated into a `Pattern`.
Behind the scenes, the user code string is parsed with `acorn`, turning it into an Abstract Syntax Tree (AST). The AST allows changing the structure of the code before generating the transpiled version using `escodegen`.
### Mini-notation
While the transpilation allows JavaScript to express Patterns in a less verbose way, it is still preferable to use the mini-notation as a more compact way to express rhythm. Strudel aims to provide the same mini-notation features and syntax as used in Tidal.
The mini-notation parser is implemented using `peggy`, which allows generating performant parsers for Domain Specific Languages (DSLs) using a concise grammar notation. The generated parser turns the mini-notation string into an AST which is used to call the respective Strudel functions with the given structure. For example, `"c3 [e3 g3]*2"` will result in the following calls:
```js
seq(
reify('c3').withLocation([1,1,1], [1,4,4]),
seq(
reify('e3').withLocation([1,5,5], [1,8,8]),
reify('g3').withLocation([1,8,8], [1,10,10]),
).fast(2)
)
```
### Highlighting Locations
As seen in the examples above, both the JS and the mini-notation parser add source code locations using `withMiniLocation` and `withLocation` methods. While the JS parser adds locations relative to the user code as a whole, the mini-notation adds locations relative to the position of the mini-notation string. The absolute location of elements within mini-notation can be calculated by simply adding both locations together. This absolute location can be used to highlight active events in real time.
## Scheduling Events
After an instance of `Pattern` is obtained from the user code,
it is used by the scheduler to get queried for events. Once started, the scheduler runs at a fixed interval to query the active pattern for events within the current interval's time span. A simplified implementation looks like this:
```js
let pattern = seq('c3', ['e3', 'g3']); // pattern from user
let interval = 0.5; // query interval in seconds
let time = 0; // beginning of current time span
let minLatency = .1; // min time before a hap should trigger
setInterval(() => {
const haps = pattern.queryArc(time, time + interval);
time += interval; // increment time
haps.forEach((hap) => {
const deadline = hap.whole.begin - time + minLatency;
onTrigger(hap, deadline, duration);
});
}, interval * 1000); // query each "interval" seconds
```
Note that the above code is simplified for illustrative purposes. The actual implementation has to work around imprecise callbacks of `setInterval`. More about the implementation details can be read in [this blog post](https://loophole-letters.vercel.app/web-audio-scheduling).
The fact that `Pattern.queryArc` is a pure function that maps a time span to a set of events allows us to choose any interval we like without changing the resulting output. It also means that when the pattern is changed from outside, the next scheduling callback will work with the new pattern, keeping its clock running.
The latency between the time the pattern is evaluated and the change is heard is between `minLatency` and `interval + minLatency`, in our example between 100ms and 600ms. In Strudel, the current query interval is 50ms with a minLatency of 100ms, meaning the latency is between 50ms and 150ms.
## Output
The last step is to trigger each event in the chosen output.
This is where the given time and value of each event is used to generate audio or any other form of time based output. The default output of the Strudel REPL is the WebAudio output. To understand what an output does, we first have to understand what control parameters are.
### Control Parameters
To be able to manipulate multiple aspects of sound in parallel, so called control parameters are used to shape the value of each event. Example:
```js
note("c3 e3").cutoff(1000).s('sawtooth')
.queryArc(0, 1).map(hap => hap.value)
/* [
{ note: 'c3', cutoff: 1000, s: 'sawtooth' }
{ note: 'e3', cutoff: 1000, s: 'sawtooth' }
] */
```
Here, the control parameter functions `note`, `cutoff` and `s` are used, where each controls a different property in the value object. Each control parameter function accepts a primitive value, a list of values to be sequenced into a `Pattern`, or a `Pattern`. In the example, `note` gets a `Pattern` from a mini-notation expression (double quoted), while `cutoff` and `s` are given a `Number` and a (single quoted) `String` respectively.
Strudel comes with a large default set of control parameter functions that are based on the ones used by Tidal and SuperDirt, focusing on music and audio terminology. It is however possible to create custom control parameters for any purpose:
```js
const { x, y } = createParams('x', 'y')
x(sine.range(0, 200)).y(cosine.range(0,200))
```
This example creates the custom control parameters `x` and `y` which are then used to form a pattern that descibes the coordinates of a circle.
### Outputs
Now that we know how the value of an event is manipulated using control parameters, we can look at how outputs can use that value to generate anything. The scheduler above was calling the `onTrigger` function which is used to implement the output. A very simple version of the web audio output could look like this:
```js
function onTrigger(hap, deadline, duration) {
const { note } = hap.value;
const time = getAudioContext().currentTime + deadline;
const o = getAudioContext().createOscillator();
o.frequency.value = getFreq(note);
o.start(time);
o.stop(time + event.duration);
o.connect(getAudioContext().destination);
}
```
The above example will create an `OscillatorNode` for each event, where the frequency is controlled by the `note` param. In essence, this is how the WebAudio API output of Strudel works, only with many more parameters to control synths, samples and effects.
# Pattern alignment and combination
One core aspect of Strudel, inherited from Tidal, is the flexible way that patterns can be combined, irrespective of their structure. Its declarative approach means a live coder does not have to think about the details of *how* this is done, only *what* is to be done.
As a simple example, consider two number patterns `"0 [1 2] 3"`, and `"10 20"`. The first has three contiguous steps of equal lengths, with the second step broken down into two substeps, giving four events in total. There are a very large number of ways in which the structure of these two patterns could be combined, but the default method in both Strudel and Tidal is to line up the cycles of the two patterns, and then take events from the first pattern and match them with those in the second pattern. Therefore, the following two lines are equivalent:
```js
"0 [1 2] 3".add("10 20")
"10 [11 22] 23"
```
Where the events only partially overlap, they are treated as fragments
of the event in the first pattern. This is a little difficult to
conceptualise, but lets start by comparing the two patterns in the
following example:
```js
"0 1 2".add("10 20")
"10 [11 21] 20"
```
They are similar to the previous example in that the number `1` is split in two, with its two halves added to `10` and `20` respectively. However, the `11` 'remembers' that it is a fragment of that original `1` event, and so is treated as having a duration of a third of a cycle, despite only being active for a sixth of a cycle. Likewise, the `21` is also a fragment of that original `1` event, but a fragment of its second half. Because the start of its event is missing, it wouldn't actually trigger a sound (unless it underwent further pattern transformations/combinations).
In practice, the effect of this default, implicit method for combining two patterns is that the second pattern is added *in* to the first one, and indeed this can be made explicit:
```js
"0 1 2".add.in("10 20")
```
This makes way for other ways to align the pattern, and several are already defined, in particular:
* `in` - as explained above, aligns cycles, and applies values from the pattern on the right *in* to the pattern on the left.
* `out` - as with `in`, but values are applied *out* of the pattern on the left (i.e. *in* to the one on the right).
* `mix` - structures from both patterns are combined, so that the new events are not fragments but are created at intersections of events from both sides.
* `squeeze` - cycles from the pattern on the right are squeezed into events on the left. So that e.g. `"0 1 2".add.squeeze("10 20")` is equivalent to `"[10 20] [11 21] [12 22]"`.
* `squeezeout` - as with `squeeze`, but cycles from the left are squeezed into events on the right. So, `"0 1 2".add.squeezeout("10 20")` is equivalent to `[10 11 12] [20 21 22]`.
* `trig` is similar to `squeezeout` in that cycles from the right are aligned with events on the left. However those cycles are not 'squeezed', rather they are truncated to fit the event. So `"0 1 2 3 4 5 6 7".add.trig("10 [20 30]")` would be equivalent to `10 11 12 13 20 21 30 31`. In effect, events on the right 'trigger' cycles on the left.
* `trigzero` is similar to `trig`, but the pattern is 'triggered' from its very first cycle, rather than from the current cycle. `trig` and `trigzero` therefore only give different results where the leftmost pattern differs from one cycle to the next.
We will save going deeper into the background, design and practicalities of these alignment functions for future publications. However in the next section, we take them as a case study for looking at the different design affordances offered by Haskell to Tidal, and JavaScript to Strudel.
# Comparing Strudel and Haskell in use
Unlike Haskell, JavaScript lacks the ability to define custom infix
operators, or change the meaning of existing ones. So the above
Strudel example of `"0 1 2".add.out("10 20")` is equivalent to the
Tidal expression `"0 1 2" +| "10 20"`, where the vertical bar in the
operator `+|` stands for `out` (where `a |+ b` would be equivalent of
`a.add.in(b)`).
From this we can already see that Tidal tends towards brevity through
mixing infix operators with functions, and Strudel tends towards
spelling out operations which are joined together with the `.`
operator. This then is the design trade-off of Tidal's tersity,
versus Strudel's simplicity.
To demonstrate this, consider the following Tidal pattern:
```haskell
iter 4 $ every 3 (||+ n "10 20") $ (n "0 1 3") # s "triangle" # crush 4
```
This can be directly translated to the Strudel equivalent:
```js
iter(4, every(3, add.squeeze("10 20"), n("0 1 3").s("triangle").crush(4)))
```
Although for a more canonical Strudel expression, we would reorder it
as:
```js
n("0 1 3").every(3, add.squeeze("10 20")).iter(4).s("triangle").crush(4)
```
The Strudel example uses the `.` method call operator for all
operations and combinations, whereas the Tidal example has `#` for the
default method for combining patterns and uses infix operators for
other methods. The relative lack of parenthesis in the Tidal example is partly
due to the way that arguments are applied to Haskell's functions, and
partly due to the use of the `$` operator as an alternative way to
establish precedence and control the order of evaluation.
Considering the above, we hypothesise that the Haskell syntax is a little
cleaner, but that the Strudel syntax is easier to learn. Our informal
observation is that while Haskell's dollar `$` operator is very useful
in making code easier to work with, it is one of the most difficult
aspects of Tidal use for beginners to learn. On the other hand, the
deeper levels of parenthesis in Strudel code can be difficult to keep
track of, especially while coding under pressure of live musical
performance. However this difficulty can largely be mitigated by
reordering expressions, and further mitigated by supporting editor
features.
With Strudel, we have little choice but to embrace the affordances and
constraints offered by JavaScript, and while designing a
domain-specific language based on method calls is a
challenge, through creative adoption of functional programming
techniques like partial application, we are so far very happy with the
results. Tidal's functional reactive approach to pattern-making has in
general translated well to JavaScript, and opportunities and
constraints have overall traded off to create a very approachable and
useable live coding environment.
## The trade-off of flexible typing
We have identified one problem with porting Tidal to JavaScript where we have missed Haskell's strict typing and type inference. In both Tidal and Strudel, time is rational, where any point in time is represented as the ratio of two integers. This allows representation of musical ratios such that are impossible to represent accurately using the more common floating point numbers. However while libraries are available that support rational numbers in JavaScript, the lack of strict typing means that it is easy to implement pattern methods where computationally expensive conversion from floating point to rational numbers are performed late, and therefore often enough to overload the CPUs, due to the large number of iterative calculations required to estimate a ratio for a given floating point number. To mitigate this problem, we might consider moving to TypeScript in the future.
# Future Outlook
The project is still young, with many features on the horizon. As general guiding principles, Strudel aims to be
1. accessible
2. consistent with Tidal's approach to pattern
3. modular and extensible
While Haskell's type system makes it a great language for the ongoing development of Tidal's inner representation of pattern, JavaScript's vibrant ecosystem, flexibility and accessibility makes it a great host for more ad-hoc experiments, including interface design. For the future, it is planned to integrate additional alternative sound engines such as Glicol [@lanChaosprintGlicol2022] and Faust [@FaustProgrammingLanguage2022]. Strudel is already approaching feature parity with Tidal, but there are more Tidal functions to be ported, and work to be done to improve compatibility with Tidal's mini-notation. Tidal version 2.0 is under development, which brings a new representation for sequences to its patterns, which will then be brought to Strudel. Besides sound, other ways to render events are being explored, such as graphical, and choreographic output. We are also looking into alternative ways of editing patterns, including multi-user editing for network music, parsing a novel syntax to escape the constraints of JavaScript, and developing hardware/e-textile interfaces. In summary, there is a lot of fun ahead.
# Links
The Strudel REPL is available at <https://strudel.cc>, including an interactive tutorial.
The repository is at <https://codeberg.org/uzu/strudel>, all the code is open source under the AGPL-3.0 License.
# Acknowledgments
Thanks to the Strudel and wider Tidal, live coding, WebAudio and free/open source software communities for inspiration and support. Alex McLean's work on this project is supported by a UKRI Future Leaders Fellowship [grant number MR/V025260/1].
# References
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

+92
View File
@@ -0,0 +1,92 @@
% Copyright 2014 Michael Sharpe
% Based initially on Karl Berry's inconsolata.sty.
% You may freely use, modify and/or distribute this file.
\def\fileversion{1.05}
\def\filedate{2014/06/22}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{inconsolata}[\filedate\space v\fileversion]
\message{`inconsolata-zi4' v\fileversion, \filedate\space Text macros for Inconsolata (msharpe)}
\RequirePackage{textcomp}
\RequirePackage{keyval}
\newcount\zifour@ocount
\newif\ifzifour@altzero
\newif\ifzifour@noupq
\define@key{zifour}{scaled}[1.0]{\def\zifour@scaled{s*[#1]}}
\DeclareOption*{%
\begingroup
\edef\x{\endgroup
\noexpand\setkeys{zifour}{\CurrentOption}}%
\x}
% by default, change \tt to mean zi4.
\newcommand*{\zifour@default}{%
\renewcommand*{\ttdefault}{zi4}%
}
% option [nott] to avoid changing tt.
\DeclareOption{nott}{%
\renewcommand*{\zifour@default}{}%
}
% option [noupquote] to prevent loading upquote.
\DeclareOption{noupquote}{%
\zifour@noupqtrue}%
% option var0---use unslashed zero (slashed is default)
\DeclareOption{var0}{%
\zifour@altzerotrue\advance\zifour@ocount \tw@ %
}
\DeclareOption{varl}{%
\advance\zifour@ocount \@ne %
}
\DeclareOption{varqu}{%
\advance\zifour@ocount 4\relax %
}
\ProcessOptions*
\zifour@default
\edef\zifour@opt{\the\zifour@ocount}
\ifzifour@altzero
\advance\zifour@ocount -\tw@
\else
\advance\zifour@ocount \tw@
\fi
\edef\zifour@altopt{\the\zifour@ocount}
% define an \altzero macro which flips to slashed, unslashed
\def\altzero{{\fontfamily{zi4}%
\fontshape{scit}%
\selectfont 0}}
\def\zifour@T@ne@nc{T1}
\def\zifour@OT@ne@nc{OT1}
\def\zifour@LY@ne@nc{LY1}
\def\zifour@QX@nc{QX}
\def\zifour@TQS{%
\UndeclareTextCommand{\textquotesingle}{\encodingdefault}
\DeclareTextSymbol{\textquotesingle}{TS1}{39}}
\ifzifour@noupq% do nothing
% Try to correct for wrong slots for QX
\ifx\encodingdefault\zifour@QX@nc
\zifour@TQS
\else
\ifx\encodingdefault\zifour@LY@ne@nc
\zifour@TQS
\fi
\fi
\else
\AtBeginDocument{%
\ifx\encodingdefault\zifour@T@ne@nc % do nothing
\else
\ifx\encodingdefault\zifour@OT@ne@nc % do nothing
\else
\zifour@TQS
\fi
\fi
\usepackage{upquote}}
\fi
\endinput
@@ -6,12 +6,12 @@ fi
# --template=templates/template.latex \
pandoc -s paper.md \
pandoc -s demo.md \
--from markdown+auto_identifiers --pdf-engine=xelatex --template tex/latex-template.tex -V colorlinks --number-sections \
--filter=pandoc-url2cite --citeproc --pdf-engine=xelatex \
--dpi=300 -o paper.pdf
--citeproc --pdf-engine=xelatex \
--dpi=300 -o demo.pdf
pandoc -s paper.md --filter bin/code-filter.py --filter=pandoc-url2cite \
pandoc -s demo.md --filter bin/code-filter.py \
--citeproc \
-t markdown-citations -t markdown-fenced_divs \
-o paper-preprocessed.md
-o demo-preprocessed.md
+63
View File
@@ -0,0 +1,63 @@
$if(false)$ This is a pandoc template and should not be edited. $endif$
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" $if(lang)$ lang="$lang$" xml:lang="$lang$" $endif$>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="generator" content="pandoc" />
$for(author-meta)$
<meta name="author" content="$author-meta$" />
$endfor$ $if(date-meta)$
<meta name="date" content="$date-meta$" />
$endif$
<title>$if(title-prefix)$$title-prefix$ - $endif$$pagetitle$</title>
<style type="text/css">
code {
white-space: pre;
}
</style>
$if(quotes)$
<style type="text/css">
q {
quotes: '“' '”' '' '';
}
</style>
$endif$ $if(highlighting-css)$
<style type="text/css">
$highlighting-css$
</style>
$endif$
<link rel="stylesheet" href="css/iclc.css" $if(html5)$$else$type="text/css" $endif$ />
$for(css)$
<link rel="stylesheet" href="$css$" $if(html5)$$else$type="text/css" $endif$ />
$endfor$ $if(math)$ $math$ $endif$ $for(header-includes)$ $header-includes$ $endfor$
</head>
<body>
$for(include-before)$ $include-before$ $endfor$ $if(title)$
<div id="$idprefix$header">
<h1 class="title">$title$</h1>
$if(subtitle)$
<h1 class="subtitle">$subtitle$</h1>
$endif$
<ul id="authorlist">
$for(author)$
<li>$author$</li>
$endfor$
</ul>
$if(date)$
<h3 class="date">$date$</h3>
$endif$
</div>
$endif$ $if(toc)$
<div id="$idprefix$TOC">$toc$</div>
$endif$
<h2 class="abstract">Abstract</h2>
<div id="abstract">
$if(abstract)$ $abstract$ $else$ Please provide an abstract in the metadata block at the top of your markdown
document. Refer to template.txt for details. $endif$
</div>
$body$ $for(include-after)$ $include-after$ $endfor$
</body>
</html>
+224
View File
@@ -0,0 +1,224 @@
$if(false)$
This is a pandoc template and should not be edited.
$endif$
\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$lang$,$endif$$if(papersize)$$papersize$,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$}
\usepackage{pandoc/iclc}
$if(linestretch)$
\usepackage{setspace}
\setstretch{$linestretch$}
$endif$
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
$if(fontfamily)$
\usepackage{$fontfamily$}
\usepackage{inconsolata}
$else$
\usepackage{lmodern}
$endif$
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
$if(euro)$
\usepackage{eurosym}
$endif$
\else % if luatex or xelatex
\ifxetex
\usepackage{mathspec}
\usepackage{xltxtra,xunicode}
\else
\usepackage{fontspec}
\fi
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\newcommand{\euro}{€}
$if(mainfont)$
\setmainfont{$mainfont$}
$endif$
$if(sansfont)$
\setsansfont{$sansfont$}
$endif$
$if(monofont)$
\setmonofont[Mapping=tex-ansi]{$monofont$}
$endif$
$if(mathfont)$
\setmathfont(Digits,Latin,Greek){$mathfont$}
$endif$
\fi
% use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
% use microtype if available
\IfFileExists{microtype.sty}{%
\usepackage{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$
$if(lang)$
\ifxetex
\usepackage{polyglossia}
\setmainlanguage{$mainlang$}
\else
\usepackage[shorthands=off,$lang$]{babel}
\fi
$endif$
$if(natbib)$
\usepackage{natbib}
\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
$endif$
$if(biblatex)$
\usepackage{biblatex}
$if(biblio-files)$
\bibliography{$biblio-files$}
$endif$
$endif$
$if(listings)$
\usepackage{listings}
$endif$
$if(lhs)$
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
$endif$
$if(highlighting-macros)$
$highlighting-macros$
$endif$
$if(verbatim-in-note)$
\usepackage{fancyvrb}
\VerbatimFootnotes
$endif$
$if(tables)$
\usepackage{longtable,booktabs}
$endif$
$if(csl-refs)$
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newenvironment{CSLReferences}%
{$if(csl-hanging-indent)$\setlength{\parindent}{0pt}%
\everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces$endif$}%
{\par}
$endif$
$if(graphics)$
\usepackage{graphicx}
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
$endif$
\ifxetex
\usepackage[setpagesize=false, % page size defined by xetex
unicode=false, % unicode breaks when used with xetex
xetex]{hyperref}
\else
\usepackage[unicode=true]{hyperref}
\fi
\hypersetup{breaklinks=true,
bookmarks=true,
pdfauthor={$author-meta$},
pdftitle={$title-meta$},
colorlinks=true,
citecolor=$if(citecolor)$$citecolor$$else$blue$endif$,
urlcolor=$if(urlcolor)$$urlcolor$$else$blue$endif$,
linkcolor=$if(linkcolor)$$linkcolor$$else$magenta$endif$,
pdfborder={0 0 0}}
\urlstyle{same} % don't use monospace font for urls
$if(links-as-notes)$
% Make links footnotes instead of hotlinks:
\renewcommand{\href}[2]{#2\footnote{\url{#1}}}
$endif$
$if(strikeout)$
\usepackage[normalem]{ulem}
% avoid problems with \sout in headers with hyperref:
\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
$endif$
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%/
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
$if(numbersections)$
\setcounter{secnumdepth}{5}
$else$
\setcounter{secnumdepth}{0}
$endif$
$if(verbatim-in-note)$
\VerbatimFootnotes % allows verbatim text in footnotes
$endif$
$if(title)$
\title{$title$$if(subtitle)$\\\vspace{0.5em}{\large $subtitle$}$endif$}
$endif$
$if(author)$
\author{
$for(author)$
$author.name$ \\
$author.affiliation$\\
\href{mailto:$author.email$}{$author.email$}
$sep$ \and
$endfor$
}
$endif$
\date{$date$}
$for(header-includes)$
$header-includes$
$endfor$
\begin{document}
$if(title)$
\maketitle
$endif$
\begin{abstract}
$if(abstract)$
$abstract$
$else$
Please provide an abstract in the metadata block at the top of the
markdown document. Refer to template.txt for details. $endif$
\end{abstract}
$for(include-before)$
$include-before$
$endfor$
$if(toc)$
{
\hypersetup{linkcolor=black}
\setcounter{tocdepth}{$toc-depth$}
\tableofcontents
}
$endif$
$if(lot)$
\listoftables
$endif$
$if(lof)$
\listoffigures
$endif$
$body$
$if(natbib)$
$if(biblio-files)$
$if(biblio-title)$
$if(book-class)$
\renewcommand\bibname{$biblio-title$}
$else$
\renewcommand\refname{$biblio-title$}
$endif$
$endif$
\bibliography{$biblio-files$}
$endif$
$endif$
$if(biblatex)$
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
$endif$
$for(include-after)$
$include-after$
$endfor$
\end{document}
+54
View File
@@ -0,0 +1,54 @@
\def\Hline{\noalign{\hrule height 0.4mm}}
%\newcommand{\bm}[1]{\mbox{\boldmath{$#1$}}}
\newcommand{\figbox}[1]{\fbox{\parbox{\columnwidth}{\centering{ #1 }}}}
\newcommand{\range}[2]{{#1,\cdots,#2\;}}
\newcommand{\secref}[1]{\mbox{Section~\ref{#1}}}
\newcommand{\tabref}[1]{\mbox{Table~\ref{#1}}}
\newcommand{\figref}[1]{\mbox{Figure~\ref{#1}}}
\newcommand{\eqnref}[1]{\mbox{Eq.~(\ref{#1})}}
\renewcommand{\sfdefault}{phv}
\renewcommand{\rmdefault}{ptm}
\renewcommand{\ttdefault}{pcr}
\setlength{\paperheight}{297mm}
\setlength{\paperwidth}{210mm}
\setlength{\textheight}{252mm}
\setlength{\textwidth}{172mm}
\setlength{\columnsep}{8mm}
\setlength{\headheight}{0mm}
\setlength{\voffset}{-12mm}
\setlength{\hoffset}{0mm}
\setlength{\marginparwidth}{0mm}
\setlength{\parindent}{2mm} %1pc
\setlength{\topmargin}{-5mm}
\setlength{\oddsidemargin}{-6mm}
\setlength{\evensidemargin}{-6mm}
\setlength\normallineskip{1\p@}
\setlength\parskip{0\p@ \@plus \p@}
%\def\baselinestretch{0.98}
\def\normalsize{\@setsize\normalsize{12pt}\xpt\@xpt}
\def\small{\@setsize\small{10pt}\ixpt\@ixpt}
\def\footnotesize{\@setsize\footnotesize{8pt}\viiipt\@viiipt}
\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
\def\Large{\@setsize\Large{16pt}\xivpt\@xivpt}
\def\LARGE{\@setsize\LARGE{20pt}\xviipt\@xviipt}
\def\huge{\@setsize\huge{23pt}\xxpt\@xxpt}
\def\Huge{\@setsize\Huge{28pt}\xxvpt\@xxvpt}
\pagestyle{empty}
\def\abstract{
\begin{center}{
\bf ABSTRACT
}
\end{center}
}
\def\endabstract{\par}
\flushbottom
+349
View File
@@ -0,0 +1,349 @@
---
date: 2022-03-22
references:
- abstract: In this artist statement, I will discuss the tension between
source code as an interactive system for performers and source code
as information and entertainment for audiences in live-coding
performances. I then describe augmentations I developed for the
presentation of source code in the live-coding environment Gibber,
including animations and annotations that visually reveal aspects of
system state during performances. I briefly describe audience
responses to these techniques and, more importantly, how they are
critical to my own artistic practice.
accessed:
date-parts:
- - 2022
- 3
- 24
author:
- family: Roberts
given: Charles
container-title: International Journal of Performance Arts and Digital
Media
DOI: 10.1080/14794713.2016.1227602
id: "https://www.tandfonline.com/doi/abs/10.1080/14794713.2016.1227602?journalCode_x61_rpdm20"
ISSN: 1479-4713
issue: 2
issued:
date-parts:
- - 2016
- 7
keyword: Live coding, psychology of programming, notation, audiences,
algorithms
page: 201-206
title: Code as information and code as spectacle
type: article-journal
URL: "https://doi.org/10.1080/14794713.2016.1227602"
volume: 12
- abstract: The TidalCycles (or Tidal for short) live coding environment
has been developed since around 2009, via several rewrites of its
core representation. Rather than having fixed goals, this
development has been guided by use, motivated by the open aim to
make music. This development process can be seen as a long-form
improvisation, with insights into the nature of Tidal gained through
the process of writing it, feeding back to guide the next steps of
development. This brings the worrying thought that key insights will
have been missed along this development journey, that would
otherwise have lead to very different software. Indeed participants
at beginners' workshops that I have lead or co-lead have often asked
questions without good answers, because they made deficiencies or
missing features in the software clear. It is well known that a
beginner's mind is able to see much that an expert has become blind
to. Running workshops are an excellent way to find new development
ideas, but the present paper explores a different technique -- the
rewrite.
accessed:
date-parts:
- - 2022
- 3
- 24
id: "https://zenodo.org/record/5788732"
issued:
date-parts:
- - 2021
- 12
keyword: live coding, algorithmic pattern, tidalcycles, haskell,
python
publisher-place: Valdivia, Chile
title: Alternate Timelines for TidalCycles
URL: "https://zenodo.org/record/5788732"
- abstract: A JavaScript dialect of its mini-notation for pattern is
created, enabling easy integration with creative coding tools and an
accompanying technique for visually annotating the playback of
TidalCycles patterns over time. TidalCycles has rapidly become the
most popular system for many styles of live coding performance, in
particular Algoraves. We created a JavaScript dialect of its
mini-notation for pattern, enabling easy integration with creative
coding tools. Our research pairs a formalism describing the
mini-notation with a small JavaScript library for generating events
over time; this library is suitable for generating events inside of
an AudioWorkletProcessor thread and for assisting with scheduling in
JavaScript environments more generally. We describe integrating the
library into the two live coding systems, Gibber and Hydra, and
discuss an accompanying technique for visually annotating the
playback of TidalCycles patterns over time.
accessed:
date-parts:
- - 2022
- 4
- 12
author:
- family: Roberts
given: Charles
container-title: www.semanticscholar.org
id: "https://www.semanticscholar.org/paper/Bringing-the-TidalCycles-Mini-Notation-to-the-Roberts/74965efadd572ae3f40d14c633a5c8581c1b9f42"
issued:
date-parts:
- - 2019
title: Bringing the TidalCycles Mini-Notation to the Browser
URL: "https://www.semanticscholar.org/paper/Bringing-the-TidalCycles-Mini-Notation-to-the-Roberts/74965efadd572ae3f40d14c633a5c8581c1b9f42"
title: Strudel
url2cite: all-links
---
# Introduction
This paper introduces Strudel, an alternative implementation of the
TidalCycles live coding system, using the JavaScript programming
language.
# Background
General motivations / related work. Reference vortex paper and summarise
its background.
The reimplementation of TidalCycles in Python (cite TidalVortex) showed
that it is possible to translate pure functional reactive programming
ideas to a multi paradigm language. It proved to be a stepping stone to
move to other multi-paradigm languages, like JavaScript. A significant
part of of the Python codebase could be ported to JavaScript by
syntactical adjustments.
# Introducing TidalStrudel
(do we want to call it TidalStrudel once, and Strudel for short from
then on as with vortex? Or just stick with Strudel? Should we start
calling TidalCycles just Cycles?? froos: I think TidalStrudel sounds a
bit weird, but we can stick to the TidalX naming scheme if that's
important. For me, StrudelCycles sounds better, because it has 3/4
phonems in common with TidalCycles)
- Motivating musical example
# Tidal patterns
(should we explain shortly what tidal patterns do in general here?)
The essence of TidalCycles are Patterns. Patterns are abstract entities
that represent flows of time. Taking a time span as its input, a Pattern
can output a set of events that happen within that time span. It depends
on the structure of the Pattern where the events are placed. From now
on, this process of generating events from a time span will be called
**querying**. Example:
<MiniRepl tune={`const pattern = sequence(c3, [e3, g3]);
const events = pattern.query(0, 1);
console.log(events.map(e => e.show()))`} />
In this example, we create a pattern using the `sequence` function and
**query** it for the timespan from `0` to `1`. Those numbers represent
units of time called **cycles**. The length of one cycle defaults to one
second, but could be any number of seconds. The console output looks
like this:
<MiniRepl tune={`(0 -> 1/2 c3)
(1/2 -> 3/4 e3)
(3/2 -> 1 g3)`} />
In this output, each line represents one event. The two fractions
represent the begin and end time of the event, followed by its value. In
this case, the events are placed in sequential order, where c3 takes the
first half, and e3 and g3 together take the second half. This temporal
placement is the result of the `sequence` function, which divides its
arguments equally over one cycle. If an argument is an array, the same
rule applies to that part of the sequence. In our example e3 and g3 are
divided equally over the second half of the whole sequence.
# Mini Notation
In this example, the Pattern is created using the `mini` function, which
parses Tidal's Mini Notation. The Mini Notation is a Domain Specific
Language (DSL) that allows expressing rhythms in a short mannger.
- Some comparisons of -Strudel with -Vortex and -Cycles code?
(the following examples are from vortex paper, with added js versions)
## 1
<MiniRepl tune={`sound "bd ~ [sd cp]"`} />
<MiniRepl tune={`sound("bd", silence, ["sd", "cp"])`} />
<MiniRepl tune={`sound("bd ~ [sd cp]")`} />
without mini notation:
<MiniRepl tune={`sound $ cat
[pure "bd", silence,
cat(pure "sd", pure "cp")]`} />
<MiniRepl tune={`sound('bd', silence, cat('sd', 'cp'))`} />
## 2
<MiniRepl tune={`sound "bd ~ <sd cp>"`} />
<MiniRepl tune={`sound("bd", silence, slowcat("sd", "cp"))`} />
<MiniRepl tune={`sound("bd ~ <sd cp>")
// sound('bd', silence, slowcat('sd', 'cp'))`} />
## 3
<MiniRepl tune={`sound "bd {cp sd, lt mt ht}"`} />
<MiniRepl tune={`sound("bd", pm(["cp", "sd"], ["lt", "mt", "ht"]))`} />
<MiniRepl tune={`?`} />
## 4
<MiniRepl tune={`sound "bd {cp sd, [lt mt,bd bd bd] ht}"`} />
<MiniRepl tune={` sound("bd", pm(["cp", "sd"],
[pr(["lt", "mt"],
["bd", "bd", "bd"]
),
"ht" ]))`} />
<MiniRepl tune={`??`} />
## 5
<MiniRepl tune={`sound "bd sd cp" # speed "1 2"`} />
<MiniRepl tune={`sound("bd", "sd", "cp") >> speed (1, 2)`} />
<MiniRepl tune={`sound("bd sd cp").speed("1 2")`} />
(operator overloading like in vortex?)
## 6
<MiniRepl tune={`rev $ sound "bd sd"`} />
<MiniRepl tune={`rev(sound("bd", "sd"))
sound("bd", "sd").rev()`} />
<MiniRepl tune={`rev(sound("bd sd"))
sound("bd sd").rev()`} />
## 7
<MiniRepl tune={`jux rev $ every 3 (fast 2) $ sound "bd sd"`} />
<MiniRepl tune={`jux(rev, every(3, fast(2), sound("bd", "sd")))
sound("bd","sd").every(3, fast(2)).jux(rev)`} />
<MiniRepl tune={`jux(rev, every(3, fast(2), sound("bd sd")))
sound("bd sd").every(3, fast(2)).jux(rev)`} />
(partial application)
## 8
<MiniRepl tune={`n ("1 2 3" + "4 5") # sound "drum"`} />
<MiniRepl tune={`n (sequence(1,2,3) + sequence(4,5)) >> sound "drum"`} />
<MiniRepl tune={`n("1 2 3".add("4 5")).sound("drum")
n("5 [6 7] 8").sound("drum")`} />
(operator overloading?)
## 9
<MiniRepl tune={`speed("1 2 3" + sine)`} />
<MiniRepl tune={`speed(sequence(1,2,3) + sine)`} />
<MiniRepl tune={`speed("1 2 3".add(sine))
"c3*4".add(sine.mul(12).slow(8)).pianoroll()`} />
## 10
- Mininotation
# Strudel/web specifics
Some discussion about whether strudel is really a port of TidalCycles,
or whether javascript affordances mean it's going its own way..
- Recursive Scheduling: "calling itself in the future"
- Optimizing Syntax for minimal keystrokes / readability: "AST
Hacking" via shift-ast pseudo variables
- Handling mininotation - double quoted and template strings to
mini calls
- Operator overloading
- Fixing inconsistencies (e.g. with stut/echo) adding source locations
- Dynamic HUD: Highlighting + drawing
- Translation of Tidal concepts to Javascript - different constraints,
affordances, aesthetics
- Dynamic Harmonic Programming?
- emulating musician thought patterns
- microtonal features? webserial
## User Code Transpilation
(compare user input vs shifted output)
### double quotes -\> mini calls
<MiniRepl tune={`"c3 e3" // or `c3 e3``} />
<MiniRepl tune={`mini("c3 e3")`} />
### operator overloading
<MiniRepl tune={`cat(c3, e3) * 4`} />
<MiniRepl tune={`reify(cat("c3","e3")).fast(4)`} />
(reify is redundant here, the shapeshifter could have an additional
check...)
(TBD: ability to multiply mini notation strings)
### pseudo variables
<MiniRepl tune={`cat(c3, r, e3)`} />
<MiniRepl tune={`cat("c3",silence,"e3")`} />
### locations
<MiniRepl tune={`cat(c3, e3)`} />
<MiniRepl tune={`cat(
reify("c3").withLocation([1,4,4],[1,6,6]),
reify("e3").withLocation([1,8,8],[1,10,10])
)`} />
<MiniRepl tune={`mini("c3 e3")`} />
with locations:
<MiniRepl tune={`// "c3 e3"
mini("c3 e3").withMiniLocation([1,0,0],[1,7,7])`} />
(talk about mini adding locations of mini notation parser)
### top level await
<MiniRepl tune={`const p = (await piano()).toDestination()
cat(c3).tone(p)`} />
<MiniRepl tune={`(async()=>{
const p = (await piano()).toDestination();
return cat("c3").tone(p);
})()`} />
# Musical examples
...
# Ongoing work/future aims
- WASM Sound Backend
- OSC -\> Supercollider
- mininotation as the 'regex' of metre
That
@https://www.tandfonline.com/doi/abs/10.1080/14794713.2016.1227602?journalCode_x61_rpdm20
are excellent, I reference their work at least twice per sentence
[@https://www.tandfonline.com/doi/abs/10.1080/14794713.2016.1227602?journalCode_x61_rpdm20,
p. 3]. Another reference [@https://zenodo.org/record/5788732].
<MiniRepl tune={`"1 2 3"`} />
# References
- gibber
- krill
- glicol
+354
View File
@@ -0,0 +1,354 @@
---
title: 'StrudelCycles: live coding algorithmic patterns on the web'
date: '2022-03-22'
url2cite: all-links
---
# Introduction
This paper introduces Strudel, an alternative implementation of the TidalCycles live coding system, using the JavaScript programming language.
# Background
TidalCycles (or *Tidal* for short) has been developed since around 2009, as a system for live coding algorithmic patterns, particularly in music [@tidalcycles]. Tidal is embedded in the pure functional *Haskell* programming language, taking advantage of its terse syntax and advanced type system. Over the past decade, Tidal has undergone a number of re-writes, developing a functional reactive representation of pattern, where patterns may be combined and transformed in a wide variety of ways [@alternate-timelines]. Over this time is has gained diverse ideas from other patterned forms, including from computer music [@spiegel], Indian classical music [@bel], textiles [@fabricating], improvised percussion [@hession], and Ancient Greek lyric [@cyclic-patterns].
Most recently, attention has turned to transferring Tidal's ideas to other, less 'pure' languages; firstly, to the Python programming language as *TidalVortex* [@tidalvortex] (*Vortex* for short), and now to JavaScript as StrudelCycles (*Strudel* for short), the topic of the present paper. For general background on the motivations for porting Tidal to a multi-paradigm programming language, please see the TidalVortex paper [@tidalvortex]. The motivations for porting it to JavaScript are similar, with a particular slanting on accessibility - of course, a web browser based application does not require any installation. As with Vortex though, it is important to point out that this is a creative, free/open source project, and as such, an primary motivation will always be developer's curiosity, and market-driven perspectives on development choices may even be demotivational.
General motivations / related work.
Reference vortex paper and summarise its background.
The reimplementation of TidalCycles in Python (cite TidalVortex) showed that it is possible to translate pure functional reactive programming ideas to a multi paradigm language. It proved to be a stepping stone to move to other multi-paradigm languages, like JavaScript. A significant part of of the Python codebase could be quickly ported to JavaScript by syntactical adjustments.
# Introducing Strudel
* Motivating musical example
# Tidal patterns
(should we explain shortly what tidal patterns do in general here?)
The essence of TidalCycles are Patterns. Patterns are abstract entities that represent flows of time, supporting both continuous changes (like signals) and discrete events (like notes).
Taking a time span as its input, a Pattern can output a set of events that happen within that time span.
It depends on the structure of the Pattern where the events are placed.
From now on, this process of generating events from a time span will be called **querying**.
Example:
```js
const pattern = sequence(c3, [e3, g3]);
const events = pattern.query(0, 1);
console.log(events.map(e => e.show()))
```
In this example, we create a pattern using the `sequence` function and **query** it for the timespan from `0` to `1`.
Those numbers represent units of time called **cycles**. The length of one cycle defaults to one second, but could be any number of seconds.
The console output looks like this:
```js
(0 -> 1/2 c3)
(1/2 -> 3/4 e3)
(3/2 -> 1 g3)
```
In this output, each line represents one event. The two fractions represent the begin and end time of the event, followed by its value.
In this case, the events are placed in sequential order, where c3 takes the first half, and e3 and g3 together take the second half.
This temporal placement is the result of the `sequence` function, which divides its arguments equally over one cycle.
If an argument is an array, the same rule applies to that part of the sequence. In our example e3 and g3 are divided equally over the second half of the whole sequence.
# Mini Notation
In this example, the Pattern is created using the `mini` function, which parses Tidal's Mini Notation.
The Mini Notation is a Domain Specific Language (DSL) that allows expressing rhythms in a short mannger.
* Some comparisons of -Strudel with -Vortex and -Cycles code?
(the following examples are from vortex paper, with added js versions)
## 1
```haskell
sound "bd ~ [sd cp]"
```
```python
sound("bd", silence, ["sd", "cp"])
```
```javascript
sound("bd ~ [sd cp]")
```
without mini notation:
```haskell
sound $ cat
[pure "bd", silence,
cat(pure "sd", pure "cp")]
```
```javascript
sound('bd', silence, cat('sd', 'cp'))
```
## 2
```haskell
sound "bd ~ <sd cp>"
```
```python
sound("bd", silence, slowcat("sd", "cp"))
```
```javascript
sound("bd ~ <sd cp>")
// sound('bd', silence, slowcat('sd', 'cp'))
```
## 3
```haskell
sound "bd {cp sd, lt mt ht}"
```
```python
sound("bd", pm(["cp", "sd"], ["lt", "mt", "ht"]))
```
```js
?
```
## 4
```haskell
sound "bd {cp sd, [lt mt,bd bd bd] ht}"
```
```python
sound("bd", pm(["cp", "sd"],
[pr(["lt", "mt"],
["bd", "bd", "bd"]
),
"ht" ]))
```
```js
??
```
## 5
```haskell
sound "bd sd cp" # speed "1 2"
```
```python
sound("bd", "sd", "cp") >> speed (1, 2)
```
```javascript
sound("bd sd cp").speed("1 2")
```
(operator overloading like in vortex?)
## 6
```haskell
rev $ sound "bd sd"
```
```python
rev(sound("bd", "sd"))
sound("bd", "sd").rev()
```
```javascript
rev(sound("bd sd"))
sound("bd sd").rev()
```
## 7
```haskell
jux rev $ every 3 (fast 2) $ sound "bd sd"
```
```python
jux(rev, every(3, fast(2), sound("bd", "sd")))
sound("bd","sd").every(3, fast(2)).jux(rev)
```
```js
jux(rev, every(3, fast(2), sound("bd sd")))
sound("bd sd").every(3, fast(2)).jux(rev)
```
(partial application)
## 8
```haskell
n ("1 2 3" + "4 5") # sound "drum"
```
```python
n (sequence(1,2,3) + sequence(4,5)) >> sound "drum"
```
```js
n("1 2 3".add("4 5")).sound("drum")
n("5 [6 7] 8").sound("drum")
```
(operator overloading?)
## 9
```haskell
speed("1 2 3" + sine)
```
```python
speed(sequence(1,2,3) + sine)
```
```js
speed("1 2 3".add(sine))
"c3*4".add(sine.mul(12).slow(8)).pianoroll()
```
## 10
* Mininotation
# Strudel/web specifics
Some discussion about whether strudel is really a port of TidalCycles, or whether javascript affordances mean it's going its own way..
* Recursive Scheduling: "calling itself in the future"
* Optimizing Syntax for minimal keystrokes / readability: "AST Hacking" via shift-ast
pseudo variables
* Handling mininotation - double quoted and template strings to mini calls
* Operator overloading
* Fixing inconsistencies (e.g. with stut/echo)
adding source locations
* Dynamic HUD: Highlighting + drawing
* Translation of Tidal concepts to Javascript - different constraints, affordances, aesthetics
* Dynamic Harmonic Programming?
* emulating musician thought patterns
* microtonal features?
webserial
## User Code Transpilation
(compare user input vs shifted output)
### double quotes -> mini calls
```javascript
"c3 e3" // or `c3 e3`
```
```javascript
mini("c3 e3")
```
### operator overloading
```javascript
cat(c3, e3) * 4
```
```javascript
reify(cat("c3","e3")).fast(4)
```
(reify is redundant here, the shapeshifter could have an additional check...)
(TBD: ability to multiply mini notation strings)
### pseudo variables
```javascript
cat(c3, r, e3)
```
```javascript
cat("c3",silence,"e3")
```
### locations
```javascript
cat(c3, e3)
```
```javascript
cat(
reify("c3").withLocation([1,4,4],[1,6,6]),
reify("e3").withLocation([1,8,8],[1,10,10])
)
```
```javascript
mini("c3 e3")
```
with locations:
```javascript
// "c3 e3"
mini("c3 e3").withMiniLocation([1,0,0],[1,7,7])
```
(talk about mini adding locations of mini notation parser)
### top level await
```javascript
const p = (await piano()).toDestination()
cat(c3).tone(p)
```
```javascript
(async()=>{
const p = (await piano()).toDestination();
return cat("c3").tone(p);
})()
```
# Musical examples
...
# Ongoing work/future aims
* WASM Sound Backend
* OSC -> Supercollider
* mininotation as the 'regex' of metre
That @roberts2016 are excellent, I reference their work at least twice per sentence [@roberts2016, p. 3].
```javascript
"1 2 3"
```
# References
[@roberts2016]: https://www.tandfonline.com/doi/abs/10.1080/14794713.2016.1227602?journalCode=rpdm20
[@alternate-timelines]: https://zenodo.org/record/5788732
[@tidal.pegjs]: https://www.semanticscholar.org/paper/Bringing-the-TidalCycles-Mini-Notation-to-the-Roberts/74965efadd572ae3f40d14c633a5c8581c1b9f42
[@tidalvortex]: https://zenodo.org/record/6456380
[@ogborn17]: https://www.semanticscholar.org/paper/Estuary%3A-Browser-based-Collaborative-Projectional-Ogborn-Beverley/c6b5d34575d6230dfd8751ca4af8e5f6e44d916b
[@tidalcycles]: https://dl.acm.org/doi/10.1145/2633638.2633647
[@hession]: https://www.scopus.com/record/display.uri?eid=2-s2.0-84907386880&origin=inward&txGid=03307e26fba02a27bdc68bda462016f6266316467_Extending_Instruments_with_Live_Algorithms_in_a_Percussion_Code_Duo
[@spiegel]: https://www.academia.edu/664807/Manipulations_of_musical_patterns
[@bel]: https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.517.7129
[@algorithmicpattern]: https://zenodo.org/record/4299661
[@fabricating]: https://zenodo.org/record/2155745
[@cyclic-patterns]: https://zenodo.org/record/1548969
- gibber
- krill
- glicol
Binary file not shown.
@@ -1,7 +1,11 @@
\documentclass{tex/sig-alternate}
\usepackage{hyperref}
\usepackage[colorlinks = true,
linkcolor = blue,
urlcolor = blue,
citecolor = blue,
anchorcolor = blue]{hyperref}
\usepackage{fancyvrb}
\usepackage{xcolor}
@@ -79,35 +83,42 @@
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
% Add ',fontsize=\small' for more characters per line
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
\begin{document}
\setcopyright{waclicense}
\conferenceinfo{Web Audio Conference WAC-2022,}{December 6--8, 2022, Cannes, France.}
\conferenceinfo{Web Audio Conference WAC-2022,}{July 6--8, 2022, Cannes, France.}
\CopyrightYear{2022}
\title{Strudel}
\title{Strudel: Algorithmic Patterns for the Web}
\numberofauthors{2}
\author{
\alignauthor
\name{Felix Roos}
\affaddr{Affiliation?}
\email{x@x.com}
\affaddr{Lembach, France}
\email{flix91@gmail.com}
% 2nd. author
\alignauthor
\name{Alex McLean}
\affaddr{Then Try This\\ Sheffield/Penryn}
\affaddr{Then Try This\\ Sheffield/Penryn, UK}
\email{alex@slab.org}
}
\maketitle
\begin{sloppypar}
\begin{abstract}
Abstract goes here (find me in the latex template)
\end{abstract}
%\begin{abstract}
%Abstract goes here (find me in the latex template)
%\end{abstract}
\end{sloppypar}
$body$
@@ -94,10 +94,10 @@
\or % acmcopyright
ACM.
\or % acmlicensed
Copyright held by the owner/author(s). Publication rights licensed to
Copyright held by the owner/author(s). Publication rights not licensed to
ACM.
\or % rightsretained
Copyright held by the owner/author(s).
Felix Roos and Alex McLean.
\or % usgov
\or % usgovmixed
ACM.
@@ -115,7 +115,7 @@
ACM.
\or % licensedothergov
\or % waclicense
Copyright held by the owner/author(s).
Felix Roos and Alex McLean.
\fi}
\def\@copyrightpermission{%
\ifcase\acm@copyrightmode\relax % none
@@ -222,7 +222,7 @@
only.
\or % waclicense
\frame{\includegraphics[scale=.54]{images/cc}}\vspace{1mm}\vfill
Licensed under a Creative Commons Attribution 4.0 International License (CC BY 4.0). \textbf{Attribution}: owner/author(s).
Licensed under a Creative Commons Attribution 4.0 International License (CC BY 4.0). \textbf{Attribution}: Felix Roos and Alex McLean.
\fi}
\endinput
%%
-1
View File
@@ -1 +0,0 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Strudel REPL"/><title>Strudel REPL</title><script defer="defer" src="/static/js/main.77e38ada.js"></script><link href="/static/css/main.0d689283.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-2
View File
@@ -1,2 +0,0 @@
"use strict";(self.webpackChunk_strudel_repl=self.webpackChunk_strudel_repl||[]).push([[787],{787:function(e,t,n){n.r(t),n.d(t,{getCLS:function(){return y},getFCP:function(){return g},getFID:function(){return C},getLCP:function(){return P},getTTFB:function(){return D}});var i,r,a,o,u=function(e,t){return{name:e,value:void 0===t?-1:t,delta:0,entries:[],id:"v2-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12)}},c=function(e,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){if("first-input"===e&&!("PerformanceEventTiming"in self))return;var n=new PerformanceObserver((function(e){return e.getEntries().map(t)}));return n.observe({type:e,buffered:!0}),n}}catch(e){}},f=function(e,t){var n=function n(i){"pagehide"!==i.type&&"hidden"!==document.visibilityState||(e(i),t&&(removeEventListener("visibilitychange",n,!0),removeEventListener("pagehide",n,!0)))};addEventListener("visibilitychange",n,!0),addEventListener("pagehide",n,!0)},s=function(e){addEventListener("pageshow",(function(t){t.persisted&&e(t)}),!0)},m=function(e,t,n){var i;return function(r){t.value>=0&&(r||n)&&(t.delta=t.value-(i||0),(t.delta||void 0===i)&&(i=t.value,e(t)))}},v=-1,p=function(){return"hidden"===document.visibilityState?0:1/0},d=function(){f((function(e){var t=e.timeStamp;v=t}),!0)},l=function(){return v<0&&(v=p(),d(),s((function(){setTimeout((function(){v=p(),d()}),0)}))),{get firstHiddenTime(){return v}}},g=function(e,t){var n,i=l(),r=u("FCP"),a=function(e){"first-contentful-paint"===e.name&&(f&&f.disconnect(),e.startTime<i.firstHiddenTime&&(r.value=e.startTime,r.entries.push(e),n(!0)))},o=window.performance&&performance.getEntriesByName&&performance.getEntriesByName("first-contentful-paint")[0],f=o?null:c("paint",a);(o||f)&&(n=m(e,r,t),o&&a(o),s((function(i){r=u("FCP"),n=m(e,r,t),requestAnimationFrame((function(){requestAnimationFrame((function(){r.value=performance.now()-i.timeStamp,n(!0)}))}))})))},h=!1,T=-1,y=function(e,t){h||(g((function(e){T=e.value})),h=!0);var n,i=function(t){T>-1&&e(t)},r=u("CLS",0),a=0,o=[],v=function(e){if(!e.hadRecentInput){var t=o[0],i=o[o.length-1];a&&e.startTime-i.startTime<1e3&&e.startTime-t.startTime<5e3?(a+=e.value,o.push(e)):(a=e.value,o=[e]),a>r.value&&(r.value=a,r.entries=o,n())}},p=c("layout-shift",v);p&&(n=m(i,r,t),f((function(){p.takeRecords().map(v),n(!0)})),s((function(){a=0,T=-1,r=u("CLS",0),n=m(i,r,t)})))},E={passive:!0,capture:!0},w=new Date,L=function(e,t){i||(i=t,r=e,a=new Date,F(removeEventListener),S())},S=function(){if(r>=0&&r<a-w){var e={entryType:"first-input",name:i.type,target:i.target,cancelable:i.cancelable,startTime:i.timeStamp,processingStart:i.timeStamp+r};o.forEach((function(t){t(e)})),o=[]}},b=function(e){if(e.cancelable){var t=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?function(e,t){var n=function(){L(e,t),r()},i=function(){r()},r=function(){removeEventListener("pointerup",n,E),removeEventListener("pointercancel",i,E)};addEventListener("pointerup",n,E),addEventListener("pointercancel",i,E)}(t,e):L(t,e)}},F=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach((function(t){return e(t,b,E)}))},C=function(e,t){var n,a=l(),v=u("FID"),p=function(e){e.startTime<a.firstHiddenTime&&(v.value=e.processingStart-e.startTime,v.entries.push(e),n(!0))},d=c("first-input",p);n=m(e,v,t),d&&f((function(){d.takeRecords().map(p),d.disconnect()}),!0),d&&s((function(){var a;v=u("FID"),n=m(e,v,t),o=[],r=-1,i=null,F(addEventListener),a=p,o.push(a),S()}))},k={},P=function(e,t){var n,i=l(),r=u("LCP"),a=function(e){var t=e.startTime;t<i.firstHiddenTime&&(r.value=t,r.entries.push(e),n())},o=c("largest-contentful-paint",a);if(o){n=m(e,r,t);var v=function(){k[r.id]||(o.takeRecords().map(a),o.disconnect(),k[r.id]=!0,n(!0))};["keydown","click"].forEach((function(e){addEventListener(e,v,{once:!0,capture:!0})})),f(v,!0),s((function(i){r=u("LCP"),n=m(e,r,t),requestAnimationFrame((function(){requestAnimationFrame((function(){r.value=performance.now()-i.timeStamp,k[r.id]=!0,n(!0)}))}))}))}},D=function(e){var t,n=u("TTFB");t=function(){try{var t=performance.getEntriesByType("navigation")[0]||function(){var e=performance.timing,t={entryType:"navigation",startTime:0};for(var n in e)"navigationStart"!==n&&"toJSON"!==n&&(t[n]=Math.max(e[n]-e.navigationStart,0));return t}();if(n.value=n.delta=t.responseStart,n.value<0||n.value>performance.now())return;n.entries=[t],e(n)}catch(e){}},"complete"===document.readyState?setTimeout(t,0):addEventListener("load",(function(){return setTimeout(t,0)}))}}}]);
//# sourceMappingURL=787.8f7ec9e0.chunk.js.map
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-56
View File
@@ -1,56 +0,0 @@
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
/**
* @license Fraction.js v4.2.0 05/03/2022
* https://www.xarg.org/2014/03/rational-numbers-in-javascript/
*
* Copyright (c) 2021, Robert Eisele (robert@xarg.org)
* Dual licensed under the MIT or GPL Version 2 licenses.
**/
/**
* Tone.js
* @author Yotam Mann
* @license http://opensource.org/licenses/MIT MIT License
* @copyright 2014-2019 Yotam Mann
*/
/** @license React v0.20.2
* scheduler.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v17.0.2
* react-dom.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v17.0.2
* react-jsx-runtime.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v17.0.2
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 42 KiB

+197
View File
@@ -0,0 +1,197 @@
This document introduces you to Strudel in a technical sense.
It is rather out of date, but there might still be useful info below.
If you just want to *use* Strudel, have a look at the [Tutorial](https://strudel.tidalcycles.org/tutorial/).
## Strudel Packages
There are different packages for different purposes. They..
- split up the code into smaller chunks
- can be selectively used to implement some sort of time based system
Please refer to the individual README files in the [packages folder](https://codeberg.org/uzu/strudel/src/branch/main/packages)
## REPL
The [REPL](https://strudel.tidalcycles.org/) is the place where all packages come together to form a live coding system. It can also be seen as a reference implementation for users of the library.
More info in the [REPL README](https://codeberg.org/uzu/strudel/src/branch/main/packages/repl/README.md)
# High Level Overview
<img src="strudelflow.png" width="600" />
## 1. End User Code
The End User Code is written in JavaScript with added syntax sugar. The [eval package](https://github.com/tidalcycles/strudel/tree/main/packages/eval#strudelcycleseval) evaluates the user code
after a transpilation step, which resolves the syntax sugar. If you don't want the syntax sugar, you can omit the eval package and call the native javascript `eval` instead.
### 🍭 Syntax Sugar
JavaScript Transpilation = converting valid JavaScript to valid JavaScript:
```js
"c3 [e3 g3]".fast(2)
```
becomes
```js
mini('c3 [e3 g3]')
.withMiniLocation([1, 0, 0], [1, 11, 11]) // source location
.fast(2);
```
- double quoted strings and backtick strings are turned into `mini` calls (single quoted strings are left as is)
- The source location is added by chaining `withMiniLocation`, which enables the real time highlighting later
- (psuedo) variable names that look like notes (like `c4`, `bb2` or `fs3`) are turned into strings
- support for top level await
- operator overloading could be implemented in the future
This is how it works:
<img src="https://github.com/tidalcycles/strudel/blob/talk/talk/public/shiftflow.png?raw=true" width="800" />
- The user code is parsed with a [shift parser](https://github.com/shapesecurity/shift-parser-js), generating an AST
- The AST is transformed to resolve the syntax sugar
- The AST is used to generate code again (shift-codegen)
Shift will most likely be replaced with acorn in the future, see https://github.com/tidalcycles/strudel/issues/174
### Mini Notation
Another important part of the user code is the mini notation, which allows to express rhythms in a short manner.
- the mini notation is [implemented as a PEG grammar](https://github.com/tidalcycles/strudel/blob/main/packages/mini/krill.pegjs), living in the [mini package](https://github.com/tidalcycles/strudel/tree/main/packages/mini)
- it is based on [krill](https://github.com/Mdashdotdashn/krill) by Mdashdotdashn
- the peg grammar is used to generate a parser with [peggyjs](https://peggyjs.org/)
- the generated parser takes a mini notation string and outputs an AST
- the AST can then be used to construct a pattern using the regular Strudel API
Here's an example AST:
```json
{
"type_": "pattern",
"arguments_": { "alignment": "h" },
"source_": [
{
"type_": "element", "source_": "c3",
"location_": { "start": { "offset": 1, "line": 1, "column": 2 }, "end": { "offset": 4, "line": 1, "column": 5 } }
},
{
"type_": "element",
"location_": { "start": { "offset": 4, "line": 1, "column": 5 }, "end": { "offset": 11, "line": 1, "column": 12 } }
"source_": {
"type_": "pattern", "arguments_": { "alignment": "h" },
"source_": [
{
"type_": "element", "source_": "e3",
"location_": { "start": { "offset": 5, "line": 1, "column": 6 }, "end": { "offset": 8, "line": 1, "column": 9 } }
},
{
"type_": "element", "source_": "g3",
"location_": { "start": { "offset": 8, "line": 1, "column": 9 }, "end": { "offset": 10, "line": 1, "column": 11 } }
}
]
},
}
]
}
```
which translates to `seq(c3, seq(e3, g3))`
## 2. Querying & Scheduling
When the user code has been evaluated, we hopefully get a Pattern instance, which we can use to query events from.
These events can then be used to trigger side effects in the real world. On that note, Events are mostly called Hap(s) in the codebase, because JS already has a built in `Event` class.
### Querying
> Querying = Asking a Pattern for Events within a certain time span
```js
seq('c3', ['e3', 'g3']) // <--- Pattern
.queryArc(0, 2) // query events within 0 and 2 cycles
.map((hap) => hap.showWhole()); // make readable
```
yields
```js
[
'0/1 -> 1/2: c3', // cycle 0
'1/2 -> 3/4: e3',
'3/4 -> 1/1: g3',
'1/1 -> 3/2: c3', // cycle 1
'3/2 -> 7/4: e3',
'7/4 -> 2/1: g3',
];
```
### 🗓️ Scheduling
The scheduler will query events repeatedly, creating a possibly endless loop of time slices.
Here is a simplified example of how it works
```js
let step = 0.5; // query interval in seconds
let tick = 0; // how many intervals have passed
let pattern = seq('c3', ['e3', 'g3']); // pattern from user
setInterval(() => {
const events = pattern.queryArc(tick * step, ++tick * step);
events.forEach((event) => {
console.log(event.showWhole());
const o = getAudioContext().createOscillator();
o.frequency.value = getFreq(event.value);
o.start(event.whole.begin);
o.stop(event.whole.begin + event.duration);
o.connect(getAudioContext().destination);
});
}, step * 1000); // query each "step" seconds
```
## 3. Sound Output
The third and last step is to use the scheduled events to make sound.
Patterns are wrapped with param functions to compose different properties of the sound.
```js
note("[c2(3,8) [<eb2 g1> bb1]]") // sets frequency
.s("<sawtooth square>") // sound source
.gain(.5) // turn down volume
.cutoff(sine.range(200,1000).slow(4)) // modulated cutoff
.slow(2)
.out().logValues()`,
]}
/>
```
Here is an example Hap value with different properties:
```js
{ note: 'a4', s: 'sawtooth', gain: 0.5, cutoff: 267 }
```
<img src="waa-nodes.png" width="600" />
<div className="text-left">
- Patterns represent just values in time!
- Suitable for any time based output (music, visuals, movement, .. ?)
### Supported Outputs
At the time of writing this doc, the following outputs are supported:
- Web Audio API `.out()` see [/webaudio](https://github.com/tidalcycles/strudel/tree/main/packages/webaudio)
- MIDI `.midi()` see [/midi](https://github.com/tidalcycles/strudel/tree/main/packages/midi)
- OSC `.osc()` see [/osc](https://github.com/tidalcycles/strudel/tree/main/packages/osc)
- Serial `.serial()` see [/serial](https://github.com/tidalcycles/strudel/tree/main/packages/serial)
- Tone.js `.tone()` (deprecated?) [/tone](https://github.com/tidalcycles/strudel/tree/main/packages/tone)
- WebDirt `.webdirt()` (deprecated?) [/webdirt](https://github.com/tidalcycles/strudel/tree/main/packages/webdirt)
- Speech `.speak()` (experimental) part of [/core](https://github.com/tidalcycles/strudel/tree/main/packages/core)
These could change, so make sure to check the [packages folder](https://github.com/tidalcycles/strudel/tree/main/packages).
Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><link rel="icon" href="/tutorial/favicon.e3ab9dd9.ico"><link rel="stylesheet" type="text/css" href="/tutorial/index.999678aa.css"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="description" content="Strudel REPL"><title>Strudel Tutorial</title></head><body> <div id="root"></div> <noscript>You need to enable JavaScript to run this app.</noscript> <script src="/tutorial/index.097d520a.js" defer></script> </body></html>
+97
View File
@@ -0,0 +1,97 @@
import _import from 'eslint-plugin-import';
import { fixupPluginRules } from '@eslint/compat';
import globals from 'globals';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import js from '@eslint/js';
import { FlatCompat } from '@eslint/eslintrc';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all,
});
export default [
{
ignores: [
'**/krill-parser.js',
'**/krill.pegjs',
'**/.eslintrc.json',
'**/server.js',
'**/tidal-sniffer.js',
'**/*.jsx',
'**/tunejs.js',
'out/**/*',
'**/postcss.config.js',
'**/postcss.config.cjs',
'**/tailwind.config.js',
'**/tailwind.config.cjs',
'**/vite.config.js',
'**/dist/**/*',
'!**/*.mjs',
'**/*.tsx',
'**/*.ts',
'**/*.json',
'**/dev-dist',
'**/dist',
'src-tauri/target/**/*',
'**/reverbGen.mjs',
'**/hydra.mjs',
'**/jsdoc-synonyms.js',
'packages/hs2js/src/hs2js.mjs',
'packages/supradough/dough-export.mjs',
'**/samples',
],
},
...compat.extends('eslint:recommended').map((config) => ({
...config,
files: ['**/*.mjs', '**/*.js'],
})),
{
files: ['**/*.mjs', '**/*.js'],
plugins: {
import: fixupPluginRules(_import),
},
languageOptions: {
globals: {
...globals.node,
...globals.browser,
},
ecmaVersion: 'latest',
sourceType: 'module',
},
rules: {
'no-unused-vars': [
'warn',
{
destructuredArrayIgnorePattern: '.',
ignoreRestSiblings: false,
},
],
'import/no-extraneous-dependencies': [
'error',
{
devDependencies: true,
},
],
},
},
{
// Properties provided by AudioWorkletGlobalScope
files: ['packages/superdough/worklets.mjs'],
languageOptions: {
globals: {
currentTime: 'readonly',
sampleRate: 'readonly',
},
},
},
];
+3
View File
@@ -0,0 +1,3 @@
# examples
This folder contains usage examples for different scenarios.
+5
View File
@@ -0,0 +1,5 @@
# buildless examples
These examples show you how strudel can be used in a regular html file, without the need for a build tool.
Most examples are using [skypack](https://www.skypack.dev/)
+26
View File
@@ -0,0 +1,26 @@
<input
type="text"
id="text"
value="seq('a', ['b', 'c'])"
style="width: 100%; font-size: 2em; outline: none; margin-bottom: 10px"
spellcheck="false"
/>
<div id="output"></div>
<script type="module">
const strudel = await import('https://cdn.skypack.dev/@strudel/core@0.6.8');
Object.assign(window, strudel); // assign all strudel functions to global scope to use with eval
const input = document.getElementById('text');
const getEvents = () => {
const code = document.getElementById('text').value;
const pattern = eval(code);
const events = pattern.firstCycle();
console.log(code, '->', events);
document.getElementById('output').innerHTML = events.map((e) => e.show()).join('<br/>');
};
getEvents();
input.addEventListener('input', () => getEvents());
</script>
<p>
This page shows how skypack can be used to import strudel core directly into a simple html page. <br />
No server, no bundler and no build setup is needed to run this!
</p>
+34
View File
@@ -0,0 +1,34 @@
<body style="margin: 0">
<input
type="text"
id="text"
value="seq('tomato', 'indigo', ['white', 'steelblue']).fast(4)"
style="width: 100%; font-size: 2em; background: black; color: white; outline: none; position: absolute; top: 0"
spellcheck="false"
/>
<canvas id="canvas"></canvas>
<script type="module">
const strudel = await import('https://cdn.skypack.dev/@strudel/core@0.6.8');
// this adds all strudel functions to the global scope, to be used by eval
Object.assign(window, strudel);
// setup elements
const input = document.getElementById('text');
const canvas = document.getElementById('canvas');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
const ctx = canvas.getContext('2d');
input.focus(); // autofocus
input.setSelectionRange(input.value.length, input.value.length); // move cursor to end
paint(input.value); // initial paint
input.addEventListener('input', (e) => paint(e.target.value)); // repaint on input
function paint(code) {
const pattern = eval(code); // run code
const events = pattern.firstCycle(); // query first cycle
events.forEach((event) => {
ctx.fillStyle = event.value;
ctx.fillRect(event.whole.begin * canvas.width, 0, event.duration.valueOf() * canvas.width, canvas.height);
});
}
</script>
</body>
+31
View File
@@ -0,0 +1,31 @@
<!doctype html>
<html>
<head>
<meta charset="UTF-8" />
<!-- <script src="../../packages/web/dist/index.js"></script> -->
<script src="https://unpkg.com/@strudel/web@1.0.3"></script>
</head>
<body style="background: #222">
<button id="play">play</button>
<button id="stop">stop</button>
<script>
strudel.initStrudel();
document.getElementById('play').addEventListener('click', () =>
evaluate(`
//@title washover @by Switch Angel
//@social https://www.instagram.com/_switch_angel/
n("{0 1 3 5 2 }%16")
.add(n(tri.range(0, 6).slow(3)))
.scale("C4:pentatonic")
.sound("sawtooth").att(saw.range(0, 0.05).fast(6))
.release(3).pan(rand).decay(rand.range(0.1, 0.3))
.lpf(tri.range(200, 8000).slow(5)).lpq(0)
.gain(.4).vib(1).vibmod(.1)
.scope({pos:.5})
`),
);
document.getElementById('stop').addEventListener('click', () => strudel.hush());
</script>
</body>
</html>
@@ -0,0 +1,24 @@
<!doctype html>
<html>
<head>
<meta charset="UTF-8" />
<!-- <script src="../../packages/web/dist/index.js"></script> -->
<script src="https://unpkg.com/@strudel/web@1.0.3"></script>
</head>
<body style="background: #222">
<button id="a">A</button>
<button id="b">B</button>
<button id="c">C</button>
<button id="stop">stop</button>
<script>
initStrudel({
prebake: () => samples('github:tidalcycles/dirt-samples'),
});
const click = (id, action) => document.getElementById(id).addEventListener('click', action);
click('a', () => evaluate(`s('bd,jvbass(3,8)').jux(rev)`));
click('b', () => s('bd*2,hh(3,4),jvbass(5,8,1)').jux(rev).play());
click('c', () => s('bd*2,hh(3,4),jvbass:[0 4](5,8,1)').jux(rev).stack(s('~ sd')).play());
click('stop', () => hush());
</script>
</body>
</html>
+9
View File
@@ -0,0 +1,9 @@
<script src="https://unpkg.com/hs2js@0.0.4"></script>
<button id="hello">hello</button>
<script>
hs2js.setBase('https://unpkg.com/hs2js@0.0.4/dist/');
hs2js.loadParser();
document.getElementById('hello').addEventListener('click', () => {
hs2js.evaluate('alert "hello from haskell!"');
});
</script>
+90
View File
@@ -0,0 +1,90 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Buildless Vanilla Strudel REPL</title>
</head>
<body style="margin: 0; background: #222">
<div style="display: grid; height: 100vh; grid-template-rows: 32px auto">
<button id="start" style="width: 100vw; height: 32px">evaluate</button>
<textarea
id="text"
style="font-size: 2em; border: 0; color: white; background: transparent; outline: none; padding: 20px"
spellcheck="false"
></textarea>
</div>
<div id="output"></div>
<script type="module">
// TODO: refactor to use newer version without controls import
import { controls, repl, evalScope } from 'https://cdn.skypack.dev/@strudel/core@0.11.0';
import { mini } from 'https://cdn.skypack.dev/@strudel/mini@0.11.0';
import { transpiler } from 'https://cdn.skypack.dev/@strudel/transpiler@0.11.0';
import {
getAudioContext,
webaudioOutput,
initAudioOnFirstClick,
registerSynthSounds,
} from 'https://cdn.skypack.dev/@strudel/webaudio@0.11.0';
const ctx = getAudioContext();
const input = document.getElementById('text');
input.innerHTML = getTune();
const loadModules = evalScope(
controls,
import('https://cdn.skypack.dev/@strudel/core@0.11.0'),
import('https://cdn.skypack.dev/@strudel/mini@0.11.0'),
import('https://cdn.skypack.dev/@strudel/tonal@0.11.0'),
import('https://cdn.skypack.dev/@strudel/webaudio@0.11.0'),
);
const initAudio = Promise.all([initAudioOnFirstClick(), registerSynthSounds()]);
const { evaluate } = repl({
defaultOutput: webaudioOutput,
getTime: () => ctx.currentTime,
transpiler,
});
document.getElementById('start').addEventListener('click', async () => {
await loadModules;
await initAudio;
evaluate(input.value);
});
function getTune() {
return `samples('github:tidalcycles/dirt-samples')
setcps(1);
stack(
// amen
n("0 1 2 3 4 5 6 7")
.sometimes(x=>x.ply(2))
.rarely(x=>x.speed("2 | -2"))
.sometimesBy(.4, x=>x.delay(".5"))
.s("amencutup")
.slow(2)
.room(.5)
,
// bass
sine.add(saw.slow(4)).range(0,7).segment(8)
.superimpose(x=>x.add(.1))
.scale('G0 minor').note()
.s("sawtooth").decay(.1).sustain(0)
.gain(.4).cutoff(perlin.range(300,3000).slow(8)).resonance(10)
.degradeBy("0 0.1 .5 .1")
.rarely(add(note("12")))
,
// chord
note("Bb3,D4".superimpose(x=>x.add(.2)))
.s('sawtooth').cutoff(1000).struct("<~@3 [~ x]>")
.decay(.05).sustain(.0).delay(.8).delaytime(.125).room(.8)
,
// alien
s("breath").room(1).shape(.6).chop(16).rev().mask("<x ~@7>")
,
n("0 1").s("east").delay(.5).degradeBy(.8).speed(rand.range(.5,1.5))
).reset("<x@7 x(5,8)>")`;
}
</script>
</body>
</html>
+98
View File
@@ -0,0 +1,98 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>tidal.html</title>
</head>
<body style="margin: 0; padding: 0">
<textarea id="code" style="width: 100%; height: 200px"></textarea>
<pre id="result"></pre>
<script src="https://unpkg.com/hs2js@0.0.8"></script>
<script src="https://unpkg.com/@strudel/web@1.0.3"></script>
<script>
const { initStrudel } = strudel;
const { run, parse, setBase, loadParser } = hs2js;
setBase('https://unpkg.com/hs2js@0.0.4/dist/');
const ready = loadParser();
initStrudel({
prebake: () => samples('github:tidalcycles/dirt-samples'),
});
const textarea = document.getElementById('code');
if (window.location.hash) {
textarea.value = atob(window.location.hash.slice(1));
} else {
textarea.value = 'd1 $ s "jvbass(3,8)"';
}
textarea.addEventListener('input', (e) => {
window.location.hash = btoa(e.target.value);
update();
});
update();
function getInfixOperators() {
let operators = {
'>': 'set',
'#': 'set',
'+': 'add',
'-': 'sub',
'*': 'mul',
'/': 'div',
};
let alignments = {
in: (s) => '|' + s,
out: (s) => s + '|',
mix: (s) => '|' + s + '|',
};
let ops = {};
Object.entries(operators).forEach(([o, name]) => {
// operator without alignment
ops[o] = (l, r) => reify(l)[name](reify(r));
Object.entries(alignments).forEach(([a, getSymbol]) => {
// get symbol with alignment
let symbol = getSymbol(o);
ops[symbol] = (l, r) => reify(l)[name][a](reify(r));
});
});
ops['~>'] = (l, r) => reify(l).late(reify(r));
ops['<~'] = (l, r) => reify(l).early(reify(r));
ops['<$>'] = (l, r) => reify(r).fmap(l).outerJoin(); // is this right?
return ops;
}
const ops = getInfixOperators();
async function update() {
let result, tree;
await ready;
try {
tree = parse(textarea.value);
} catch (err) {
console.warn('parse error');
console.error(err);
}
console.log('parsed tree');
console.log(tree.rootNode.toString());
try {
let patterns = {};
window.p = (name, pattern) => {
patterns[name] = pattern;
};
window.d1 = (pat) => window.p(1, pat);
window.d2 = (pat) => window.p(2, pat);
window.d3 = (pat) => window.p(3, pat);
window.rot = late;
result = run(tree.rootNode, window, ops);
if (Object.values(patterns).length) {
stack(...Object.values(patterns)).play();
}
} catch (err) {
console.warn('eval error');
console.error(err);
result = 'ERROR: ' + err.message;
}
document.getElementById('result').innerHTML = 'Result: ' + result;
}
</script>
</body>
</html>
@@ -0,0 +1,22 @@
<script src="https://unpkg.com/@strudel/embed@0.11.0"></script>
<!-- <script src="./embed.js"></script> -->
<strudel-repl>
<!--
note(`[[e5 [b4 c5] d5 [c5 b4]]
[a4 [a4 c5] e5 [d5 c5]]
[b4 [~ c5] d5 e5]
[c5 a4 a4 ~]
[[~ d5] [~ f5] a5 [g5 f5]]
[e5 [~ c5] e5 [d5 c5]]
[b4 [b4 c5] d5 e5]
[c5 a4 a4 ~]],
[[e2 e3]*4]
[[a2 a3]*4]
[[g#2 g#3]*2 [e2 e3]*2]
[a2 a3 a2 a3 a2 a3 b1 c2]
[[d2 d3]*4]
[[c2 c3]*4]
[[b1 b2]*2 [e2 e3]*2]
[[a1 a2]*4]`).slow(16)
-->
</strudel-repl>
@@ -0,0 +1,31 @@
<script src="https://unpkg.com/@strudel/repl@1.0.2"></script>
<strudel-editor>
<!--
// @date 23-08-15
// "golf rolf" @by froos @license CC BY-NC-SA 4.0
setcps(1)
stack(
s("bd*2, ~ rim*<1!3 2>, hh*4").bank('RolandTR909')
.off(-1/8, set(speed("1.5").gain(.25)))
.mask("<0!16 1!64>")
,
note("g1(3,8)")
.s("gm_synth_bass_2:<0 2>")
.delay(".8:.25:.25")
.clip("<.5!16 2!32>")
.off(1/8, add(note("12?0.7")))
.lpf(sine.range(500,2000).slow(32)).lpq(8)
.add(note("0,.05"))
.mask("<0!8 1!32>")
,
n("<0 1 2 3 4>*8").scale('G4 minor')
.s("gm_lead_6_voice")
.clip(sine.range(.2,.8).slow(8))
.jux(rev)
.room(2)
.sometimes(add(note("12")))
.lpf(perlin.range(200,20000).slow(4))
).reset("<x@15 x(5,8)>")
-->
</strudel-editor>
+8
View File
@@ -0,0 +1,8 @@
<script src="https://unpkg.com/@strudel/web@1.0.3"></script>
<button id="play">PLAY</button>
<script>
initStrudel({
prebake: () => samples('github:tidalcycles/dirt-samples'),
});
document.getElementById('play').addEventListener('click', () => s('bd sd').play());
</script>
+24
View File
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
+8
View File
@@ -0,0 +1,8 @@
# codemirror-repl example
This folder demonstrates how to set up a full strudel repl with the `@strudel/codemirror` package. Run it using:
```sh
pnpm i
pnpm dev
```
+22
View File
@@ -0,0 +1,22 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite Vanilla Strudel REPL</title>
</head>
<body>
<main>
<nav>
<button id="play">eval</button>
<button id="stop">stop</button>
</nav>
<div class="container">
<div id="editor"></div>
<div id="output"></div>
</div>
<canvas id="roll"></canvas>
</main>
<script type="module" src="./main.js"></script>
</body>
</html>
+40
View File
@@ -0,0 +1,40 @@
import { StrudelMirror } from '@strudel/codemirror';
import { funk42 } from './tunes';
import { evalScope } from '@strudel/core';
import { drawPianoroll } from '@strudel/draw';
import './style.css';
import { initAudioOnFirstClick } from '@strudel/webaudio';
import { transpiler } from '@strudel/transpiler';
import { getAudioContext, webaudioOutput, registerSynthSounds } from '@strudel/webaudio';
import { registerSoundfonts } from '@strudel/soundfonts';
// init canvas
const canvas = document.getElementById('roll');
canvas.width = canvas.width * 2;
canvas.height = canvas.height * 2;
const drawContext = canvas.getContext('2d');
const drawTime = [-2, 2]; // time window of drawn haps
const editor = new StrudelMirror({
defaultOutput: webaudioOutput,
getTime: () => getAudioContext().currentTime,
transpiler,
root: document.getElementById('editor'),
initialCode: funk42,
drawTime,
onDraw: (haps, time) => drawPianoroll({ haps, time, ctx: drawContext, drawTime, fold: 0 }),
prebake: async () => {
initAudioOnFirstClick(); // needed to make the browser happy (don't await this here..)
const loadModules = evalScope(
import('@strudel/core'),
import('@strudel/draw'),
import('@strudel/mini'),
import('@strudel/tonal'),
import('@strudel/webaudio'),
);
await Promise.all([loadModules, registerSynthSounds(), registerSoundfonts()]);
},
});
document.getElementById('play').addEventListener('click', () => editor.evaluate());
document.getElementById('stop').addEventListener('click', () => editor.stop());
+27
View File
@@ -0,0 +1,27 @@
{
"name": "vite-vanilla-repl-cm6",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"devDependencies": {
"vite": "^6.0.11"
},
"dependencies": {
"@strudel/codemirror": "workspace:*",
"@strudel/core": "workspace:*",
"@strudel/draw": "workspace:*",
"@strudel/mini": "workspace:*",
"@strudel/soundfonts": "workspace:*",
"@strudel/tonal": "workspace:*",
"@strudel/transpiler": "workspace:*",
"@strudel/webaudio": "workspace:*"
},
"engines": {
"node": ">=18.0.0"
}
}
+31
View File
@@ -0,0 +1,31 @@
body,
html {
margin: 0;
height: 100%;
background: #282c34;
}
main {
height: 100%;
display: flex;
flex-direction: column;
}
.container {
flex-grow: 1;
max-height: 100%;
position: relative;
overflow: auto;
}
#editor {
overflow: auto;
}
.cm-editor {
height: 100%;
}
#roll {
height: 300px;
}
+112
View File
@@ -0,0 +1,112 @@
export const bumpStreet = `// froos - "22 bump street", licensed with CC BY-NC-SA 4.0
samples('github:felixroos/samples')
samples('https://strudel.cc/tidal-drum-machines.json', 'github:ritchse/tidal-drum-machines/main/machines/')
"<[0,<6 7 9>,13,<17 20 22 26>]!2>/2"
// make it 22 edo
.fmap(v => Math.pow(2,v/22))
// mess with the base frequency
.mul("<300 [300@3 200]>/8").freq()
.layer(
// chords
x=>x.div(freq(2)).s("flute").euclidLegato("<3 2>",8)
.shape(.4).lpf(sine.range(800,4000).slow(8)),
// adlibs
x=>x.arp("{0 3 2 [1 3]}%1.5")
.s('xylo').mul(freq(2))
.delay(.5).delayfeedback(.4).juxBy(.5, rev)
.hpf(sine.range(200,3000).slow(8)),
// bass
x=>x.arp("[0 [2 1?]](5,8)").s('sawtooth').div(freq(4))
.lpf(sine.range(400,2000).slow(8)).lpq(8).shape(.4)
.off(1/8, x=>x.mul(freq(2)).degradeBy(.5)).gain(.3)
).clip(1).release(.2)
.stack(
// drums
s("bd sd:<2 1>, [~ hh]*2, [~ rim]").bank('RolandTR909')
.off(1/8, x=>x.speed(2).gain(.4)).sometimes(ply(2)).gain(.8)
.mask("<0@4 1@12>/4")
.reset("<x@15 [x(3,8) x*[4 8]]>")
// wait for it...
).fast(2/3)
//.crush(6) // remove "//" if you dare`;
export const trafficFlam = `// froos - "traffic flam", licensed with CC BY-NC-SA 4.0
samples('github:felixroos/samples')
samples('https://strudel.cc/tidal-drum-machines.json', 'github:ritchse/tidal-drum-machines/main/machines/')
addVoicings('hip', {
m11: ['2M 3m 4P 7m'],
'^7#11': ['3M 4A 5P 7M'],
}, ['C4', 'C6'])
stack(
stack(
"<Bbm11 A^7#11>/2".voicings('hip').note()
.s("gm_epiano1:2")
.arp("[<[0 1 2 3] [3 2 1 0]> ~@5]/2")
.release(2).late(.25).lpf(2000),
"<Bb1 A1>/2".note().s('gm_acoustic_bass'),
n("<0 2 3>(3,8)".off(1/8, add(4)))
.scale("<Bb4:minor A4:lydian>/2")
.s('gm_electric_guitar_jazz')
.decay(sine.range(.05, .2).slow(32)).sustain(0)
.delay(.5).lpf(sine.range(100,5000).slow(64))
.gain(.7).room(.5).pan(sine.range(0,1).slow(11))
).add(perlin.range(0,.25).note()),
stack(
s("bd:1(3,8) rim").bank('RolandTR707').slow(2).room("<0 <.1 .6>>")
.when("<0@7 1>",x=>x.echoWith(3, .0625, (x,i) => x.speed(1+i*.24))),
s("rim*4").end(.05).bank('RolandTR808').speed(.8).room(.2)
)
)
.late("[0 .05]*2").late(12)
`;
export const funk42 = `// froos - how to funk in 42 lines of code
// adapted from "how to funk in two minutes" by marc rebillet https://www.youtube.com/watch?v=3vBwRfQbXkg
// thanks to peach for the transcription: https://www.youtube.com/watch?v=8eiPXvIgda4
samples('github:felixroos/samples')
samples('https://strudel.cc/tidal-drum-machines.json', 'github:ritchse/tidal-drum-machines/main/machines/')
setcps(.5)
let drums = stack(
s("bd*2, ~ sd").bank('RolandTR707').room("0 .1"),
s("hh*4").begin(.2).release(.02).end(.25).release(.02)
.gain(.3).bank('RolandTR707').late(.02).room(.5),
//s("shaker_small").struct("[x x*2]*2").speed(".8,.9").release(.02)
).fast(2)
let wurli = note(\`<
[[a2,g3,[b3 c4],e4] ~ [g3,c4,e4](3,8)@4 ~@2]!3
[[e2,e3,a3,b3,e4]@3 [e2,e3,ab3,b3,e4]@5]>\`)
.s("gm_epiano1:5").decay(.2).sustain("<[1 0@7]!3 1>")
.gain("<[.8@2 .4@14]!3 .7>").room(.3)
let organ = note("<[~@3 [a3,d4,f#4]@2 [[a3,c4,e4]@2 ~] ~@2]!3 ~>".add(12))
.s("gm_percussive_organ:2").gain(.6).lpf(1800).pan(.2).room(.3);
let clav = note(\`<
[~@3 a2 [g3,[b3 c4],e4]@2 ~ a2 [g3,b3,e4] ~@2 [g3,c4,e4] ~@4]!3
[~@3 e3 [[a3 b3],c3,e3]@2 ~ e2 [e3,a3]@3 [b3,e3] ~@2 [b3,e3]@2]>\`)
.s("gm_clavinet:1").decay("<.25!3 [.25 .4]>").sustain(0)
.gain(.7).pan(.8).room(.2);
let bass = note(\`<
[a1 [~ [g2 a2]] [g1 g#1] [a1 [g2 a2]]]
[a1 [~ [g2 a2]] [e3 d3] [c3 [g3 a3]]]
[a1 [~ [g2 a2]] [g1 g#1] [a1 [g2 a2]]]
[e2@6 e1@5 e1 [[d2 e3] g1]@4]
>\`).s("gm_electric_bass_pick:1").release(.1)
stack(
drums
,wurli
,organ
,clav
,bass
)`;
+24
View File
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
+13
View File
@@ -0,0 +1,13 @@
# headless-repl demo
This demo shows how to use strudel in "headless mode".
Buttons A / B / C will switch between different patterns.
It showcases the usage of the `@strudel/web` package, using [vite](https://vitejs.dev/) as the dev server.
## Running
```sh
pnpm i && cd examples/headless-repl
pnpm dev
# open http://localhost:5173/
```
+28
View File
@@ -0,0 +1,28 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="https://strudel.cc/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@strudel/web REPL Example</title>
</head>
<body>
<div id="app"></div>
<button id="a">A</button>
<button id="b">B</button>
<button id="c">C</button>
<button id="stop">stop</button>
<script type="module">
import { initStrudel } from '@strudel/web';
initStrudel({
prebake: () => samples('github:tidalcycles/dirt-samples'),
});
const click = (id, action) => document.getElementById(id).addEventListener('click', action);
click('a', () => evaluate(`s('bd,jvbass(3,8)').jux(rev)`));
click('b', () => s('bd*2,hh(3,4),jvbass(5,8,1)').jux(rev).play());
click('c', () => s('bd*2,hh(3,4),jvbass:[0 4](5,8,1)').jux(rev).stack(s('~ sd')).play());
click('stop', () => hush());
</script>
</body>
</html>
+21
View File
@@ -0,0 +1,21 @@
{
"name": "repl-example",
"private": true,
"version": "0.0.0",
"type": "module",
"license": "AGPL-3.0-or-later",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"devDependencies": {
"vite": "^6.0.11"
},
"dependencies": {
"@strudel/web": "workspace:*"
},
"engines": {
"node": ">=18.0.0"
}
}
+1
View File
@@ -0,0 +1 @@
dist
+10
View File
@@ -0,0 +1,10 @@
# minimal repl
This folder demonstrates how to set up a minimal strudel repl using vite and vanilla JS. Run it using:
```sh
npm i
npm run dev
```
If you're looking for a more feature rich alternative, have a look at the [../codemirror-repl](codemirror-repl example)
+35
View File
@@ -0,0 +1,35 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite Vanilla Strudel REPL</title>
</head>
<body style="margin: 0; background: #222">
<div style="display: grid; height: 100vh">
<textarea
id="text"
style="font-size: 2em; border: 0; color: white; background: transparent; outline: none; padding: 20px"
spellcheck="false"
></textarea>
</div>
<button
id="start"
style="
position: absolute;
border-radius: 10px;
top: 20px;
right: 20px;
padding: 20px;
border: 2px solid white;
background: transparent;
color: white;
cursor: pointer;
"
>
evaluate
</button>
<div id="output"></div>
<script type="module" src="./main.js"></script>
</body>
</html>
+23
View File
@@ -0,0 +1,23 @@
import { repl, evalScope } from '@strudel/core';
import { getAudioContext, webaudioOutput, initAudioOnFirstClick, registerSynthSounds } from '@strudel/webaudio';
import { transpiler } from '@strudel/transpiler';
import tune from './tune.mjs';
const ctx = getAudioContext();
const input = document.getElementById('text');
input.innerHTML = tune;
initAudioOnFirstClick();
registerSynthSounds();
evalScope(import('@strudel/core'), import('@strudel/mini'), import('@strudel/webaudio'), import('@strudel/tonal'));
const { evaluate } = repl({
defaultOutput: webaudioOutput,
getTime: () => ctx.currentTime,
transpiler,
});
document.getElementById('start').addEventListener('click', () => {
ctx.resume();
console.log('eval', input.value);
evaluate(input.value);
});
+25
View File
@@ -0,0 +1,25 @@
{
"name": "vite-vanilla-repl",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build-githack": "vite build --base /tidalcycles/strudel/use-acorn/packages/core/examples/vite-vanilla-repl/dist/",
"build": "vite build",
"preview": "vite preview"
},
"devDependencies": {
"vite": "^6.0.11"
},
"dependencies": {
"@strudel/core": "workspace:*",
"@strudel/mini": "workspace:*",
"@strudel/transpiler": "workspace:*",
"@strudel/webaudio": "workspace:*",
"@strudel/tonal": "workspace:*"
},
"engines": {
"node": ">=18.0.0"
}
}
+31
View File
@@ -0,0 +1,31 @@
export default `samples('github:tidalcycles/dirt-samples')
setcps(1)
stack(
// amen
n("0 1 2 3 4 5 6 7")
.sometimes(x=>x.ply(2))
.rarely(x=>x.speed("2 | -2"))
.sometimesBy(.4, x=>x.delay(".5"))
.s("amencutup")
.slow(2)
.room(.5)
,
// bass
sine.add(saw.slow(4)).range(0,7).segment(8)
.superimpose(x=>x.add(.1))
.scale('G0 minor').note()
.s("sawtooth").decay(.1).sustain(0)
.gain(.4).cutoff(perlin.range(300,3000).slow(8)).resonance(10)
.degradeBy("0 0.1 .5 .1")
.rarely(add(note("12")))
,
// chord
note("Bb3,D4".superimpose(x=>x.add(.2)))
.s('sawtooth').cutoff(1000).struct("<~@3 [~ x]>")
.decay(.05).sustain(.0).delay(.8).delaytime(.125).room(.8)
,
// alien
s("breath").room(1).shape(.6).chop(16).rev().mask("<x ~@7>")
,
n("0 1").s("east").delay(.5).degradeBy(.8).speed(rand.range(.5,1.5))
).reset("<x@7 x(5,8)>")`;
+24
View File
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
+11
View File
@@ -0,0 +1,11 @@
# superdough demo
This demo shows how to use [superdough](https://www.npmjs.com/package/superdough) with [vite](https://vitejs.dev/).
## Running
```sh
pnpm i && cd examples/headless-repl
pnpm dev
# open http://localhost:5173/
```
+38
View File
@@ -0,0 +1,38 @@
<!doctype html>
<html>
<head>
<title>Superdough Example</title>
<meta charset="UTF-8" />
</head>
<body>
<button id="play">PLAAAAAAAY</button>
<script type="module">
import { superdough, samples, initAudioOnFirstClick, registerSynthSounds } from 'superdough';
const init = Promise.all([
initAudioOnFirstClick(),
samples('github:tidalcycles/dirt-samples'),
registerSynthSounds(),
]);
const loop = (t = 0) => {
// superdough(value, time, duration)
superdough({ s: 'bd', delay: 0.5 }, t);
superdough({ note: 'g1', s: 'sawtooth', cutoff: 600, resonance: 8 }, t, 0.125);
superdough({ note: 'g2', s: 'sawtooth', cutoff: 600, resonance: 8 }, t + 0.25, 0.125);
superdough({ s: 'hh' }, t + 0.25);
superdough({ s: 'sd', room: 0.5 }, t + 0.5);
superdough({ s: 'hh' }, t + 0.75);
};
document.getElementById('play').addEventListener('click', async () => {
await init;
let t = 0.1;
while (t < 16) {
loop(t++);
}
});
</script>
</body>
</html>
+20
View File
@@ -0,0 +1,20 @@
{
"name": "superdough-example",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"superdough": "workspace:*"
},
"devDependencies": {
"vite": "^6.0.11"
},
"engines": {
"node": ">=18.0.0"
}
}

Some files were not shown because too many files have changed in this diff Show More