Strudel Packages

The strudel repo is organized as a monorepo, containing multiple npm packages. The purpose of the multiple packages is to

  • organize the codebase into more modular, encapsulated pieces
  • be able to opt out of certain functionalities
  • keep the dependencies of the core packages small

Overview

See the latest published packages on npm. Here is an overview of all the packages:

Umbrella Packages

These packages give you a batteries-included point of getting started, and most likely the thing youโ€™d want to use in your project:

  • repl: The Strudel REPL as a web component.
  • web: Strudel library for the browser, without UI.

To find out more about these two, read Using Strudel in Your Project

Essential Packages

These package are the most essential. You might want to use all of those if youโ€™re using strudel in your project:

  • core: tidal pattern engine with core primitives
  • mini: mini notation parser + core bindings
  • transpiler: user code transpiler. syntax sugar + highlighting

Language Extensions

These packages extend the pattern language by specific functions

  • tonal: tonal functions for scales and chords
  • xen: microtonal / xenharmonic functions

Outputs

These packages provide bindings for different ways to output strudel patterns:

Others

  • embed: embeddable REPL web component

No Longer Maintained

  • react: react hooks and components for strudel
  • eval: old code transpiler
  • tone: bindings for Tone.js instruments and effects
  • webdirt: webdirt bindings, replaced by webaudio package
  • any @strudel.cycles/* packages have been renamed to @strudel/* since version 0.10.0.

Tools

  • pnpm for package management, workspaces and publishing
  • lerna for bumping versions
  • see CONTRIBUTING.md for more info