the big rename: @strudel.cycles/* -> @strudel/*

This commit is contained in:
Felix Roos 2024-01-18 09:54:37 +01:00
parent b10612da5c
commit 96bafa7f0b
90 changed files with 369 additions and 396 deletions

View File

@ -114,7 +114,7 @@ You can run the same check with `pnpm check`
## Package Workflow ## Package Workflow
The project is split into multiple [packages](https://github.com/tidalcycles/strudel/tree/main/packages) with independent versioning. The project is split into multiple [packages](https://github.com/tidalcycles/strudel/tree/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.cycles/<package-name>` to get the local version, 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. allowing to develop multiple packages at the same time.
## Package Publishing ## Package Publishing

View File

@ -7,7 +7,7 @@
/> />
<div id="output"></div> <div id="output"></div>
<script type="module"> <script type="module">
const strudel = await import('https://cdn.skypack.dev/@strudel.cycles/core@0.6.8'); 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 Object.assign(window, strudel); // assign all strudel functions to global scope to use with eval
const input = document.getElementById('text'); const input = document.getElementById('text');
const getEvents = () => { const getEvents = () => {

View File

@ -8,7 +8,7 @@
/> />
<canvas id="canvas"></canvas> <canvas id="canvas"></canvas>
<script type="module"> <script type="module">
const strudel = await import('https://cdn.skypack.dev/@strudel.cycles/core@0.6.8'); 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 // this adds all strudel functions to the global scope, to be used by eval
Object.assign(window, strudel); Object.assign(window, strudel);
// setup elements // setup elements

View File

@ -1,11 +1,11 @@
import { StrudelMirror } from '@strudel/codemirror'; import { StrudelMirror } from '@strudel/codemirror';
import { funk42 } from './tunes'; import { funk42 } from './tunes';
import { drawPianoroll, evalScope, controls } from '@strudel.cycles/core'; import { drawPianoroll, evalScope, controls } from '@strudel/core';
import './style.css'; import './style.css';
import { initAudioOnFirstClick } from '@strudel.cycles/webaudio'; import { initAudioOnFirstClick } from '@strudel/webaudio';
import { transpiler } from '@strudel.cycles/transpiler'; import { transpiler } from '@strudel/transpiler';
import { getAudioContext, webaudioOutput, registerSynthSounds } from '@strudel.cycles/webaudio'; import { getAudioContext, webaudioOutput, registerSynthSounds } from '@strudel/webaudio';
import { registerSoundfonts } from '@strudel.cycles/soundfonts'; import { registerSoundfonts } from '@strudel/soundfonts';
// init canvas // init canvas
const canvas = document.getElementById('roll'); const canvas = document.getElementById('roll');
@ -26,10 +26,10 @@ const editor = new StrudelMirror({
initAudioOnFirstClick(); // needed to make the browser happy (don't await this here..) initAudioOnFirstClick(); // needed to make the browser happy (don't await this here..)
const loadModules = evalScope( const loadModules = evalScope(
controls, controls,
import('@strudel.cycles/core'), import('@strudel/core'),
import('@strudel.cycles/mini'), import('@strudel/mini'),
import('@strudel.cycles/tonal'), import('@strudel/tonal'),
import('@strudel.cycles/webaudio'), import('@strudel/webaudio'),
); );
await Promise.all([loadModules, registerSynthSounds(), registerSoundfonts()]); await Promise.all([loadModules, registerSynthSounds(), registerSoundfonts()]);
}, },

View File

@ -13,11 +13,11 @@
}, },
"dependencies": { "dependencies": {
"@strudel/codemirror": "workspace:*", "@strudel/codemirror": "workspace:*",
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"@strudel.cycles/mini": "workspace:*", "@strudel/mini": "workspace:*",
"@strudel.cycles/soundfonts": "workspace:*", "@strudel/soundfonts": "workspace:*",
"@strudel.cycles/tonal": "workspace:*", "@strudel/tonal": "workspace:*",
"@strudel.cycles/transpiler": "workspace:*", "@strudel/transpiler": "workspace:*",
"@strudel.cycles/webaudio": "workspace:*" "@strudel/webaudio": "workspace:*"
} }
} }

View File

@ -1,6 +1,6 @@
import { controls, repl, evalScope } from '@strudel.cycles/core'; import { controls, repl, evalScope } from '@strudel/core';
import { getAudioContext, webaudioOutput, initAudioOnFirstClick } from '@strudel.cycles/webaudio'; import { getAudioContext, webaudioOutput, initAudioOnFirstClick } from '@strudel/webaudio';
import { transpiler } from '@strudel.cycles/transpiler'; import { transpiler } from '@strudel/transpiler';
import tune from './tune.mjs'; import tune from './tune.mjs';
const ctx = getAudioContext(); const ctx = getAudioContext();
@ -10,10 +10,10 @@ initAudioOnFirstClick();
evalScope( evalScope(
controls, controls,
import('@strudel.cycles/core'), import('@strudel/core'),
import('@strudel.cycles/mini'), import('@strudel/mini'),
import('@strudel.cycles/webaudio'), import('@strudel/webaudio'),
import('@strudel.cycles/tonal'), import('@strudel/tonal'),
); );
const { evaluate } = repl({ const { evaluate } = repl({

View File

@ -13,10 +13,10 @@
"vite": "^5.0.10" "vite": "^5.0.10"
}, },
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"@strudel.cycles/mini": "workspace:*", "@strudel/mini": "workspace:*",
"@strudel.cycles/transpiler": "workspace:*", "@strudel/transpiler": "workspace:*",
"@strudel.cycles/webaudio": "workspace:*", "@strudel/webaudio": "workspace:*",
"@strudel.cycles/tonal": "workspace:*" "@strudel/tonal": "workspace:*"
} }
} }

View File

@ -1,5 +1,5 @@
{ {
"name": "@strudel.cycles/monorepo", "name": "@strudel/monorepo",
"version": "0.5.0", "version": "0.5.0",
"private": true, "private": true,
"description": "Port of tidalcycles to javascript", "description": "Port of tidalcycles to javascript",
@ -45,12 +45,12 @@
}, },
"homepage": "https://strudel.cc", "homepage": "https://strudel.cc",
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"@strudel.cycles/mini": "workspace:*", "@strudel/mini": "workspace:*",
"@strudel.cycles/tonal": "workspace:*", "@strudel/tonal": "workspace:*",
"@strudel.cycles/transpiler": "workspace:*", "@strudel/transpiler": "workspace:*",
"@strudel.cycles/webaudio": "workspace:*", "@strudel/webaudio": "workspace:*",
"@strudel.cycles/xen": "workspace:*" "@strudel/xen": "workspace:*"
}, },
"devDependencies": { "devDependencies": {
"dependency-tree": "^10.0.9", "dependency-tree": "^10.0.9",

View File

@ -1,5 +1,5 @@
# Packages # Packages
Each folder represents one of the @strudel.cycles/* packages [published to npm](https://www.npmjs.com/org/strudel.cycles). Each folder represents one of the @strudel/* packages [published to npm](https://www.npmjs.com/org/strudel).
To understand how those pieces connect, refer to the [Technical Manual](https://github.com/tidalcycles/strudel/wiki/Technical-Manual) or the individual READMEs. To understand how those pieces connect, refer to the [Technical Manual](https://github.com/tidalcycles/strudel/wiki/Technical-Manual) or the individual READMEs.

View File

@ -12,7 +12,7 @@ import {
lineNumbers, lineNumbers,
drawSelection, drawSelection,
} from '@codemirror/view'; } from '@codemirror/view';
import { Pattern, Drawer, repl, cleanupDraw } from '@strudel.cycles/core'; import { Pattern, Drawer, repl, cleanupDraw } from '@strudel/core';
import { isAutoCompletionEnabled } from './autocomplete.mjs'; import { isAutoCompletionEnabled } from './autocomplete.mjs';
import { isTooltipEnabled } from './tooltip.mjs'; import { isTooltipEnabled } from './tooltip.mjs';
import { flash, isFlashEnabled } from './flash.mjs'; import { flash, isFlashEnabled } from './flash.mjs';

View File

@ -45,7 +45,7 @@
"@replit/codemirror-emacs": "^6.0.1", "@replit/codemirror-emacs": "^6.0.1",
"@replit/codemirror-vim": "^6.1.0", "@replit/codemirror-vim": "^6.1.0",
"@replit/codemirror-vscode-keymap": "^6.0.2", "@replit/codemirror-vscode-keymap": "^6.0.2",
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"@uiw/codemirror-themes": "^4.21.21", "@uiw/codemirror-themes": "^4.21.21",
"@uiw/codemirror-themes-all": "^4.21.21", "@uiw/codemirror-themes-all": "^4.21.21",
"nanostores": "^0.9.5" "nanostores": "^0.9.5"

View File

@ -1,4 +1,4 @@
import { ref, pure } from '@strudel.cycles/core'; import { ref, pure } from '@strudel/core';
import { WidgetType, ViewPlugin, Decoration } from '@codemirror/view'; import { WidgetType, ViewPlugin, Decoration } from '@codemirror/view';
import { StateEffect, StateField } from '@codemirror/state'; import { StateEffect, StateField } from '@codemirror/state';

View File

@ -1,19 +1,17 @@
# @strudel.cycles/core # @strudel/core
**DEPRECATION NOTE**: This package is old and won't get any updates! The newer version goes by the name of [@strudel/core](https://www.npmjs.com/package/@strudel/core).
This package contains the bare essence of strudel. This package contains the bare essence of strudel.
## Install ## Install
```sh ```sh
npm i @strudel.cycles/core --save npm i @strudel/core --save
``` ```
## Example ## Example
```js ```js
import { sequence } from '@strudel.cycles/core'; import { sequence } from '@strudel/core';
const pattern = sequence('a', ['b', 'c']); const pattern = sequence('a', ['b', 'c']);
@ -35,7 +33,7 @@ b: 3/2 - 7/4
c: 7/4 - 2 c: 7/4 - 2
``` ```
- [play with @strudel.cycles/core on codesandbox](https://codesandbox.io/s/strudel-core-test-forked-9ywhv7?file=/src/index.js). - [play with @strudel/core on codesandbox](https://codesandbox.io/s/strudel-core-test-forked-9ywhv7?file=/src/index.js).
- [open color pattern example](https://raw.githack.com/tidalcycles/strudel/main/packages/core/examples/canvas.html) - [open color pattern example](https://raw.githack.com/tidalcycles/strudel/main/packages/core/examples/canvas.html)
- [open minimal repl example](https://raw.githack.com/tidalcycles/strudel/main/packages/core/examples/vanilla.html) - [open minimal repl example](https://raw.githack.com/tidalcycles/strudel/main/packages/core/examples/vanilla.html)
- [open minimal vite example](./examples/vite-vanilla-repl/) - [open minimal vite example](./examples/vite-vanilla-repl/)

View File

@ -30,12 +30,12 @@ export { default as drawLine } from './drawLine.mjs';
// below won't work with runtime.mjs (json import fails) // below won't work with runtime.mjs (json import fails)
/* import * as p from './package.json'; /* import * as p from './package.json';
export const version = p.version; */ export const version = p.version; */
logger('🌀 @strudel.cycles/core loaded 🌀'); logger('🌀 @strudel/core loaded 🌀');
if (globalThis._strudelLoaded) { if (globalThis._strudelLoaded) {
console.warn( console.warn(
`@strudel.cycles/core was loaded more than once... `@strudel/core was loaded more than once...
This might happen when you have multiple versions of strudel installed. This might happen when you have multiple versions of strudel installed.
Please check with "npm ls @strudel.cycles/core".`, Please check with "npm ls @strudel/core".`,
); );
} }
globalThis._strudelLoaded = true; globalThis._strudelLoaded = true;

