What bach brings

Music notation

bach brings music notation inside Max. You can generate, edit, script, modify and play your scores either with mouse and keyboard or through patching. Any Max audio module can be easily driven.

Reactive paradigm

bach is a true citizen of Max, perfectly incarnating its real-time paradigm. Interact with scores in a reactive way, as you would with sounds or images! From simple recording to complex processing, a new world of symbolic treatments is at the end of your fingertips.

A family of tools

bach is the head of a family of libraries which share their core philosophy and basic working principles. Each library in the growing bach family focuses on some particular aspects of reactive symbolic composition: cage and dada are already available.

Support us on Patreon

Developing and maintaining bach is a lot of work. We have decided to keep bach free and embrace a business model based on Patreon: how much do you consider bach is valuable for you? If the answer is 0$, or if you cannot afford to pay any price, that's totally fine - we completely understand. But if you can afford to pay us as little as a cup of coffee per month, that would really help. In addition to keeping bach accessible for everybody, you'll also have exclusive access to prereleases, video tutorials, and more.

Why use bach

Free and open source

bach is free and open source: it is licensed under the GPLv3 license, and hence you are free to use it in any GPLv3 project (contact us for commercial use).
We can afford to keep bach free thanks to the generous donations of our supporters on Patreon. If you find bach useful, please consider becoming a patron.

Cross platform

bach is cross platform. Whether you're running OSX or Windows, you can experience the full power of computer-aided composition.

Powerful data types

Even if you aren't a fan of music notation, bach might still help you by adding two new data types to the Max environment: rational numbers and lllls (Lisp-like linked lists). The latter can contain other lllls, a bit like a Lisp list. Unlike Max lists, bach lllls have no limit in size, an essential feature to deal with long collections of data.
See more features

Some numbers about bach

Libraries currently in the bach family
Externals in the bach library only
Abstractions in the bach library only
Years of development

What you can do with bach


Compose your music using bach: write, generate or modify your scores intuitively and interactively.

Where to start: cage tutorials; "Through The Looking Glass" and "The Minimal Way" bach tutorials
Related projects here

Live notation

Create and display music on the fly for your performers, or for any other usage.

Where to start: "Real Time Stories" bach tutorial
Related projects here


Build intuitive and interactive tools for music education. Tailor the amount of allowed interaction to your specific needs, have your students play with your patch and then automatically evaluate their results.

Where to start: bach tutorials, "preventedit" attribute
Related projects here

Augmented sequencers

Use bach.roll and bach.score as symbolic sequencers, triggering soundfiles or DSP processes; since each note carries flexible meta-information, organized in slots, you can control and customize any meaningful sequencing parameter.

Where to start: "Slot Machines" bach tutorial
Related projects here


Use bach.roll and bach.score to control synthesis modules inside Max; put any meaningful parameter (numbers, envelopes, instructions...) inside the note slots, and retrieve them at playtime.

Where to start: "The Gift of Synthesis" bach tutorial
Related projects here

Video and lighting

Sequence or generate video content in Jitter; use scores to control and automate any external Max-compatible device, such as DMX lighting scenarios or physical actuators.

Where to start: bach tutorials
Related projects here

Constraint programming

Generate data by defining the properties they should match, without writing a single line of code.

Where to start: bach.constraints help file
Related projects here


Segment and analyze scores in real-time or off-line. Organize your scores in a database, and display it.

Where to start: dada.segment and dada.catart help files
Related projects here


Build scores where each note is a complex process in itself; display process information dynamically and render audio or symbolic result properly (both at playtime and off-line).

Where to start: cage.meta.engine help file
Related projects here

The bach family

bach is the forefather of the family. It contains all the basic modules to deal with computer-aided composition in Max. It’s the first and library you should download, since all the other members of the family won’t even start working without bach.

cage contains ready-to-use modules to deal with many standard 20th- and 21th-century compositional techniques. It is library designed for musicians: you will only deal with musically meaningful parameters, without even worrying about lower-level implementation.
Because of this, cage is easier to deal with than bach; if visual programming with bach makes you nervous, you should definitely consider installing cage and give it a try.

More about cage

dada is the newest member of the bach family: it contains non-standard graphical user interface for music generation and processing. dada is by design an open box: it is to bach what a laboratory is to a library. All of its components embrace a graphic, ludic, explorative approach to music; most of its components also refer to the worlds of plane geometry, physical modeling or recreational mathematics.

