Need help with pieces-alex-bainter?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

509 Stars 55 Forks MIT License 539 Commits 2 Opened issues


A collection of generative music pieces for

Services available


Need anything else?

Contributors list


A collection of generative music systems for

The documentation here is incomplete but hopefully it can help you get started. Please see Open-source Objectives.


The generative systems are available as npm packages. You can either install every system in one package or as separate packages for each system.

Installing every system in one package

See @generative-music/pieces-alex-bainter.

Installing systems individually

Each piece is available on npm as package in the

scope. For example, to install the system for "Zed", you would do:
npm install @generative-music/piece-zed

In general, a system's package name is the same as its title, written in lower-kebab-case and prefixed with

. Slashes (/) in titles are replaced with dashes (-). You can confirm a system's package name by looking at the
property of its
file. For example, the
file for "Zed" is located at packages/piece-zed/package.json, where the
is specified as

You will also need to install Tone.js if you haven't already (

npm install tone


As fast as possible

  1. You need to have the necessary audio sample files hosted somewhere accessible to the systems. These samples can be found in the @generative-music/samples-alex-bainter repository. For local development, follow the instructions for building and serving the files.

  2. Install necessary dependencies from npm:

npm install @generative-music/web-library @generative-music/web-provider @generative-music/samples-alex-bainter
  1. Run the system:
import activate from '@generative-music/piece-zed';
import createLibrary from '@generative-music/web-library';
import createProvider from '@generative-music/web-provider';
import getSampleIndex from '@generative-music/samples-alex-bainter';
import { Transport, Destination, context } from 'tone';

const provider = createProvider();

const sampleIndex = getSampleIndex({ format: 'wav', // also accepts 'mp3' and 'ogg' host: 'http://localhost:6969', // host where sample files can be fetched from });

const sampleLibrary = createLibrary({ sampleIndex, provider, });

// activate the system (load sample files and allocate memory) activate({ context, sampleLibrary destination: Destination, // connect the output of the system to Tone's Destination node }).then(([deactivate, schedule]) => { const end = schedule(); // schedule a performance along Tone's Transport Transport.start(); // begin playback

// stopping the system Transport.stop(); // stop Tone's Transport Transport.cancel(); // clear Tone's Transport end(); // clear the performance

// releasing resources deactivate(); });

🍝 Regarding code quality (or lack thereof)

Most of the systems within this repository were written during a period where I'd set an aggressive pace for myself to create new systems regularly and experiment. As a result, code quality suffered. Unfortunately, this means the code may be hard to understand, and I don't consider it to be a good example of how I typically build software. Someday, I'd love to improve these systems so they're easier for you to read.

You've been warned!

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.