Split out AudioDevice and AudioEffect functionality into classes