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.
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 Scholar
- 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 ScholarDigital Library
- Ryan Kirkbride. 2016. FoxDot: Live coding with python and supercollider. In Proceedings of the International Conference on Live Interfaces. 194–198.Google Scholar
- Carol Klabnik, Steve and Nichols. 2020. The Rust Programming Language. https://doc.rust-lang.org/book/Google Scholar
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- Erik de Castro Lopo. 1990. libsndfile. http://www.mega-nerd.com/libsndfile/Google Scholar
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- Microsoft. 2020. Functions - F# | Microsoft Docs. https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/functions/##function-composition-and-pipeliningGoogle Scholar
- 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 ScholarDigital Library
- Vesa Norilo. 2016. Kronos Meta-Sequencer – From Ugens to Orchestra, Score and Beyond. In Proceedings of the International Computer Music Conference. 117–122.Google Scholar
- Vesa Norilo. 2016. Kronos: Reimagining musical signal processing. Ph.D. Dissertation. University of the Arts Helsinki.Google Scholar
- 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 ScholarDigital Library
- Miller Puckette. 2002. Max at seventeen. Computer Music Journal, 26, 4 (2002), 31–43. issn:01489267 https://doi.org/10.1162/014892602320991356 Google ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- Leonardo Laguna Ruiz. 2020. Vult Language. http://modlfo.github.io/vult/Google Scholar
- 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 Scholar
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- Julian Storer. 2019. SOUL_Overview.md. https://github.com/soul-lang/SOUL/blob/master/docs/SOUL_Overview.mdGoogle Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
Index Terms
- mimium: a self-extensible programming language for sound and music
Recommendations
Potigol, a Programming Language for Beginners
ITiCSE '16: Proceedings of the 2016 ACM Conference on Innovation and Technology in Computer Science EducationPotigol is a new multi-paradigm programming language specially designed for beginners. Its main features are an agile syntax, which looks like dynamically-typed scripting languages, and a statically-typed semantics with limited side-effects. Both syntax ...
Definitional Interpreters for Higher-Order Programming Languages
Higher-order programming languages (i.e., languages in which procedures or labels can occur as values) are usually defined by interpreters that are themselves written in a programming language based on the lambda calculus (i.e., an applicative language ...
Definitional interpreters for higher-order programming languages
ACM '72: Proceedings of the ACM annual conference - Volume 2Higher-order programming languages (i.e., languages in which procedures or labels can occur as values) are usually defined by interpreters which are themselves written in a programming language based on the lambda calculus (i.e., an applicative language ...
Comments