minima

June 20th, 2017
Blog post cover photo
Minima is simple web audio application for experimenting with minimalist music patterns. Minima is written in Elm and JavaScript.

Audio

Minima uses a simple web audio synthesizer written in JavaScript. The Elm application treats the synthesizer as “hardware” and sends it note messages through ports provided by the Elm architecture.

Model

The minima model consists of a
score
,
ticks
,
clock
, and voices.
Minima plays notes from the
score
. The
clock
tracks the current beat up to
ticks
before returning to 1. On each tick of the
clock
, minima plays all notes in the
score
with a matching value for
ticks
. Each note has a
frequency
,
duration
, and
tick
.
A
Voice
has a
pattern
of notes and a
frequency
. A
Pattern
is a list of actions, which are read into the
score
as notes or dropped as rests. The option is represented with an algebraic data type
Action
.

More on Minima

Minima was my final project in the Spring 2017 Functional Languages course at Portland State University. The
is available on GitHub.