refactoring: isolate audio controller