Project Log

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.

Part-specific audio cues, with AI-generated speech audio & individualized timing patterns.

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.

🏅 This project won the 2nd place award of the State Machine Hackathon by Stately and ODevs.

  • Solid
  • XState
  • TypeScript
  • MIDI

 
 

[Web] Astro Portal

Demo Description Technologies

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:

  • Pattern Generators
  • MIDI Effects
  • Instrument Chains