Impromptu (programming environment)
- This article is about the programming language. For other uses, see Impromptu.
Impromptu | |
---|---|
File:Impromptu splash.png | |
Operating system | OSX |
Website | http://impromptu.moso.com.au/ |
Impromptu is an OSX programming environment for composers, sound artists, VJ's 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.
Time plays a major role in the Impromptu environment allowing accurate real-time scheduling of events and code. Impromptu is a dynamic environment designed for the creation and manipulation of running programs in live performance. Impromptu is a programmable AudioUnit host. A powerful environment for creating signal processing graphs of arbitrary complexity with precise programmatic control over individual AU nodes. Musical material can be precisely scheduled for performance by any AudioUnit instrument node and parameters, program changes and presets can be programmatically changed on-the-fly as well as directly via the AU's user interface.
Graphics routines can be applied with the same temporal accuracy as audio material allowing artists to tightly integrate audio and visual components. OpenGL, live video processing, vector drawing routines, image rendering, CoreImage filters, text rendering and quicktime movie support are a few of the graphics features available for artists to play with.
Impromptu also includes a bidirectional ObjC-Bridge allowing Scheme to instantiate and call ObjC objects and ObjC objects to call back into the Scheme interpreter. For those times when only C will do.
Impromptu uses a modified version of TinyScheme-based programming environment that runs on Mac OS X, intended for musical and graphical live coding performances.
It's 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 function live, the changes take effect immediately.
- Asynchronous timing. 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 (unless there is nothing left do do while waiting for the next scheduled task). Looping is performed by using an idiom called "temporal recursion" which works by delaying the next evaluation of a recursive function.
- Extensive library based on a tight integration with Mac OS X. Audio synthesis is done via Audio Units and graphics are drawn using either Core Image or OpenGL. You can also call Objective C code from the editor if the necessity arises.
- Free to use, but not open-source.
See Also
External Links
References
- 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)