We present the Flow framework1, a front-end framework for interactive Web applications built on the Web Audio API. It encourages a purely declarative approach to application design by providing a number of abstractions for the creation of HTML, audio processing graphs, and event listeners. In doing so we place the burden of tracking and managing state solely on to the framework rather than the developer. We introduce the Model-View-Update architecture and how it applies to audio application design. The MVU architecture is built on the unidirectional flow of data through pure functions, pushing side effects onto the framework's runtime. Flow conceptualises the audio graph as another View into application state, and uses this conceptualisation to enforce strict separation of the audio and visual output of an application. Future plans for the framework include a robust plug-in system to add support for third-party audio nodes, a time travelling debugger to replay sequences of actions to the runtime, and a bespoke programming language that better aligns with Flow's functional influences.
[1]
Graham Wakefield,et al.
Designing Musical Instruments for the Browser
,
2015,
Computer Music Journal.
[2]
Fs Thalmann,et al.
The Semantic Music Player: A Smart Mobile Player Based on Ontological Structures and Analytical Feature Metadata
,
2016
.
[3]
Matthew Wright,et al.
The Web Browser As Synthesizer And Interface
,
2013,
NIME.
[4]
Luca Mezzalira.
Front-End Reactive Architectures
,
2018,
Apress.
[5]
Yotam Mann.
Interactive Music with Tone.js
,
2014
.
[6]
Colin B. D. Clark,et al.
Flocking: A Framework for Declarative Music-Making on the Web
,
2014,
ICMC.
[7]
Jesse Allison,et al.
BRAID : A Web Audio Instrument Builder with Embedded Code Blocks
,
2014
.
[8]
Jonathan Berger,et al.
WAAX: Web Audio API eXtension
,
2013,
NIME.