← Alle Artikel
BiofeedbackSwiftUIBLE

HRV-Biofeedback: Resonanzfrequenz-Test und Echtzeit-FFT in Swift

17. März 2026 · 10 Min. Lesezeit

Respivo ist eine native iOS-App für HRV-Biofeedback. BLE-Brustgurt anlegen, Resonanzfrequenz bestimmen, geführte Atemübungen machen, Session-Score erhalten. Die gesamte Signalverarbeitung – von rohen RR-Intervallen bis zur Lomb-Scargle-Spektralanalyse – läuft in Echtzeit auf dem iPhone. Kein Backend-Zwang, kein Account nötig.

Feature-Übersicht

  • Onboarding: BLE-Brustgurt-Erklärung, Polar H10 empfohlen, Datenschutzhinweise
  • Sensor-Pairing: BLE Scan, Geräteliste, Verbinden/Trennen, Live-Status (HR, RR, Signalqualität)
  • Dashboard: Letzte Session, RMSSD, Streak, Schnellstart-Buttons, Wochenübersicht
  • Resonanzfrequenz-Test: Automatischer Sweep bei 6.5, 6.0, 5.5, 5.0, 4.5 bpm – je 2 Min pro Rate
  • Biofeedback-Session: Geführte Atmung auf persönlicher Resonanzfrequenz
  • Session-Modi: 4:6 Ratio, 50:50, Freie Atmung – Dauer: 3, 5, 10, 20 Min
  • Atemführung: Große Animation + optionale haptische Vibration + Audio
  • Live-Metriken: HR, RMSSD, LF Power, Session-Score
  • Session-Historie: Alle Sessions lokal gespeichert + Trend-Analyse

BLE: Vom Herzschlag zum RR-Intervall

Respivo nutzt CoreBluetooth mit dem Heart Rate Service (0x180D). Das Characteristic 0x2A37 liefert neben der Herzfrequenz die RR-Intervalle – die Abstände zwischen aufeinanderfolgenden Herzschlägen in Millisekunden. Die App ist optimiert für den Polar H10, funktioniert aber mit jedem BLE-HR-Sensor, der RR-Intervalle überträgt.

Signal-Pipeline: 4 Module

Die Signalverarbeitung ist modular aufgebaut (Ordner SignalProcessing/):

  1. RRIntervalCleaner – Artefakt-Rejection: physiologisch unmögliche Werte (RR <300ms oder >2000ms) und ektopische Schläge werden entfernt
  2. Interpolation – Kubische Interpolation auf ein gleichmäßiges Raster (4 Hz) für die Frequenzanalyse
  3. LombScarglePeriodogram – Spektralanalyse für unregelmäßig getaktete Daten (keine klassische FFT nötig)
  4. HRVMetricsCalculator – Berechnet RMSSD, SDNN, LF Power, HF Power aus den Spektraldaten
SignalProcessing/SpectralAnalyzer.swift
// Lomb-Scargle statt klassischer FFT:
// Funktioniert direkt mit unregelmäßig
// getakteten RR-Intervallen
func computeSpectrum(
    timestamps: [Double],
    values: [Double],
    frequencies: [Double]
) -> [Double] {
    let N = values.count
    let mean = values.reduce(0, +) / Double(N)
    let centered = values.map { $0 - mean }

    return frequencies.map { freq in
        let omega = 2.0 * .pi * freq
        // τ Offset für Phasenkorrektur
        let tau = computeTau(timestamps, omega)
        // Leistung bei dieser Frequenz
        return lombPower(centered,
                         timestamps, omega, tau)
    }
}

Der Resonanzfrequenz-Test

Jeder Mensch hat eine individuelle Resonanzfrequenz (4.5–6.5 bpm). Respivo testet automatisch fünf Raten: 6.5, 6.0, 5.5, 5.0 und 4.5 Atemzüge/Minute. Pro Rate 2 Minuten Messung + kurze Pause. Die Auswertungskriterien:

  • Stärkster LF-Peak in der Nähe der Zielrate
  • Größte Herzraten-Schwingungsamplitude
  • Glatter sinusförmiger HR-Verlauf
  • Wenig konkurrierende LF-Peaks

Die Frequenz mit dem besten Gesamtscore wird als persönliche Resonanzfrequenz gespeichert.

Architektur: Clean Architecture in Swift

Die App folgt einer 5-Schichten-Architektur:

  • Presentation: SwiftUI Screens + ViewModels
  • Domain: HRV Use Cases, Resonanz-Logik, Scoring
  • Data: BLE Layer, Sensor-Adapter, Persistence
  • SignalProcessing: RR-Cleaning, Interpolation, Lomb-Scargle, HRV-Metriken
  • Services: BreathingPacerService, SensorHub, SettingsStore, NotificationManager

Wichtiger Hinweis

Respivo ist ein Wellness-/Biofeedback-Produkt, kein Medizinprodukt. Keine Diagnose- oder Heilversprechen in UI oder Texten – konform mit EU MDR.

→ Projekt ansehen: Respivo – Projektdetails