Abstract
Several programming systems for computer music are based upon the data-flow family of programming paradigms. In the first part of this article, we shall introduce the general features and lexicon of data-flow programming, and review some specific instances of it with reference to computer music applications. We shall then move the discussion to Max’s very peculiar take on data-flow, and evaluate its motivation and shortcomings. Subsequently, we shall show how the bach library can support different programming styles within Max, improving the expression, the readability and the maintenance of complex algorithms. In particular, the latest version of bach has introduced bell, a small textual programming language embedded in Max and specifically designed to facilitate programming tasks related to manipulation of symbolic musical material.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
In the usual Max terminology, actors correspond to boxes (object or message) and input and output ports correspond respectively to inlets and outlets.
- 2.
We shall talk diffusely about Max in the later chapters, and only introduce it as an example here for readers already familiar with it.
- 3.
If an actor has multiple output ports, it can be divided into as many actors as outputs, each taking the same inputs and having only one output.
- 4.
- 5.
bach.roll and bach.score differ in that the former represents time proportionally, whereas the latter implements a traditional representation of time, with tempi, metri, measures and relative temporal units such as quarter notes, tuplets and so on.
- 6.
The website of bach showcases some interesting works that have been developed with the library, mostly by people unrelated to its developers.
- 7.
The dada library contains interactive two-dimensional interfaces for real-time symbolic generation and dataset exploration, embracing a graphic, ludic, explorative approach to music composition.
- 8.
Slots are containers of arbitrary data attached to notes and chords.
References
Agon, C.: OpenMusic: un language visuel pour la composition musicale assistée par ordinateur. Ph.D. thesis, University of Paris 6 (1998)
Agostini, A., Daubresse, E., Ghisi, D.: Cage: a high-level library for real-time computer-aided composition. In: Proceedings of the International Computer Music Conference, Athens, Greece (2014)
Agostini, A., Giavitto, J.: Bell, a textual language for the bach library. In: Proceedings of the International Computer Music Conference (to appear), New York, USA (2019)
Agostini, A., Ghisi, D.: A max library for musical notation and computer-aided composition. Comput. Music J. 39(2), 11–27 (2015). https://doi.org/10.1162/COMJ_a_00296
Bresson, J., Giavitto, J.L.: A reactive extension of the openmusic visual programming language. J. Visual Languages Comput. 25(4), 363–375 (2014)
Cipriani, A., Giri, M.: Musica Elettronica e Sound Design. ConTempoNet (2013)
Colasanto, F.: Max/MSP: Guía de Programación para Artistas. CMMAS (2010)
Conway, M.E.: Design of a separable transition-diagram compiler. Commun. ACM 6(7), 396–408 (1963)
Desain, P., et al.: Putting max in perspective. Comput. Music J. 17(2), 3–11 (1992)
Didkovsky, N., Hajdu, G.: Maxscore: music notation in Max/MSP. In: Proceedings of the International Computer Music Conference (2008)
Faustini, A.A.: An operational semantics for pure dataflow. In: Nielsen, M., Schmidt, E.M. (eds.) ICALP 1982. LNCS, vol. 140, pp. 212–224. Springer, Heidelberg (1982). https://doi.org/10.1007/BFb0012771
Ghisi, D., Agostini, A.: Extending bach: a family of libraries for real-time computer-assisted composition in max. J. New Music Res. 46(1), 34–53 (2017)
Halbwachs, N., Caspi, P., Raymond, P., Pilaud, D.: The synchronous data flow programming language LUSTRE. Proc. IEEE 79(9), 1305–1320 (1991)
Kahn, G.: The semantics of a simple language for parallel programming. In: proceedings of IFIP Congress 1974, North Holland, pp. 471–475 (1974)
Laurson, M., Kuuskankare, M.: PWGL: a novel visual language based on common Lisp, CLOS and OpenGL. In: Proceedings of International Computer Music Conference, Gothenburg, Sweden, pp. 142–145 (2002)
Mosses, P.D.: Handbook of theoretical computer science, vol. 2, chap. Denotational Semantics, pp. 575–631. Elsevier Science (1990)
Norilo, V., Rautatiekatu, P.: Introducing kronos-a novel approach to signal processing languages. In: Proceedings of the Linux Audio Conference, pp. 9–16. Maynooth: NUIM (2011)
Orlarey, Y., Fober, D., Letz, S.: Syntactical and semantical aspects of Faust. Soft. Comput. 8(9), 623–632 (2004)
Orlarey, Y., Fober, D., Letz, S.: Faust: an efficient functional approach to DSP programming. New Comput. Pradigms Comput. Music 290, 14 (2009)
Orlarey, Y., Fober, D., Letz, S.: Parallelization of audio applications with Faust. In: Proceedings of the 6th Sound and Music Computing Conference, Porto, PT, pp. 99–112 (2009)
Puckette, M.: Max at seventeen. Comput. Music J. 26(4), 31–43 (2002)
Puckette, M.: A divide between ‘compositional’ and ‘performative’ aspects of Pd. In: Proceedings of the First International Pd Convention. Graz, Austria (2004)
Scholl, S.: Musik – Raum – Technik. Zur Entwicklung und Anwendung der graphischen Programmierumgebung “Max”, chap. Karlheinz Essls RTC-lib, pp. 102–107. Transcript Verlag (2014)
Søndergaard, H., Sestoft, P.: Referential transparency, definiteness and unfoldability. Acta Informatica 27(6), 505–517 (1990). https://doi.org/10.1007/BF00277387
Wang, G., Cook, P.R., Salazar, S.: Chuck: a strongly timed computer music language. Comput. Music J. 39(4), 10–29 (2015)
Winkler, T.: Composing Interactive Music. The MIT Press, Cambridge (1998)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2021 Springer Nature Switzerland AG
About this paper
Cite this paper
Agostini, A., Ghisi, D., Giavitto, JL. (2021). Programming in Style with bach. In: Kronland-Martinet, R., Ystad, S., Aramaki, M. (eds) Perception, Representations, Image, Sound, Music. CMMR 2019. Lecture Notes in Computer Science(), vol 12631. Springer, Cham. https://doi.org/10.1007/978-3-030-70210-6_18
Download citation
DOI: https://doi.org/10.1007/978-3-030-70210-6_18
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-70209-0
Online ISBN: 978-3-030-70210-6
eBook Packages: Computer ScienceComputer Science (R0)