buildInciensoSession method
InciensoSession
buildInciensoSession({
- String inciensoId = '',
- InciensoSource source = InciensoSource.userCreated,
- InciensoSessionEnd endReason = InciensoSessionEnd.stoppedByUser,
Build an InciensoSession from the current tracker data. Call after stopping playback.
Implementation
InciensoSession buildInciensoSession({
String inciensoId = '',
InciensoSource source = InciensoSource.userCreated,
InciensoSessionEnd endReason = InciensoSessionEnd.stoppedByUser,
}) {
final now = DateTime.now();
return InciensoSession(
id: 'session_${now.millisecondsSinceEpoch}',
userId: profile?.id,
inciensoId: inciensoId,
inciensoSource: source,
startedAt: _sessionStartedAt ?? now,
endedAt: now,
suggestedDuration: const Duration(minutes: 10),
rootFrequencyHz: detectedFrequency.value,
carrierLeftHz: currentFreq.value,
carrierRightHz: currentFreq.value + currentBeat.value,
volume: currentVol.value,
isochronicEnabled: isIsochronicEnabled.value,
isochronicHz: isochronicFreq.value,
totalBreathCycles: inciensoTracker.totalCycles,
inciensoCount: inciensoTracker.inciensoCount,
avgCoherence: inciensoTracker.avgCoherence,
peakCoherence: inciensoTracker.peakCoherence,
minCoherence: inciensoTracker.minCoherence,
coherenceStdDev: inciensoTracker.coherenceStdDev,
coherenceTimeline: inciensoTracker.coherenceTimeline,
avgBreathCycleMs: inciensoTracker.avgBreathCycleMs,
breathCV: inciensoTracker.breathCV,
dominantState: inciensoTracker.dominantState,
stateTimeSeconds: inciensoTracker.stateTimeMap.map(
(k, v) => MapEntry(k.name, v),
),
stateTransitions: inciensoTracker.stateTransitions,
breathingGuideActive: breathMode.value != NeomBreathMode.off,
spatialAudioEnabled: spatialMode.value != NeomSpatialMode.softPan,
platform: kIsWeb ? 'web' : 'mobile',
endReason: endReason,
);
}