WristBeat: Haptyczny metronom na watchOS
Implementacja Core Haptics w SwiftUI
Metronom na Apple Watch, który nie klika w słuchawkach ani na głośniku. Rytm czuć na nadgarstku, a tempo można zmieniać bez wyciągania telefonu.


O projekcie
Chciałem sprawdzić, czy Apple Watch może działać jako metronom, który nie przeszkadza innym muzykom i nie walczy z odsłuchem. Najtrudniejsze było utrzymanie równego pulsu przy wygaszonym ekranie i zmieszczenie sterowania w bardzo małym interfejsie.
Najważniejsze elementy
Integracja Core Haptics
Różne wzory wibracji rozróżniają akcent i słabsze części taktu, dzięki czemu rytm da się czytać bez patrzenia na ekran.
Obsługa Digital Crown
Tempo zmienia się pokrętłem zegarka. To wygodniejsze na scenie lub próbie niż trafianie palcem w małe przyciski.
Algorytm Tap Tempo
Tap tempo liczy tempo z kilku ostatnich uderzeń, więc można szybko złapać BPM utworu bez ręcznego wpisywania wartości.
Background Execution
Metronom działa po wygaszeniu ekranu, korzystając z WKExtendedRuntimeSession i audio session do utrzymania pracy w tle.
Wyzwania i rozwiązania
Problem
Standardowe timery w watchOS mogą być nieprecyzyjne przy wygaszonym ekranie ze względu na oszczędzanie energii.
Rozwiązanie
Implementacja AVAudioSession w połączeniu z pętlą o wysokim priorytecie, aby utrzymać stabilność rytmu niezależnie od stanu urządzenia.