Powered by
4th International Workshop on Functional Art, Music, Modelling and Design (FARM 2016),
September 24, 2016,
Nara, Japan
4th International Workshop on Functional Art, Music, Modelling and Design (FARM 2016)
Frontmatter
Message from the Chairs
It is our great pleasure to welcome you to FARM 2016, the 4th ACM SIGPLAN International Workshop on Functional Art,
Music, Modelling and Design!
The ACM SIGPLAN International Workshop on Functional Art, Music, Modelling and Design (FARM) gathers together people who are harnessing functional techniques in the pursuit of creativity and expression.
Functional Programming has emerged as a mainstream software development paradigm, and its artistic and creative use is booming. A growing number of software toolkits, frameworks and environments for art, music and design now employ functional programming languages and techniques. FARM is a forum for exploration and critical evaluation of these developments, for example to consider potential benefits of greater consistency, tersity, and closer mapping to a problem domain.
By gathering researchers, practitioners, artists, designers and anyone interested, FARM aims to develop this interdisciplinary field. Work in this challenging area has already led to new language designs, abstraction techniques, and execution models, as well as the use of old ideas in new, novel, and surprising ways.
Full Papers
Bithoven: Gödel Encoding of Chamber Music and Functional 8-Bit Audio Synthesis
Jay McCarthy
(University of Massachusetts, USA)
Bithoven is a prolific composer of approximately 1.079363 * 10^239 different compositions based on four-part harmony and basic chord progressions. It is combined with a purely functional audio synthe- sis engine based on the Ricoh RP2A03, found in the 1985 Nintendo Entertainment System (NES). The synthesis engine is parameter- ized over a band of instruments and styles of play, so each com- position can be played in one of approximately 4.22234 * 10^41 different arrangements or "NEStrations".
@InProceedings{FARM16p1,
author = {Jay McCarthy},
title = {Bithoven: Gödel Encoding of Chamber Music and Functional 8-Bit Audio Synthesis},
booktitle = {Proc.\ FARM},
publisher = {ACM},
pages = {1--7},
doi = {},
year = {2016},
}
Info
Juniper: A Functional Reactive Programming Language for the Arduino
Caleb Helbling and Samuel Z. Guyer
(Tufts University, USA)
This paper presents the design and implementation of Juniper: a functional reactive programming language (FRP) targeting the Arduino and related microcontroller systems. Juniper provides a number of high level features, including parametric polymorphic functions, anonymous functions, automatic memory management, and immutable data structures. Also included is a standard library which offers many useful FRP signal processing functions. Juniper is translated to standard C++ and compiled with the existing Arduino development tools, allowing Juniper programs to fit on resource-constrained devices, and enabling seamless interoperability with existing C++ libraries for these devices.
@InProceedings{FARM16p8,
author = {Caleb Helbling and Samuel Z. Guyer},
title = {Juniper: A Functional Reactive Programming Language for the Arduino},
booktitle = {Proc.\ FARM},
publisher = {ACM},
pages = {8--16},
doi = {},
year = {2016},
}
Arrp: A Functional Language with Multi-dimensional Signals and Recurrence Equations
Jakob Leben
(University of Victoria, Canada)
We present a new functional programming language for digital signal processing (DSP) named Arrp, in which signals are regarded as multi-dimensional arrays with an infinite dimension representing time, and defined using quasi-affine recurrence equations. An immediate benefit is an intuitive syntax that is very close to common mathematical notation used in DSP. Code reuse, especially in multi-dimensional and multi-rate signal processing, is supported through polymorphic and higher-order functions. We describe the differences between our approach and other paradigms in the domain, demonstrate the benefits of the language, and outline a method for compilation of the language into efficient C++ code using the polyhedral model. Preliminary experimental evaluation of our compiler shows that Arrp executes as fast or faster than hand-written C++ code, without explicit parallelization.
@InProceedings{FARM16p17,
author = {Jakob Leben},
title = {Arrp: A Functional Language with Multi-dimensional Signals and Recurrence Equations},
booktitle = {Proc.\ FARM},
publisher = {ACM},
pages = {17--28},
doi = {},
year = {2016},
}
Info
Structured Reactive Programming with Polymorphic Temporal Tiles
Simon Archipoff and David Janin
(LaBRI, France; University of Bordeaux, France)
In functional reactive programming (FRP), system inputs and outputs are generally modeled as functions over continuous time (behaviors) whose future values are governed by sudden changes (events). In this approach, discrete events are embedded into piece-wise continuous behaviors.
In the field of reactive music system programming, we develop an orthogonal approach that seems to better fit our need. Much like piano keys can be played and combined both in sequence and in parallel, we model system inputs and outputs as spatio temporal combinations of what we call temporal values: continuous functions over time whose domain lays between two events: a start and a stop event.
Various high level data types and program constructs can then be derived from such a model. They are shown to satisfy robust algebraic and category theoretic properties. Altogether, this eventually provides a simple, robust and elegant programming front-end, temporal tile programming, for reading, memorizing, stretching, combining and transforming flows of inputs into flows of outputs.
Although at its infancy, the resulting approach has been experimentally validated for reactive and real-time music system programming.
@InProceedings{FARM16p29,
author = {Simon Archipoff and David Janin},
title = {Structured Reactive Programming with Polymorphic Temporal Tiles},
booktitle = {Proc.\ FARM},
publisher = {ACM},
pages = {29--40},
doi = {},
year = {2016},
}
o.OM: Structured-Functional Communication between Computer Music Systems using OSC and Odot
Jean Bresson, John MacCallum, and Adrian Freed
(IRCAM, France; CNRS, France; UPMC, France; University of Califorina at Berkely, USA)
O.—odot—is a portable media programming framework based on the OSC data encoding. It embeds a small expression language which allows writing and executing programs in OSC structures. The integration of programming and declarative functional descriptions within data transfer protocols enables structured and expressive communication in media systems: program snippets can be distributed in OSC messages, which evaluate to further OSC messages in the different communicating software. We present experiments using this framework in the OpenMusic computer-aided composition environment, and illustrate via case studies some advantages of such integrated system.
@InProceedings{FARM16p41,
author = {Jean Bresson and John MacCallum and Adrian Freed},
title = {o.OM: Structured-Functional Communication between Computer Music Systems using OSC and Odot},
booktitle = {Proc.\ FARM},
publisher = {ACM},
pages = {41--47},
doi = {},
year = {2016},
}
A Livecoding Semantics for Functional Reactive Programming
Tom E. Murphy
(vivid-synth.com, USA)
Livecoding, while extremely powerful for the arts and beyond,
has largely had its semantics tied to pervasive direct mutation of
state. For the most part, livecoders have not been able to take full
advantage of declarative programming, particularly when dealing
with side-effects and the outside world. We present a semantics
and implementation for functional reactive programming in the
context of livecoding, with code hot-swap as a first-class operation.
Programmers are freed from juggling low-level details, allowing
them to write in a more declarative style and reap the benefits of
pure functional programming.
@InProceedings{FARM16p48,
author = {Tom E. Murphy},
title = {A Livecoding Semantics for Functional Reactive Programming},
booktitle = {Proc.\ FARM},
publisher = {ACM},
pages = {48--53},
doi = {},
year = {2016},
}
Calls for Collaboration
Call for Collaboration: Computational Musicology, ????, Profit
Chris Ford
(ThoughtWorks, UK)
In this paper I examine the relationship that complexity theory and
disjunctive sequences have to music, music-generating programs
and literary works. I then apply these ideas by devising a program
to generate an infinite ‘Copyright Infringement Song’ that contains
all other songs within it. I adopt literary modes of analysis and
presentation, which I motivate by arguing that music is a cultural
and artistic phenomenon rather than a natural one.
@InProceedings{FARM16p54,
author = {Chris Ford},
title = {Call for Collaboration: Computational Musicology, ????, Profit},
booktitle = {Proc.\ FARM},
publisher = {ACM},
pages = {54--59},
doi = {},
year = {2016},
}
Summaries
FARM 2016 Demo Summary
Michael Sperber and David Janin
(Active Group, Germany; Bordeaux INP, France; University of Bordeaux, France)
This is a summary of the demos presented at the 4th ACM SIGPLAN International Workshop on Functional Art, Music, Modelling and Design, prepared prior to the event itself. The submitted abstracts of these demos are available on the FARM 2016 web site at http://functional-art.org/2016/.
@InProceedings{FARM16p60,
author = {Michael Sperber and David Janin},
title = {FARM 2016 Demo Summary},
booktitle = {Proc.\ FARM},
publisher = {ACM},
pages = {60--60},
doi = {},
year = {2016},
}
Info
FARM 2016 Concert: Live Music and Visuals Produced through Functional Programming
Renick Bell
A concert of performances employing functional programming techniques will take place at FARM 2016 in Nara, Japan. Eight performances will be presented on a large full-range sound system with video projection on two walls. Performances will include live coding and generative systems used for both audio and visuals.
@InProceedings{FARM16p61,
author = {Renick Bell},
title = {FARM 2016 Concert: Live Music and Visuals Produced through Functional Programming},
booktitle = {Proc.\ FARM},
publisher = {ACM},
pages = {61--63},
doi = {},
year = {2016},
}
proc time: 0.78