docs: public synchronized void start() throws Exception {
          if (!isRunning()) {
              DeviceFinder.getInstance().addDeviceAnnouncementListener(announcementListener);
              BeatGridFinder.getInstance().addLifecycleListener(lifecycleListener);
              BeatGridFinder.getInstance().start();
              VirtualCdj.getInstance().addUpdateListener(updateListener);
              VirtualCdj.getInstance().addLifecycleListener(lifecycleListener);
              VirtualCdj.getInstance().start();
              BeatFinder.getInstance().addLifecycleListener(lifecycleListener);
              BeatFinder.getInstance().addBeatListener(beatListener);
              BeatFinder.getInstance().start();
              running.set(true);
              deliverLifecycleAnnouncement(logger, true);
          }
      }