Skip to main content

Programming in Style with bach

  • Conference paper
  • First Online:
Perception, Representations, Image, Sound, Music (CMMR 2019)

Part of the book series: Lecture Notes in Computer Science ((LNISA,volume 12631))

Included in the following conference series:

  • 984 Accesses

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 109.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 139.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 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. 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. 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. 4.

    www.bachproject.net.

  5. 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. 6.

    The website of bach showcases some interesting works that have been developed with the library, mostly by people unrelated to its developers.

  7. 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. 8.

    Slots are containers of arbitrary data attached to notes and chords.

References

  1. Agon, C.: OpenMusic: un language visuel pour la composition musicale assistée par ordinateur. Ph.D. thesis, University of Paris 6 (1998)

    Google Scholar 

  2. 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)

    Google Scholar 

  3. 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)

    Google Scholar 

  4. 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

  5. Bresson, J., Giavitto, J.L.: A reactive extension of the openmusic visual programming language. J. Visual Languages Comput. 25(4), 363–375 (2014)

    Article  Google Scholar 

  6. Cipriani, A., Giri, M.: Musica Elettronica e Sound Design. ConTempoNet (2013)

    Google Scholar 

  7. Colasanto, F.: Max/MSP: Guía de Programación para Artistas. CMMAS (2010)

    Google Scholar 

  8. Conway, M.E.: Design of a separable transition-diagram compiler. Commun. ACM 6(7), 396–408 (1963)

    Article  Google Scholar 

  9. Desain, P., et al.: Putting max in perspective. Comput. Music J. 17(2), 3–11 (1992)

    Google Scholar 

  10. Didkovsky, N., Hajdu, G.: Maxscore: music notation in Max/MSP. In: Proceedings of the International Computer Music Conference (2008)

    Google Scholar 

  11. 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

    Chapter  Google Scholar 

  12. 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)

    Article  Google Scholar 

  13. Halbwachs, N., Caspi, P., Raymond, P., Pilaud, D.: The synchronous data flow programming language LUSTRE. Proc. IEEE 79(9), 1305–1320 (1991)

    Article  Google Scholar 

  14. Kahn, G.: The semantics of a simple language for parallel programming. In: proceedings of IFIP Congress 1974, North Holland, pp. 471–475 (1974)

    Google Scholar 

  15. 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)

    Google Scholar 

  16. Mosses, P.D.: Handbook of theoretical computer science, vol. 2, chap. Denotational Semantics, pp. 575–631. Elsevier Science (1990)

    Google Scholar 

  17. 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)

    Google Scholar 

  18. Orlarey, Y., Fober, D., Letz, S.: Syntactical and semantical aspects of Faust. Soft. Comput. 8(9), 623–632 (2004)

    Article  Google Scholar 

  19. Orlarey, Y., Fober, D., Letz, S.: Faust: an efficient functional approach to DSP programming. New Comput. Pradigms Comput. Music 290, 14 (2009)

    Google Scholar 

  20. 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)

    Google Scholar 

  21. Puckette, M.: Max at seventeen. Comput. Music J. 26(4), 31–43 (2002)

    Article  Google Scholar 

  22. Puckette, M.: A divide between ‘compositional’ and ‘performative’ aspects of Pd. In: Proceedings of the First International Pd Convention. Graz, Austria (2004)

    Google Scholar 

  23. Scholl, S.: Musik – Raum – Technik. Zur Entwicklung und Anwendung der graphischen Programmierumgebung “Max”, chap. Karlheinz Essls RTC-lib, pp. 102–107. Transcript Verlag (2014)

    Google Scholar 

  24. Søndergaard, H., Sestoft, P.: Referential transparency, definiteness and unfoldability. Acta Informatica 27(6), 505–517 (1990). https://doi.org/10.1007/BF00277387

    Article  MathSciNet  MATH  Google Scholar 

  25. Wang, G., Cook, P.R., Salazar, S.: Chuck: a strongly timed computer music language. Comput. Music J. 39(4), 10–29 (2015)

    Article  Google Scholar 

  26. Winkler, T.: Composing Interactive Music. The MIT Press, Cambridge (1998)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Andrea Agostini .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2021 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

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)

Publish with us

Policies and ethics