Abstract
The bach library is a package for Max meant to bring symbolic music representation and computer-aided composition in a real-time environment (Agostini & Ghisi, 2013, 2015). In this article, we introduce a more ambitious project: situating the bach library inside a wider family of tools dealing with real-time computer-aided composition in Max, which we call the ‘bach family’. We give an overview of its core member (bach) and of its second member (cage: a high-level library of ready-made modules). We introduce its third member (dada: a library of non-standard user interfaces, currently under development), and discuss future perspectives and ideas.
Acknowledgements
The cage library has been developed within the center of electroacoustic music of the the Haute École de Musique in Geneva, supported by the music and arts domain of the scene of the Haute École Specialisée of Western Switzerland; the dada library is part of Daniele Ghisi’s PhD project, carried out at the STMS Lab (UPMC, Ircam, CNRS) in Paris.
Notes
Daniele Ghisi, STMS Lab (IRCAM, CNRS, UPMC), 1, Place Igor Stravinsky, Paris, 75004, France. E-mail: [email protected].
1 In all the official Max documentation, the term abstraction refers to a named patcher saved to disk, and reusable as a subpatcher. We are using the word here with this exact meaning.
3 It should be made clear that the ‘lambda’ name is not used literally in this context, but as a mere allusion; concepts such as anonymous functions or lambda calculus would be completely extraneous to the overarching programming philosophy and paradigm of Max.
4 For an instance of a deeply different approach to the treatment of symbolic musical data, focusing on the intertwinement among the score parameters rather than their orthogonality, see the Strasheela system (Anders, Anagnostopoulou, & Alcorn, Citation2005).
9 This does not mean that the number of modules in bach is by now fixed (almost every recent release of bach has included some new modules, and this trend is likely to continue), but that the scope of bach will not change: handling symbolic data for traditional music representation, display and editing.
11 As stated in sec. 4.2, two-dimensional cellular automata are also handled in cage (see also Bigo, Ghisi, Spicher, & Andreatta, Citation2015); however, the dada.life object improves this approach, since it makes it more customisable (as far as both the visual aspect and the rules are concerned) and faster (cage.life is an abstraction, consistently with the design of the whole cage project, and is hence intrinsically slower, whereas dada.life can also implement rules via a snippet of C code, compiled on the fly).
12 Although it is true that bach.roll can easily represent audio samples and automations through file names and functions attached to notes as slot data, it is by no means a real audio sequencer, because it would be difficult, if not impossible, to add a waveform representation to notes, and because at playtime all the temporal information attached to each note is output at once.