mirror of
https://codeberg.org/uzu/strudel
synced 2026-07-13 22:35:15 -04:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 051bdaccc7 | |||
| 5dc04d9574 | |||
| 60129413d3 | |||
| d2bf9370ea | |||
| fd11aa5eec | |||
| fb7c2b61d3 | |||
| dd64bf0fc9 | |||
| 434eb3b256 | |||
| 8fef75385a | |||
| c66b9219a8 | |||
| 2a1f8823e8 | |||
| 3da65f90e3 | |||
| a36cc24087 |
@@ -2,12 +2,13 @@
|
||||
|
||||
[](https://github.com/tidalcycles/strudel/actions)
|
||||
|
||||
An experiment in making a [Tidal](https://github.com/tidalcycles/tidal/) using web technologies. This software is slowly stabilising, but please continue to tread carefully.
|
||||
An experiment in making a [Tidal](https://github.com/tidalcycles/tidal/) using web technologies. This software is a bit more stable now, but please continue to tread carefully.
|
||||
|
||||
- Try it here: <https://strudel.cc>
|
||||
- Docs: <https://strudel.cc/learn>
|
||||
- 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>
|
||||
|
||||
## Running Locally
|
||||
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
{
|
||||
"name": "@strudel/codemirror",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "Codemirror Extensions for Strudel",
|
||||
"main": "index.mjs",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
|
||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'index.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
external: [...Object.keys(dependencies)],
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
{
|
||||
"name": "@strudel/core",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "Port of Tidal Cycles to JavaScript",
|
||||
"main": "index.mjs",
|
||||
"type": "module",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "vitest run",
|
||||
|
||||
@@ -160,8 +160,13 @@ export function pianoroll({
|
||||
maxMidi = max;
|
||||
valueExtent = maxMidi - minMidi + 1;
|
||||
}
|
||||
// foldValues = values.sort((a, b) => a - b);
|
||||
foldValues = values.sort((a, b) => String(a).localeCompare(String(b)));
|
||||
foldValues = values.sort((a, b) =>
|
||||
typeof a === 'number' && typeof b === 'number'
|
||||
? a - b
|
||||
: typeof a === 'number'
|
||||
? 1
|
||||
: String(a).localeCompare(String(b)),
|
||||
);
|
||||
barThickness = fold ? valueAxis / foldValues.length : valueAxis / valueExtent;
|
||||
ctx.fillStyle = background;
|
||||
ctx.globalAlpha = 1; // reset!
|
||||
|
||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'index.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
external: [...Object.keys(dependencies)],
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "@strudel/csound",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "csound bindings for strudel",
|
||||
"main": "index.mjs",
|
||||
"type": "module",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
|
||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'index.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
external: [...Object.keys(dependencies)],
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "@strudel/hydra",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "Hydra integration for strudel",
|
||||
"main": "hydra.mjs",
|
||||
"type": "module",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"server": "node server.js",
|
||||
|
||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'hydra.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
external: [...Object.keys(dependencies)],
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "@strudel/midi",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "Midi API for strudel",
|
||||
"main": "index.mjs",
|
||||
"type": "module",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
|
||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'index.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
external: [...Object.keys(dependencies)],
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
{
|
||||
"name": "@strudel/mini",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "Mini notation for strudel",
|
||||
"main": "index.mjs",
|
||||
"type": "module",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "vitest run",
|
||||
|
||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'index.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
external: [...Object.keys(dependencies)],
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "@strudel/osc",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "OSC messaging for strudel",
|
||||
"main": "osc.mjs",
|
||||
"type": "module",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"server": "node server.js",
|
||||
|
||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'osc.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
external: [...Object.keys(dependencies)],
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# @strudel/repl
|
||||
|
||||
The Strudel REPL as a web component.
|
||||
|
||||
[Usage example](https://github.com/tidalcycles/strudel/blob/main/examples/buildless/web-component-no-iframe.html)
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
{
|
||||
"name": "@strudel/repl",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "Strudel REPL as a Web Component",
|
||||
"main": "index.mjs",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "@strudel/serial",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "Webserial API for strudel",
|
||||
"main": "serial.mjs",
|
||||
"type": "module",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
|
||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'serial.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
external: [...Object.keys(dependencies)],
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
{
|
||||
"name": "@strudel/soundfonts",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "Soundsfont support for strudel",
|
||||
"main": "index.mjs",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
|
||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'index.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
external: [...Object.keys(dependencies)],
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
{
|
||||
"name": "superdough",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "simple web audio synth and sampler intended for live coding. inspired by superdirt and webdirt.",
|
||||
"main": "index.mjs",
|
||||
"type": "module",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.cjs",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"directories": {
|
||||
"example": "examples"
|
||||
|
||||
@@ -8,7 +8,7 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'index.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.cjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
{
|
||||
"name": "@strudel/tonal",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "Tonal functions for strudel",
|
||||
"main": "index.mjs",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
|
||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'index.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
external: [...Object.keys(dependencies)],
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "@strudel/transpiler",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "Transpiler for strudel user code. Converts syntactically correct but semantically meaningless JS into evaluatable strudel code.",
|
||||
"main": "index.mjs",
|
||||
"type": "module",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
|
||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'index.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
external: [...Object.keys(dependencies)],
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
{
|
||||
"name": "@strudel/web",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "Easy to setup, opiniated bundle of Strudel for the browser.",
|
||||
"main": "web.mjs",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
|
||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'web.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
external: [...Object.keys(dependencies)],
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@strudel/webaudio",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "Web Audio helpers for Strudel",
|
||||
"main": "index.mjs",
|
||||
"type": "module",
|
||||
@@ -8,8 +8,7 @@
|
||||
"example": "examples"
|
||||
},
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"example": "npx parcel examples/repl.html",
|
||||
|
||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'index.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
external: [...Object.keys(dependencies)],
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "@strudel/xen",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "Xenharmonic API for strudel",
|
||||
"main": "index.mjs",
|
||||
"type": "module",
|
||||
"publishConfig": {
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs"
|
||||
"main": "dist/index.mjs"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
|
||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
||||
build: {
|
||||
lib: {
|
||||
entry: resolve(__dirname, 'index.mjs'),
|
||||
formats: ['es', 'cjs'],
|
||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
||||
formats: ['es'],
|
||||
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||
},
|
||||
rollupOptions: {
|
||||
external: [...Object.keys(dependencies)],
|
||||
|
||||
Vendored
+7
@@ -262,6 +262,13 @@ declare module 'astro:content' {
|
||||
collection: "blog";
|
||||
data: InferEntrySchema<"blog">
|
||||
} & { render(): Render[".mdx"] };
|
||||
"release-1.0.0-geburtstagskuchen.mdx": {
|
||||
id: "release-1.0.0-geburtstagskuchen.mdx";
|
||||
slug: "release-100-geburtstagskuchen";
|
||||
body: string;
|
||||
collection: "blog";
|
||||
data: InferEntrySchema<"blog">
|
||||
} & { render(): Render[".mdx"] };
|
||||
"year-2.mdx": {
|
||||
id: "year-2.mdx";
|
||||
slug: "year-2";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 'Release Notes v0.0.2 Schwindlig'
|
||||
title: 'Release Notes v0.0.2'
|
||||
description: ''
|
||||
date: '2022-03-28'
|
||||
tags: ['meta']
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 'Release Notes v0.0.3 Stürmisch'
|
||||
title: 'Release Notes v0.0.3'
|
||||
date: '2022-05-20'
|
||||
tags: ['meta']
|
||||
author: froos
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 'Release Notes v0.0.3 Maelstrom'
|
||||
title: 'Release Notes v0.0.3'
|
||||
description: ''
|
||||
date: '2022-06-18'
|
||||
tags: ['meta']
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 'Release Notes v0.0.4 Gischt'
|
||||
title: 'Release Notes v0.0.4'
|
||||
description: ''
|
||||
date: '2022-08-14'
|
||||
tags: ['meta']
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 'Release Notes v0.3.0 Donauwelle'
|
||||
title: 'Release Notes v0.3.0'
|
||||
description: ''
|
||||
date: '2022-11-06'
|
||||
tags: ['meta']
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 'Release Notes v0.4.0 Brandung'
|
||||
title: 'Release Notes v0.4.0'
|
||||
description: ''
|
||||
date: '2022-11-13'
|
||||
tags: ['meta']
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 'Release Notes v0.5.0 Wirbel'
|
||||
title: 'Release Notes v0.5.0'
|
||||
description: ''
|
||||
date: '2022-12-13'
|
||||
tags: ['meta']
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 'Release Notes v0.6.0 Zimtschnecke'
|
||||
title: 'Release Notes v0.6.0'
|
||||
description: ''
|
||||
date: '2023-02-01'
|
||||
tags: ['meta']
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 'Release Notes v0.7.0 Zuckerguss'
|
||||
title: 'Release Notes v0.7.0'
|
||||
description: ''
|
||||
date: '2023-03-23'
|
||||
tags: ['meta']
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 'Release Notes v0.8.0 Himbeermuffin'
|
||||
title: 'Release Notes v0.8.0'
|
||||
description: ''
|
||||
date: '2023-06-30'
|
||||
tags: ['meta']
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 'Release Notes v0.9.0 Bananenbrot'
|
||||
title: 'Release Notes v0.9.0'
|
||||
description: ''
|
||||
date: '2023-09-17'
|
||||
tags: ['meta']
|
||||
|
||||
@@ -0,0 +1,238 @@
|
||||
---
|
||||
title: 'Release Notes v1.0.0'
|
||||
description: ''
|
||||
date: '2024-01-22'
|
||||
tags: ['meta']
|
||||
author: froos
|
||||
---
|
||||
|
||||
import BlogVideo from '../../components/BlogVideo.astro';
|
||||
|
||||
These are the release notes for Strudel 1.0.0 aka "Geburtstagskuchen"
|
||||
|
||||
This release marks the 2 year anniversary of the project, the first commit was on the 22nd January 2022 by Alex McLean.
|
||||
|
||||
If you generally need a heads up on what happened to Strudel in the last year, read the [2023 recap](/blog/#year-2)
|
||||
|
||||
import { Youtube } from '@src/components/Youtube';
|
||||
|
||||
<Youtube client:only="react" id="ByPFmSBqQk0" />
|
||||
|
||||
A lot has happened since then, and also since the last release 16 weeks ago.
|
||||
|
||||
Let me write up some of the highlights:
|
||||
|
||||
## Breaking Change
|
||||
|
||||
This version changes the default cps value from 1 to 0.5 to give patterns a little bit more time by default.
|
||||
If you find your existing patterns to be suddenly half the speed, just add a `setcps(1)` to the top and it should sound as it did before!
|
||||
|
||||
- make 0.5hz cps the default by @yaxu in https://github.com/tidalcycles/strudel/pull/931
|
||||
|
||||
## New Domain
|
||||
|
||||
Strudel is now available under [strudel.cc](https://strudel.cc/). The old domain still works but you might not get the most recent version.
|
||||
|
||||
- replace strudel.tidalcycles.org with strudel.cc by @felixroos in https://github.com/tidalcycles/strudel/pull/768
|
||||
|
||||
## Strudel on Mastodon
|
||||
|
||||
Strudel now has a mastodon presence: https://social.toplap.org/@strudel
|
||||
|
||||
## New Audio Engine Features
|
||||
|
||||
superdough, the audio engine of strudel has gotten some new features:
|
||||
|
||||
- Create phaser effect by @daslyfe in https://github.com/tidalcycles/strudel/pull/798
|
||||
- Multichannel audio by @daslyfe in https://github.com/tidalcycles/strudel/pull/820
|
||||
- Audio device selection by @daslyfe in https://github.com/tidalcycles/strudel/pull/854
|
||||
- Better convolution reverb by generating impulse responses by @Bubobubobubobubo and @felixroos in https://github.com/tidalcycles/strudel/pull/718
|
||||
- Add 'white', 'pink' and 'brown' oscillators + refactor synth by @Bubobubobubobubo and @felixroos in https://github.com/tidalcycles/strudel/pull/713
|
||||
- New noise type: "crackle" by @Bubobubobubobubo in https://github.com/tidalcycles/strudel/pull/806
|
||||
- Add support for using samples as impulse response buffers for the reverb by @vasilymilovidov in https://github.com/tidalcycles/strudel/pull/717
|
||||
- Compressor by @felixroos in https://github.com/tidalcycles/strudel/pull/729
|
||||
- Adding vibrato to Superdough sampler by @Bubobubobubobubo and @felixroos in https://github.com/tidalcycles/strudel/pull/706
|
||||
- Further Envelope improvements by @daslyfe in https://github.com/tidalcycles/strudel/pull/868
|
||||
- Add more vowel qualities for the vowels function by @fnordomat in https://github.com/tidalcycles/strudel/pull/907
|
||||
- pitch envelope by @felixroos in https://github.com/tidalcycles/strudel/pull/913
|
||||
|
||||
## Slider Controls
|
||||
|
||||
The new `slider` function inlines a draggable slider element into the code, bridging the gap between code and GUI.
|
||||
|
||||
- widgets by @felixroos in https://github.com/tidalcycles/strudel/pull/714
|
||||
- Slider afterthoughts by @felixroos in https://github.com/tidalcycles/strudel/pull/723
|
||||
- add xfade by @felixroos in https://github.com/tidalcycles/strudel/pull/780
|
||||
|
||||
## Improved MIDI integration
|
||||
|
||||
Pattern params [can now be controlled with cc messages](https://www.youtube.com/watch?v=e2-Sv_jjDQk) + you can now send a MIDI clock to sync your DAW with strudel.
|
||||
|
||||
- Midi in by @felixroos in https://github.com/tidalcycles/strudel/pull/699
|
||||
- add midi clock support by @felixroos in https://github.com/tidalcycles/strudel/pull/710
|
||||
|
||||
## hydra
|
||||
|
||||
[hydra](https://hydra.ojack.xyz), the live coding video synth [can now be used directly inside the strudel REPL](https://strudel.cc/learn/hydra/).
|
||||
|
||||
- Hydra integration by @felixroos in https://github.com/tidalcycles/strudel/pull/759
|
||||
- add options param to initHydra by @kasparsj in https://github.com/tidalcycles/strudel/pull/808
|
||||
- Hydra fixes and improvements by @atfornes in https://github.com/tidalcycles/strudel/pull/818
|
||||
|
||||
## Vanilla REPL
|
||||
|
||||
The codemirror editor and the repl abstraction have been refactored from react to vanilla JS!
|
||||
This should give some performance improvements and less dependency / maintenance burden:
|
||||
|
||||
- Vanilla repl 2 by @felixroos in https://github.com/tidalcycles/strudel/pull/863
|
||||
- Vanilla repl 3 by @felixroos in https://github.com/tidalcycles/strudel/pull/865
|
||||
- more work on vanilla repl: repl web component + package + MicroRepl by @felixroos in https://github.com/tidalcycles/strudel/pull/866
|
||||
- main repl vanillification by @felixroos in https://github.com/tidalcycles/strudel/pull/873
|
||||
- final vanillification by @felixroos in https://github.com/tidalcycles/strudel/pull/876
|
||||
|
||||
## Doc Changes
|
||||
|
||||
Plenty of things have been added to the docs, including a [showcase of what people have been done with strudel](https://strudel.cc/intro/showcase/) and the new [Community Bakery](/bakery/)!
|
||||
|
||||
<details>
|
||||
<summary>show PRs</summary>
|
||||
|
||||
- Showcase by @felixroos in https://github.com/tidalcycles/strudel/pull/885
|
||||
- Recipes by @felixroos in https://github.com/tidalcycles/strudel/pull/742
|
||||
- Document striate function by @ilesinge in https://github.com/tidalcycles/strudel/pull/766
|
||||
- Document adsr function by @ilesinge in https://github.com/tidalcycles/strudel/pull/767
|
||||
- Add function params in reference tab by @ilesinge in https://github.com/tidalcycles/strudel/pull/785
|
||||
- Update first-sounds.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/794
|
||||
- Update recap.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/797
|
||||
- Update pattern-effects.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/796
|
||||
- Update first-effects.mdx by @bwagner in https://github.com/tidalcycles/strudel/pull/795
|
||||
- Document pianoroll by @ilesinge in https://github.com/tidalcycles/strudel/pull/784
|
||||
- Add doc for euclidLegatoRot, wordfall and slider by @ilesinge in https://github.com/tidalcycles/strudel/pull/801
|
||||
- Improve documentation for synonym functions by @ilesinge in https://github.com/tidalcycles/strudel/pull/800
|
||||
- Add and style algolia search by @ilesinge in https://github.com/tidalcycles/strudel/pull/827
|
||||
- Fix a typo by @drewgbarnes in https://github.com/tidalcycles/strudel/pull/830
|
||||
- add mastodon link by @felixroos in https://github.com/tidalcycles/strudel/pull/884
|
||||
- adds a blog by @felixroos in https://github.com/tidalcycles/strudel/pull/911
|
||||
- community bakery by @felixroos in https://github.com/tidalcycles/strudel/pull/923
|
||||
- Blog improvements by @felixroos in https://github.com/tidalcycles/strudel/pull/919
|
||||
- 2 years blog post by @felixroos in https://github.com/tidalcycles/strudel/pull/929
|
||||
|
||||
</details>
|
||||
|
||||
## Other Features
|
||||
|
||||
<details>
|
||||
<summary>There is a lot more</summary>
|
||||
|
||||
- mini notation: international alphabets support by @ilesinge in https://github.com/tidalcycles/strudel/pull/751
|
||||
- Add shabda shortcut by @ilesinge in https://github.com/tidalcycles/strudel/pull/740
|
||||
- add play function by @felixroos in https://github.com/tidalcycles/strudel/pull/758 (superseded by next)
|
||||
- tidal style d1 ... d9 functions + more by @felixroos in https://github.com/tidalcycles/strudel/pull/805
|
||||
- add vscode bindings by @Dsm0 in https://github.com/tidalcycles/strudel/pull/773
|
||||
- Implement optional hover tooltip with function documentation by @ilesinge in https://github.com/tidalcycles/strudel/pull/783
|
||||
- samples loading shortcuts: by @felixroos in https://github.com/tidalcycles/strudel/pull/788
|
||||
- add option to disable active line highlighting in Code Settings by @kasparsj in https://github.com/tidalcycles/strudel/pull/804
|
||||
- Color hsl by @felixroos in https://github.com/tidalcycles/strudel/pull/815
|
||||
- Patterns tab + Refactor Panel by @felixroos in https://github.com/tidalcycles/strudel/pull/769
|
||||
- patterns tab: import patterns + style by @felixroos in https://github.com/tidalcycles/strudel/pull/852
|
||||
- Export patterns + ui tweaks by @felixroos in https://github.com/tidalcycles/strudel/pull/855
|
||||
- Pattern organization by @felixroos in https://github.com/tidalcycles/strudel/pull/858
|
||||
- Sound Import from local file system by @daslyfe in https://github.com/tidalcycles/strudel/pull/839
|
||||
- bugfix: suspend and close exisiting audio context when changing interface by @daslyfe in https://github.com/tidalcycles/strudel/pull/882
|
||||
- add root mode for voicings by @felixroos in https://github.com/tidalcycles/strudel/pull/887
|
||||
- scales can now be anchored by @felixroos in https://github.com/tidalcycles/strudel/pull/888
|
||||
- add dough function for raw dsp by @felixroos in https://github.com/tidalcycles/strudel/pull/707 (experimental)
|
||||
- support mininotation '..' range operator, fixes #715 by @yaxu in https://github.com/tidalcycles/strudel/pull/716
|
||||
- Add pick and squeeze functions by @daslyfe in https://github.com/tidalcycles/strudel/pull/771
|
||||
- support , in < > by @felixroos in https://github.com/tidalcycles/strudel/pull/886
|
||||
- public sharing by @felixroos in https://github.com/tidalcycles/strudel/pull/910
|
||||
- pick, pickmod, inhabit, inhabitmod by @yaxu in https://github.com/tidalcycles/strudel/pull/921
|
||||
- Mini-notation additions towards tidal compatibility by @yaxu in https://github.com/tidalcycles/strudel/pull/926
|
||||
- add pickF and pickmodF by @geikha in https://github.com/tidalcycles/strudel/pull/924
|
||||
- Make splice cps-aware by @yaxu in https://github.com/tidalcycles/strudel/pull/932
|
||||
- Refactor cps functions by @felixroos in https://github.com/tidalcycles/strudel/pull/933
|
||||
- Add useful pattern selection behavior for performing. by @daslyfe in https://github.com/tidalcycles/strudel/pull/897
|
||||
|
||||
</details>
|
||||
|
||||
## Other Fixes
|
||||
|
||||
<details>
|
||||
<summary>show</summary>
|
||||
|
||||
- fix: finally repair envelopes by @felixroos in https://github.com/tidalcycles/strudel/pull/861
|
||||
- fix: reverb regenerate loophole by @felixroos in https://github.com/tidalcycles/strudel/pull/726
|
||||
- fix: reverb roomsize not required by @felixroos in https://github.com/tidalcycles/strudel/pull/731
|
||||
- fix: reverb sampleRate by @felixroos in https://github.com/tidalcycles/strudel/pull/732
|
||||
- consume n with scale by @felixroos in https://github.com/tidalcycles/strudel/pull/727
|
||||
- fix: hashes in urls by @felixroos in https://github.com/tidalcycles/strudel/pull/728
|
||||
- [Bug Fix] chooseWith: prevent pattern from stopping audio when selection is >= 1 or < 0 by @daslyfe in https://github.com/tidalcycles/strudel/pull/741
|
||||
- Fix addivite synthesis phases by @felixroos in https://github.com/tidalcycles/strudel/pull/762
|
||||
- fix: scale offset by @felixroos in https://github.com/tidalcycles/strudel/pull/764
|
||||
- fix zen mode logo overlap by @felixroos in https://github.com/tidalcycles/strudel/pull/760
|
||||
- fix: share copy to clipboard + alert by @felixroos in https://github.com/tidalcycles/strudel/pull/774
|
||||
- fix: style issues by @felixroos in https://github.com/tidalcycles/strudel/pull/781
|
||||
- Fix scope pos + document by @felixroos in https://github.com/tidalcycles/strudel/pull/786
|
||||
- don't use anchor links for reference by @felixroos in https://github.com/tidalcycles/strudel/pull/791
|
||||
- remove unwanted cm6 outline for strudelTheme by @kasparsj in https://github.com/tidalcycles/strudel/pull/802
|
||||
- FIXES: palindrome abc -> abccba by @bwagner in https://github.com/tidalcycles/strudel/pull/831
|
||||
- Bug Fix #119: Clock drift by @daslyfe in https://github.com/tidalcycles/strudel/pull/874
|
||||
- bugfix: sound select indexes out of bounds by @daslyfe in https://github.com/tidalcycles/strudel/pull/871
|
||||
- Error tolerance by @felixroos in https://github.com/tidalcycles/strudel/pull/880
|
||||
- fix: make sure n is never undefined before nanFallback by @felixroos in https://github.com/tidalcycles/strudel/pull/881
|
||||
- fix: invisible selection on vim + emacs mode by @felixroos in https://github.com/tidalcycles/strudel/pull/889
|
||||
- fix: autocomplete / tooltip code example bug by @felixroos in https://github.com/tidalcycles/strudel/pull/898
|
||||
- Fix examples page, piano() and a few workshop imgs by @shiyouganai in https://github.com/tidalcycles/strudel/pull/848
|
||||
- fix: trailing slash confusion by @felixroos in https://github.com/tidalcycles/strudel/pull/743
|
||||
- fix: try different trailing slash behavior by @felixroos in https://github.com/tidalcycles/strudel/pull/744
|
||||
- Fix krill build command in README by @ilesinge in https://github.com/tidalcycles/strudel/pull/748
|
||||
- Fix for #1. Enables named instruments for csoundm. by @gogins in https://github.com/tidalcycles/strudel/pull/662
|
||||
- fix: missing hash for links starting with / by @felixroos in https://github.com/tidalcycles/strudel/pull/845
|
||||
- fix: swatch png src by @felixroos in https://github.com/tidalcycles/strudel/pull/846
|
||||
- Fix edge case with rehype-urls and trailing slashes in image file paths by @shiyouganai in https://github.com/tidalcycles/strudel/pull/849
|
||||
- fix: multiple repls by @felixroos in https://github.com/tidalcycles/strudel/pull/813
|
||||
- Fix chunk, add fastChunk and repeatCycles by @yaxu in https://github.com/tidalcycles/strudel/pull/712
|
||||
- Update tauri.yml workflow file by @vasilymilovidov in https://github.com/tidalcycles/strudel/pull/705
|
||||
- vite-vanilla-repl readme fix by @felixroos in https://github.com/tidalcycles/strudel/pull/737
|
||||
- completely revert config mess by @felixroos in https://github.com/tidalcycles/strudel/pull/745
|
||||
- hopefully fix trainling slashes bug by @felixroos in https://github.com/tidalcycles/strudel/pull/753
|
||||
- Update vite pwa by @felixroos in https://github.com/tidalcycles/strudel/pull/772
|
||||
- Update to Astro 3 by @felixroos in https://github.com/tidalcycles/strudel/pull/775
|
||||
- support multiple named serial connections, change default baudrate by @yaxu in https://github.com/tidalcycles/strudel/pull/551
|
||||
- CHANGES: github action checkout v2 -> v4 by @bwagner in https://github.com/tidalcycles/strudel/pull/837
|
||||
- CHANGES: pin pnpm to version 8.3.1 by @bwagner in https://github.com/tidalcycles/strudel/pull/834
|
||||
- CHANGES: github action pnpm version from 7 to 8.3.1 by @bwagner in https://github.com/tidalcycles/strudel/pull/835
|
||||
- ADDS: JetBrains IDE files and directories to .gitignore by @bwagner in https://github.com/tidalcycles/strudel/pull/840
|
||||
- Prevent 404 on Algolia crawls by @ilesinge in https://github.com/tidalcycles/strudel/pull/838
|
||||
- Add in fixes from my fork to slashocalypse branch by @shiyouganai in https://github.com/tidalcycles/strudel/pull/843
|
||||
- improve slashing + base href behavior by @felixroos in https://github.com/tidalcycles/strudel/pull/842
|
||||
- CHANGES: pnpm 8.1.3 to 8.11.0 by @bwagner in https://github.com/tidalcycles/strudel/pull/850
|
||||
- add missing trailing slashes by @felixroos in https://github.com/tidalcycles/strudel/pull/860
|
||||
- move all examples to separate examples folder by @felixroos in https://github.com/tidalcycles/strudel/pull/878
|
||||
- Dependency update by @felixroos in https://github.com/tidalcycles/strudel/pull/879
|
||||
- Update Vite version so hot reload works properly with newest pnpm version by @daslyfe in https://github.com/tidalcycles/strudel/pull/892
|
||||
- prevent vite from complaining about additional exports in jsx files by @daslyfe in https://github.com/tidalcycles/strudel/pull/891
|
||||
- fix some build warnings by @felixroos in https://github.com/tidalcycles/strudel/pull/902
|
||||
- Remove hideHeader for better mobile UI and consistency by @rjulian in https://github.com/tidalcycles/strudel/pull/894
|
||||
- Fix: swatch/[name].png.js static path by @oscarbyrne in https://github.com/tidalcycles/strudel/pull/916
|
||||
- rename @strudel.cycles/_ packages to @strudel/_ by @felixroos in https://github.com/tidalcycles/strudel/pull/917
|
||||
- `pick` now accepts lookup tables, with alternate cycle squeezing behaviour as new `inhabit` function by @yaxu in https://github.com/tidalcycles/strudel/pull/918
|
||||
- Revert "`pick` now accepts lookup tables, with alternate cycle squeezing behaviour as new `inhabit` function" by @yaxu in https://github.com/tidalcycles/strudel/pull/920
|
||||
- Fix pattern tab not showing patterns without created date by @daslyfe in https://github.com/tidalcycles/strudel/pull/934
|
||||
|
||||
</details>
|
||||
|
||||
## New Contributors
|
||||
|
||||
- @ilesinge made their first contribution in https://github.com/tidalcycles/strudel/pull/748
|
||||
- @Dsm0 made their first contribution in https://github.com/tidalcycles/strudel/pull/773
|
||||
- @kasparsj made their first contribution in https://github.com/tidalcycles/strudel/pull/802
|
||||
- @atfornes made their first contribution in https://github.com/tidalcycles/strudel/pull/818
|
||||
- @drewgbarnes made their first contribution in https://github.com/tidalcycles/strudel/pull/830
|
||||
- @shiyouganai made their first contribution in https://github.com/tidalcycles/strudel/pull/843
|
||||
- @rjulian made their first contribution in https://github.com/tidalcycles/strudel/pull/894
|
||||
- @fnordomat made their first contribution in https://github.com/tidalcycles/strudel/pull/907
|
||||
- @oscarbyrne made their first contribution in https://github.com/tidalcycles/strudel/pull/916
|
||||
- @geikha made their first contribution in https://github.com/tidalcycles/strudel/pull/924
|
||||
|
||||
**Full Changelog**: https://github.com/tidalcycles/strudel/compare/v0.9.0...v1.0.0
|
||||
@@ -139,7 +139,7 @@ The content of a sequence will be squished into what's called a cycle.
|
||||
|
||||
cpm = cycles per minute
|
||||
|
||||
By default, the tempo is 60 cycles per minute = 1 cycle per second.
|
||||
By default, the tempo is 30 cycles per minute = 1 half cycle per second.
|
||||
|
||||
</Box>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user