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/):
- RRIntervalCleaner – Artefakt-Rejection: physiologisch unmögliche Werte (RR <300ms oder >2000ms) und ektopische Schläge werden entfernt
- Interpolation – Kubische Interpolation auf ein gleichmäßiges Raster (4 Hz) für die Frequenzanalyse
- LombScarglePeriodogram – Spektralanalyse für unregelmäßig getaktete Daten (keine klassische FFT nötig)
- HRVMetricsCalculator – Berechnet RMSSD, SDNN, LF Power, HF Power aus den Spektraldaten
// 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