skip to main content
10.1145/3471872.3472969acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
research-article

mimium: a self-extensible programming language for sound and music

Published:22 August 2021Publication History

ABSTRACT

We propose a programming language for music named mimium, which combines temporal-discrete control and signal processing in a single language. mimium has an intuitive imperative syntax and can use stateful functions as Unit Generator in the same way as ordinary function definitions and applications. Furthermore, the runtime performance is made equivalent to that of lower-level languages by compiling the code through the LLVM compiler infrastructure. By using the strategy of adding a minimum number of features for sound to the design and implementation of a general-purpose functional language, mimium is expected to lower the learning cost for users, simplify the implementation of compilers, and increase the self-extensibility of the language. In this paper, we present the basic language specification, semantics for simple task scheduling, the semantics for stateful functions, and the compilation process.

mimium has certain specifications that have not been achieved in existing languages. Future works suggested include extending the compiler functionality to combine task scheduling with the functional paradigm and introducing multi-stage computation for parametric replication of stateful functions.

References

  1. Samuel Aaron and Alan F. Blackwell. 2013. From Sonic Pi to overtone: Creative musical experiences with domain-specific and functional languages. Proceedings of the ACM SIGPLAN International Conference on Functional Programming, ICFP, 35–46. isbn:9781450323864 https://doi.org/10.1145/2505341.2505346 Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Roger B. Dannenberg. 2018. Languages for Computer Music. Frontiers in Digital Humanities, 5 (2018), nov, issn:2297-2668 https://doi.org/10.3389/fdigh.2018.00026 Google ScholarGoogle ScholarCross RefCross Ref
  3. Roger B Dannenberg and Ross Bencina. 2005. Design Patterns for Real-Time Computer Music Systems. In ICMC 2005 Workshop on Real Time Systems Concepts for Computer Music. https://www.researchgate.net/publication/242648768_Design_Patterns_for_Real-Time_Computer_Music_SystemsGoogle ScholarGoogle Scholar
  4. Steven E. Ganz, Amr Sabry, and Walid Taha. 2001. Macros as multi-stage computations: Type-safe, generative, binding macros in MacroML. SIGPLAN Notices (ACM Special Interest Group on Programming Languages), 36, 10 (2001), oct, 74–85. issn:03621340 https://doi.org/10.1145/507669.507646 Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Ryan Kirkbride. 2016. FoxDot: Live coding with python and supercollider. In Proceedings of the International Conference on Live Interfaces. 194–198.Google ScholarGoogle Scholar
  6. Carol Klabnik, Steve and Nichols. 2020. The Rust Programming Language. https://doc.rust-lang.org/book/Google ScholarGoogle Scholar
  7. Chris Lattner and Vikram Adve. 2004. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In Proceedings of the International Symposium on Code Generation and Optimization: Feedback-Directed and Runtime Optimization (CGO ’04). IEEE Computer Society, USA. 75. isbn:0769521029 https://llvm.org/pubs/2004-01-30-CGO-LLVM.htmlGoogle ScholarGoogle ScholarDigital LibraryDigital Library
  8. Victor Lazzarini. 2013. The Development of Computer Music Programming Systems. Journal of New Music Research, 42, 1 (2013), 97–110. issn:1744-5027 https://doi.org/10.1080/09298215.2013.778890 Google ScholarGoogle ScholarCross RefCross Ref
  9. Erik de Castro Lopo. 1990. libsndfile. http://www.mega-nerd.com/libsndfile/Google ScholarGoogle Scholar
  10. Thor Magnusson. 2011. The IXI Lang: A SuperCollider Parasite for Live Coding. International Computer Music Conference Proceedings, 2011 (2011), issn:2223-3881 http://hdl.handle.net/2027/spo.bbp2372.2011.101Google ScholarGoogle ScholarCross RefCross Ref
  11. James McCartney. 2002. Rethinking the computer music language: SuperCollider. Computer Music Journal, 26, 4 (2002), dec, 61–68. issn:01489267 https://doi.org/10.1162/014892602320991383 Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Alex McLean. 2014. Making programming languages to dance to: Live coding with tidal. In FARM 2014 - Proceedings of the 2014 ACM SIGPLAN International Workshop on Functional Art, Music, Modelling and Design. Association for Computing Machinery, New York, New York, USA. 63–70. isbn:9781450330398 https://doi.org/10.1145/2633638.2633647 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Microsoft. 2020. Functions - F# | Microsoft Docs. https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/functions/##function-composition-and-pipeliningGoogle ScholarGoogle Scholar
  14. Vesa Norilo. 2015. Kronos: A Declarative Metaprogramming Language for Digital Signal Processing. Computer Music Journal, 39, 4 (2015), 30–48. https://doi.org/10.1162/COMJ_a_00330 Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Vesa Norilo. 2016. Kronos Meta-Sequencer – From Ugens to Orchestra, Score and Beyond. In Proceedings of the International Computer Music Conference. 117–122.Google ScholarGoogle Scholar
  16. Vesa Norilo. 2016. Kronos: Reimagining musical signal processing. Ph.D. Dissertation. University of the Arts Helsinki.Google ScholarGoogle Scholar
  17. Y. Orlarey, D. Fober, and S. Letz. 2004. Syntactical and semantical aspects of Faust. Soft Computing, 8, 9 (2004), 623–632. isbn:0050000403 issn:14327643 https://doi.org/10.1007/s00500-004-0388-1 Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Miller Puckette. 2002. Max at seventeen. Computer Music Journal, 26, 4 (2002), 31–43. issn:01489267 https://doi.org/10.1162/014892602320991356 Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Miller S. Puckette. 1997. Pure Data. In International Computer Music Conference Proceedings. Michigan Publishing, University of Michigan Library. issn:2223-3881 http://hdl.handle.net/2027/spo.bbp2372.1997.060Google ScholarGoogle Scholar
  20. Cristina Ruggieri and Thomas P. Murtagh. 1988. Lifetime analysis of dynamically allocated objects. In Conference Record of the Annual ACM Symposium on Principles of Programming Languages. Part F130193, Association for Computing Machinery, 285–293. isbn:0897912527 issn:07308566 https://doi.org/10.1145/73560.73585 Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Leonardo Laguna Ruiz. 2020. Vult Language. http://modlfo.github.io/vult/Google ScholarGoogle Scholar
  22. Spencer Salazar and Ge Wang. 2012. CHUGENS, CHUBGRAPHS, CHUGINS: 3 TIERS FOR EXTENDING CHUCK. In International Computer Music Conference Proceedings. 60–63. http://hdl.handle.net/2027/spo.bbp2372.2012.010Google ScholarGoogle Scholar
  23. Gary P. Scavone. 2002. RtAudio: A Cross-Platform C++ Class for Realtime Audio Input/Output. In Proceedings of the 2002 International Computer Music Conference. Goteborg, Sweden.Google ScholarGoogle Scholar
  24. Andrew Sorensen and Henry Gardner. 2010. Programming With Time Cyber-physical programming with Impromptu. In Proceedings of the ACM international conference on Object oriented programming systems languages and applications - OOPSLA ’10. ACM Press, New York, New York, USA. isbn:9781450302036Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Andrew Carl Sorensen. 2018. Extempore: The design, implementation and application of a cyber-physical programming language. Ph.D. Dissertation. The Australian National University. https://doi.org/10.25911/5D67B75C3AAF0 Google ScholarGoogle ScholarCross RefCross Ref
  26. Diomidis Spinellis. 2001. Notable design patterns for domain-specific languages. Journal of Systems and Software, 56, 1 (2001), feb, 91–99. issn:01641212 https://doi.org/10.1016/S0164-1212(00)00089-3 Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Julian Storer. 2019. SOUL_Overview.md. https://github.com/soul-lang/SOUL/blob/master/docs/SOUL_Overview.mdGoogle ScholarGoogle Scholar
  28. Eijiro Sumii. 2005. MinCaml: A simple and efficient compiler for a minimal functional language. In FDPE’05 - Proceedings of the ACM SIGPLAN 2005 Workshop on Functional and Declarative Programming in Education. ACM Press, New York, New York, USA. 27–38. isbn:1595930671 https://doi.org/10.1145/1085114.1085122 Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Walid Taha and Tim Sheard. 1997. Multi-Stage Programming with Explicit Annotations. SIGPLAN Notices (ACM Special Interest Group on Programming Languages), 32, 12 (1997), dec, 203–214. issn:03621340 https://doi.org/10.1145/258994.259019 Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Ge Wang, Perry R Cook, and Spencer Salazar. 2015. ChucK: A Strongly Timed Computer Music Language. Computer Music Journal, 39, 4 (2015), 10–29. https://doi.org/10.1162/COMJ_a_00324 Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. mimium: a self-extensible programming language for sound and music

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          FARM 2021: Proceedings of the 9th ACM SIGPLAN International Workshop on Functional Art, Music, Modelling, and Design
          August 2021
          53 pages
          ISBN:9781450386135
          DOI:10.1145/3471872

          Copyright © 2021 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 22 August 2021

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

          Acceptance Rates

          Overall Acceptance Rate19of23submissions,83%

          Upcoming Conference

          ICFP '24
        • Article Metrics

          • Downloads (Last 12 months)21
          • Downloads (Last 6 weeks)1

          Other Metrics

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader