Impromptu
ParadigmFunctional, multi-paradigm
Designed byAndrew Sorensen
First appeared2005; 21 years ago (2005)
Stable release
2.5
Typing disciplineDynamic & static
OSMac OS X
Websiteimpromptu.moso.com.au
Influenced by
Influenced
Extempore

Impromptu is a Mac OS X programming environment for live coding. Impromptu is built around the Scheme language, which is a member of the Lisp family of languages. The source code of its core has been opened as the Extempore project.

Description

edit

The environment allows to make changes to a program at runtime, so variables and functions may be redefined and the changes take effect immediately. A programmer can 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.

The library allows communicating with Audio Units for audio synthesis, and with graphics layers such as QuickTime, 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.

Impromptu's Scheme interpreter was initially built from the TinyScheme 1.35 baseline, but it has been substantially modified since to better suit the live coding context. A real-time garbage collector, and Objective-C integration were added. Also, a new statically typed language called the Extempore Language has been integrated to the system. This language is syntactically Scheme-like, but semantically closer to C, and is designed for real-time sound synthesis and other computationally heavy tasks. It provides type inference and is compiled to machine language by LLVM.

Sample performance

edit

A Study in Keith is a live coding performance in Impromptu by Andrew Sorensen. The first two minutes (1:56) are silent, while the performer writes the program that will produce the introduction of the piece. From then on, he modifies the code on the fly to evolve the composition.

Extempore

edit

The core of Impromptu has been released as Extempore under a BSD style licence. It runs under both Linux and Mac OS X. It includes the Scheme interpreter, the Extempore Language compiler and the scheduler. The bindings to Apple libraries are absent, but the environment can interface with dynamic libraries.

See also

edit

References

edit

Academic papers

edit

Other sources

edit
edit

📚 Artikel Terkait di Wikipedia

Live coding

on-the-fly programming, just in time programming and conversational programming, makes programming an integral part of the running program. It is most

Interactive programming

screenshot Impromptu (programming environment) An example of livecoding in English with Quoth Hot-swapping in the functional reactive programming language

List of audio programming languages

unit generators Extempore, a live-coding environment that borrows a core foundation from the Impromptu environment FAUST, Functional Audio Stream, a functional

List of music software

retrieval Software effect processor Sound Recorder (Windows) Impromptu (programming environment) Keykit Max (software) SynthFont (a MIDI to WAV converter--

Impromptu (disambiguation)

Waters of Change, 1971 Impromptu (programming environment), a Scheme-based live programming environment Impromptu speaking Impromptu, a 1923 novel by Elliot

Comparison of audio synthesis environments

Software audio synthesis environments typically consist of an audio programming language (which may be graphical) and a user environment to design/run the language

Extempore (software)

"Programming with Time: Cyber-Physical Programming with Impromptu." In Proceedings of the ACM International Conference on Object Oriented Programming Systems

Software testing

plus when programming tools/text editors check source code structure or compilers (precompilers) check syntax and data flow as static program analysis