Impromptu (programming Environment)
   HOME

TheInfoList



OR:

Impromptu is a
Mac OS X macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
programming Program (American English; also Commonwealth English in terms of computer programming and related activities) or programme (Commonwealth English in all other meanings), programmer, or programming may refer to: Business and management * Program m ...
environment for
live coding Live coding, sometimes referred to as on-the-fly programming,Wang G. & Cook P. (2004"On-the-fly Programming: Using Code as an Expressive Musical Instrument" In ''Proceedings of the 2004 International Conference on New Interfaces for Musical Expr ...
. Impromptu is built around the
Scheme Scheme or schemer may refer to: Arts and entertainment * ''The Scheme'', a BBC Scotland documentary TV series * The Scheme (band), an English pop band * ''The Scheme'', an action role-playing video game for the PC-8801, made by Quest Corporation * ...
language, which is a member of the
Lisp Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized Polish notation#Explanation, prefix notation. Originally specified in the late 1950s, ...
family of languages. The source code of its core has been opened as the Extempore project.


Description

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 Audio Units (AU) are a system-level Plug-in (computing), plug-in architecture provided by Core Audio in Apple Inc., Apple's macOS and iOS operating systems. Audio Units are a set of application programming interface (API) services provided by t ...
for audio synthesis, and with graphics layers such as
QuickTime QuickTime (or QuickTime Player) is an extensible multimedia architecture created by Apple, which supports playing, streaming, encoding, and transcoding a variety of digital media formats. The term ''QuickTime'' also refers to the QuickTime Pla ...
,
Quartz Quartz is a hard, crystalline mineral composed of silica (silicon dioxide). The Atom, atoms are linked in a continuous framework of SiO4 silicon–oxygen Tetrahedral molecular geometry, tetrahedra, with each oxygen being shared between two tet ...
,
Core Image Core Image is a pixel-accurate, near-realtime, non-destructive image processing technology in Mac OS X. Implemented as part of the QuartzCore framework of Mac OS X 10.4 and later, Core Image provides a plugin-based architecture for applying filt ...
,
OpenGL OpenGL (Open Graphics Library) is a Language-independent specification, cross-language, cross-platform application programming interface (API) for rendering 2D computer graphics, 2D and 3D computer graphics, 3D vector graphics. The API is typic ...
for
video composition Video art is an art form which relies on using video technology as a visual and audio medium. Video art emerged during the late 1960s as new consumer video technology such as video tape recorders became available outside corporate broadcasting. ...
. Code written in
Objective-C Objective-C is a high-level general-purpose, object-oriented programming language that adds Smalltalk-style message passing (messaging) to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was ...
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 A waste collector, also known as a garbage man, garbage collector, trashman (in the U.S), binman or dustman (in the UK), is a person employed by a public or private enterprise to collect and dispose of municipal solid waste (refuse) and recycla ...
, and
Objective-C Objective-C is a high-level general-purpose, object-oriented programming language that adds Smalltalk-style message passing (messaging) to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was ...
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 Type inference, sometimes called type reconstruction, refers to the automatic detection of the type of an expression in a formal language. These include programming languages and mathematical type systems, but also natural languages in some bran ...
and is compiled to
machine language In computer programming, machine code is computer code consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). For conventional binary computers, machine code is the binaryOn nonb ...
by
LLVM LLVM, also called LLVM Core, is a target-independent optimizer and code generator. It can be used to develop a Compiler#Front end, frontend for any programming language and a Compiler#Back end, backend for any instruction set architecture. LLVM i ...
.


Sample performance

''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

The core of Impromptu has been released as
Extempore ''Ex tempore'' (Latin for "out of the moment“) is a law latin legal term that means 'at the time'. A judge who hands down a decision in a case soon or straight after hearing it is delivering a decision ''ex tempore''. Another way a judge may de ...
under a BSD style licence. It runs under both
Linux Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
and Mac OS X. It includes the Scheme interpreter, the Extempore Language compiler and the scheduler. The bindings to
Apple An apple is a round, edible fruit produced by an apple tree (''Malus'' spp.). Fruit trees of the orchard or domestic apple (''Malus domestica''), the most widely grown in the genus, are agriculture, cultivated worldwide. The tree originated ...
libraries are absent, but the environment can interface with dynamic libraries.


See also

*
Csound Csound is a domain-specific computer programming language for audio programming. It is named Csound because it is written in the language C, in contrast to some of its predecessors. It is free and open-source software, released under the GNU Les ...
*
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 in. Although many of these environments are comparable in their abilities to pro ...
*
SuperCollider SuperCollider is an environment and audio programming language released originally in 1996 by James McCartney for real-time audio synthesis and algorithmic composition.J. McCartneySuperCollider: A new real time synthesis language in Proc. Int ...
*
Processing (programming language) Processing is a free graphics library and integrated development environment (IDE) built for the electronic arts, new media art, and visual design communities with the purpose of teaching non-programmers the fundamentals of computer programmi ...
*
OpenFrameworks openFrameworks is an open-source toolkit designed for creative coding founded by Zachary Lieberman, Theo Watson and Arturo Castro. OpenFrameworks is written in C++ and built on top of OpenGL. It runs on Microsoft Windows, macOS, Linux, iOS, ...
*
ChucK Chuck () is a masculine given name or a nickname for Charles or Charlie. It may refer to: People Arts and entertainment * Chuck Alaimo, American saxophonist, leader of the Chuck Alaimo Quartet * Chuck Barris (1929–2017), American TV produce ...
*
List of music software This is a list of software for creating, performing, learning, analyzing, researching, broadcasting and editing music. This article only includes software, not services. For streaming services such as iHeartRadio, Pandora (service), Pandora, Prime ...
*
Max (software) Max, also known as Max/MSP/Jitter, is a visual programming language for music and multimedia developed and maintained by San Francisco-based software company Cycling '74. Over its more than thirty-year history, it has been used by composers, per ...
*
Pure Data Pure Data (Pd) is a visual programming language developed by Miller Puckette in the 1990s for creating interactive computer music and multimedia works. While Puckette is the main author of the program, Pd is an open-source software, open-source ...


References


Academic papers

* 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.

* Thor Magnusson,
Confessions of a Live Coder
, Proceedings of International Computer Music Conference, 2011.


Other sources

* Peter Kirn,
Thought and Performance, Live Coding Music, Explained to Anyone - Really
, Create Digital Music, 2011 * Mitchell Whitelaw,

, 2007


External links

* {{Official website Audio programming languages Live coding Articles containing video clips