-
Notifications
You must be signed in to change notification settings - Fork 0
/
demos.tex
120 lines (91 loc) · 4.64 KB
/
demos.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
\documentclass{sigplanconf}
\usepackage{url}
\begin{document}
\toappear
\special{papersize=8.5in,11in}
\setlength{\pdfpageheight}{\paperheight}
\setlength{\pdfpagewidth}{\paperwidth}
% Uncomment the publication rights you want to use.
%\publicationrights{transferred}
%\publicationrights{licensed} % this is the default
%\publicationrights{author-pays}
\title{FARM 2016 Demo Summary}
\authorinfo{Michael Sperber}
{Active Group GmbH\\ Germany}
{\url{[email protected]}}
\authorinfo{David Janin}
{Bordeaux INP, Bordeaux University\\ France}
{\url{[email protected]}}
\maketitle
\begin{abstract}
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
\url{http://functional-art.org/2016/}.
\end{abstract}
\category{J.5}{Arts and Humanities}{Arts, fine and performing}
\keywords
functional programming, art, music, livecoding, embedded devices, animation
\section{Juniper: A Functional Reactive Programming Language for the Arduino}
Caleb Helbling and Samuel Guyer (Tufts University) present the
\textit{Juniper} programming language (\url{http://www.juniper-lang.org/}) for functional-reactive
programming. While FRP programs are often resource-intensive, Juniper
programs run on embedded devices from the Arduino family, and can
access sensors and actuators on these machines. The Juniper compiler
emits compact C++ code. The FARM proceedings also feature a full
paper on the subject.
The demo enables the audience to construct a small project using an
Arduino-compatible microcontroller provided to them, which
picks up sounds from a microphone and turns them into display patterns
on LEDs connected to the device.
\section{Klangmeister}
Chris Ford (ThoughtWorks) presents \textit{Klangmeister} (\url{http://www.juniper-lang.org/}), a live
coding environment for music. Klangmeister lets the user construct
synthesizers, compose music, and finally perform that music.
Klangmeister runs in the browser and thus does not require the
explicit installation of software. It makes use of the Javascript Web
Audio API.
Music is coded using ClojureScript, a dialect of Clojure that
compiles to JavaScript. Klangmeister makes use of
an embedded ClojureScript compiler, which also runs in the
browser.
Klangmeister's wrapper around the Web Audio API is purely functional,
and makes synthesis design clear and accessible: Music-theoretical
concepts such as scales and time signatures translate into
higher-order functions.
\section{VoxelCAD, a Collaborative Voxel-Based CAD tool}
Csongor Kiss and Toby Shaw present \textit{VoxelCAD}, a tool for
collaboratively editing vector representations of 3D shapes, giving
immediate feedback about the resulting voxel forms.
VoxelCAD enables collaborative editing by storing delta chan\-ges, which
can be synchronized, similarly to the Darcs distributed versioning
system. VoxelCAD also includes a Lisp-like scripting language.
VoxelCAD uses Constructive Solid Geometry as its user-facing model:
The user can combine primitive solids through boolean operations.
Voxelisation---the conversion between the shapes vector representation
and its voxel for---is mostly done on the GPU, using the WebGL API.
VoxelCAD consists of two parts: The frontend is written in Elm, the
backend in Haskell.
\section{Alda: A Text-Based Music Composition Language}
Dave Yarwood presents \textit{Alda} (\url{https://github.com/alda-lang/alda}), a programming language that
allows representing musical composition as text documents. It draws
ideas from several previous systems---Music Macro Language (MML),
LilyPond, and ChucK.
Alda views a musical score as a series of transformations on Clojure
maps. The Alda parser generates these transformations from the input
score.
Alda is written in Clojure, and embeds the language in the musical
notation, and thus allows generating compositions programmatically.
\section{Epimorphism}
Francis Shuman presents \textit{Epimorphism} (\url{http://www.epimorphism.com/}), a visual art project that
generates images by simulating video feedback. The simulation does
not have to suffer from the fidelity problem of a real-world physical
setup, which opens new visual possibilities.
The system can be seeded from arbitrary shapes and textures. Complex
transformations such as those borrowed from the computation of
Mandelbrot and Julia sets lead to a fractal appearance of many of the
generated images.
Epimorphism is written in PureScript, a dialect of Haskell that
translates to JavaScript.
\end{document}