}}
'''Impromptu''' is a Mac OS X programming environment for composers, sound artists, VJs and graphic artists with an interest in live orprogramming interactive programming. Impromptu is a [[Scheme (programming language)|Scheme]] language environment, which is a member of the [[Lisp (programming language)|Lisp]] family of languages. Impromptu's Scheme Interpreter was initially built from the [[TinyScheme]] 1.35 baseline, but it has been substantially modified since.
== Description ==
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.
*The Asynchronousenvironment scheduling.allows Impromptuto allowsmake changes to a program at [[runtime]], so variables and functions may be redifined and the changes take effect immediately. A programmer tocan also 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 (graphics layer)|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.
*The Impromptulibrary allows to communicate with [[Audio Units]] for audio synthesis, and to graphics layers such as [[QuickTime]], [[Quartz (graphics layer)|Quartz]], [[Core Image]], [[OpenGL]] for [[video composition]]. Code written in [[Objective-C]] can be called from the editor, and also Objective-C frameworks can perform calls to the Scheme interpreter. It includes a [[static type]] [[inferencing compiler]] for a minimal functional language similar to Scheme, but it is designed for systemsdynamic stylesystems programming. The compiler uses [[LLVM]] for backend compilation to x86. You can find out more about the compiler and language [http://impromptu.moso.com.au/extras/ICR.html here[x86]].
* 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 ==
|