DawDreamer

DawDreamer is an audio-processing Python framework supporting audio playback, VST instruments/effects, parameter automation, time-stretching, pitch-warping, and close integration with Faust.

ChucKDesigner

Complete ChucK integration with TouchDesigner.

TD-Faust

Faust integration with TouchDesigner.

TD-JUCE

C++ TouchDesigner plugin for VSTs and JUCE.

Escher Spiral Tiling

Escher Spirals at 60 FPS in TouchDesigner.

Boids @ 120 FPS

“Boid” simulation at 120 FPS in TouchDesigner, using compute shaders, voxelization, and dynamic object avoidance.

Real-time Salient Object Detection

C++ TouchDesigner plugin running U^2-Net at 30 FPS.

Van Gogh

Van Gogh is part of a series titled Radiosity. A light-collecting raymarching algorithm enables real-time rendering of dynamic 2D scenes.

Weighted Linde-Buzo-Gray Stippling

GLSL compute shaders, the jump-flood algorithm, and a weighted voronoi particle relaxation algorithm combine to yield real-time animated stippling art.

TensorFlow Sinkhorn Algorithm

Optimal transport of particles in real-time with the TensorFlow C++ API.

Radiosity

A light-collecting raymarching algorithm enables real-time rendering of dynamic 2D scenes.

Face Space

Real-time lookup of similar face landmarks from 2000 album art images.

Onsets-Frames

Google Magenta’s Onsets-Frames, refactored for TensorFlow 2.

PyTorch-TOP

C++ TouchDesigner plugin for real-time style transfer with PyTorch.

Face-CHOP

C++ TouchDesigner plugin for real-time face landmark detection.

Multi-Scale Truchet

Real-time Multi-Scale Truchet Patterns in TouchDesigner.

KD-Tree Layers

Loading a K-D tree on the GPU to instantiate and distort geometry in real-time.

KD-Tree

Loading a K-D tree on the GPU to instantiate and distort geometry in real-time.

Binary Gradient

For 3 months in 2018, I was a Creator In Lab at the Asia Culture Center in Gwangju, South Korea.

Hexagon Generator

Real-time GLSL hexagon subdivision algorithm.

Escher Tiles

Interface for creating and automatically coloring Escher Tiles.