Introduction
Ludwig is a lazy functional logic programming language designed to compose and play music.
On this page
Ludwig programs are just expressions that evaluate to a lazy list of notes. These can contain non-deterministic choices between notes, which will be played at the same time.
Getting started
The easiest way to play with Ludwig is through the playground.
If you’d like to build Ludwig from source, clone the source
repository and build the project using
the luwig npm script, my tests in particular were done on macOS using npm
v9.4.0 and node v19.6.1.
git clone git@github.com:fuzzypixelz/jam0004.git
cd ludwig
npm run ludwig
open dest/index.html
Next, webpack should generate the build files under dest/. Simply open the
index.html with your browser of choice (Chromium-based browsers are recommended).
Rationale
Ludwig is Innf107 and fuzzypixelz’ submission for the 4th Lang Jam. This edition’s theme is:
The sound(ness) of one hand typing
At first we thought of making a language where all tokens can be typed using only one side of the keyboard — we would quickly get disenchanted with this idea. After a fair bit of Brainstorming™ we thought of making a language which plays musical notes. Having discussed logic programming and the upcoming verse, the thought of using choice to play the notes typed with each hand at the same time came quite naturally.
We then decided to design Ludwig as a lazy functional logic programming language on the browser.