playStopPreview method

Future<void> playStopPreview({
  1. bool stop = false,
})

Implementation

Future<void> playStopPreview({bool stop = false}) async {
  // Ensure engine is ready before any play/stop
  await _sineEngine.init();

  if (isPlaying.value || stop) {
    await _sineEngine.stop();
    isPlaying.value = false;
    NeomStopwatch().pause(ref: chamberPreset.id);
    if(_waveTicker?.isActive ?? false) _waveTicker?.stop();

    // Stop incienso tracking
    _stopPhaseRunner();
    _stopTimelinePlayback();
    inciensoTracker.stop();
    _prevBreathPhase = 0.0;
  } else {
    _syncParams();
    await _sineEngine.start();
    isPlaying.value = true;
    NeomStopwatch().start(ref: chamberPreset.id);
    if(!(_waveTicker?.isActive ?? false)) _waveTicker?.start();

    // Start incienso tracking
    _sessionStartedAt = DateTime.now();
    inciensoTracker.start();
    inciensoRecorder.startRecording();
  }
  update([AppPageIdConstants.generator, 'miniNeomPlayer']);
}