These are some personal projects that I've worked on in my free time over the last couple of years, particularly in the fields of software development and interactive experience design.
[Web] Audio-Visual System
Demo
Description
Technologies
A demonstration performance using a custom Ableton Live framework I made for various features including hands-free live looping, a Node-RED setup for routing signals between various applications and devices, and a web app with procedural animations based on sensor data which also controls several applications via Node-RED.
TypeScript
Python
MaxForLive
Solid
Vite
NodeRED
Web Sockets
MIDI
OSC
Ableton Live
TouchDesigner
Ableton and TouchDesigner being controlled simultaneously via the sensor data of the Apple Pencil.
Audio-visual reactivity between Ableton and TouchDesigner. This is implemented using ShowSync's LiveGrabber devices for Ableton to detect and send MIDI and audio events via OSC.
Using Ableton's timeline to automate TouchDesigner parameters.
A preset management system I built to dial in and save presets for TouchDesigner, which also applies granular levels of interpolation for both presets and their individual parameters.
A sped-up playthrough of this project's ArrangedSession usage.
A full overview of the NodeRED system.
[Web] Creative Coding System
Demo
Description
Technologies
A development environment that has been optimized for creative coding; with automatic route generation per-sketch, a hierarchical command-palette page navigation system, and various utilities for working with parameters & reactive multi-directional data signals via a concise API.
This is a video of me controlling one of the sketches in real-time via an Akai MPK Mini while listening to some music, using a combination of preset interpolation and fine-grained adjustment of individual parameters.
Solid
Vite
P5
Web Sockets
MIDI
OSC
A custom TweakPane preset interpolation system with multiple easing algorithms and per-preset timing definitions.
A demonstration of various features of an early iteration of the system and includes a code walk-through which explains some implementation details.
[Web] HelixRemote
Demo
Description
Technologies
A MIDI remote control that optimizes the workflow of the Line 6 Helix device.
A portal system which allows arbitrary nesting of DOM frameworks within Astro.
🏅 This project won the bespoke "Mad Scientist" award of the Astro 1.0 Hackathon.
At the time of project submission, Astro did not support framework nesting.
Astro
React
Solid
Svelte
Vue
Web Components
XState
TypeScript
A demonstration of the core functionality of Astro Portal, in a benchmark project which combines all of the major DOM frameworks.
[Web] Metronome
Demo
Description
Technologies
A sequenceable polyrhythmic metronome, which allows pre-planned sessions with various forms of tempo & audio automation to facilitate effective practice.
PWA
React
Service Workers
Tone.js
XState
TypeScript
A hierarchical CRUD system I developed for building, managing, & navigating metronome sequences for entire curriculums & individual practice sessions.
[Ableton Live] Modular Extension System
Demo
Description
Technologies
A MIDI Remote Script which acts primarily as a module registration system. Modules can be enabled via Max devices, the existence of particular project files, and/or the active project context.
The modular implementation of features allows them to be utilized in unique combinations, per-project, as needed; without enabling irrelevant functionality.
A demonstration of the ArrangedSession module, which allows hands-free live looping by utilizing Arrangement View data to generate an automated sequence of Session View actions that would typically be executed manually.
MaxForLive
Python
TypeScript
The Ableton Push 2 interface for the ArrangedSession device.
[Ableton Live] LaunchPad Script
Demo
Description
Technologies
A custom MIDI Remote Script for the Novation LaunchPad Mini MK3 which adds automatic track arming and a granular fixed-length recording UI to facilitate effortless live-looping.
Also implements some LaunchPad Pro features which were not available on the Mini model.
Written from scratch, by referencing Novation & Ableton source code.
Python
[Ableton Live] NoteCycler
Demo
Description
Technologies
A MaxForLive device that cycles through a sequence of up to 64 specific notes each time it is triggered my a MIDI signal.
In this demo there are many nested instances of the device, which are being used to generate complex metronome sequences by dynamically switching audio samples.
MaxForLive
TypeScript
[Ableton Live] Hot-Swappable Sequencer Components
Demo
Description
Technologies
A routing configuration which enables sequencers to be modified in real time for improvisation.
The following elements can be swapped out arbitrarily: