Så hittar programvara BPM och tonart
Du kan höra takten i en låt nästan omedelbart. Efter några sekunder går det ofta att stampa med foten, känna pulsen och få en uppfattning om låten är långsam, snabb eller någonstans däremellan.
För en dator är det betydligt mer komplicerat.
En ljudfil består i grunden av digital information som beskriver hur ljudvågen förändras över tid. Datorn hör ingen bastrumma, ingen melodi och ingen sång på samma sätt som vi gör. För att identifiera saker som BPM, tonart och harmonisk struktur behöver programvaran analysera mönster i ljudsignalen.
Det är en teknik som används i allt från musikproduktion och rekommendationssystem till DJ-program och automatiserad ljudanalys. Men hur fungerar den egentligen?
Först måste programmet hitta pulsen
BPM står för beats per minute och beskriver hur många pulsslag en låt har per minut.
En låt i 120 BPM har exempelvis två slag per sekund. För en människa är det ofta enkelt att känna den rytmen, men ett program behöver först hitta återkommande händelser i ljudet.
Det görs ofta genom att leta efter tydliga förändringar i signalen, så kallade transienter. En transient kan uppstå när en bastrumma slår, när en virvel kommer in eller när ett annat ljud plötsligt ökar i styrka.
Programmet analyserar sedan hur ofta dessa händelser återkommer.
Om starka transienter dyker upp med ett regelbundet intervall kan systemet börja uppskatta låtens tempo.
Varför är BPM-analys svårare än den låter?
All musik har inte en tydlig fyrtaktsrytm med en markerad kick på varje slag.
Det finns flera saker som kan göra analysen svårare:
- Synkoperade rytmer
- Liveinspelningar där tempot varierar
- Långa intro utan tydliga trummor
- Halvtempo och dubbeltempo
- Komplex percussion
- Genretypiska rytmer som inte följer ett enkelt mönster
Det är därför program ibland kan tolka en låt i 70 BPM som 140 BPM eller tvärtom.
Rent matematiskt kan båda värdena passa samma rytmiska struktur. Programmet måste därför försöka avgöra vilket tempo som bäst beskriver hur låten faktiskt upplevs.
Programmet letar efter återkommande mönster
När programvaran analyserar tempo räcker det sällan att bara hitta en enskild trumträff.
I stället jämförs många delar av ljudfilen för att hitta regelbundenhet.
Ett förenklat arbetsflöde kan se ut så här:
- Ljudet delas upp i mycket små tidssegment.
- Programmet mäter förändringar i energi och frekvensinnehåll.
- Tydliga transienter markeras.
- Avståndet mellan transienterna jämförs.
- Återkommande intervall används för att uppskatta ett sannolikt BPM-värde.
Mer avancerade system kan dessutom väga samman flera rytmiska lager och jämföra olika möjliga tempon innan ett slutligt värde väljs.
Tonart är ett helt annat problem
Att identifiera BPM handlar framför allt om tid och rytm. Att identifiera musikalisk tonart handlar i stället om frekvenser och relationerna mellan toner.
Varje musikalisk ton motsvarar ett visst frekvensområde. När flera toner spelas samtidigt bildar de ackord och harmoniska mönster.
För att uppskatta tonarten behöver programmet analysera vilka toner som förekommer mest och hur de förhåller sig till varandra genom låten.
Det handlar alltså inte bara om att hitta en enskild ton. Systemet försöker förstå vilken tonal struktur som dominerar.
Så kan en dator hitta tonerna
En vanlig metod är att omvandla ljudsignalen från tidsdomänen till frekvensdomänen.
Det innebär i praktiken att programmet går från att titta på hur ljudet förändras över tid till att analysera vilka frekvenser som finns representerade.
Därefter kan frekvenserna grupperas till tonklasser som exempelvis C, C#, D och så vidare.
När tillräckligt mycket av låten analyserats kan programmet skapa en slags profil över vilka toner som dominerar.
Den profilen jämförs sedan med typiska mönster för olika dur- och molltonarter.
Varför blir tonarten ibland fel?
Precis som med BPM finns det musik som är svår att analysera automatiskt.
Problemen kan uppstå när:
- Låten byter tonart
- Ackorden är mycket komplexa
- Basgången antyder en annan ton än melodin
- Det finns mycket brus eller distorsion
- Musiken använder modala skalor
- Vissa toner förekommer betydligt mer än andra utan att vara grundtonen
Två analysprogram kan därför ibland ge olika resultat för samma låt.
Det betyder inte nödvändigtvis att ett av systemen är dåligt. Musik är inte alltid så entydig som en analysalgoritm gärna vill att den ska vara.
Vad är Camelot-systemet?
För DJs räcker det ofta inte att veta att en låt går i exempelvis A-moll eller C-dur. Informationen behöver vara snabb att använda under planering och mixning.
Därför används ofta Camelot-systemet.
Camelot Wheel översätter musikaliska tonarter till ett enklare kodsystem med siffror och bokstäver, till exempel 8A eller 9B.
Syftet är att göra harmonisk mixning enklare.
Två låtar med kompatibla Camelot-koder har större chans att fungera harmoniskt tillsammans när de mixas.
Det betyder inte att andra kombinationer är förbjudna. Systemet fungerar som ett hjälpmedel, inte som en regelbok.
Harmonisk kompatibilitet är mer än samma tonart
Två låtar behöver inte ligga i exakt samma tonart för att fungera tillsammans.
Vissa tonarter är nära besläktade och delar många av samma toner. Det gör att övergången mellan dem kan låta naturlig.
Det är detta harmonisk mixning försöker utnyttja.
För en DJ kan information om tonart därför användas tillsammans med BPM, energi och musikstil för att hitta bättre övergångar.
Ett harmoniskt kompatibelt låtbyte garanterar inte att mixen blir bra, men det minskar risken för tydliga harmoniska krockar.
Analys av ett helt musikbibliotek
Tekniken blir särskilt användbar när mängden musik växer.
Att kontrollera BPM och tonart manuellt för tio låtar är möjligt. För ett bibliotek med fem eller tiotusen spår blir det betydligt mindre realistiskt.
Därför använder DJ-program och andra specialiserade verktyg automatisk batchanalys.
Systemet kan då gå igenom stora mängder filer och skapa metadata för varje spår.
Det kan exempelvis handla om:
- BPM
- Tonart
- Camelot-kod
- Låtens längd
- Waveform-data
- Beatgrid
När analysen är färdig kan biblioteket sorteras och filtreras utifrån dessa egenskaper.
När tekniken används i praktiken
DJ-världen är ett tydligt exempel på varför automatisk ljudanalys är användbar.
En DJ kan ha tusentals låtar i sitt bibliotek och behöver snabbt kunna hitta material som passar ihop både rytmiskt och harmoniskt.
Ett exempel är Mix Architect från DJ Toolbox Pro, som är utvecklat för att analysera musikbibliotek och identifiera bland annat BPM, musikalisk tonart och Camelot-kod.
Poängen med den typen av verktyg är inte bara att visa tekniska värden. Informationen kan användas som grund för att sortera biblioteket, hitta kompatibla spår och minska mängden manuellt arbete inför en spelning.
Det är ett bra exempel på hur ganska avancerad signalanalys kan döljas bakom ett gränssnitt som i praktiken bara visar ett par användbara siffror.
Lokalt eller i molnet?
Ljudanalys kan göras både lokalt och på externa servrar.
Vid molnbaserad analys laddas filen upp till en server där beräkningen genomförs. Det kan ge tillgång till mycket kraftfull hårdvara, men innebär också att stora ljudfiler behöver skickas över internet.
Lokala analysverktyg använder i stället datorns egen processor.
Det har flera praktiska fördelar:
- Filer behöver inte laddas upp
- Analysen kan fungera utan internet
- Stora bibliotek behöver inte överföras till en extern tjänst
- Materialet kan stanna på den egna datorn
Mix Architect är ett exempel på ett sådant lokalt arbetsflöde, där själva musikanalysen sker på användarens dator.
Hur snabbt kan tusentals låtar analyseras?
Hastigheten beror på flera saker.
En kraftfull modern processor kan analysera betydligt fler filer parallellt än en äldre dator. Ljudformat, filstorlek och analysens komplexitet spelar också roll.
Ett program som bara letar efter BPM kan arbeta snabbare än ett system som samtidigt försöker identifiera tonart, beatgrid och flera andra egenskaper.
Det är därför batchanalys ofta körs i bakgrunden medan användaren gör något annat.
När biblioteket väl är analyserat behöver samma arbete vanligtvis inte göras om förrän nya låtar läggs till.
Kan AI göra analysen bättre?
Maskininlärning används i allt fler ljudverktyg, framför allt när klassiska signalanalysmetoder har svårt att hantera komplex musik.
En modell kan tränas på stora mängder musik där BPM, tonart eller andra egenskaper redan är kända.
Den kan därefter lära sig mönster som är svåra att formulera som enkla regler.
Det betyder dock inte att traditionell signalbehandling försvinner.
Många moderna system kombinerar klassiska algoritmer med maskininlärning för att få ett mer stabilt resultat.
Analysen är ett hjälpmedel, inte facit
Det är lätt att börja se automatiskt analyserade värden som absoluta sanningar.
Men musik är komplex.
Ett program kan sätta BPM till 128 medan en annan analysmotor väljer 64. En låt kan identifieras som A-moll trots att delar av arrangemanget antyder en annan tonalitet.
Därför behöver människor fortfarande kunna kontrollera resultatet.
För DJs är det särskilt viktigt att lyssna på övergången i stället för att enbart lita på att två Camelot-koder ser kompatibla ut.
Från ljudvåg till användbar information
Det som ser ut som några enkla värden i ett musikprogram bygger alltså på en ganska avancerad kedja av analyser.
Programmet behöver först läsa ljudsignalen, hitta återkommande rytmiska mönster, analysera frekvenser och jämföra resultaten med matematiska och musikaliska modeller.
Ur miljontals datapunkter i en ljudfil kan programvaran sedan presentera något så enkelt som:
124 BPM, A-moll, Camelot 8A.
Det är ett tydligt exempel på vad modern programvara ofta gör bäst. Den tar ett komplext tekniskt problem och omvandlar det till information som går att använda direkt.
Datorn hör inte musiken som vi gör
En människa kan känna rytmen, uppfatta stämningen och höra om två låtar passar ihop utan att kunna förklara exakt varför.
Datorn arbetar på ett helt annat sätt.
Den mäter förändringar, frekvenser, intervall och statistiska mönster. Genom att kombinera dessa signaler kan programvaran ändå komma fram till en uppskattning som ofta ligger mycket nära det en erfaren lyssnare skulle säga.
Det är kanske det mest fascinerande med modern ljudanalys. Datorn behöver inte höra musik på samma sätt som vi gör för att ändå kunna förstå tillräckligt mycket av dess struktur för att bli ett användbart verktyg.