--- title: Strudel Packages layout: ../../layouts/MainLayout.astro --- import { MiniRepl } from '../../docs/MiniRepl'; # Strudel Packages The [strudel repo](https://github.com/tidalcycles/strudel) 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](https://www.npmjs.com/search?q=%40strudel.cycles). Here is an overview of all the 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: - [core](https://github.com/tidalcycles/strudel/tree/main/packages/core#strudelcyclescore): tidal pattern engine with core primitives - [mini](https://github.com/tidalcycles/strudel/tree/main/packages/mini#strudelcyclesmini): mini notation parser + core bindings - [transpiler](https://github.com/tidalcycles/strudel/tree/main/packages/transpiler#strudelcyclestranspiler): user code transpiler. syntax sugar + highlighting ### Language Extensions These packages extend the pattern language by specific functions - [tonal](https://github.com/tidalcycles/strudel/tree/main/packages/tonal): tonal functions for scales and chords - [xen](https://github.com/tidalcycles/strudel/tree/main/packages/xen): microtonal / xenharmonic functions ### Outputs 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 - [osc](https://github.com/tidalcycles/strudel/tree/main/packages/osc#strudelcyclesosc): bindings to communicate via OSC - [midi](https://github.com/tidalcycles/strudel/tree/main/packages/midi#strudelcyclesmidi): webmidi bindings - [csound](https://github.com/tidalcycles/strudel/tree/main/packages/csound#strudelcyclescsound): csound bindings - [soundfonts](https://github.com/tidalcycles/strudel/tree/main/packages/serial#strudelcyclessoundfonts): Soundfont support - [serial](https://github.com/tidalcycles/strudel/tree/main/packages/serial#strudelcyclesserial): webserial bindings ### Others - [embed](https://github.com/tidalcycles/strudel/tree/main/packages/embed#strudelcyclesembed): embeddable REPL web component - [react](https://github.com/tidalcycles/strudel/tree/main/packages/react#strudelcyclesreact): react hooks and components for strudel ### No Longer Maintained - [eval](https://github.com/tidalcycles/strudel/tree/main/packages/eval): old code transpiler - [tone](https://github.com/tidalcycles/strudel/tree/main/packages/tone#strudelcyclestone): bindings for Tone.js instruments and effects - [webdirt](https://github.com/tidalcycles/strudel/tree/main/packages/webdirt): webdirt bindings, replaced by webaudio package ## Tools - [pnpm](https://pnpm.io/) for package management, workspaces and publishing - [lerna](https://lerna.js.org/) for bumping versions - see CONTRIBUTING.md for more info