Rewritten Audio class, could still use optimization.