View File

@ -1,5 +1,5 @@
{ {
"name": "@strudel.cycles/core", "name": "@strudel/core",
"version": "0.10.0", "version": "0.10.0",
"description": "Port of Tidal Cycles to JavaScript", "description": "Port of Tidal Cycles to JavaScript",
"main": "index.mjs", "main": "index.mjs",

View File

@ -1154,8 +1154,8 @@ export function isPattern(thing) {
/* if (!thing instanceof Pattern) { /* if (!thing instanceof Pattern) {
console.warn( console.warn(
`Found Pattern that fails "instanceof Pattern" check. `Found Pattern that fails "instanceof Pattern" check.
This may happen if you are using multiple versions of @strudel.cycles/core. This may happen if you are using multiple versions of @strudel/core.
Please check by running "npm ls @strudel.cycles/core".`, Please check by running "npm ls @strudel/core".`,
); );
console.log(thing); console.log(thing);
} */ } */

View File

@ -1,3 +1 @@
# @strudel.cycles/csound # @strudel/csound
**DEPRECATION NOTE**: This package is old and won't get any updates! The newer version goes by the name of [@strudel/csound](https://www.npmjs.com/package/@strudel/csound).

View File

@ -1,5 +1,5 @@
import { getFrequency, logger, register } from '@strudel.cycles/core'; import { getFrequency, logger, register } from '@strudel/core';
import { getAudioContext } from '@strudel.cycles/webaudio'; import { getAudioContext } from '@strudel/webaudio';
import csd from './project.csd?raw'; import csd from './project.csd?raw';
// import livecodeOrc from './livecode.orc?raw'; // import livecodeOrc from './livecode.orc?raw';
import presetsOrc from './presets.orc?raw'; import presetsOrc from './presets.orc?raw';

View File

@ -1,5 +1,5 @@
{ {
"name": "@strudel.cycles/csound", "name": "@strudel/csound",
"version": "0.10.0", "version": "0.10.0",
"description": "csound bindings for strudel", "description": "csound bindings for strudel",
"main": "index.mjs", "main": "index.mjs",
@ -33,8 +33,8 @@
"homepage": "https://github.com/tidalcycles/strudel#readme", "homepage": "https://github.com/tidalcycles/strudel#readme",
"dependencies": { "dependencies": {
"@csound/browser": "6.18.7", "@csound/browser": "6.18.7",
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"@strudel.cycles/webaudio": "workspace:*" "@strudel/webaudio": "workspace:*"
}, },
"devDependencies": { "devDependencies": {
"vite": "^5.0.10" "vite": "^5.0.10"

View File

@ -1,5 +1,5 @@
import { Invoke } from './utils.mjs'; import { Invoke } from './utils.mjs';
import { Pattern, noteToMidi } from '@strudel.cycles/core'; import { Pattern, noteToMidi } from '@strudel/core';
const ON_MESSAGE = 0x90; const ON_MESSAGE = 0x90;
const OFF_MESSAGE = 0x80; const OFF_MESSAGE = 0x80;

View File

@ -1,4 +1,4 @@
import { parseNumeral, Pattern } from '@strudel.cycles/core'; import { parseNumeral, Pattern } from '@strudel/core';
import { Invoke } from './utils.mjs'; import { Invoke } from './utils.mjs';
Pattern.prototype.osc = function () { Pattern.prototype.osc = function () {

View File

@ -22,7 +22,7 @@
"url": "https://github.com/tidalcycles/strudel/issues" "url": "https://github.com/tidalcycles/strudel/issues"
}, },
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"@tauri-apps/api": "^1.5.3" "@tauri-apps/api": "^1.5.3"
}, },
"homepage": "https://github.com/tidalcycles/strudel#readme" "homepage": "https://github.com/tidalcycles/strudel#readme"

View File

@ -1,15 +1,13 @@
# @strudel.cycles/embed # @strudel/embed
**DEPRECATION NOTE**: This package is old and won't get any updates! The newer version goes by the name of [@strudel/embed](https://www.npmjs.com/package/@strudel/embed).
This package contains a embeddable web component for the Strudel REPL. This package contains a embeddable web component for the Strudel REPL.
## Usage ## Usage
Either install with `npm i @strudel.cycles/embed` or just use a cdn to import the script: Either install with `npm i @strudel/embed` or just use a cdn to import the script:
```html ```html
<script src="https://unpkg.com/@strudel.cycles/embed@latest"></script> <script src="https://unpkg.com/@strudel/embed@latest"></script>
<strudel-repl> <strudel-repl>
<!-- <!--
note(`[[e5 [b4 c5] d5 [c5 b4]] note(`[[e5 [b4 c5] d5 [c5 b4]]

View File

@ -1,5 +1,5 @@
{ {
"name": "@strudel.cycles/embed", "name": "@strudel/embed",
"version": "0.10.0", "version": "0.10.0",
"description": "Embeddable Web Component to load a Strudel REPL into an iframe", "description": "Embeddable Web Component to load a Strudel REPL into an iframe",
"main": "embed.js", "main": "embed.js",

View File

@ -27,7 +27,7 @@ npm i @strudel/hydra
Then add the import to your evalScope: Then add the import to your evalScope:
```js ```js
import { evalScope } from '@strudel.cycles/core'; import { evalScope } from '@strudel/core';
evalScope( evalScope(
import('@strudel/hydra') import('@strudel/hydra')

View File

@ -1,4 +1,4 @@
import { getDrawContext } from '@strudel.cycles/core'; import { getDrawContext } from '@strudel/core';
let latestOptions; let latestOptions;

View File

@ -33,7 +33,7 @@
}, },
"homepage": "https://github.com/tidalcycles/strudel#readme", "homepage": "https://github.com/tidalcycles/strudel#readme",
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"hydra-synth": "^1.3.29" "hydra-synth": "^1.3.29"
}, },
"devDependencies": { "devDependencies": {

View File

@ -1,11 +1,9 @@
# @strudel.cycles/midi # @strudel/midi
**DEPRECATION NOTE**: This package is old and won't get any updates! The newer version goes by the name of [@strudel/midi](https://www.npmjs.com/package/@strudel/midi).
This package adds midi functionality to strudel Patterns. This package adds midi functionality to strudel Patterns.
## Install ## Install
```sh ```sh
npm i @strudel.cycles/midi --save npm i @strudel/midi --save
``` ```

View File

@ -5,8 +5,8 @@ This program is free software: you can redistribute it and/or modify it under th
*/ */
import * as _WebMidi from 'webmidi'; import * as _WebMidi from 'webmidi';
import { Pattern, isPattern, logger, ref } from '@strudel.cycles/core'; import { Pattern, isPattern, logger, ref } from '@strudel/core';
import { noteToMidi } from '@strudel.cycles/core'; import { noteToMidi } from '@strudel/core';
import { Note } from 'webmidi'; import { Note } from 'webmidi';
// if you use WebMidi from outside of this package, make sure to import that instance: // if you use WebMidi from outside of this package, make sure to import that instance:
export const { WebMidi } = _WebMidi; export const { WebMidi } = _WebMidi;

View File

@ -1,5 +1,5 @@
{ {
"name": "@strudel.cycles/midi", "name": "@strudel/midi",
"version": "0.10.0", "version": "0.10.0",
"description": "Midi API for strudel", "description": "Midi API for strudel",
"main": "index.mjs", "main": "index.mjs",
@ -29,8 +29,8 @@
}, },
"homepage": "https://github.com/tidalcycles/strudel#readme", "homepage": "https://github.com/tidalcycles/strudel#readme",
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"@strudel.cycles/webaudio": "workspace:*", "@strudel/webaudio": "workspace:*",
"webmidi": "^3.1.8" "webmidi": "^3.1.8"
}, },
"devDependencies": { "devDependencies": {

View File

@ -1,19 +1,17 @@
# @strudel.cycles/mini # @strudel/mini
**DEPRECATION NOTE**: This package is old and won't get any updates! The newer version goes by the name of [@strudel/mini](https://www.npmjs.com/package/@strudel/mini).
This package contains the mini notation parser and pattern generator. This package contains the mini notation parser and pattern generator.
## Install ## Install
```sh ```sh
npm i @strudel.cycles/mini --save npm i @strudel/mini --save
``` ```
## Example ## Example
```js ```js
import { mini } from '@strudel.cycles/mini'; import { mini } from '@strudel/mini';
const pattern = mini('a [b c*2]'); const pattern = mini('a [b c*2]');
@ -30,7 +28,7 @@ yields:
(7/8 -> 1/1, 7/8 -> 1/1, c) (7/8 -> 1/1, 7/8 -> 1/1, c)
``` ```
[Play with @strudel.cycles/mini codesandbox](https://codesandbox.io/s/strudel-mini-example-oe9wcu?file=/src/index.js) [Play with @strudel/mini codesandbox](https://codesandbox.io/s/strudel-mini-example-oe9wcu?file=/src/index.js)
## Mini Notation API ## Mini Notation API

View File

@ -5,7 +5,7 @@ This program is free software: you can redistribute it and/or modify it under th
*/ */
import * as krill from './krill-parser.js'; import * as krill from './krill-parser.js';
import * as strudel from '@strudel.cycles/core'; import * as strudel from '@strudel/core';
const randOffset = 0.0003; const randOffset = 0.0003;

View File

@ -1,5 +1,5 @@
{ {
"name": "@strudel.cycles/mini", "name": "@strudel/mini",
"version": "0.10.0", "version": "0.10.0",
"description": "Mini notation for strudel", "description": "Mini notation for strudel",
"main": "index.mjs", "main": "index.mjs",
@ -32,7 +32,7 @@
}, },
"homepage": "https://github.com/tidalcycles/strudel#readme", "homepage": "https://github.com/tidalcycles/strudel#readme",
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*" "@strudel/core": "workspace:*"
}, },
"devDependencies": { "devDependencies": {
"peggy": "^3.0.2", "peggy": "^3.0.2",

View File

@ -5,7 +5,7 @@ This program is free software: you can redistribute it and/or modify it under th
*/ */
import { getLeafLocation, getLeafLocations, mini, mini2ast } from '../mini.mjs'; import { getLeafLocation, getLeafLocations, mini, mini2ast } from '../mini.mjs';
import '@strudel.cycles/core/euclid.mjs'; import '@strudel/core/euclid.mjs';
import { describe, expect, it } from 'vitest'; import { describe, expect, it } from 'vitest';
describe('mini', () => { describe('mini', () => {

View File

@ -1,6 +1,4 @@
# @strudel.cycles/osc # @strudel/osc
**DEPRECATION NOTE**: This package is old and won't get any updates! The newer version goes by the name of [@strudel/osc](https://www.npmjs.com/package/@strudel/osc).
OSC output for strudel patterns! Currently only tested with super collider / super dirt. OSC output for strudel patterns! Currently only tested with super collider / super dirt.

View File

@ -6,7 +6,7 @@ This program is free software: you can redistribute it and/or modify it under th
import OSC from 'osc-js'; import OSC from 'osc-js';
import { logger, parseNumeral, Pattern } from '@strudel.cycles/core'; import { logger, parseNumeral, Pattern } from '@strudel/core';
let connection; // Promise<OSC> let connection; // Promise<OSC>
function connect() { function connect() {

View File

@ -1,5 +1,5 @@
{ {
"name": "@strudel.cycles/osc", "name": "@strudel/osc",
"version": "0.10.0", "version": "0.10.0",
"description": "OSC messaging for strudel", "description": "OSC messaging for strudel",
"main": "osc.mjs", "main": "osc.mjs",
@ -36,7 +36,7 @@
}, },
"homepage": "https://github.com/tidalcycles/strudel#readme", "homepage": "https://github.com/tidalcycles/strudel#readme",
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"osc-js": "^2.4.0" "osc-js": "^2.4.0"
}, },
"devDependencies": { "devDependencies": {

View File

@ -33,13 +33,13 @@
}, },
"homepage": "https://github.com/tidalcycles/strudel#readme", "homepage": "https://github.com/tidalcycles/strudel#readme",
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"@strudel.cycles/midi": "workspace:*", "@strudel/midi": "workspace:*",
"@strudel.cycles/mini": "workspace:*", "@strudel/mini": "workspace:*",
"@strudel.cycles/soundfonts": "workspace:*", "@strudel/soundfonts": "workspace:*",
"@strudel.cycles/tonal": "workspace:*", "@strudel/tonal": "workspace:*",
"@strudel.cycles/transpiler": "workspace:*", "@strudel/transpiler": "workspace:*",
"@strudel.cycles/webaudio": "workspace:*", "@strudel/webaudio": "workspace:*",
"@strudel/codemirror": "workspace:*", "@strudel/codemirror": "workspace:*",
"@strudel/hydra": "workspace:*" "@strudel/hydra": "workspace:*"
}, },

View File

@ -1,22 +1,22 @@
import { controls, noteToMidi, valueToMidi, Pattern, evalScope } from '@strudel.cycles/core'; import { controls, noteToMidi, valueToMidi, Pattern, evalScope } from '@strudel/core';
import { registerSynthSounds, registerZZFXSounds, samples } from '@strudel.cycles/webaudio'; import { registerSynthSounds, registerZZFXSounds, samples } from '@strudel/webaudio';
import * as core from '@strudel.cycles/core'; import * as core from '@strudel/core';
export async function prebake() { export async function prebake() {
const modulesLoading = evalScope( const modulesLoading = evalScope(
// import('@strudel.cycles/core'), // import('@strudel/core'),
core, core,
import('@strudel.cycles/mini'), import('@strudel/mini'),
import('@strudel.cycles/tonal'), import('@strudel/tonal'),
import('@strudel.cycles/webaudio'), import('@strudel/webaudio'),
import('@strudel/codemirror'), import('@strudel/codemirror'),
import('@strudel/hydra'), import('@strudel/hydra'),
import('@strudel.cycles/soundfonts'), import('@strudel/soundfonts'),
import('@strudel.cycles/midi'), import('@strudel/midi'),
// import('@strudel.cycles/xen'), // import('@strudel/xen'),
// import('@strudel.cycles/serial'), // import('@strudel/serial'),
// import('@strudel.cycles/csound'), // import('@strudel/csound'),
// import('@strudel.cycles/osc'), // import('@strudel/osc'),
controls, // sadly, this cannot be exported from core directly (yet) controls, // sadly, this cannot be exported from core directly (yet)
); );
// load samples // load samples
@ -26,10 +26,10 @@ export async function prebake() {
registerSynthSounds(), registerSynthSounds(),
registerZZFXSounds(), registerZZFXSounds(),
//registerSoundfonts(), //registerSoundfonts(),
// need dynamic import here, because importing @strudel.cycles/soundfonts fails on server: // need dynamic import here, because importing @strudel/soundfonts fails on server:
// => getting "window is not defined", as soon as "@strudel.cycles/soundfonts" is imported statically // => getting "window is not defined", as soon as "@strudel/soundfonts" is imported statically
// seems to be a problem with soundfont2 // seems to be a problem with soundfont2
import('@strudel.cycles/soundfonts').then(({ registerSoundfonts }) => registerSoundfonts()), import('@strudel/soundfonts').then(({ registerSoundfonts }) => registerSoundfonts()),
samples(`${ds}/tidal-drum-machines.json`), samples(`${ds}/tidal-drum-machines.json`),
samples(`${ds}/piano.json`), samples(`${ds}/piano.json`),
samples(`${ds}/Dirt-Samples.json`), samples(`${ds}/Dirt-Samples.json`),

View File

@ -1,6 +1,6 @@
import { getDrawContext, silence } from '@strudel.cycles/core'; import { getDrawContext, silence } from '@strudel/core';
import { transpiler } from '@strudel.cycles/transpiler'; import { transpiler } from '@strudel/transpiler';
import { getAudioContext, webaudioOutput } from '@strudel.cycles/webaudio'; import { getAudioContext, webaudioOutput } from '@strudel/webaudio';
import { StrudelMirror, codemirrorSettings } from '@strudel/codemirror'; import { StrudelMirror, codemirrorSettings } from '@strudel/codemirror';
import { prebake } from './prebake.mjs'; import { prebake } from './prebake.mjs';

View File

@ -1,5 +1,3 @@
# @strudel.cycles/serial # @strudel/serial
**DEPRECATION NOTE**: This package is old and won't get any updates! The newer version goes by the name of [@strudel/serial](https://www.npmjs.com/package/@strudel/serial).
This package adds webserial functionality to strudel Patterns, for e.g. sending messages to arduino microcontrollers. This package adds webserial functionality to strudel Patterns, for e.g. sending messages to arduino microcontrollers.

View File

@ -1,5 +1,5 @@
{ {
"name": "@strudel.cycles/serial", "name": "@strudel/serial",
"version": "0.10.0", "version": "0.10.0",
"description": "Webserial API for strudel", "description": "Webserial API for strudel",
"main": "serial.mjs", "main": "serial.mjs",
@ -29,7 +29,7 @@
}, },
"homepage": "https://github.com/tidalcycles/strudel#readme", "homepage": "https://github.com/tidalcycles/strudel#readme",
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*" "@strudel/core": "workspace:*"
}, },
"devDependencies": { "devDependencies": {
"vite": "^5.0.10" "vite": "^5.0.10"

View File

@ -4,7 +4,7 @@ Copyright (C) 2022 Strudel contributors - see <https://github.com/tidalcycles/st
This program is free software: you can redistribute it and/or modify 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 Affero General Public License for more details. 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/>. This program is free software: you can redistribute it and/or modify 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 Affero General Public License for more details. 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/>.
*/ */
import { Pattern, isPattern } from '@strudel.cycles/core'; import { Pattern, isPattern } from '@strudel/core';
var writeMessagers = {}; var writeMessagers = {};
var choosing = false; var choosing = false;

View File

@ -1,3 +1 @@
# @strudel.cycles/soundfonts # @strudel/soundfonts
**DEPRECATION NOTE**: This package is old and won't get any updates! The newer version goes by the name of [@strudel/soundfonts](https://www.npmjs.com/package/@strudel/soundfonts).

View File

@ -1,4 +1,4 @@
import { noteToMidi, freqToMidi, getSoundIndex } from '@strudel.cycles/core'; import { noteToMidi, freqToMidi, getSoundIndex } from '@strudel/core';
import { import {
getAudioContext, getAudioContext,
registerSound, registerSound,
@ -6,7 +6,7 @@ import {
getADSRValues, getADSRValues,
getPitchEnvelope, getPitchEnvelope,
getVibratoOscillator, getVibratoOscillator,
} from '@strudel.cycles/webaudio'; } from '@strudel/webaudio';
import gm from './gm.mjs'; import gm from './gm.mjs';
let loadCache = {}; let loadCache = {};

View File

@ -1,5 +1,5 @@
{ {
"name": "@strudel.cycles/soundfonts", "name": "@strudel/soundfonts",
"version": "0.10.0", "version": "0.10.0",
"description": "Soundsfont support for strudel", "description": "Soundsfont support for strudel",
"main": "index.mjs", "main": "index.mjs",
@ -30,8 +30,8 @@
}, },
"homepage": "https://github.com/tidalcycles/strudel#readme", "homepage": "https://github.com/tidalcycles/strudel#readme",
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"@strudel.cycles/webaudio": "workspace:*", "@strudel/webaudio": "workspace:*",
"sfumato": "^0.1.2", "sfumato": "^0.1.2",
"soundfont2": "^0.4.0" "soundfont2": "^0.4.0"
}, },

View File

@ -1,5 +1,5 @@
import { Pattern, getPlayableNoteValue, noteToMidi } from '@strudel.cycles/core'; import { Pattern, getPlayableNoteValue, noteToMidi } from '@strudel/core';
import { getAudioContext, registerSound } from '@strudel.cycles/webaudio'; import { getAudioContext, registerSound } from '@strudel/webaudio';
import { loadSoundfont as _loadSoundfont, startPresetNote } from 'sfumato'; import { loadSoundfont as _loadSoundfont, startPresetNote } from 'sfumato';
Pattern.prototype.soundfont = function (sf, n = 0) { Pattern.prototype.soundfont = function (sf, n = 0) {

View File

@ -1,20 +1,18 @@
# @strudel.cycles/tonal # @strudel/tonal
**DEPRECATION NOTE**: This package is old and won't get any updates! The newer version goes by the name of [@strudel/tonal](https://www.npmjs.com/package/@strudel/tonal).
This package adds tonal / harmonic functions to strudel Patterns. This package adds tonal / harmonic functions to strudel Patterns.
## Install ## Install
```sh ```sh
npm i @strudel.cycles/tonal --save npm i @strudel/tonal --save
``` ```
## Example ## Example
```js ```js
import { sequence } from '@strudel.cycles/core'; import { sequence } from '@strudel/core';
import '@strudel.cycles/tonal'; import '@strudel/tonal';
const pattern = sequence(0, [1, 2]).scale('C major'); const pattern = sequence(0, [1, 2]).scale('C major');
@ -29,7 +27,7 @@ yields:
(3/4 -> 1/1, 3/4 -> 1/1, E3) (3/4 -> 1/1, 3/4 -> 1/1, E3)
``` ```
[play with @strudel.cycles/tonal codesandbox](https://codesandbox.io/s/strudel-tonal-example-rgc5if?file=/src/index.js) [play with @strudel/tonal codesandbox](https://codesandbox.io/s/strudel-tonal-example-rgc5if?file=/src/index.js)
## Tonal API ## Tonal API

View File

@ -1,5 +1,5 @@
{ {
"name": "@strudel.cycles/tonal", "name": "@strudel/tonal",
"version": "0.10.0", "version": "0.10.0",
"description": "Tonal functions for strudel", "description": "Tonal functions for strudel",
"main": "index.mjs", "main": "index.mjs",
@ -31,7 +31,7 @@
}, },
"homepage": "https://github.com/tidalcycles/strudel#readme", "homepage": "https://github.com/tidalcycles/strudel#readme",
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"@tonaljs/tonal": "^4.7.2", "@tonaljs/tonal": "^4.7.2",
"chord-voicings": "^0.0.1", "chord-voicings": "^0.0.1",
"webmidi": "^3.1.8" "webmidi": "^3.1.8"

View File

@ -7,7 +7,7 @@ This program is free software: you can redistribute it and/or modify it under th
// import { strict as assert } from 'assert'; // import { strict as assert } from 'assert';
import '../tonal.mjs'; // need to import this to add prototypes import '../tonal.mjs'; // need to import this to add prototypes
import { pure, controls, seq } from '@strudel.cycles/core'; import { pure, controls, seq } from '@strudel/core';
import { describe, it, expect } from 'vitest'; import { describe, it, expect } from 'vitest';
import { mini } from '../../mini/mini.mjs'; import { mini } from '../../mini/mini.mjs';
const { n } = controls; const { n } = controls;

View File

@ -5,7 +5,7 @@ This program is free software: you can redistribute it and/or modify it under th
*/ */
import { Note, Interval, Scale } from '@tonaljs/tonal'; import { Note, Interval, Scale } from '@tonaljs/tonal';
import { register, _mod, silence, logger, pure, isNote } from '@strudel.cycles/core'; import { register, _mod, silence, logger, pure, isNote } from '@strudel/core';
import { stepInNamedScale } from './tonleiter.mjs'; import { stepInNamedScale } from './tonleiter.mjs';
const octavesInterval = (octaves) => (octaves <= 0 ? -1 : 1) + octaves * 7 + 'P'; const octavesInterval = (octaves) => (octaves <= 0 ? -1 : 1) + octaves * 7 + 'P';

View File

@ -1,4 +1,4 @@
import { isNote, isNoteWithOctave, _mod, noteToMidi, tokenizeNote } from '@strudel.cycles/core'; import { isNote, isNoteWithOctave, _mod, noteToMidi, tokenizeNote } from '@strudel/core';
import { Interval, Scale } from '@tonaljs/tonal'; import { Interval, Scale } from '@tonaljs/tonal';
// https://codesandbox.io/s/stateless-voicings-g2tmz0?file=/src/lib.js:0-2515 // https://codesandbox.io/s/stateless-voicings-g2tmz0?file=/src/lib.js:0-2515

View File

@ -4,7 +4,7 @@ Copyright (C) 2022 Strudel contributors - see <https://github.com/tidalcycles/st
This program is free software: you can redistribute it and/or modify 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 Affero General Public License for more details. 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/>. This program is free software: you can redistribute it and/or modify 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 Affero General Public License for more details. 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/>.
*/ */
import { stack, register, silence, logger } from '@strudel.cycles/core'; import { stack, register, silence, logger } from '@strudel/core';
import { renderVoicing } from './tonleiter.mjs'; import { renderVoicing } from './tonleiter.mjs';
import _voicings from 'chord-voicings'; import _voicings from 'chord-voicings';
import { complex, simple } from './ireal.mjs'; import { complex, simple } from './ireal.mjs';

View File

@ -1,6 +1,4 @@
# @strudel.cycles/transpiler # @strudel/transpiler
**DEPRECATION NOTE**: This package is old and won't get any updates! The newer version goes by the name of [@strudel/transpiler](https://www.npmjs.com/package/@strudel/transpiler).
This package contains a JS code transpiler with the following features: This package contains a JS code transpiler with the following features:
@ -11,14 +9,14 @@ This package contains a JS code transpiler with the following features:
## Install ## Install
```sh ```sh
npm i @strudel.cycles/transpiler npm i @strudel/transpiler
``` ```
## Use ## Use
```js ```js
import { transpiler } from '@strudel.cycles/core'; import { transpiler } from '@strudel/core';
import { evaluate } from '@strudel.cycles/core'; import { evaluate } from '@strudel/core';
transpiler('note("c3 [e3,g3]")', { wrapAsync: false, addReturn: false, simpleLocs: true }); transpiler('note("c3 [e3,g3]")', { wrapAsync: false, addReturn: false, simpleLocs: true });
/* mini('c3 [e3,g3]').withMiniLocation(7,17) */ /* mini('c3 [e3,g3]').withMiniLocation(7,17) */

View File

@ -1,4 +1,4 @@
import { evaluate as _evaluate } from '@strudel.cycles/core'; import { evaluate as _evaluate } from '@strudel/core';
import { transpiler } from './transpiler.mjs'; import { transpiler } from './transpiler.mjs';
export * from './transpiler.mjs'; export * from './transpiler.mjs';

View File

@ -1,5 +1,5 @@
{ {
"name": "@strudel.cycles/transpiler", "name": "@strudel/transpiler",
"version": "0.10.0", "version": "0.10.0",
"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",
@ -30,8 +30,8 @@
}, },
"homepage": "https://github.com/tidalcycles/strudel#readme", "homepage": "https://github.com/tidalcycles/strudel#readme",
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"@strudel.cycles/mini": "workspace:*", "@strudel/mini": "workspace:*",
"acorn": "^8.11.3", "acorn": "^8.11.3",
"escodegen": "^2.1.0", "escodegen": "^2.1.0",
"estree-walker": "^3.0.1" "estree-walker": "^3.0.1"

View File

@ -1,8 +1,8 @@
import escodegen from 'escodegen'; import escodegen from 'escodegen';
import { parse } from 'acorn'; import { parse } from 'acorn';
import { walk } from 'estree-walker'; import { walk } from 'estree-walker';
import { isNoteWithOctave } from '@strudel.cycles/core'; import { isNoteWithOctave } from '@strudel/core';
import { getLeafLocations } from '@strudel.cycles/mini'; import { getLeafLocations } from '@strudel/mini';
export function transpiler(input, options = {}) { export function transpiler(input, options = {}) {
const { wrapAsync = false, addReturn = true, emitMiniLocations = true, emitWidgets = true } = options; const { wrapAsync = false, addReturn = true, emitMiniLocations = true, emitWidgets = true } = options;

View File

@ -33,11 +33,11 @@
}, },
"homepage": "https://github.com/tidalcycles/strudel#readme", "homepage": "https://github.com/tidalcycles/strudel#readme",
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"@strudel.cycles/mini": "workspace:*", "@strudel/mini": "workspace:*",
"@strudel.cycles/tonal": "workspace:*", "@strudel/tonal": "workspace:*",
"@strudel.cycles/transpiler": "workspace:*", "@strudel/transpiler": "workspace:*",
"@strudel.cycles/webaudio": "workspace:*" "@strudel/webaudio": "workspace:*"
}, },
"devDependencies": { "devDependencies": {
"vite": "^5.0.10" "vite": "^5.0.10"

View File

@ -1,25 +1,25 @@
export * from '@strudel.cycles/core'; export * from '@strudel/core';
export * from '@strudel.cycles/webaudio'; export * from '@strudel/webaudio';
//export * from '@strudel.cycles/soundfonts'; //export * from '@strudel/soundfonts';
export * from '@strudel.cycles/transpiler'; export * from '@strudel/transpiler';
export * from '@strudel.cycles/mini'; export * from '@strudel/mini';
export * from '@strudel.cycles/tonal'; export * from '@strudel/tonal';
export * from '@strudel.cycles/webaudio'; export * from '@strudel/webaudio';
import { Pattern, evalScope, controls } from '@strudel.cycles/core'; import { Pattern, evalScope, controls } from '@strudel/core';
import { initAudioOnFirstClick, registerSynthSounds, webaudioScheduler } from '@strudel.cycles/webaudio'; import { initAudioOnFirstClick, registerSynthSounds, webaudioScheduler } from '@strudel/webaudio';
// import { registerSoundfonts } from '@strudel.cycles/soundfonts'; // import { registerSoundfonts } from '@strudel/soundfonts';
import { evaluate as _evaluate } from '@strudel.cycles/transpiler'; import { evaluate as _evaluate } from '@strudel/transpiler';
import { miniAllStrings } from '@strudel.cycles/mini'; import { miniAllStrings } from '@strudel/mini';
// init logic // init logic
export async function defaultPrebake() { export async function defaultPrebake() {
const loadModules = evalScope( const loadModules = evalScope(
evalScope, evalScope,
controls, controls,
import('@strudel.cycles/core'), import('@strudel/core'),
import('@strudel.cycles/mini'), import('@strudel/mini'),
import('@strudel.cycles/tonal'), import('@strudel/tonal'),
import('@strudel.cycles/webaudio'), import('@strudel/webaudio'),
{ hush, evaluate }, { hush, evaluate },
); );
await Promise.all([loadModules, registerSynthSounds() /* , registerSoundfonts() */]); await Promise.all([loadModules, registerSynthSounds() /* , registerSoundfonts() */]);

View File

@ -1,6 +1,4 @@
# @strudel.cycles/webaudio # @strudel/webaudio
**DEPRECATION NOTE**: This package is old and won't get any updates! The newer version goes by the name of [@strudel/webaudio](https://www.npmjs.com/package/@strudel/webaudio).
This package contains helpers to make music with strudel and the Web Audio API. This package contains helpers to make music with strudel and the Web Audio API.
It is a thin binding to [superdough](https://www.npmjs.com/package/superdough). It is a thin binding to [superdough](https://www.npmjs.com/package/superdough).
@ -8,14 +6,14 @@ It is a thin binding to [superdough](https://www.npmjs.com/package/superdough).
## Install ## Install
```sh ```sh
npm i @strudel.cycles/webaudio --save npm i @strudel/webaudio --save
``` ```
## Example ## Example
```js ```js
import { repl, controls } from "@strudel.cycles/core"; import { repl, controls } from "@strudel/core";
import { initAudioOnFirstClick, getAudioContext, webaudioOutput } from "@strudel.cycles/webaudio"; import { initAudioOnFirstClick, getAudioContext, webaudioOutput } from "@strudel/webaudio";
const { note } = controls; const { note } = controls;
initAudioOnFirstClick(); initAudioOnFirstClick();

View File

@ -1,5 +1,5 @@
{ {
"name": "@strudel.cycles/webaudio", "name": "@strudel/webaudio",
"version": "0.10.0", "version": "0.10.0",
"description": "Web Audio helpers for Strudel", "description": "Web Audio helpers for Strudel",
"main": "index.mjs", "main": "index.mjs",
@ -34,7 +34,7 @@
}, },
"homepage": "https://github.com/tidalcycles/strudel#readme", "homepage": "https://github.com/tidalcycles/strudel#readme",
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"superdough": "workspace:*" "superdough": "workspace:*"
}, },
"devDependencies": { "devDependencies": {

View File

@ -1,4 +1,4 @@
import { Pattern, getDrawContext, clamp } from '@strudel.cycles/core'; import { Pattern, getDrawContext, clamp } from '@strudel/core';
import { analyser, getAnalyzerData } from 'superdough'; import { analyser, getAnalyzerData } from 'superdough';
export function drawTimeScope( export function drawTimeScope(

View File

@ -4,7 +4,7 @@ Copyright (C) 2022 Strudel contributors - see <https://github.com/tidalcycles/st
This program is free software: you can redistribute it and/or modify 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 Affero General Public License for more details. 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/>. This program is free software: you can redistribute it and/or modify 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 Affero General Public License for more details. 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/>.
*/ */
import * as strudel from '@strudel.cycles/core'; import * as strudel from '@strudel/core';
import { superdough, getAudioContext, setLogger, doughTrigger } from 'superdough'; import { superdough, getAudioContext, setLogger, doughTrigger } from 'superdough';
const { Pattern, logger } = strudel; const { Pattern, logger } = strudel;

View File

@ -1,11 +1,9 @@
# @strudel.cycles/xen # @strudel/xen
**DEPRECATION NOTE**: This package is old and won't get any updates! The newer version goes by the name of [@strudel/xen](https://www.npmjs.com/package/@strudel/xen).
This package adds xenharmonic / microtonal functions to strudel Patterns. Further documentation + examples will follow. This package adds xenharmonic / microtonal functions to strudel Patterns. Further documentation + examples will follow.
## Install ## Install
```sh ```sh
npm i @strudel.cycles/xen --save npm i @strudel/xen --save
``` ```

View File

@ -1,5 +1,5 @@
{ {
"name": "@strudel.cycles/xen", "name": "@strudel/xen",
"version": "0.10.0", "version": "0.10.0",
"description": "Xenharmonic API for strudel", "description": "Xenharmonic API for strudel",
"main": "index.mjs", "main": "index.mjs",
@ -30,7 +30,7 @@
}, },
"homepage": "https://github.com/tidalcycles/strudel#readme", "homepage": "https://github.com/tidalcycles/strudel#readme",
"dependencies": { "dependencies": {
"@strudel.cycles/core": "workspace:*" "@strudel/core": "workspace:*"
}, },
"devDependencies": { "devDependencies": {
"vite": "^5.0.10", "vite": "^5.0.10",

View File

@ -5,7 +5,7 @@ This program is free software: you can redistribute it and/or modify it under th
*/ */
import Tune from './tunejs.js'; import Tune from './tunejs.js';
import { register } from '@strudel.cycles/core'; import { register } from '@strudel/core';
export const tune = register('tune', (scale, pat) => { export const tune = register('tune', (scale, pat) => {
const tune = new Tune(); const tune = new Tune();

View File

@ -4,7 +4,7 @@ Copyright (C) 2022 Strudel contributors - see <https://github.com/tidalcycles/st
This program is free software: you can redistribute it and/or modify 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 Affero General Public License for more details. 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/>. This program is free software: you can redistribute it and/or modify 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 Affero General Public License for more details. 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/>.
*/ */
import { register, _mod, parseNumeral } from '@strudel.cycles/core'; import { register, _mod, parseNumeral } from '@strudel/core';
export function edo(name) { export function edo(name) {
if (!/^[1-9]+[0-9]*edo$/.test(name)) { if (!/^[1-9]+[0-9]*edo$/.test(name)) {

210
pnpm-lock.yaml generated
View File

@ -8,22 +8,22 @@ importers:
.: .:
dependencies: dependencies:
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:packages/core version: link:packages/core
'@strudel.cycles/mini': '@strudel/mini':
specifier: workspace:* specifier: workspace:*
version: link:packages/mini version: link:packages/mini
'@strudel.cycles/tonal': '@strudel/tonal':
specifier: workspace:* specifier: workspace:*
version: link:packages/tonal version: link:packages/tonal
'@strudel.cycles/transpiler': '@strudel/transpiler':
specifier: workspace:* specifier: workspace:*
version: link:packages/transpiler version: link:packages/transpiler
'@strudel.cycles/webaudio': '@strudel/webaudio':
specifier: workspace:* specifier: workspace:*
version: link:packages/webaudio version: link:packages/webaudio
'@strudel.cycles/xen': '@strudel/xen':
specifier: workspace:* specifier: workspace:*
version: link:packages/xen version: link:packages/xen
devDependencies: devDependencies:
@ -72,27 +72,27 @@ importers:
examples/codemirror-repl: examples/codemirror-repl:
dependencies: dependencies:
'@strudel.cycles/core':
specifier: workspace:*
version: link:../../packages/core
'@strudel.cycles/mini':
specifier: workspace:*
version: link:../../packages/mini
'@strudel.cycles/soundfonts':
specifier: workspace:*
version: link:../../packages/soundfonts
'@strudel.cycles/tonal':
specifier: workspace:*
version: link:../../packages/tonal
'@strudel.cycles/transpiler':
specifier: workspace:*
version: link:../../packages/transpiler
'@strudel.cycles/webaudio':
specifier: workspace:*
version: link:../../packages/webaudio
'@strudel/codemirror': '@strudel/codemirror':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/codemirror version: link:../../packages/codemirror
'@strudel/core':
specifier: workspace:*
version: link:../../packages/core
'@strudel/mini':
specifier: workspace:*
version: link:../../packages/mini
'@strudel/soundfonts':
specifier: workspace:*
version: link:../../packages/soundfonts
'@strudel/tonal':
specifier: workspace:*
version: link:../../packages/tonal
'@strudel/transpiler':
specifier: workspace:*
version: link:../../packages/transpiler
'@strudel/webaudio':
specifier: workspace:*
version: link:../../packages/webaudio
devDependencies: devDependencies:
vite: vite:
specifier: ^5.0.10 specifier: ^5.0.10
@ -110,19 +110,19 @@ importers:
examples/minimal-repl: examples/minimal-repl:
dependencies: dependencies:
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/core version: link:../../packages/core
'@strudel.cycles/mini': '@strudel/mini':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/mini version: link:../../packages/mini
'@strudel.cycles/tonal': '@strudel/tonal':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/tonal version: link:../../packages/tonal
'@strudel.cycles/transpiler': '@strudel/transpiler':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/transpiler version: link:../../packages/transpiler
'@strudel.cycles/webaudio': '@strudel/webaudio':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/webaudio version: link:../../packages/webaudio
devDependencies: devDependencies:
@ -178,7 +178,7 @@ importers:
'@replit/codemirror-vscode-keymap': '@replit/codemirror-vscode-keymap':
specifier: ^6.0.2 specifier: ^6.0.2
version: 6.0.2(@codemirror/autocomplete@6.11.1)(@codemirror/commands@6.3.3)(@codemirror/language@6.10.0)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.5)(@codemirror/state@6.4.0)(@codemirror/view@6.23.0) version: 6.0.2(@codemirror/autocomplete@6.11.1)(@codemirror/commands@6.3.3)(@codemirror/language@6.10.0)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.5)(@codemirror/state@6.4.0)(@codemirror/view@6.23.0)
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
'@uiw/codemirror-themes': '@uiw/codemirror-themes':
@ -213,10 +213,10 @@ importers:
'@csound/browser': '@csound/browser':
specifier: 6.18.7 specifier: 6.18.7
version: 6.18.7(eslint@8.56.0) version: 6.18.7(eslint@8.56.0)
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
'@strudel.cycles/webaudio': '@strudel/webaudio':
specifier: workspace:* specifier: workspace:*
version: link:../webaudio version: link:../webaudio
devDependencies: devDependencies:
@ -226,7 +226,7 @@ importers:
packages/desktopbridge: packages/desktopbridge:
dependencies: dependencies:
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
'@tauri-apps/api': '@tauri-apps/api':
@ -237,7 +237,7 @@ importers:
packages/hydra: packages/hydra:
dependencies: dependencies:
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
hydra-synth: hydra-synth:
@ -253,10 +253,10 @@ importers:
packages/midi: packages/midi:
dependencies: dependencies:
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
'@strudel.cycles/webaudio': '@strudel/webaudio':
specifier: workspace:* specifier: workspace:*
version: link:../webaudio version: link:../webaudio
webmidi: webmidi:
@ -269,7 +269,7 @@ importers:
packages/mini: packages/mini:
dependencies: dependencies:
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
devDependencies: devDependencies:
@ -285,7 +285,7 @@ importers:
packages/osc: packages/osc:
dependencies: dependencies:
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
osc-js: osc-js:
@ -301,33 +301,33 @@ importers:
packages/repl: packages/repl:
dependencies: dependencies:
'@strudel.cycles/core':
specifier: workspace:*
version: link:../core
'@strudel.cycles/midi':
specifier: workspace:*
version: link:../midi
'@strudel.cycles/mini':
specifier: workspace:*
version: link:../mini
'@strudel.cycles/soundfonts':
specifier: workspace:*
version: link:../soundfonts
'@strudel.cycles/tonal':
specifier: workspace:*
version: link:../tonal
'@strudel.cycles/transpiler':
specifier: workspace:*
version: link:../transpiler
'@strudel.cycles/webaudio':
specifier: workspace:*
version: link:../webaudio
'@strudel/codemirror': '@strudel/codemirror':
specifier: workspace:* specifier: workspace:*
version: link:../codemirror version: link:../codemirror
'@strudel/core':
specifier: workspace:*
version: link:../core
'@strudel/hydra': '@strudel/hydra':
specifier: workspace:* specifier: workspace:*
version: link:../hydra version: link:../hydra
'@strudel/midi':
specifier: workspace:*
version: link:../midi
'@strudel/mini':
specifier: workspace:*
version: link:../mini
'@strudel/soundfonts':
specifier: workspace:*
version: link:../soundfonts
'@strudel/tonal':
specifier: workspace:*
version: link:../tonal
'@strudel/transpiler':
specifier: workspace:*
version: link:../transpiler
'@strudel/webaudio':
specifier: workspace:*
version: link:../webaudio
devDependencies: devDependencies:
'@rollup/plugin-replace': '@rollup/plugin-replace':
specifier: ^5.0.5 specifier: ^5.0.5
@ -341,7 +341,7 @@ importers:
packages/serial: packages/serial:
dependencies: dependencies:
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
devDependencies: devDependencies:
@ -351,10 +351,10 @@ importers:
packages/soundfonts: packages/soundfonts:
dependencies: dependencies:
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
'@strudel.cycles/webaudio': '@strudel/webaudio':
specifier: workspace:* specifier: workspace:*
version: link:../webaudio version: link:../webaudio
sfumato: sfumato:
@ -383,7 +383,7 @@ importers:
packages/tonal: packages/tonal:
dependencies: dependencies:
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
'@tonaljs/tonal': '@tonaljs/tonal':
@ -405,10 +405,10 @@ importers:
packages/transpiler: packages/transpiler:
dependencies: dependencies:
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
'@strudel.cycles/mini': '@strudel/mini':
specifier: workspace:* specifier: workspace:*
version: link:../mini version: link:../mini
acorn: acorn:
@ -430,19 +430,19 @@ importers:
packages/web: packages/web:
dependencies: dependencies:
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
'@strudel.cycles/mini': '@strudel/mini':
specifier: workspace:* specifier: workspace:*
version: link:../mini version: link:../mini
'@strudel.cycles/tonal': '@strudel/tonal':
specifier: workspace:* specifier: workspace:*
version: link:../tonal version: link:../tonal
'@strudel.cycles/transpiler': '@strudel/transpiler':
specifier: workspace:* specifier: workspace:*
version: link:../transpiler version: link:../transpiler
'@strudel.cycles/webaudio': '@strudel/webaudio':
specifier: workspace:* specifier: workspace:*
version: link:../webaudio version: link:../webaudio
devDependencies: devDependencies:
@ -452,7 +452,7 @@ importers:
packages/webaudio: packages/webaudio:
dependencies: dependencies:
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
superdough: superdough:
@ -465,7 +465,7 @@ importers:
packages/xen: packages/xen:
dependencies: dependencies:
'@strudel.cycles/core': '@strudel/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
devDependencies: devDependencies:
@ -511,51 +511,51 @@ importers:
'@nanostores/react': '@nanostores/react':
specifier: ^0.7.1 specifier: ^0.7.1
version: 0.7.1(nanostores@0.9.5)(react@18.2.0) version: 0.7.1(nanostores@0.9.5)(react@18.2.0)
'@strudel.cycles/core':
specifier: workspace:*
version: link:../packages/core
'@strudel.cycles/csound':
specifier: workspace:*
version: link:../packages/csound
'@strudel.cycles/midi':
specifier: workspace:*
version: link:../packages/midi
'@strudel.cycles/mini':
specifier: workspace:*
version: link:../packages/mini
'@strudel.cycles/osc':
specifier: workspace:*
version: link:../packages/osc
'@strudel.cycles/serial':
specifier: workspace:*
version: link:../packages/serial
'@strudel.cycles/soundfonts':
specifier: workspace:*
version: link:../packages/soundfonts
'@strudel.cycles/tonal':
specifier: workspace:*
version: link:../packages/tonal
'@strudel.cycles/transpiler':
specifier: workspace:*
version: link:../packages/transpiler
'@strudel.cycles/webaudio':
specifier: workspace:*
version: link:../packages/webaudio
'@strudel.cycles/xen':
specifier: workspace:*
version: link:../packages/xen
'@strudel/codemirror': '@strudel/codemirror':
specifier: workspace:* specifier: workspace:*
version: link:../packages/codemirror version: link:../packages/codemirror
'@strudel/core':
specifier: workspace:*
version: link:../packages/core
'@strudel/csound':
specifier: workspace:*
version: link:../packages/csound
'@strudel/desktopbridge': '@strudel/desktopbridge':
specifier: workspace:* specifier: workspace:*
version: link:../packages/desktopbridge version: link:../packages/desktopbridge
'@strudel/hydra': '@strudel/hydra':
specifier: workspace:* specifier: workspace:*
version: link:../packages/hydra version: link:../packages/hydra
'@strudel/midi':
specifier: workspace:*
version: link:../packages/midi
'@strudel/mini':
specifier: workspace:*
version: link:../packages/mini
'@strudel/osc':
specifier: workspace:*
version: link:../packages/osc
'@strudel/repl': '@strudel/repl':
specifier: workspace:* specifier: workspace:*
version: link:../packages/repl version: link:../packages/repl
'@strudel/serial':
specifier: workspace:*
version: link:../packages/serial
'@strudel/soundfonts':
specifier: workspace:*
version: link:../packages/soundfonts
'@strudel/tonal':
specifier: workspace:*
version: link:../packages/tonal
'@strudel/transpiler':
specifier: workspace:*
version: link:../packages/transpiler
'@strudel/webaudio':
specifier: workspace:*
version: link:../packages/webaudio
'@strudel/xen':
specifier: workspace:*
version: link:../packages/xen
'@supabase/supabase-js': '@supabase/supabase-js':
specifier: ^2.39.1 specifier: ^2.39.1
version: 2.39.1 version: 2.39.1

View File

@ -1,4 +1,4 @@
# @strudel.cycles/tauri # @strudel/tauri
Rust source files for building native desktop apps using Tauri Rust source files for building native desktop apps using Tauri

View File

@ -3,25 +3,25 @@
// it might require mocking more stuff when tunes added that use other functions // it might require mocking more stuff when tunes added that use other functions
// import * as tunes from './tunes.mjs'; // import * as tunes from './tunes.mjs';
import { evaluate } from '@strudel.cycles/transpiler'; import { evaluate } from '@strudel/transpiler';
import { evalScope } from '@strudel.cycles/core'; import { evalScope } from '@strudel/core';
import * as strudel from '@strudel.cycles/core'; import * as strudel from '@strudel/core';
import * as webaudio from '@strudel.cycles/webaudio'; import * as webaudio from '@strudel/webaudio';
import controls from '@strudel.cycles/core/controls.mjs'; import controls from '@strudel/core/controls.mjs';
// import gist from '@strudel.cycles/core/gist.js'; // import gist from '@strudel/core/gist.js';
import { mini, m } from '@strudel.cycles/mini/mini.mjs'; import { mini, m } from '@strudel/mini/mini.mjs';
// import * as voicingHelpers from '@strudel.cycles/tonal/voicings.mjs'; // import * as voicingHelpers from '@strudel/tonal/voicings.mjs';
// import euclid from '@strudel.cycles/core/euclid.mjs'; // import euclid from '@strudel/core/euclid.mjs';
// import '@strudel.cycles/midi/midi.mjs'; // import '@strudel/midi/midi.mjs';
import * as tonalHelpers from '@strudel.cycles/tonal'; import * as tonalHelpers from '@strudel/tonal';
import '@strudel.cycles/xen/xen.mjs'; import '@strudel/xen/xen.mjs';
// import '@strudel.cycles/xen/tune.mjs'; // import '@strudel/xen/tune.mjs';
// import '@strudel.cycles/core/euclid.mjs'; // import '@strudel/core/euclid.mjs';
// import '@strudel.cycles/core/speak.mjs'; // window is not defined // import '@strudel/core/speak.mjs'; // window is not defined
// import '@strudel.cycles/osc/osc.mjs'; // import '@strudel/osc/osc.mjs';
// import '@strudel.cycles/webaudio/webaudio.mjs'; // import '@strudel/webaudio/webaudio.mjs';
// import '@strudel.cycles/serial/serial.mjs'; // import '@strudel/serial/serial.mjs';
// import controls from '@strudel.cycles/core/controls.mjs'; // import controls from '@strudel/core/controls.mjs';
import '../website/src/repl/piano'; import '../website/src/repl/piano';
class MockedNode { class MockedNode {

View File

@ -1,5 +1,5 @@
{ {
"name": "@strudel.cycles/website", "name": "@strudel/website",
"type": "module", "type": "module",
"version": "0.6.0", "version": "0.6.0",
"private": true, "private": true,
@ -23,17 +23,17 @@
"@heroicons/react": "^2.1.1", "@heroicons/react": "^2.1.1",
"@nanostores/persistent": "^0.9.1", "@nanostores/persistent": "^0.9.1",
"@nanostores/react": "^0.7.1", "@nanostores/react": "^0.7.1",
"@strudel.cycles/core": "workspace:*", "@strudel/core": "workspace:*",
"@strudel.cycles/csound": "workspace:*", "@strudel/csound": "workspace:*",
"@strudel.cycles/midi": "workspace:*", "@strudel/midi": "workspace:*",
"@strudel.cycles/mini": "workspace:*", "@strudel/mini": "workspace:*",
"@strudel.cycles/osc": "workspace:*", "@strudel/osc": "workspace:*",
"@strudel.cycles/serial": "workspace:*", "@strudel/serial": "workspace:*",
"@strudel.cycles/soundfonts": "workspace:*", "@strudel/soundfonts": "workspace:*",
"@strudel.cycles/tonal": "workspace:*", "@strudel/tonal": "workspace:*",
"@strudel.cycles/transpiler": "workspace:*", "@strudel/transpiler": "workspace:*",
"@strudel.cycles/webaudio": "workspace:*", "@strudel/webaudio": "workspace:*",
"@strudel.cycles/xen": "workspace:*", "@strudel/xen": "workspace:*",
"@strudel/codemirror": "workspace:*", "@strudel/codemirror": "workspace:*",
"@strudel/desktopbridge": "workspace:*", "@strudel/desktopbridge": "workspace:*",
"@strudel/hydra": "workspace:*", "@strudel/hydra": "workspace:*",

View File

@ -1,7 +1,7 @@
import useEvent from '@src/useEvent.mjs'; import useEvent from '@src/useEvent.mjs';
import useFrame from '@src/useFrame.mjs'; import useFrame from '@src/useFrame.mjs';
import { getAudioContext } from '@strudel.cycles/webaudio'; import { getAudioContext } from '@strudel/webaudio';
import { midi2note } from '@strudel.cycles/core'; import { midi2note } from '@strudel/core';
import { useState, useRef, useEffect } from 'react'; import { useState, useRef, useEffect } from 'react';
import Claviature from '@components/Claviature'; import Claviature from '@components/Claviature';

View File

@ -1,4 +1,4 @@
import { colorMap } from '@strudel.cycles/core/color.mjs'; import { colorMap } from '@strudel/core/color.mjs';
import React from 'react'; import React from 'react';
const Colors = () => { const Colors = () => {

View File

@ -1,8 +1,8 @@
import { useState, useRef, useCallback, useMemo, useEffect } from 'react'; import { useState, useRef, useCallback, useMemo, useEffect } from 'react';
import { Icon } from './Icon'; import { Icon } from './Icon';
import { silence, getPunchcardPainter, noteToMidi } from '@strudel.cycles/core'; import { silence, getPunchcardPainter, noteToMidi } from '@strudel/core';
import { transpiler } from '@strudel.cycles/transpiler'; import { transpiler } from '@strudel/transpiler';
import { getAudioContext, webaudioOutput } from '@strudel.cycles/webaudio'; import { getAudioContext, webaudioOutput } from '@strudel/webaudio';
import { StrudelMirror } from '@strudel/codemirror'; import { StrudelMirror } from '@strudel/codemirror';
// import { prebake } from '@strudel/repl'; // import { prebake } from '@strudel/repl';
import { prebake } from '../repl/prebake.mjs'; import { prebake } from '../repl/prebake.mjs';

View File

@ -4,7 +4,7 @@ layout: ../../../layouts/MainLayout.astro
--- ---
import { MiniRepl } from '@src/docs/MiniRepl'; import { MiniRepl } from '@src/docs/MiniRepl';
import { midi2note } from '@strudel.cycles/core/'; import { midi2note } from '@strudel/core/';
import Box from '@components/Box.astro'; import Box from '@components/Box.astro';
import QA from '@components/QA'; import QA from '@components/QA';

View File

@ -1,6 +1,6 @@
import { createCanvas } from 'canvas'; import { createCanvas } from 'canvas';
import { pianoroll } from '@strudel.cycles/core'; import { pianoroll } from '@strudel/core';
import { evaluate } from '@strudel.cycles/transpiler'; import { evaluate } from '@strudel/transpiler';
import '../../../../test/runtime.mjs'; import '../../../../test/runtime.mjs';
import * as tunes from '../../repl/tunes.mjs'; import * as tunes from '../../repl/tunes.mjs';

View File

@ -4,8 +4,6 @@ layout: ../../layouts/MainLayout.astro
--- ---
import { MiniRepl } from '../../docs/MiniRepl'; import { MiniRepl } from '../../docs/MiniRepl';
import { JsDoc } from '../../docs/JsDoc';
import { samples } from '@strudel.cycles/webaudio';
see https://strudel.cc/?zMEo5kowGrFc see https://strudel.cc/?zMEo5kowGrFc

View File

@ -4,8 +4,6 @@ layout: ../../layouts/MainLayout.astro
--- ---
import { MiniRepl } from '../../docs/MiniRepl'; import { MiniRepl } from '../../docs/MiniRepl';
import { JsDoc } from '../../docs/JsDoc';
import { samples } from '@strudel.cycles/webaudio';
Note: Note:

View File

@ -1,6 +1,6 @@
import { createCanvas } from 'canvas'; import { createCanvas } from 'canvas';
import { pianoroll } from '@strudel.cycles/core'; import { pianoroll } from '@strudel/core';
import { evaluate } from '@strudel.cycles/transpiler'; import { evaluate } from '@strudel/transpiler';
import '../../../../test/runtime.mjs'; import '../../../../test/runtime.mjs';
import { getMyPatterns } from '../../my_patterns'; import { getMyPatterns } from '../../my_patterns';

View File

@ -16,16 +16,16 @@ The purpose of the multiple packages is to
## Overview ## Overview
[See the latest published packages on npm](https://www.npmjs.com/search?q=%40strudel.cycles). [See the latest published packages on npm](https://www.npmjs.com/search?q=%40strudel).
Here is an overview of all the packages: Here is an overview of all the packages:
### Essential Packages ### Essential Packages
These package are the most essential. You might want to use all of those if you're using strudel in your project: These package are the most essential. You might want to use all of those if you're using strudel in your project:
- [core](https://github.com/tidalcycles/strudel/tree/main/packages/core#strudelcyclescore): tidal pattern engine with core primitives - [core](https://github.com/tidalcycles/strudel/tree/main/packages/core#strudelcore): tidal pattern engine with core primitives
- [mini](https://github.com/tidalcycles/strudel/tree/main/packages/mini#strudelcyclesmini): mini notation parser + core bindings - [mini](https://github.com/tidalcycles/strudel/tree/main/packages/mini#strudelmini): mini notation parser + core bindings
- [transpiler](https://github.com/tidalcycles/strudel/tree/main/packages/transpiler#strudelcyclestranspiler): user code transpiler. syntax sugar + highlighting - [transpiler](https://github.com/tidalcycles/strudel/tree/main/packages/transpiler#strudeltranspiler): user code transpiler. syntax sugar + highlighting
### Language Extensions ### Language Extensions
@ -38,23 +38,24 @@ These packages extend the pattern language by specific functions
These packages provide bindings for different ways to output strudel patterns: These packages provide bindings for different ways to output strudel patterns:
- [webaudio](https://github.com/tidalcycles/strudel/tree/main/packages/webaudio#strudelcycleswebaudio): the default webaudio output - [webaudio](https://github.com/tidalcycles/strudel/tree/main/packages/webaudio#strudelwebaudio): the default webaudio output
- [osc](https://github.com/tidalcycles/strudel/tree/main/packages/osc#strudelcyclesosc): bindings to communicate via OSC - [osc](https://github.com/tidalcycles/strudel/tree/main/packages/osc#strudelosc): bindings to communicate via OSC
- [midi](https://github.com/tidalcycles/strudel/tree/main/packages/midi#strudelcyclesmidi): webmidi bindings - [midi](https://github.com/tidalcycles/strudel/tree/main/packages/midi#strudelmidi): webmidi bindings
- [csound](https://github.com/tidalcycles/strudel/tree/main/packages/csound#strudelcyclescsound): csound bindings - [csound](https://github.com/tidalcycles/strudel/tree/main/packages/csound#strudelcsound): csound bindings
- [soundfonts](https://github.com/tidalcycles/strudel/tree/main/packages/serial#strudelcyclessoundfonts): Soundfont support - [soundfonts](https://github.com/tidalcycles/strudel/tree/main/packages/serial#strudelsoundfonts): Soundfont support
- [serial](https://github.com/tidalcycles/strudel/tree/main/packages/serial#strudelcyclesserial): webserial bindings - [serial](https://github.com/tidalcycles/strudel/tree/main/packages/serial#strudelserial): webserial bindings
### Others ### Others
- [embed](https://github.com/tidalcycles/strudel/tree/main/packages/embed#strudelcyclesembed): embeddable REPL web component - [embed](https://github.com/tidalcycles/strudel/tree/main/packages/embed#strudelembed): embeddable REPL web component
- [react](https://github.com/tidalcycles/strudel/tree/main/packages/react#strudelcyclesreact): react hooks and components for strudel
### No Longer Maintained ### No Longer Maintained
- [react](https://github.com/tidalcycles/strudel/tree/main/packages/react#strudelreact): react hooks and components for strudel
- [eval](https://www.npmjs.com/package/@strudel.cycles/eval): old code transpiler - [eval](https://www.npmjs.com/package/@strudel.cycles/eval): old code transpiler
- [tone](https://www.npmjs.com/package/@strudel.cycles/tone): bindings for Tone.js instruments and effects - [tone](https://www.npmjs.com/package/@strudel.cycles/tone): bindings for Tone.js instruments and effects
- [webdirt](https://www.npmjs.com/package/@strudel.cycles/webdirt): webdirt bindings, replaced by webaudio package - [webdirt](https://www.npmjs.com/package/@strudel.cycles/webdirt): webdirt bindings, replaced by webaudio package
- any `@strudel.cycles/*` packages have been renamed to `@strudel/*` since version 0.10.0.
## Tools ## Tools

View File

@ -4,7 +4,7 @@ layout: ../../layouts/MainLayout.astro
--- ---
import { MiniRepl } from '@src/docs/MiniRepl'; import { MiniRepl } from '@src/docs/MiniRepl';
import { midi2note } from '@strudel.cycles/core/'; import { midi2note } from '@strudel/core';
import Box from '@components/Box.astro'; import Box from '@components/Box.astro';
import QA from '@components/QA'; import QA from '@components/QA';

View File

@ -4,10 +4,10 @@ Copyright (C) 2022 Strudel contributors - see <https://github.com/tidalcycles/st
This program is free software: you can redistribute it and/or modify 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 Affero General Public License for more details. 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/>. This program is free software: you can redistribute it and/or modify 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 Affero General Public License for more details. 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/>.
*/ */
import { code2hash, getDrawContext, logger, silence } from '@strudel.cycles/core'; import { code2hash, getDrawContext, logger, silence } from '@strudel/core';
import cx from '@src/cx.mjs'; import cx from '@src/cx.mjs';
import { transpiler } from '@strudel.cycles/transpiler'; import { transpiler } from '@strudel/transpiler';
import { getAudioContext, initAudioOnFirstClick, webaudioOutput } from '@strudel.cycles/webaudio'; import { getAudioContext, initAudioOnFirstClick, webaudioOutput } from '@strudel/webaudio';
import { defaultAudioDeviceName } from '../settings.mjs'; import { defaultAudioDeviceName } from '../settings.mjs';
import { getAudioDevices, setAudioDevice } from './util.mjs'; import { getAudioDevices, setAudioDevice } from './util.mjs';
import { StrudelMirror, defaultSettings } from '@strudel/codemirror'; import { StrudelMirror, defaultSettings } from '@strudel/codemirror';

View File

@ -5,7 +5,7 @@ import {
onTriggerSample, onTriggerSample,
getAudioContext, getAudioContext,
loadBuffer, loadBuffer,
} from '@strudel.cycles/webaudio'; } from '@strudel/webaudio';
let TAURI; let TAURI;
if (typeof window !== 'undefined') { if (typeof window !== 'undefined') {

View File

@ -1,6 +1,6 @@
import { registerSound, onTriggerSample } from '@strudel.cycles/webaudio'; import { registerSound, onTriggerSample } from '@strudel/webaudio';
import { isAudioFile } from './files.mjs'; import { isAudioFile } from './files.mjs';
import { logger } from '@strudel.cycles/core'; import { logger } from '@strudel/core';
//utilites for writing and reading to the indexdb //utilites for writing and reading to the indexdb

View File

@ -1,5 +1,5 @@
import XMarkIcon from '@heroicons/react/20/solid/XMarkIcon'; import XMarkIcon from '@heroicons/react/20/solid/XMarkIcon';
import { logger } from '@strudel.cycles/core'; import { logger } from '@strudel/core';
import useEvent from '@src/useEvent.mjs'; import useEvent from '@src/useEvent.mjs';
import cx from '@src/cx.mjs'; import cx from '@src/cx.mjs';
import { nanoid } from 'nanoid'; import { nanoid } from 'nanoid';

View File

@ -1,6 +1,6 @@
import useEvent from '@src/useEvent.mjs'; import useEvent from '@src/useEvent.mjs';
import { useStore } from '@nanostores/react'; import { useStore } from '@nanostores/react';
import { getAudioContext, soundMap, connectToDestination } from '@strudel.cycles/webaudio'; import { getAudioContext, soundMap, connectToDestination } from '@strudel/webaudio';
import React, { useMemo, useRef } from 'react'; import React, { useMemo, useRef } from 'react';
import { settingsMap, useSettings } from '../../settings.mjs'; import { settingsMap, useSettings } from '../../settings.mjs';
import { ButtonGroup } from './Forms.jsx'; import { ButtonGroup } from './Forms.jsx';

View File

@ -1,4 +1,4 @@
import { Pattern, noteToMidi, valueToMidi } from '@strudel.cycles/core'; import { Pattern, noteToMidi, valueToMidi } from '@strudel/core';
const maxPan = noteToMidi('C8'); const maxPan = noteToMidi('C8');
const panwidth = (pan, width) => pan * width + (1 - width) / 2; const panwidth = (pan, width) => pan * width + (1 - width) / 2;

View File

@ -1,5 +1,5 @@
import { Pattern, noteToMidi, valueToMidi } from '@strudel.cycles/core'; import { Pattern, noteToMidi, valueToMidi } from '@strudel/core';
import { registerSynthSounds, registerZZFXSounds, samples } from '@strudel.cycles/webaudio'; import { registerSynthSounds, registerZZFXSounds, samples } from '@strudel/webaudio';
import { registerSamplesFromDB } from './idbutils.mjs'; import { registerSamplesFromDB } from './idbutils.mjs';
import './piano.mjs'; import './piano.mjs';
import './files.mjs'; import './files.mjs';
@ -15,10 +15,10 @@ export async function prebake() {
registerZZFXSounds(), registerZZFXSounds(),
registerSamplesFromDB(), registerSamplesFromDB(),
//registerSoundfonts(), //registerSoundfonts(),
// need dynamic import here, because importing @strudel.cycles/soundfonts fails on server: // need dynamic import here, because importing @strudel/soundfonts fails on server:
// => getting "window is not defined", as soon as "@strudel.cycles/soundfonts" is imported statically // => getting "window is not defined", as soon as "@strudel/soundfonts" is imported statically
// seems to be a problem with soundfont2 // seems to be a problem with soundfont2
import('@strudel.cycles/soundfonts').then(({ registerSoundfonts }) => registerSoundfonts()), import('@strudel/soundfonts').then(({ registerSoundfonts }) => registerSoundfonts()),
samples(`${baseNoTrailing}/piano.json`, `${baseNoTrailing}/piano/`, { prebake: true }), samples(`${baseNoTrailing}/piano.json`, `${baseNoTrailing}/piano/`, { prebake: true }),
// https://github.com/sgossner/VCSL/ // https://github.com/sgossner/VCSL/
// https://api.github.com/repositories/126427031/contents/ // https://api.github.com/repositories/126427031/contents/

View File

@ -1,6 +1,6 @@
import { controls, evalScope, hash2code, logger } from '@strudel.cycles/core'; import { controls, evalScope, hash2code, logger } from '@strudel/core';
import { settingPatterns, defaultAudioDeviceName } from '../settings.mjs'; import { settingPatterns, defaultAudioDeviceName } from '../settings.mjs';
import { getAudioContext, initializeAudioOutput, setDefaultAudioContext } from '@strudel.cycles/webaudio'; import { getAudioContext, initializeAudioOutput, setDefaultAudioContext } from '@strudel/webaudio';
import { isTauri } from '../tauri.mjs'; import { isTauri } from '../tauri.mjs';
import './Repl.css'; import './Repl.css';
@ -79,16 +79,16 @@ export function getRandomTune() {
export function loadModules() { export function loadModules() {
let modules = [ let modules = [
import('@strudel.cycles/core'), import('@strudel/core'),
import('@strudel.cycles/tonal'), import('@strudel/tonal'),
import('@strudel.cycles/mini'), import('@strudel/mini'),
import('@strudel.cycles/xen'), import('@strudel/xen'),
import('@strudel.cycles/webaudio'), import('@strudel/webaudio'),
import('@strudel/codemirror'), import('@strudel/codemirror'),
import('@strudel/hydra'), import('@strudel/hydra'),
import('@strudel.cycles/serial'), import('@strudel/serial'),
import('@strudel.cycles/soundfonts'), import('@strudel/soundfonts'),
import('@strudel.cycles/csound'), import('@strudel/csound'),
]; ];
if (isTauri()) { if (isTauri()) {
modules = modules.concat([ modules = modules.concat([
@ -97,7 +97,7 @@ export function loadModules() {
import('@strudel/desktopbridge/oscbridge.mjs'), import('@strudel/desktopbridge/oscbridge.mjs'),
]); ]);
} else { } else {
modules = modules.concat([import('@strudel.cycles/midi'), import('@strudel.cycles/osc')]); modules = modules.concat([import('@strudel/midi'), import('@strudel/osc')]);
} }
return evalScope( return evalScope(

View File

@ -1,9 +1,9 @@
import { atom } from 'nanostores'; import { atom } from 'nanostores';
import { persistentMap, persistentAtom } from '@nanostores/persistent'; import { persistentMap, persistentAtom } from '@nanostores/persistent';
import { useStore } from '@nanostores/react'; import { useStore } from '@nanostores/react';
import { register } from '@strudel.cycles/core'; import { register } from '@strudel/core';
import * as tunes from './repl/tunes.mjs'; import * as tunes from './repl/tunes.mjs';
import { logger } from '@strudel.cycles/core'; import { logger } from '@strudel/core';
export let $publicPatterns = atom([]); export let $publicPatterns = atom([]);
export let $featuredPatterns = atom([]); export let $featuredPatterns = atom([]);