Gilbert Lister Research : Goldenpond

What It Is

Goldenpond is an experimental music language and library for describing chord progressions and generating musical material from them. It lets you work with higher-level harmonic ideas such as scale degrees, modal interchange, secondary chords, inversions, and derived note patterns rather than entering notes one by one.

The aim is to help computer based composers and live-coders - including the author - understand and apply more "advanced" music theory ideas by making them explicit and easy to express in the language. You can describe what the music is trying to do, not just list the notes it happens to contain.

Goldenpond was inspired by my frustration at realising that code offered so much expressivity for composing music, but that so much live-coding seemed stuck in replicating the behaviours of equipment designed for minimal loop-based music. We could describe complex chord progressions in a few keystrokes, but end up continually fiddling with a number representing the cutoff frequency of a low-pass filter. Text is a wonderfully expressive medium, but we're using it as the world's least ergonomically efficient knob!

Ultimately I'm guided by the question: "could a music programming language be expressive enough that it would be possible to live-code music of the complexity of a Mahler Symphony, on the fly?" What abstractions would such a language need? And would such a practice be viable, either technically or artistically?

Try It Now

The easiest way to start is in one of the browser-based apps. Either built into a fork of the open-source Signal sequencer or a fork of the Strudel live-coding language.

Goldenpond in Signal

Goldenpond in Strudel

See Tutorial for full details of the Chord and Rhythm Languages. And how to use them in Signal and Strudel

Other Ways to Use It

In FL Studio

GoldenPond is also available as Piano Roll scripts for FL Studio.

GoldenPond FL Studio

  • The simple script lets you type a chord progression, choose Euclidean-generated lines, and adjust parameters with controls in the piano roll script interface.
  • The live coding script gives you the chord language plus six parts driven by the rhythm language. It is intended to get closer to a live-coded version of GoldenPond inside FL Studio.

Both scripts write each line to a separate colour in the piano roll so you can route the results to different instruments.

See the official FL Studio Piano Roll scripting instructions for installation details.

Via Python

Goldenpond is available as a Python library on PyPI: https://pypi.org/project/goldenpond/

On GitHub

The source code is on GitHub: https://github.com/interstar/golden-pond

Goldenpond is written in Haxe, from which it is transpiled to Python and JavaScript. If you want to contribute, the Haxe codebase is the right place to work.

Listen

Goldenpond is not only a theory exercise. It has also been used to generate material for finished music.

Experimental label Dionysian Industrial Complex released an album of Mentufacturer experiments built around Goldenpond progressions and then developed into complete tracks.