Impromptu is an OSX programming language and 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. Impromptu is used by artist-programmers in livecoding performances around the globe.
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.
Impromptu allows you to write, modify, compile and hot swap custom signal processing code - an ability that allows you to write low level sound synthesis code during live performance. This functionality is designed to interoperate with the AudioUnit signal graph allowing you to freely mix your favorite AudioUnits with custom synthesis code. All on-the-fly of course.
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. An LLVM based scheme->x86 compiler is also available supporting on-the-fly compilation of scheme code for audio signal processing, OpenGL, numeric processing and alike.