Workshop on Functional Art, Music, Modeling and Design (FARM 2017) schedule

Saturday 9th September 2017

  • A Categorial Grammar for Music and Its Use in Automatic Melody Generation

    by Halley Young

    Like natural language, music can be described as being composed of various parts, which combine together to form a set-theoretic or logical entity. The conceptualized parts are more basic than the music seen on a page; they are the musical objects subject to music-theoretic analysis, and can be described using the language of functional programming and lambda calculus. This paper introduces the types of musical objects seen in tonal and modern music, as well as the combinators that allow them to combine to create other musical objects. We propose a method for automatically generating melodies by searching for combinations of musical objects which together produce a valid program corresponding to a melody or set of melodies.

    At 9:10am to 9:40am, Saturday 9th September

  • Demo — Representation of Musical Notation in Haskell

    by Edward Lilley

    At 9:40am to 10:10am, Saturday 9th September

  • Demo — The Arpeggigon: A Functional Reactive Musical Automaton

    by Henrik Nilsson

    At 10:30am to 10:50am, Saturday 9th September

  • Demo — Vivid: Sound Synthesis with Haskell and SuperCollider

    by Tom Murphy

    At 10:50am to 11:10am, Saturday 9th September

  • Demo — African Polyphony and Polyrhythm

    by Chris Ford

    At 11:10am to 11:30am, Saturday 9th September

  • Modelling the Way Mathematics Is Actually Done

    by Joe Cornelli

    Whereas formal mathematical theories are well studied, computers cannot yet adequately represent and reason about mathematical dialogues and other informal texts. To address this gap, we have developed a representation and reasoning strategy that draws on contemporary argumentation theory and classic AI techniques for representing and querying narratives and dialogues. In order to make the structures that these modelling tools produce accessible to computational reasoning, we encode representations in a higher-order nested semantic network. This system, for which we have developed a preliminary prototype in LISP, can represent both the content of what people say, and the dynamic reasoning steps that move from one step to the next.

    At 12:00pm to 12:30pm, Saturday 9th September

  • FAUST Tutorial for Functional Programmers

    by Stephane Letz

    This paper is an introduction to FAUST, a functional programming language for sound synthesis and audio processing. We assume that the reader has some familiarity with functional programming, but no previous knowledge in signal processing. The text describes several examples that the reader will be able to try online using a web browser. These examples are preceded by two more technical sections presenting some aspects of the language.

    At 2:00pm to 3:00pm, Saturday 9th September

  • GALE: A Functional Graphic Adventure Library and Engine

    by Ivan Perez

    Functional Programming brings a promise of highly-declarative code, efficient, parallelisable execution, modularity and reusability. In spite of these advantages, the use of pure Functional Languages in commercial games is still rare. This is partially due to the lack of backends for multimedia, production tools, and demonstrations that functional abstractions work for other than non-trivial examples. In this paper we present GALE, a Graphic Adventure Library and Engine implemented in Haskell. Our engine implements the basic common features available in similar commercial engines for graphic adventures. We show a high-level abstract definition of game descriptions that allows us not only to run them, but also to analyse them in compile time. We also demonstrate how this description allows us to provide novel features not available in traditional engines. Our system works on iOS, Android and desktop, and is accompanied by a development environment to compose the games with no prior programming skills.

    At 3:30pm to 4:00pm, Saturday 9th September

  • Demo — Ait: A Concatenative Language for Creative Programming

    by Stian Veum Møllersen

    At 4:00pm to 4:30pm, Saturday 9th September

  • Unified Media Programming: An Algebraic Approach

    by Simon Archipoff and David Janin

    In this paper, we aim at defining a simple and sound mathematical framework for describing temporal media programming language semantics. It occurs that semigroup theory offers various concepts that are especially well suited for this purpose. As a result, a fairly general programming scheme can be defined in order to specify, compose and render both spatial media objects (e.g. 3D drawings) and timed media objects (e.g. Animation or Music). Each of these constructs is specified in Haskell via an adequate type class definition and an associated uniform data type construct. A simple monoid based semantics model of the turtle command language of Logo is detailed and extended throughout the paper. This allows for providing step by step introductions and usage examples of the algebraic concepts and constructs our proposal is based on.

    At 4:50pm to 5:20pm, Saturday 9th September

  • Demo — Octopus: A High-Level Fast 3D Animation Language

    by Simon Archipoff and David Janin

    In this demo we aim at presenting the basic feature we have put in practice via the definition of Octopus: a programing language embedded in Haskell for complex description of (reactive) 3D animations. As a front end, Octopus simply extend the LOGO’s Turtle command language to 3D and time dimension, inheriting Haskell do notation via an embedding of the underlying semantics monoids into IO monads. As a back end, most of the rendering is directly described as OpenGL shaders performed by the GPU allowing thus fast rendering with low communication bandwidth between Haskell (CPU) and GLSL (GPU). The resulting source code should soon be made available for participative development of the Octopus language. A GHCi-compatible version of our current (compiled) version should also allow for making the demo interactive.

    At 5:20pm to 5:50pm, Saturday 9th September