ChucK: A Strongly Timed Computer Music Language
2015, Computer Music Journal
https://doi.org/10.1162/COMJAbstract
ChucK is a programming language designed for computer music. It aims to be expressive and straightforward to read and write with respect to time and concurrency, and to provide a platform for precise audio synthesis and analysis and for rapid experimentation in computer music. In particular, ChucK defines the notion of a strongly timed audio programming language, comprising a versatile time-based programming model that allows programmers to flexibly and precisely control the flow of time in code and use the keyword now as a time-aware control construct, and gives programmers the ability to use the timing mechanism to realize sample-accurate concurrent programming. Several case studies are presented that illustrate the workings, properties, and personality of the language. We also discuss applications of ChucK in laptop orchestras, computer music pedagogy, and mobile music instruments. Properties and affordances of the language and its future directions are outlined.
References (53)
- Aaron, S., and A. F. Blackwell. 2013. "From Sonic Pi to Overtone: Creative Musical Experiences with Domain- Specific and Functional Languages." In Proceedings of the ACM SIGPLAN Workshop on Functional Art, Music, Modeling, and Design, pp. 35-46.
- Anderson, D., and R. Kuivila. 1991. "Formula: A Program- ming Language for Expressive Computer Music." IEEE Computer 24(7):12-21.
- Anderson, T., et al. 1992. "Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism." ACM Transactions on Computer Systems 10(1):53-79.
- Berry, G., and G. Gonthier. 1992. "The Esterel Syn- chronous Programming Language: Design, Semantics, Implementation." Science of Computer Programming 19(2):87-152.
- Brandt, E. 2002. "Temporal Type Constructors for Com- puter Music Programming." PhD dissertation, Carnegie Mellon University.
- Bukvic, I. I., et al. 2010. "Introducing L2Ork: Linux Laptop Orchestra." In Proceedings of the International Conference on New Interfaces for Musical Expression, pp. 170-173.
- Burk, P., L. Polansky, and D. Rosenboom. 1990. "HMSL (Hierarchical Music Specification Language): A Theoret- ical Overview." Perspectives of New Music 28(2):136- 178.
- Caspi, P., et al. 1987. "LUSTRE: A Declarative Language for Programming Synchronous Systems." In Annual Symposium on Principles of Programming Languages, pp. 178-188.
- Collins, N., et al. 2003. "Live Coding in Laptop Perfor- mance." Organised Sound 8(3):321-330.
- Cook, P. R., and G. Scavone. 1999. "The Synthesis Toolkit (STK)." In Proceedings of the International Computer Music Conference, pp. 164-166.
- Dannenberg, R. 1997. "Machine Tongues XIX: Nyquist, a Language for Composition and Sound Synthesis." Computer Music Journal 21(3):50-60.
- Dannenberg, R., et al. 2007. "The Carnegie Mellon Laptop Orchestra." In Proceedings of the International Computer Music Conference, vol. 2, pp. 340-343.
- Fiebrink, R. 2011. "Real-Time Human Interaction with Supervised Learning Algorithms for Music Composi- tion and Performance." PhD dissertation, Princeton University.
- Fiebrink, R., G. Wang, and P. R. Cook. 2007. "Don't Forget the Laptop: Using Native Input Capabilities for Expressive Control." In Proceedings of the International Conference on New Interfaces for Musical Expression, pp. 164-167.
- Fiebrink, R., G. Wang, and P. R. Cook. 2008. "Support for MIR Prototyping and Real-Time Applications of the ChucK Programming Language." In Proceedings of the International Conference on Music Information Retrieval, pp. 153-158.
- Halbwachs, N. 1993. Synchronous Programming of Reactive Systems. Alphen aan den Rijn, Netherlands: Kluwer.
- Hoare, C. A. R. 1978. "Communicating Sequential Processes." Communications of the ACM 21(8):666- 677.
- Hudak, P., et al. 1996. "Haskore Music Notation: An Algebra of Music." Journal of Functional Programming 6(3):465-483.
- Jaffe, D., and J. O. Smith. 1983. "Extensions of the Karplus- Strong Plucked String Algorithm." Computer Music Journal 7(2):56-69.
- Kapur, A., et al. 2011. "The Machine Orchestra: An Ensem- ble of Human Laptop Performers and Robotic Musical Instruments." Computer Music Journal 35(4):49-63.
- Kapur, A., et al. 2015. Programming for Musicians and Digital Artists: Making Music with ChucK. Shelter Island, New York: Manning Press.
- Karplus, K., and A. Strong. 1983. "Digital Synthesis of Plucked String and Drum Timbres." Computer Music Journal 7(2):43-55.
- Lansky, P. 1990. "CMIX." Release Notes and Manuals. Princeton, New Jersey: Department of Music, Princeton University.
- Le Guernic, P., et al. 1985. "SIGNAL: A Data Flow Oriented Language for Signal Processing." IEEE Trans- actions on Acoustics, Speech and Signal Processing 34(2):362-374.
- Mathews, M. 1969. The Technology of Computer Music. Cambridge, Massachusetts: MIT Press.
- McCartney, J. 2002. "Rethinking the Computer Music Programming Language: SuperCollider." Computer Music Journal 26(4):61-68.
- Pope, S. T. 1993. "Machine Tongues XV: Three Packages for Software Sound Synthesis." Computer Music Journal 17(2):23-54.
- Puckette, M. 1991. "Combining Event and Signal Process- ing in the Max Graphical Programming Environment." Computer Music Journal 15(3):68-77.
- Puckette, M. 1996. "Pure Data." In Proceedings of the International Computer Music Conference, pp. 224-227.
- Roberts, C., et al. 2013. "Gibber: Abstractions for Creative Multimedia Programming." In Proceedings of the ACM International Conference on Multimedia, pp. 67-76.
- Salazar, S., and G. Wang. 2012. "Chugens, Chubgraphs, and Chugins: 3 Tiers for Extending ChucK." In Proceedings of the International Computer Music Conference, pp. 60-63.
- Salazar, S., and G. Wang. 2014. "MiniAudicle for iPad: Touchscreen-Based Music Software Programming." In Proceedings of the International Computer Music Conference, pp. 686-691.
- Salazar, S., G. Wang, and P. R. Cook. 2006. "miniAu- dicle and ChucK Shell: New Interfaces for ChucK Development and Performance." In Proceedings of the International Computer Music Conference, pp. 64-66.
- Schottstaedt, B. 1994. "Machine Tongues XVII: CLM: Music V Meets Common Lisp." Computer Music Journal 18(2):3-37.
- Sipser, M. 2005. Introduction to the Theory of Computa- tion. Boston, Massachusetts: Cengage.
- Smallwood, S., et al. 2008. "Composing for Laptop Orchestra." Computer Music Journal 32(1):9-25.
- Sorensen, A. 2005. "Impromptu: An Interactive Program- ming Environment for Composition and Performance." In Proceedings of the Australasian Computer Music Conference, pp. 149-153.
- Sorensen, A., and H. 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, pp. 832-834.
- Steiglitz, K. 1996. A Digital Signal Processing Primer: With Applications to Digital Audio and Computer Music. Upper Saddle River, New Jersey: Prentice Hall.
- Touretzky, D. S. 1984. LISP: A Gentle Introduction to Symbolic Computation. New York: Harper and Row.
- Trueman, D. 2007. "Why a Laptop Orchestra?" Organised Sound 12(2):171-179.
- Trueman, D., et al. 2006. "PLOrk: Princeton Laptop Orchestra, Year 1." In Proceedings of the International Computer Music Conference, pp. 443-450.
- Turing, A. 1937. "On Computer Numbers, with an Application to the Entscheidungsproblem." Proceedings of the London Mathematical Society, series 2 42(1):230- 265.
- Vercoe, B. 1986. CSOUND: A Manual for the Audio Pro- cessing System and Supporting Programs. Cambridge, Massachusetts: MIT Media Lab.
- Wang, G. 2008. "The ChucK Audio Programming Lan- guage: A Strongly-Timed and On-the-Fly Environ/ Mentality." PhD dissertation, Princeton University.
- Wang, G. 2014a. "Ocarina: Designing the iPhone's Magic Flute." Computer Music Journal 38(2):8-21.
- Wang, G. 2014b. The DIY Orchestra of the Future. TED talk. Available online at www.ted.com/talks/ge wang the diy orchestra of the future. Accessed September 2015.
- Wang, G., and P. R. Cook. 2004a. "On-the-Fly Program- ming: Using Code as an Expressive Musical Instru- ment." In Proceedings of the International Conference on New Interfaces for Musical Expression, pp. 153- 160.
- Wang, G., and P. R. Cook. 2004b. "Audicle: A Context- Sensitive, On-the-Fly Audio Programming Environ/ Mentality." In Proceedings of the International Com- puter Music Conference, pp. 256-263.
- Wang, G., R. Fiebrink, and P. R. Cook. 2007. "Combining Analysis and Synthesis in the ChucK Programming Lan- guage." In Proceedings of the International Computer Music Conference, pp. 35-42.
- Wang, G., et al. 2008. "The Laptop Orchestra as Class- room." Computer Music Journal 32(1):26-37.
- Wang, G., et al. 2009. "Stanford Laptop Orchestra (SLOrk)." In Proceedings of the International Computer Music Conference, pp. 505-508.
- Wright, M., and A. Freed. 1997. "Open Sound Control: A New Protocol for Communicating with Sound Synthesizers." In Proceedings of the International Computer Music Conference, pp. 101-104.