Impromptu (programming environment): Difference between revisions

Content deleted Content added
m delete apostrophe "It's"->"Its"
Bender the Bot (talk | contribs)
m Other sources: HTTP to HTTPS for Blogspot
 
(27 intermediate revisions by 21 users not shown)
Line 1:
: ''This article is {{about |the programming language. For other uses, see [[||Impromptu (disambiguation)]].''}}
{{Infobox programming language
| name = Impromptu
| logo = [[Image:Splash smaller.jpg]]
| caption =
| file_ext =
| paradigm = [[Functionalfunctional programming|Functional]], [[Multimulti-paradigm programming language|multi-paradigm]]
| year = {{Start date and age|2005}}
| designer = Andrew Sorensen
| developer =
| latest_release_version = 2.5
| latest_release_date = <!-- {{Start date and age|2011|mm|dd}} -->
| latest_test_version =
| latest_test_date =
| typing = [[Dynamicdynamic typing|Dynamic]] & [[Staticstatic typing|static]]
| implementations =
| dialects =
| influenced by = {{hlist |[[Lisp programming language|Lisp]] |[[Scheme (programming language)|Scheme]]}}
| influenced_by =
| influenced = [[Extempore (software)|Extempore]]
| operating_system = [[Mac OS X]]
| license =
| website = http://{{URL|impromptu.moso.com.au/}}
| wikibooks =
}}
 
'''Impromptu''' is a [[Mac OS X]] [[Computercomputer program|programming]] environment for [[live coding|live coding]]. Impromptu is built around the [[Scheme (programming language)|Scheme]] language, which is a member of the [[Lisp (programming language)|Lisp]] family of languages. ItsThe source code of its core has been partially opened as the [[Extempore project<ref(software)|Extempore name="extempore_github" />project]].
 
== Description ==
 
The environment allows to make changes to a program at [[run time (program lifecycle phase)|runtime]], so variables and functions may be redifinedredefined 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 to communicatecommunicating with [[Audio Units]] for audio synthesis, and towith 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.
 
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_collection_garbage collection (computer_sciencecomputer science)| real-time garbage collector]], and [[Objective -C]] integration were added. FurthermoreAlso, 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 Performanceperformance ==
 
''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 in order to evolve the composition.
 
[[ImageFile:Study_in_keithStudy in keith.ogv|alt=A Study in Keith: a live coding performance in Impromptu by Andrew Sorensen]]
 
== Extempore ==
 
|The accessdatecore =of 2011-06-12}}</ref>Impromptu has been released as [[Extempore (software)|Extempore]] under a BSD style licence. It runs under both [[Linux]] and Mac OS X. The project is as of June 2011 at an early stage and is intended as a developer preview, not suited for end users. It includes the Scheme interpreter, the Extempore Language compiler and the scheduler. The bindings to [[Apple Inc.|Apple]] libraries are absent, but the environment can interface with dynamic libraries.<ref name="extempore_github" />.
The core of Impromptu has been released as ''Extempore'' <ref name="extempore_github">{{cite web
| url = https://github.com/digego/extempore
| title = The ''Extempore'' page on GitHub.
| date = 2011-06-12
| accessdate = 2011-06-12}}</ref> under a BSD style licence. It runs under both [[Linux]] and Mac OS X. The project is as of June 2011 at an early stage and is intended as a developer preview, not suited for end users. It includes the Scheme interpreter, the Extempore Language compiler and the scheduler. The bindings to [[Apple Inc.|Apple]] libraries are absent, but the environment can interface with dynamic libraries.<ref name="extempore_github" />.
 
==External links==
* http://impromptu.moso.com.au/ - Impromptu home page
* http://improgramming.wordpress.com/ - a blog about Impromptu by [http://www.cogs.susx.ac.uk/users/thm21/ Thor Magnusson]
* http://vimeo.com/impromptu/videos/sort:plays - Live performances by Andrew Sorensen.
 
==See also==
* [[Csound]]
*[[Comparison of audio synthesis environments]]
* [[SuperCollider]]
* [[Processing (programming language)|Processing]]
* [[OpenFrameworks]]
* [[NodeBox]]
* [[ChucK]]
* [[jMaxList of music software]]
* [[Max (software)]]
* [[Pure Data]]
* [[TinyScheme]]
 
== References ==
 
<references />
=== Academic papers ===
 
* Sorensen, A (2010) "[http://impromptu.moso.com.au/extras/icmc2010.pdf A Distributed Memory For Networked Livecoding Performance] {{Webarchive|url=https://web.archive.org/web/20210226081451/http://impromptu.moso.com.au/extras/icmc2010.pdf |date=2021-02-26 }}" International Computer Music Conference 2010, New York
=== Papers by the author ===
 
