begin method

Future<void> begin()

User tapped "Begin" — start audio + timer + presence.

Implementation

Future<void> begin() async {
  await _audio.init();

  await _audio.play(
    leftFreq: state.leftFrequency,
    rightFreq: state.rightFrequency,
    volume: 0.0,
  );
  _fadeIn();

  _sessionStartedAt = DateTime.now();
  step.value = ExperienceStep.experience;
  _startTimer();
  if (state.isMultiPhase) _schedulePhases();

  // Join presence + heartbeat + room.
  StatePresenceService.join(state.id);
  _room.join();
  _heartbeatTimer = Timer.periodic(
    const Duration(seconds: 30),
    (_) => StatePresenceService.heartbeat(state.id),
  );

  StateAnalyticsService.recordStart(state.id);
  if (!state.isPro) {
    StateSessionLimiter.recordSession(state.id);
  }
}