An esoteric language with silly features.
The iconic Daisy Bell played in an ever-expanding collection of languages.
Projects involving electrons. But all projects involve electrons...
Simple Arduino-controlled laser projector, a group project for an embedded systems class. Because lasers.
Digital clock with 7400 series core logic, built for a school assignment. Time, date, alarm, temperature, and touch sensing!
A musical controller for live instrumentation based on optical sensing. Because lasers.
Audio on the web is intriguing, especially given the recent developments in the Web Audio API.
A demo of the Web Audio API. Multi-oscillator, full polyphony, with a seriously large effects chain and completely customizable parameters. Takes input from QWERTY keyboard.
Multi-oscillator, full polyphony, simple effects chain, and onscreen keyboard with support for QWERTY keyboard.
Basic two-operator FM synthesizer with custom waveforms, single oscillator, and visualization. MIDI input is currently broken.
Demo of custom waveforms in Web Audio using
createPeriodicWave(), complete with variable-trigger oscilloscope for wave visualization. Also has a few different keymap schemes.
Lindenmayer systems (commonly 'L-systems') are a type of formal grammar that can be used to create intricate geometric structures, often displaying fractal characteristics.
With the help of the
canvas element in HTML5, the geometric structures generated by an L-system are rendered to an image.
Documentation and implementation notes.
An older L-system that lacks the stunning UI, speed improvements, and extended functionality of its successor.
Using three.js for WebGL-based 3D graphics in the browser. Note that cross-browser support is very inconsistent; these should all work on Chrome 32+.
Thanks to jsantell's dancer.js, there's an easy way to get FFT and waveform data in the browser.
A simple demo of three.js with basic meshes and lighting.
Canvas-based screensavers. I intend to eventually have some Quartz screensavers also.
These have served as a nice way to learn the HTML5 canvas API.