* Sorensen, A (2010) "[http://impromptu.moso.com.au/extras/icmc2010.pdf A Distributed Memory For Networked Livecoding Performance]" International Computer Music Conference 2010, New York
* Sorensen, A & Brown, A (2008) "[http://impromptu.moso.com.au/extras/acmc08_orchestral.pdf 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) "[http://impromptu.moso.com.au/extras/aa-cell-icmc07.pdf aa-cell in Practice: An Approach to Musical Live Coding]" paper presented to the International Computer Music Conference 2007, Copenhagen
* Sorensen, A. (2005) "[http://impromptu.moso.com.au/extras/sorensen_acmc_05.pdf Impromptu: An interactive programming environment for composition and performance]" a paper presented to the Australasian Computer Music Conference 2005, Brisbane: ACMA, pp. &nbsp;149–153. (NOTENote: Impromptu version discussed is obsolete)
* Sorensen, A. "[http://impromptu.moso.com.au/extras/ICR.html ICR - Impromptu Compiler Runtime]"
* Thor Magnusson, "[http://eprints.brighton.ac.uk/10110/ Confessions of a Live Coder]", Proceedings of International Computer Music Conference, 2011.{{Verify source|date=June 2011}}
 
=== Independent academic sources referencing Impromptu ===
 
* Click Nilson "[http://portal.acm.org/citation.cfm?id=1279760 Live coding practice]" NIME '07, Proceedings of the 7th international conference on New interfaces for musical expression ACM New York, NY, USA ©2007
* Roger B. Dannneberg, “[http://www-2.cs.cmu.edu/~rbd/papers/rbd-cc10-patterns-online.pdf Live Coding Using a Visual Pattern Composition Language],” in Proceedings of the 12th Biennial Symposium on Arts and Technology, March 4-6, Ammerman Center for Art & Technology, Connecticut College, 2010
* Nick Collins "[http://www.mitpressjournals.org/doi/abs/10.1162/LEON_a_00164?journalCode=leon Live Coding of Consequence]", Leonardo, June 2011, Vol. 44, No. 3, Pages 207-211
* Andrea Valle "[http://www.fonurgia.unito.it/andrea/pub/geoGraphyNime.pdf GeoGraphy: a realtime, graphbased composition environment]", NIME08, Genova, Italy Copyright 2008
* Thor Magnusson "[http://www.isea2010ruhr.org/files/redaktion/pdf/isea2010_proceedings_p18.pdf ixi lang: A Constraint System for Live Coding]", ISEA2010 RUHR, Conference Proceeedings, 2010.
* Dillon, Steven C. (2007) "[http://eprints.qut.edu.au/13215/ Examining meaningful engagement: Musicology and virtual music making environments]". In ISLANDS - Conference of the Australian and New Zealand Musicological Societies, 22-25 November 2007, Brisbane.
* Jason Freeman and Akito Van Troyer "[http://muse.jhu.edu/login?uri=/journals/computer_music_journal/v035/35.2.freeman.html Collaborative Textual Improvisation in a Laptop Ensemble]" Computer Music Journal - Volume 35, Number 2, Summer 2011, pp. 8-21
* Dillon, Steven C. (2010) ‘[http://eprints.qut.edu.au/38609/ Music is a wordless knowing of others.]’ Resilience in virtual ensembles. In: Brader, Andy (Ed) Songs of Resilience. Meaningful Music Making For Life, 3. Cambridge Scholars Publishing, Newcastle upon Tyne. (In Press as of 2011-06-01)
* Ross Bencina "[http://www.informaworld.com/smpp/content~db=all~content=a746003183 Creative software development: reflections on AudioMulch practice]" Digital Creativity Volume 17, Issue 1, 2006, Pages 11 - 24
* Alex McLean and Geraint Wiggins (2009) "[http://doc.gold.ac.uk/~ma503am/writing/chart.pdf Patterns of Movements in Live Languages]". In Proceedings of CHArt 2009, London.
* Thor Magnusson, "Confessions of a Live Coder", Proceedings of International Computer Music Conference, 2011.{{Verify source|date=June 2011}}
* Sam Aaron, Alan F. Blackwell, Richard Hoadley and Tim Regan "[http://sam.aaron.name/files/papers/K04-Aaron.pdf A principled approach to developing new languages for live coding]" NIME '11, Proceedings of the 11th international conference on New interfaces for Musical Expression, 30 May–1 June 2011, Oslo, Norway
 
=== Other sources ===
 
* Peter Kirn, "[http://createdigitalmusic.com/2010/07/thought-and-performance-live-coding-music-explained-to-anyone-really/ Thought and Performance, Live Coding Music, Explained to Anyone - Really]", Create Digital Music, 2011
* Mitchell Whitelaw, "[httphttps://teemingvoid.blogspot.com/2007/12/from-scratch-conversation-with-andrew.html From Scratch - A Conversation with Andrew Sorensen]", 2007
 
==External links==
* {{Official website}}
 
[[Category:Audio programming languages]]
[[Category:Live coding]]
[[Category:Articles containing video clips]]