This is done rather well in TouchDesigner