Skip to main content

Temporal semantics for a live coding language

Aaron, Samuel, Orchard, Dominic, Blackwell, Alan F. (2014) Temporal semantics for a live coding language. . pp. 37-47. (doi:10.1145/2633638.2633648) (KAR id:57489)

PDF Author's Accepted Manuscript
Language: English
Download (400kB) Preview
[thumbnail of sonicpi.pdf]
This file may not be suitable for users of assistive technology.
Request an accessible format
Official URL:


Sonic Pi is a music live coding language that has been designed for educational use as a first programming language. However, it is not straightforward to achieve the necessary simplicity of a first language in a music live coding setting, for reasons largely related to the manipulation of time. The original version of Sonic Pi used a `sleep' function for managing time, blocking computation for a specified time period. However, while this approach was conceptually simple, it resulted in badly timed music, especially when multiple musical threads were executing concurrently. This paper describes an alternative programming approach for timing (implemented in Sonic Pi v2.0) which maintains syntactic compatibility with v1.0, yet provides accurate timing via interaction between real time and a "virtual time''. We provide a formal specification of the temporal behaviour of Sonic Pi, motivated in relation to other recent approaches to the semantics of time in live coding and general computation. We then define a monadic model of the Sonic Pi temporal semantics which is sound with respect to this specification, using Haskell as a metalanguage.

Item Type: Article
DOI/Identification number: 10.1145/2633638.2633648
Subjects: Q Science > QA Mathematics (inc Computing science)
Divisions: Divisions > Division of Computing, Engineering and Mathematical Sciences > School of Computing
Depositing User: Dominic Orchard
Date Deposited: 05 May 2017 13:24 UTC
Last Modified: 24 Nov 2021 10:42 UTC
Resource URI: (The current URI for this page, for reference purposes)
Orchard, Dominic:
  • Depositors only (login required):


Downloads per month over past year