Skiff is a programming language and accompanying interpreter that attempts to provide a frictionless environment for scripting and being introduced to functional programming. Features include algebraic data types, pattern matching, type inference, first-class functions, and helpful error messages. The skiff interpreter compiles to WASM so you can use the web editor, but it is also available as a standalone binary on crates.io.
A global illumination renderer that uses volumetric photon mapping to render physically accurate participating media such as fog and mist. A variety of volumetric photon mapping algorithms are implemented, from the original algorithm published in 1998 up to recent work using lower-dimensional blurs.
Coexistece is a computer music composition consisting of a guitar, capacitive glove, and algorithmic synthesizer engine. Rather than use the guitar to directly create sound, the performer grounds the tips of their fingers against the strings to send instructions to an algorithmic engine running on a computer and direct its output. For example, the performer may pluck with one finger to set the tempo, or strum with a different finger to set a base chord.
The algorithmic engine is implemented in the programming language/performance environment Max/MSP and the glove is wired up to a MakeyMakey microcontroller to detect string-presses.
ML Chord Gen is a webapp which utilizes a custom-trained neural network to provide the user with novel chord progressions. The chord progressions are generated subject to a number of tunable parameters, and the user can play them back in-browser with a variety of instruments to use as a backing track for improvisation or to inspire new compositions.
The chords are generated by a recurrent neural network that was trained on a large number of jazz standards. The network uses long short-term memory layers to ensure that the chords properly flow into each other. For more details, see the Github page linked above.
ChordalPy is a small Python package for parsing and manipulating musical chords. The package includes a chord class to represent a musical chord and a variety of methods on that class to assist with tasks such as transposition and spelling. Additionally, the package has a parsing component which enables converting text files of chords to data objects, provided they adhere to the popular standard established in Christopher Harte's 2010 thesis.