An editor has nominated this article for deletion. You are welcome to participate in the deletion discussion, which will decide whether or not to retain it. |
- This article is about the programming language. For other uses, see Impromptu (disambiguation).
Impromptu is a Mac OS X programming environment for composers, sound artists, VJs and graphic artists with an interest in live or interactive programming. Impromptu is a Scheme language environment, a member of the Lisp family of languages.
Impromptu | |
---|---|
![]() | |
Paradigm | Functional, multi-paradigm |
Designed by | Andrew Sorensen |
First appeared | 2005 |
Stable release | 2.5
|
Typing discipline | Dynamic & static |
OS | Mac OS X |
Website | http://impromptu.moso.com.au/ |
Its key features are :
- A fully dynamic Scheme environment. You can evaluate any portion of code in the builtin editor while the program is running, which means you can (re)define variables or functions live, the changes take effect immediately.
- Asynchronous scheduling. Impromptu allows a programmer to create and schedule code for future execution as well as data events such as notes and graphics objects. Once an event is scheduled, execution continues. Looping is performed by using an idiom called "temporal recursion" which works by having a function asynchronously schedule a future call to itself as its final action.
- Extensive library based on a tight integration with Mac OS X. Audio synthesis is done via Audio Units and graphics/video are composed using QuickTime, Quartz, Core Image, OpenGL etc.. You can also call Objective-C code from the editor and call back into the Scheme interpreter from your own Objective C frameworks.
- Impromptu includes a static type inferencing compiler for a minimal functional language similar to Scheme but designed for systems style programming. The compiler uses LLVM for backend compilation to x86. You can find out more about the compiler and language here.
- Impromptu's Scheme Interpreter was initially built from the TinyScheme 1.35 baseline. The interpreter has been substantially modified since Impromptu's initial release.
- Free to use, but not open-source.
References
Papers by Andrew Sorensen
- Sorensen, A (2010) "A Distributed Memory For Networked Livecoding Performance" International Computer Music Conference 2010, New York
- Sorensen, A & Brown, A (2008) "A Computational Model For The Generation Of Orchestral Music In The Germanic Symphonic Tradition: A progress report" paper presented to the Australasian Computer Music Conference 2008, Sydney
- Sorensen, A & Brown, A (2007) "aa-cell in Practice: An Approach to Musical Live Coding" paper presented to the International Computer Music Conference 2007, Copenhagen
- Sorensen, A. (2005) "Impromptu: An interactive programming environment for composition and performance" a paper presented to the Australasian Computer Music Conference 2005, Brisbane: ACMA, pp. 149–153. (NOTE: Impromptu version discussed is obsolete)
- Sorensen, A. "ICR - Impromptu Compiler Runtime"
Independant academic sources referencing Impromptu
- Click Nilson "Live coding practice" NIME '07, Proceedings of the 7th international conference on New interfaces for musical expression ACM New York, NY, USA ©2007
- Roger B. Dannneberg, “Live Coding Using a Visual Pattern Composition Language,” in Proceedings of the 12th Biennial Symposium on Arts and Technology, March 4-6, Ammerman Center for Art & Technology, Connecticut College, 2010
- Nick Collins "Live Coding of Consequence", Leonardo, June 2011, Vol. 44, No. 3, Pages 207-211
- Andrea Valle "GeoGraphy: a realtime, graphbased composition environment", NIME08, Genova, Italy Copyright 2008
- Thor Magnusson "ixi lang: A Constraint System for Live Coding", ISEA2010 RUHR, Conference Proceeedings, 2010.
- Dillon, Steven C. (2007) "Examining meaningful engagement: Musicology and virtual music making environments". In ISLANDS - Conference of the Australian and New Zealand Musicological Societies, 22-25 November 2007, Brisbane.
- Jason Freeman and Akito Van Troyer "Collaborative Textual Improvisation in a Laptop Ensemble" Computer Music Journal - Volume 35, Number 2, Summer 2011, pp. 8-21
- Dillon, Steven C. (2010) ‘Music is a wordless knowing of others.’ Resilience in virtual ensembles. In: Brader, Andy (Ed) Songs of Resilience. Meaningful Music Making For Life, 3. Cambridge Scholars Publishing, Newcastle upon Tyne. (In Press as of 2011-06-01)
- Ross Bencina "Creative software development: reflections on AudioMulch practice" Digital Creativity Volume 17, Issue 1, 2006, Pages 11 - 24