More about dada




Comprovisador is a system designed by Pedro Louzeiro to enable mediated soloist-ensemble interaction using machine listening, algorithmic compositional procedures and dynamic notation, in a networked environment. In real-time, as a soloist […]



MOZ’Lib is a set of pedagogical tools developed by composer Julien Vincenot, designed to explore musical writing, creation and computer programming. It constitutes an easy introduction to the vast domain […]


bach with Antescofo

Jonathan Bell uses bach.score as a tool for representing a melody which the computer tracks or follows, as well as for storing and displaying the actions to be made when […]


Sirens Cycle

Since his first quartet Korrespondenz (1992), Peter Eötvös has been interested in the transcription of phonetic elements to music, in order to make instruments speak. For Sirens Cycle, Eötvös’s latest […]


The SmartVox Project

Jonathan Bell’s piece Au Commencement was entirely composed (and delivered to the singers) with the help of the bach.roll space-time notation environment. The SmartVox project uses filmed sequences (mp4) of […]


my mother used to say

my mother used to say (2016) is a 10 minutes piece in three movements for fans and electromagnetic fields, by Amos Cappuccio. Here are Amos Cappuccio’s words about his work: […]


Three pieces. Catabasis I, II, III

Diego Dall’Osto’s “Three pieces. Catabasis I, II, III”, for violin and live audio-video electronics (2015), use bach and cage libraries both for computer assisted composition and for synthesis and performance […]



Takuya Shimizu has developed tools to make orchestral scores from pictures by using bach in combination with Jitter. Within bach, one can individually set the color of each notehead in […]


Instant Ensemble

Nikola Kołodziejczyk’s Instant Ensemble is a response to predictable and repeatable music tours. Sheet music for each concert of the seven-piece band is created live literally in front of the […]


An Experiment with Time

Daniele Ghisi’s An Experiment with Time (2015), is both a 3-screens multimedia installation and a live piece for ensemble, video and electronics. This work inspired by the eponym book by […]

Law of Fives Final

Laws of Fives

Seth Shafer’s Law of Fives (2015), for viola, bass clarinet, marimba, and computer, uses ​real-​time notation and requires the performers to sight-read music as it is algorithmically generated during the […]


mymelody tsukurukun

mymelody tsukurukun is Takuya Shumizu’s tool to generate melodies by indicating a degree of complexity. Users input a time series of complexity (each value being between 0 and 1000), and […]



bach, cage and dada are throroughly used in Ircam’s Orchids project, as interface tools for the automatic orchestration engine. More information here.

See all projects



bach is an independent project by composers Andrea Agostini and Daniele Ghisi.

It is supported by our wonderful community on Patreon. Click on a the message [; bach donors] in Max in order to have a list of all our patrons. It used to be also supporters by individual donations on Paypal; our top supporters (100+€) have been: Dimitri Fergadis, Pete Kellock.

The authors wish to thank: Sara Adhitya, Carlos Agon, Davide Bordogna, DaFact,  Arshia Cont, Eric Daubresse, Gianluca Delfino, Phil Gaskill, Eric Grunin, Emmanuel Jourdan, Mika Kuuskankare, Serge Lemouton, Jean Lochard, Mikhail Malt, Andrew Pask, Andrea Rota, Andrea Sarto, and all the people at IRCAM who have supported and encouraged the work, although not an internal IRCAM project.

bach includes the Kiss FFT library (distributed under BSD licence), the Mini-XML library (distributed under LGPLv2.0 license) and the IRCAM SDIF library (distributed under LGPLv2.1 license).

The official bach font is "November for bach", created by Robert Piéchaud and automatically loaded at bach startup. "November for bach" is a light version of the famous November font. The full November font covers a wide range of music symbols, from Renaissance to the XXI century, and gives a unique, warm and lively look to your music scores. It is fully compatible with Finale, Sibelius and other notation softwares, and, in addition, is the first commercial music font fully compliant with SMUFL. You can purchase November from here.



cage is a research project by Andrea Agostini and Daniele Ghisi, carried out at the electroacoustic music center of the Haute Ecole de Musique de Genève, supported by the music and art division of the Haute Ecole Spécialisée de Suisse occidentale.



dada is part of Daniele Ghisi's PhD project, supported by UPMC, CNRS, IRCAM (STMS Lab) and Sorbonne.