Oggi è il mio compleanno, e ho deciso di aprire una capsula del tempo.
Diciotto anni fa, abbiamo iniziato a costruire Myousica — una piattaforma per creare musica collaborativamente nel browser. Registra dal microfono, carica tracce, remixa la musica degli altri, costruisci canzoni insieme a sconosciuti dall’altra parte del mondo. Abbiamo lanciato a settembre 2008 dopo nove mesi di sviluppo.
Era una startup. Ha funzionato per circa cinque mesi prima di essere messa in pausa, e il codice sorgente è stato poi rilasciato su GitHub con il nome Mewsic. Ho scritto dei dettagli tecnici in una serie di tre post: la piattaforma Rails, l’editor multitraccia Flash e la pipeline audio. Quei post coprono l’ingegneria. Questo è sul quadro più ampio.
L’idea giusta al momento sbagliato¶
Il concetto di base era solido: permettere a chiunque di fare musica in un browser, in modo collaborativo. Nessun software da installare. Apri il browser, scegli una canzone, aggiungi la tua traccia di chitarra, condividi il risultato. Un musicista a Roma poteva iniziare un beat, qualcuno a Tokyo poteva aggiungere il basso, una cantante a San Paolo poteva metterci la voce sopra. Tutto nel browser.
Il problema era che nel 2008 i browser non sapevano fare niente di tutto questo nativamente.
Per catturare l’audio dal microfono serviva Flash — un front-end ActionScript nel plugin Flash Player. Per inviare quell’audio a un server serviva RTMP — un media server Java (Red5) solo per ricevere l’audio e scriverlo su disco come file FLV. Per trasformare quegli FLV in MP3 riproducibili serviva una pipeline di ffmpeg, sox e worker in background lato server. Per mostrare una forma d’onda la renderizzavi come PNG — la Canvas API non era abbastanza matura. Per riprodurre più tracce sincronizzate costruivi un motore di riproduzione custom in ActionScript con sincronizzazione al frame.
L’intera architettura esisteva per compensare ciò che il browser non sapeva fare. Quattro servizi separati, ~2.000 commit, mezza dozzina di tool esterni — tutto per ottenere qualcosa che la Web Audio API avrebbe reso possibile in poche centinaia di righe di JavaScript.
Microservizi accidentali¶
Un dettaglio divertente: la nostra architettura a quattro servizi — app Rails, multitraccia Flash, media server Red5, uploader di elaborazione audio — precede il termine “microservizi.” James Lewis presentò il concetto al 33rd Degree a Cracovia nel 2012, e Martin Fowler lo rese popolare nel 2014. Noi non chiamavamo la nostra architettura in nessun modo. Avevamo semplicemente bisogno di servizi separati perché un’unica app Rails non poteva gestire la transcodifica audio, lo streaming RTMP in tempo reale e un editor multitraccia contemporaneamente.
Ma guardando indietro, era esattamente quello: servizi indipendenti che comunicano via callback HTTP, autenticazione stateless basata su token, nulla di condiviso tranne il filesystem per lo spool audio. L’uploader non sapeva nulla di utenti o canzoni — elaborava file audio e faceva callback all’app principale quando aveva finito. Red5 non sapeva nulla di nulla — registrava stream RTMP su disco. Ogni servizio aveva un compito solo.
Semplicemente non avevamo ancora un nome per il pattern. Per essere onesti, era un servizio in più — non esattamente un manifesto sui sistemi distribuiti. Ma è divertente che quello che consideravamo “buon senso” sarebbe diventato un intero movimento architetturale pochi anni dopo.
Cosa esiste oggi¶
Apri BandLab nel browser adesso. Troverai un editor multitraccia completo con registrazione, strumenti virtuali, effetti, collaborazione in tempo reale, condivisione. Gratuito. Oltre sessanta milioni di utenti. Fondato nel 2015.
Soundtrap è nato nel 2012, è stato acquisito da Spotify nel 2017 e rivenduto ai fondatori nel 2023. Studio musicale collaborativo nel browser. Più persone che editano lo stesso progetto in tempo reale.
Splice è nato nel 2013. Collaborazione cloud con version control per progetti musicali — tipo Git per sessioni DAW — più un enorme marketplace di sample royalty-free.
Fanno tutti quello che faceva Myousica. Registrare nel browser. Sovrapporre tracce. Collaborare con altri musicisti. Costruire canzoni insieme. La differenza è che hanno lanciato quando la tecnologia era pronta: la Web Audio API per l’elaborazione audio nativa, WebRTC per lo streaming in tempo reale, la MediaRecorder API per l’accesso al microfono, i Web Workers per il multithreading, e il tipo di banda che non ti costringe a scegliere tra lo streaming audio e il caricamento di una pagina web.
Noi abbiamo costruito la stessa cosa otto anni prima, e abbiamo dovuto costruirci mezzo browser per farlo.
Cosa resta¶
Il codice è su GitHub. Cinque repository, dall’app Rails al multitraccia ActionScript alla pipeline audio. Non come prodotto — come capsula del tempo. Un documento di cosa serviva per fare audio collaborativo nel browser nel 2008, prima che esistesse qualsiasi API per renderlo ragionevole.

Sono orgoglioso di quello che abbiamo costruito. Vaclav Vancura ha progettato un multitraccia straordinario in ActionScript — 7.000 righe di codice splendidamente architettato. Andrea Franz e Giovanni Intini hanno costruito le fondamenta sia dell’app principale che dell’uploader. Fabio Grande ha disegnato l’identità visiva — la UI, il logo, tutto il look and feel. E noi cinque, in ~2.000 commit, abbiamo consegnato una piattaforma musicale collaborativa che funzionava davvero. Potevi aprire un browser, registrare una traccia, e suonare con qualcuno dall’altra parte del pianeta. Nel 2008.

Myousica è stato un successo commerciale? No. L’idea era giusta? Sessanta milioni di utenti BandLab dicono di sì.
Eravamo solo troppo in anticipo.