Da un po’ di tempo ponderavo di condividere la piccola storia di uno dei pochi progetti che io e il mio compare siamo riusciti a iniziare e, rullo di tamburi, finire. Dopo più di un anno dal rilascio, ho deciso quindi di pubblicare un articoletto qui su Lega Nerd con la storia e i dietro le quinte di quello che fu (e che è) una delle nostre più belle creature: Heartkick, musica e cuore.
Berlino, 16 ottobre 2014. Io e il mio compare stavamo spendendo la serata a comprendere quale oscura verità fosse nascosta dietro l’evidente incapacità di Apple di offrire un servizio di live streaming accettabile per il loro Special Event.
Una volta esaurite le ipotesi e la birra (orrenda), lo show riprende. Tutto bello bellissimo, ma l’entrata sullo stage dell’Apple Watch ci lasciò basiti un po’ più del necessario. Inebriati dai fumi… dell’alcool, Alessandro (il compare) arrivò a questa semplice equazione:
Apple Watch con heart rate monitor + musica = chebbomba
Data di release del gadget Apple: inizio 2015 + delay + altro delay…
Senza lasciarci demordere dalla mancanza di hardware, abbiamo cercato di riapplicare l’equazione ad un iPhone. Photoshop (lui) e XCode + l’Internet (il sottoscritto) alla mano, iniziammo a macchinare. La UI di base (meravigliosa) era pronta nei 5 minuti successivi. Nessun trucco: dietro la mia doccia è presente un piccolo varco verso la Stanza dello spirito e del tempo a cui il mio compare ha evidentemente accesso.
La scienza dietro la musica e il battito
Tornando all’idea: leggendo studi, abbiamo verificato (senza troppo scetticismo) la possibile connessione fra musica e battito cardiaco.
Più precisamente: come la musica possa influenzare il battito di un individuo. Da qui la trovata era: forniamo un’applicazione che generi playlist musicali in qualche modo associate al battito cardiaco e permettiamo all’utente, successivamente, di manovrare il suo stesso battito su e giù con la musica appropriata.
Dopo una breve ricerca, scoprii che Soundcloud fornisce una interfaccia di interrogazione del loro database musicale (API) completa di filtri sui range di bpm. Altra inferenza:
heartbeat → bpm → musica
Mappare il battito cardiaco sul range di valori dei bpm musicali (con approssimazioni) sembrava l’ovvia soluzione per avere musica associata al battito.
Il problema del come calcolarlo rimaneva tuttavia aperto, ma avevamo pensato che fosse raggirabile permettendo all’utente di inserire il suo battito manualmente.
Tuttavia, un sabato pomeriggio, inebriato dai fumi… dell’alcool, riuscii a congegnare un algoritmo molto semplicistico per la misurazione del battito cardiaco tramite telecamera (vedi Runtastic).
L’esecuzione
L’idea di base è semplice (non mia): analizzare i frame di un video del dito appoggiato dietro la telecamera e illuminato dal flash. La tonalità di colore dell’immagine è legata alla pressione sanguigna, di conseguenza, “in fase di battito”, la tonalità sarà più intensa.
Applicando un filtro high pass (poiché al variare della pressione applicata varia anche l’offset della funzione) è poi possibile “contare” i repentini cambi di pendenza della curva per identificare un beat. L’algoritmo è al momento molto casareccio (e la misurazione nell’app spesso ne risente), ma in generale, circa, funziona decentemente. È già in corso una reimplimentazione che sfrutti le librerie per il digital signal processing della SDK Apple.
Successivamente, senza il lusso di singolo asset da poter usare (il mio compare stava finendo di allineare alcune immagini al pixel), ho prodotto anche io la prima bozza dell’applicazione, che continua ad essere, a mio avviso, essenziale e dritta al punto.
Il tempo di misurazione, a quei tempi, variava tra 10 secondi e ∞, con una distribuzione gaussiana attorno ai valori di ∞ (il problema è poi stato risolto).
Nel pacchetto c’è anche la possibilità di definire i generi musicali preferiti per la generazione delle playlist su 3 fasce di frequenza: slow (per rilassarsi, suppongo), normal e fast (quando si fa sport o si è in “party mood”).
La necessità è nata dai casi (ben più che rari) in cui Rihanna è diventata protagonista delle varie playlist.
La conclusione
L’app è stata sviluppata nel corso di lunghe e inebriate notti ed è stata rilascia del buon tempo dopo nello store. Per ora solo iOS (la versione Android, al momento, è solo un piano ambizioso).
Speriamo di ricevere qualche feedback. L’idea è semplice, niente di complicato per ora (un giorno ci sarà la cosiddetta recommendation deep learning buzz word buzz word intelligenza artificiale cose), ma il risultato è piuttosto interessante già adesso, al punto tale che usiamo l’app anche noi. Inoltre siamo alla ricerca di servizi alternativi a Soundcloud, date le recenti paure.
Ciao a tutti e grazie in anticipo.