Author: Dave Robillard <drobilla@connect.carleton.ca>