begin method
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);
}
}