mirror of
https://codeberg.org/uzu/strudel
synced 2026-07-18 08:36:06 -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)
|
[](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>
|
- Try it here: <https://strudel.cc>
|
||||||
- Docs: <https://strudel.cc/learn>
|
- Docs: <https://strudel.cc/learn>
|
||||||
- Technical Blog Post: <https://loophole-letters.vercel.app/strudel>
|
- Technical Blog Post: <https://loophole-letters.vercel.app/strudel>
|
||||||
- 1 Year of Strudel Blog Post: <https://loophole-letters.vercel.app/strudel1year>
|
- 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
|
## Running Locally
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
{
|
{
|
||||||
"name": "@strudel/codemirror",
|
"name": "@strudel/codemirror",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "Codemirror Extensions for Strudel",
|
"description": "Codemirror Extensions for Strudel",
|
||||||
"main": "index.mjs",
|
"main": "index.mjs",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'index.mjs'),
|
entry: resolve(__dirname, 'index.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: [...Object.keys(dependencies)],
|
external: [...Object.keys(dependencies)],
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "@strudel/core",
|
"name": "@strudel/core",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "Port of Tidal Cycles to JavaScript",
|
"description": "Port of Tidal Cycles to JavaScript",
|
||||||
"main": "index.mjs",
|
"main": "index.mjs",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "vitest run",
|
"test": "vitest run",
|
||||||
|
|||||||
@@ -160,8 +160,13 @@ export function pianoroll({
|
|||||||
maxMidi = max;
|
maxMidi = max;
|
||||||
valueExtent = maxMidi - minMidi + 1;
|
valueExtent = maxMidi - minMidi + 1;
|
||||||
}
|
}
|
||||||
// foldValues = values.sort((a, b) => a - b);
|
foldValues = values.sort((a, b) =>
|
||||||
foldValues = values.sort((a, b) => String(a).localeCompare(String(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;
|
barThickness = fold ? valueAxis / foldValues.length : valueAxis / valueExtent;
|
||||||
ctx.fillStyle = background;
|
ctx.fillStyle = background;
|
||||||
ctx.globalAlpha = 1; // reset!
|
ctx.globalAlpha = 1; // reset!
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'index.mjs'),
|
entry: resolve(__dirname, 'index.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: [...Object.keys(dependencies)],
|
external: [...Object.keys(dependencies)],
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "@strudel/csound",
|
"name": "@strudel/csound",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "csound bindings for strudel",
|
"description": "csound bindings for strudel",
|
||||||
"main": "index.mjs",
|
"main": "index.mjs",
|
||||||
|
"type": "module",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'index.mjs'),
|
entry: resolve(__dirname, 'index.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: [...Object.keys(dependencies)],
|
external: [...Object.keys(dependencies)],
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "@strudel/hydra",
|
"name": "@strudel/hydra",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "Hydra integration for strudel",
|
"description": "Hydra integration for strudel",
|
||||||
"main": "hydra.mjs",
|
"main": "hydra.mjs",
|
||||||
|
"type": "module",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"server": "node server.js",
|
"server": "node server.js",
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'hydra.mjs'),
|
entry: resolve(__dirname, 'hydra.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: [...Object.keys(dependencies)],
|
external: [...Object.keys(dependencies)],
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "@strudel/midi",
|
"name": "@strudel/midi",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "Midi API for strudel",
|
"description": "Midi API for strudel",
|
||||||
"main": "index.mjs",
|
"main": "index.mjs",
|
||||||
|
"type": "module",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'index.mjs'),
|
entry: resolve(__dirname, 'index.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: [...Object.keys(dependencies)],
|
external: [...Object.keys(dependencies)],
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "@strudel/mini",
|
"name": "@strudel/mini",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "Mini notation for strudel",
|
"description": "Mini notation for strudel",
|
||||||
"main": "index.mjs",
|
"main": "index.mjs",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "vitest run",
|
"test": "vitest run",
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'index.mjs'),
|
entry: resolve(__dirname, 'index.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: [...Object.keys(dependencies)],
|
external: [...Object.keys(dependencies)],
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "@strudel/osc",
|
"name": "@strudel/osc",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "OSC messaging for strudel",
|
"description": "OSC messaging for strudel",
|
||||||
"main": "osc.mjs",
|
"main": "osc.mjs",
|
||||||
|
"type": "module",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"server": "node server.js",
|
"server": "node server.js",
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'osc.mjs'),
|
entry: resolve(__dirname, 'osc.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: [...Object.keys(dependencies)],
|
external: [...Object.keys(dependencies)],
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
# @strudel/repl
|
# @strudel/repl
|
||||||
|
|
||||||
The Strudel REPL as a web component.
|
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",
|
"name": "@strudel/repl",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "Strudel REPL as a Web Component",
|
"description": "Strudel REPL as a Web Component",
|
||||||
"main": "index.mjs",
|
"main": "index.mjs",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "@strudel/serial",
|
"name": "@strudel/serial",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "Webserial API for strudel",
|
"description": "Webserial API for strudel",
|
||||||
"main": "serial.mjs",
|
"main": "serial.mjs",
|
||||||
|
"type": "module",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'serial.mjs'),
|
entry: resolve(__dirname, 'serial.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: [...Object.keys(dependencies)],
|
external: [...Object.keys(dependencies)],
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
{
|
{
|
||||||
"name": "@strudel/soundfonts",
|
"name": "@strudel/soundfonts",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "Soundsfont support for strudel",
|
"description": "Soundsfont support for strudel",
|
||||||
"main": "index.mjs",
|
"main": "index.mjs",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'index.mjs'),
|
entry: resolve(__dirname, 'index.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: [...Object.keys(dependencies)],
|
external: [...Object.keys(dependencies)],
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "superdough",
|
"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.",
|
"description": "simple web audio synth and sampler intended for live coding. inspired by superdirt and webdirt.",
|
||||||
"main": "index.mjs",
|
"main": "index.mjs",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.cjs",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"directories": {
|
"directories": {
|
||||||
"example": "examples"
|
"example": "examples"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'index.mjs'),
|
entry: resolve(__dirname, 'index.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.cjs' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.cjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
{
|
{
|
||||||
"name": "@strudel/tonal",
|
"name": "@strudel/tonal",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "Tonal functions for strudel",
|
"description": "Tonal functions for strudel",
|
||||||
"main": "index.mjs",
|
"main": "index.mjs",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'index.mjs'),
|
entry: resolve(__dirname, 'index.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: [...Object.keys(dependencies)],
|
external: [...Object.keys(dependencies)],
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "@strudel/transpiler",
|
"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.",
|
"description": "Transpiler for strudel user code. Converts syntactically correct but semantically meaningless JS into evaluatable strudel code.",
|
||||||
"main": "index.mjs",
|
"main": "index.mjs",
|
||||||
|
"type": "module",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'index.mjs'),
|
entry: resolve(__dirname, 'index.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: [...Object.keys(dependencies)],
|
external: [...Object.keys(dependencies)],
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
{
|
{
|
||||||
"name": "@strudel/web",
|
"name": "@strudel/web",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "Easy to setup, opiniated bundle of Strudel for the browser.",
|
"description": "Easy to setup, opiniated bundle of Strudel for the browser.",
|
||||||
"main": "web.mjs",
|
"main": "web.mjs",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'web.mjs'),
|
entry: resolve(__dirname, 'web.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: [...Object.keys(dependencies)],
|
external: [...Object.keys(dependencies)],
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@strudel/webaudio",
|
"name": "@strudel/webaudio",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "Web Audio helpers for Strudel",
|
"description": "Web Audio helpers for Strudel",
|
||||||
"main": "index.mjs",
|
"main": "index.mjs",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
@@ -8,8 +8,7 @@
|
|||||||
"example": "examples"
|
"example": "examples"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"example": "npx parcel examples/repl.html",
|
"example": "npx parcel examples/repl.html",
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'index.mjs'),
|
entry: resolve(__dirname, 'index.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: [...Object.keys(dependencies)],
|
external: [...Object.keys(dependencies)],
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "@strudel/xen",
|
"name": "@strudel/xen",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "Xenharmonic API for strudel",
|
"description": "Xenharmonic API for strudel",
|
||||||
"main": "index.mjs",
|
"main": "index.mjs",
|
||||||
|
"type": "module",
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.mjs"
|
||||||
"module": "dist/index.mjs"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ export default defineConfig({
|
|||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
entry: resolve(__dirname, 'index.mjs'),
|
entry: resolve(__dirname, 'index.mjs'),
|
||||||
formats: ['es', 'cjs'],
|
formats: ['es'],
|
||||||
fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' })[ext],
|
fileName: (ext) => ({ es: 'index.mjs' })[ext],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: [...Object.keys(dependencies)],
|
external: [...Object.keys(dependencies)],
|
||||||
|
|||||||
Vendored
+7
@@ -262,6 +262,13 @@ declare module 'astro:content' {
|
|||||||
collection: "blog";
|
collection: "blog";
|
||||||
data: InferEntrySchema<"blog">
|
data: InferEntrySchema<"blog">
|
||||||
} & { render(): Render[".mdx"] };
|
} & { 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": {
|
"year-2.mdx": {
|
||||||
id: "year-2.mdx";
|
id: "year-2.mdx";
|
||||||
slug: "year-2";
|
slug: "year-2";
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 'Release Notes v0.0.2 Schwindlig'
|
title: 'Release Notes v0.0.2'
|
||||||
description: ''
|
description: ''
|
||||||
date: '2022-03-28'
|
date: '2022-03-28'
|
||||||
tags: ['meta']
|
tags: ['meta']
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 'Release Notes v0.0.3 Stürmisch'
|
title: 'Release Notes v0.0.3'
|
||||||
date: '2022-05-20'
|
date: '2022-05-20'
|
||||||
tags: ['meta']
|
tags: ['meta']
|
||||||
author: froos
|
author: froos
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 'Release Notes v0.0.3 Maelstrom'
|
title: 'Release Notes v0.0.3'
|
||||||
description: ''
|
description: ''
|
||||||
date: '2022-06-18'
|
date: '2022-06-18'
|
||||||
tags: ['meta']
|
tags: ['meta']
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 'Release Notes v0.0.4 Gischt'
|
title: 'Release Notes v0.0.4'
|
||||||
description: ''
|
description: ''
|
||||||
date: '2022-08-14'
|
date: '2022-08-14'
|
||||||
tags: ['meta']
|
tags: ['meta']
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 'Release Notes v0.3.0 Donauwelle'
|
title: 'Release Notes v0.3.0'
|
||||||
description: ''
|
description: ''
|
||||||
date: '2022-11-06'
|
date: '2022-11-06'
|
||||||
tags: ['meta']
|
tags: ['meta']
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 'Release Notes v0.4.0 Brandung'
|
title: 'Release Notes v0.4.0'
|
||||||
description: ''
|
description: ''
|
||||||
date: '2022-11-13'
|
date: '2022-11-13'
|
||||||
tags: ['meta']
|
tags: ['meta']
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 'Release Notes v0.5.0 Wirbel'
|
title: 'Release Notes v0.5.0'
|
||||||
description: ''
|
description: ''
|
||||||
date: '2022-12-13'
|
date: '2022-12-13'
|
||||||
tags: ['meta']
|
tags: ['meta']
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 'Release Notes v0.6.0 Zimtschnecke'
|
title: 'Release Notes v0.6.0'
|
||||||
description: ''
|
description: ''
|
||||||
date: '2023-02-01'
|
date: '2023-02-01'
|
||||||
tags: ['meta']
|
tags: ['meta']
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 'Release Notes v0.7.0 Zuckerguss'
|
title: 'Release Notes v0.7.0'
|
||||||
description: ''
|
description: ''
|
||||||
date: '2023-03-23'
|
date: '2023-03-23'
|
||||||
tags: ['meta']
|
tags: ['meta']
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 'Release Notes v0.8.0 Himbeermuffin'
|
title: 'Release Notes v0.8.0'
|
||||||
description: ''
|
description: ''
|
||||||
date: '2023-06-30'
|
date: '2023-06-30'
|
||||||
tags: ['meta']
|
tags: ['meta']
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 'Release Notes v0.9.0 Bananenbrot'
|
title: 'Release Notes v0.9.0'
|
||||||
description: ''
|
description: ''
|
||||||
date: '2023-09-17'
|
date: '2023-09-17'
|
||||||
tags: ['meta']
|
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
|
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>
|
</Box>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user