/ Forside / Karriere / Uddannelse / Højere uddannelser / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Højere uddannelser
#NavnPoint
Nordsted1 1588
erling_l 1224
ans 1150
dova 895
gert_h 800
molokyle 661
berpox 610
creamygirl 610
3773 570
10  jomfruane 570
Detektering af rytmen i musik
Fra : Bjarke Walling Peter~


Dato : 07-02-03 17:20

Hej.

Af ren interesse kom jeg til at tænke på om der er lavet computerprogrammer
der kan detektere rytmen i en sang - f.eks. finde ud af at der er en
betoning (eller hvad det hedder) på 1., 2. og 4. taktslag. Også hvor kraftig
den betoning er - f.eks. at der på 1. og 3. taktslag er en kraftig betoning
og en mindre på slag 1,25 og 3,25. Eller noget lignende dette i hvert fald.
Så ville man kunne udvide programmet til at sætte ekstra (passende)
trommerytme på musikken, hvis det nu var det man ville. Spørgsmålet er:
Findes disse programmer? - hvor? Hvordan fungerer de?
Jeg ved i hvert fald at det er muligt at detektere tempoet, dvs. "beats per
minute". Ekstra spørgsmål: Hvorledes fungerer dette? Er metoden til
BPM-detektering brugbar for al slags musik?

Jeg kunne forestille mig at det måske var meget simpelt: "Blot" at se på om
nogle bestemte frekvenser findes rytmisk i musikken. Men så simpelt er det
jo nok heller ikke.
I øvrigt kan jeg ikke se hvorledes man skulle kunne sortere
frekvenserne/betoningerne - så man kunne finde ud af på hvilke taktslag der
er mere eller mindre betoning.
Og hvordan finder programmet til BPM-detektering ud af at rytmen i en
bestemt frekvens ikke blot er den fordoblede rytme - at den egentlig kun
skulle tælle hvert andet udslag i frekvensen?

På forhånd tak! - håber ikke at alle de spørgsmål er alt for overvældende.

Mvh. Bjarke



 
 
Jonas Møller Larsen (07-02-2003)
Kommentar
Fra : Jonas Møller Larsen


Dato : 07-02-03 20:48

Bjarke Walling Petersen wrote:
> Jeg kunne forestille mig at det måske var meget simpelt: "Blot" at se på om
> nogle bestemte frekvenser findes rytmisk i musikken. Men så simpelt er det
> jo nok heller ikke.

Jeg vil tro, at det er så simpelt. Et stykke musik kan (hvis man
da absolut vil ødelægge æstetikken) beskrives matematisk som
lufttrykket som funktion af tiden, h(t). Denne funktion kan
fouriertransformeres, formel 5 på
http://mathworld.wolfram.com/FourierTransform.html, så man får
fordelingen i (vinkel-)frekvenser, H(omega).

Givet H(omega) kan man give sig til at lede efter peaks i spektret
i frekvensintervallet 0.5 Hz til 5 Hz svarende til BPM-intervallet
30-300, som nok er dækkende for meget musik. Den nederste peak,
ved omega0, vil svare til grundfrekvensen (BPM), og man vil også
finde "overtoner" ved n x omega0, hvor n = 2, 3, ...

Yderligere, hvis f.eks. taktarten er 4/4 og 1-slaget i hver takt
er ekstra betonet, bør der være en højere peak ved omega0/4 (og
generelt ved omega0/m, når taktarten er (m/k)).

> I øvrigt kan jeg ikke se hvorledes man skulle kunne sortere
> frekvenserne/betoningerne - så man kunne finde ud af på hvilke taktslag der
> er mere eller mindre betoning.

Det bør være muligt, når man først har bestemt længden af en takt
(svarende til frekvensen omega0/m). Herefter kan man "lægge alle
takter oven i hinanden", sådan at man får en funktion g(t), som er
defineret for 0 <= t < T, hvor T er længden af en takt (man skal
nok først kvadrere h(t), sådan at forskellige takter ikke udligner
hinanden ved destruktiv inteferens). Givet g(t) svarer den største
peak til det mest betonede slag (1-slaget), og g(t) er generelt et
mål for betoningen til tidspunktet t, så derved kan man
sammenligne betoningen af forskellige slag i takten.

> Og hvordan finder programmet til BPM-detektering ud af at rytmen i en
> bestemt frekvens ikke blot er den fordoblede rytme - at den egentlig kun
> skulle tælle hvert andet udslag i frekvensen?

Det gør programmet ved at udvælge den nederste peak
(grundfrekvensen), hvor en peak er defineret ved at H(omega) er
større end en passende tærskel.

> Er metoden til BPM-detektering brugbar for al slags musik?

Naturligvis er den ikke det. Der findes musik med meget
regelmæssig rytme (f.eks. disko), musik helt uden rytme og alle
varianter herimellem. Derudover bør det være muligt at notere et
vilkårligt stykke musik i en vilkårlig taktart og med vilkårlig
BPM (til gengæld bliver nodearket vilkårligt grimt), så et
musikstykkes BPM er ikke umiddelbart veldefineret. Det perfekte
BPM-program findes derfor ikke, så udfordringen er at lave et
program, der giver tilstrækkeligt præcise svar i tilstrækkeligt
mange tilfælde (jeg ved ikke, om det er forsøgt før).

--
Jonas Møller Larsen

Bertel Lund Hansen (07-02-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 07-02-03 21:13

Jonas Møller Larsen skrev:

>Naturligvis er den ikke det. Der findes musik med meget
>regelmæssig rytme (f.eks. disko), musik helt uden rytme og alle
>varianter herimellem.

Der findes også musik med så kompleks rytme at den er svær at
finde grundslag i. Grundrytmen behøver ikke være kompleks, men
rytmen kan spilles så flydende og varieret at den er svær at
finde taktstarten i.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Preben Riis Sørensen (09-02-2003)
Kommentar
Fra : Preben Riis Sørensen


Dato : 09-02-03 23:22


Bertel Lund Hansen <nospamfor@lundhansen.dk> skrev i en
news:4k484v8eaiepgeo5jk2481cmajl9rlgurp@news.stofanet.dk...
> Jonas Møller Larsen skrev:
>
> >Naturligvis er den ikke det. Der findes musik med meget
> >regelmæssig rytme (f.eks. disko), musik helt uden rytme og alle
> >varianter herimellem.
>
> Der findes også musik med så kompleks rytme at den er svær at
> finde grundslag i. Grundrytmen behøver ikke være kompleks, men
> rytmen kan spilles så flydende og varieret at den er svær at
> finde taktstarten i.
>
> --
> Bertel

Hvor taktløst!

Jeg har aldrig kunnet bruge nodernes taktstreger til noget når jeg forsøger
at lirke et stykke klassisk af som skrevet står. Vel og mærke urytmisk
stykker, som de ofte er. Hovedårsagen til at jeg aldrig kommer til at læse
noder flydende, er at min hjerne forlanger at noderne står på en tidslinie
med en streg efter, der angiver længden. Jeg har ingen fornemmelse af en
nodes længde, men kender jeg stykket i forvejen, har jeg let ved at spille
det når jeg har stavet mig gennem noderne og lært dem udenad.
--
M.V.H.
Preben Riis Sørensen
preben@esenet.dk



Bjarke Walling Peter~ (08-02-2003)
Kommentar
Fra : Bjarke Walling Peter~


Dato : 08-02-03 16:41

Jonas Møller Larsen skrev:
[klip]
> Givet H(omega) kan man give sig til at lede efter peaks i spektret
> i frekvensintervallet 0.5 Hz til 5 Hz svarende til BPM-intervallet
> 30-300, som nok er dækkende for meget musik. Den nederste peak,
> ved omega0, vil svare til grundfrekvensen (BPM), og man vil også
> finde "overtoner" ved n x omega0, hvor n = 2, 3, ...
[klip]

Er det noget du ved? - jeg ville ellers tro at man ikke fik frekvenser ud i
dette område, men jeg kan da godt se at det virker logisk.

Ellers mange tak for dit svar.

Mvh. Bjarke



Jonas Møller Larsen (08-02-2003)
Kommentar
Fra : Jonas Møller Larsen


Dato : 08-02-03 18:49

Bjarke Walling Petersen wrote:
> Jonas Møller Larsen skrev:
> [klip]
> > Givet H(omega) kan man give sig til at lede efter peaks i spektret
> > i frekvensintervallet 0.5 Hz til 5 Hz svarende til BPM-intervallet
> > 30-300, som nok er dækkende for meget musik. Den nederste peak,
> > ved omega0, vil svare til grundfrekvensen (BPM), og man vil også
> > finde "overtoner" ved n x omega0, hvor n = 2, 3, ...
> [klip]
>
> Er det noget du ved?

Med det forbehold at jeg ikke har prøvet AutoBPM, vil det
overraske mig, om det ikke netop fungerer ved løbende at beregne
frekvensspektret af korte lydstumper.

> jeg ville ellers tro at man ikke fik frekvenser ud i
> dette område, men jeg kan da godt se at det virker logisk.

Forskellen mellem frekvenserne i det hørbare område (ca. 20 -
20000 Hz) og frekvenserne i det lavere område er alene, at vi
opfatter de førstnævnte som lyd. Til gengæld er perioden af
hørbare toner så kort, at vi ikke kan nå at opfatte de enkelte
trykmaksima og -minima.

Man kunne jo eksperimentere med følgende: Tag en almindelig
mgp-sang af 3 minutters varighed og tydelig rytme f.eks. 120 BPM =
2 Hz, og afspil den ved hundrede gange normalt tempo. Dette vil
flytte grundpulsen op til 200 Hz, så den kan høres som en tone.
(Den oprindelige musik vil skubbes op til omkring grænsen af det
hørbare område, så det giver nok et frygteligt piveri. Til gengæld
varer det kun et par sekunder.)

--
Jonas Møller Larsen

Bjarke Walling Peter~ (08-02-2003)
Kommentar
Fra : Bjarke Walling Peter~


Dato : 08-02-03 19:53

Jonas Møller Larsen skrev:
> Med det forbehold at jeg ikke har prøvet AutoBPM, vil det
> overraske mig, om det ikke netop fungerer ved løbende at beregne
> frekvensspektret af korte lydstumper.

Jeg er ikke helt sikker på at den gør dette. Jeg tror blot den inddeler
musikken i tre frekvensbånd og efterfølgende finder gennemsnitspeaket i
hvert bånd (måske skal den beregne frekvensspektret for at inddele i de tre
bånd og finde gennemsnitspeaket, men det er nu alligevel ikke helt det
samme). Den søger nu hele tiden efter store periodiske udslag i disse tre
bånd og bruger den gennemsnitlige afstand mellem disse til at udregne
BPM-tallet.

Din metode er, så vidt jeg har forstået, at udregne frekvensspektret for
større dele lydstumper (måske bedst med hele sangen såfremt den har det
samme tempo hele vejen igennem) og lede efter det største peak i
frekvensområdet [0,5-5] Hz.

Jeg vil bestemt karakterisere din metode som den nemmeste - i hvert fald
rent programmeringsmæssigt. Især når man ikke nødvendigvis vil finde BPM
løbende, men blot generelt for f.eks. en hel .mp3-fil.

Har du evt. noget mere om at udregne frekvensspektret? Jeg kan godt se at
det er relativ simpelt at fouriertransformere givet en funktion h(t), men en
sådan funktion har man jo ikke nødvendigvis. Musik lagret på en computer er
jo inddelt i en masse tidsintervaller.
Men måske svarer problemstillingen blot til at omsætte en række målepunkter
og lave en funktion der går igennem dem alle. Jeg har dog ikke særlig stor
kendskab på dette område - og der må da også være nogen der har grublet lidt
mere over det og evt. fundet en mere direkte måde at udregne
frekvensspektret for noget musik.

> Forskellen mellem frekvenserne i det hørbare område (ca. 20 -
> 20000 Hz) og frekvenserne i det lavere område er alene, at vi
> opfatter de førstnævnte som lyd. Til gengæld er perioden af
> hørbare toner så kort, at vi ikke kan nå at opfatte de enkelte
> trykmaksima og -minima.
>
> Man kunne jo eksperimentere med følgende: Tag en almindelig
> mgp-sang af 3 minutters varighed og tydelig rytme f.eks. 120 BPM =
> 2 Hz, og afspil den ved hundrede gange normalt tempo. Dette vil
> flytte grundpulsen op til 200 Hz, så den kan høres som en tone.
> (Den oprindelige musik vil skubbes op til omkring grænsen af det
> hørbare område, så det giver nok et frygteligt piveri. Til gengæld
> varer det kun et par sekunder.)

Ja, det kunne være et sjovt eksperiment. Jeg tror nu også det vil give
ovenstående resultat, hvilket jo også bekræfter at man kan benytte din
metode.

Mvh. Bjarke



Jonas Møller Larsen (09-02-2003)
Kommentar
Fra : Jonas Møller Larsen


Dato : 09-02-03 23:17

Bjarke Walling Petersen wrote:
> Har du evt. noget mere om at udregne frekvensspektret? Jeg kan godt se at
> det er relativ simpelt at fouriertransformere givet en funktion h(t), men en
> sådan funktion har man jo ikke nødvendigvis. Musik lagret på en computer er
> jo inddelt i en masse tidsintervaller.

Ja. Man kan digitalisere h(t) ved at "sample" den til en række
tidspunkter adskilt af faste små tidsintervaller, hvis længde så
er det reciprokke af sample rate'n. Derefter beregner man
frekvensspektret, og det vil man typisk gøre med FFT-algoritmen,
http://www.google.com/search?q=%22fast+fourier+transform%22.

--
Jonas Møller Larsen

Preben Riis Sørensen (09-02-2003)
Kommentar
Fra : Preben Riis Sørensen


Dato : 09-02-03 23:01


> Man kunne jo eksperimentere med følgende: Tag en almindelig
> mgp-sang af 3 minutters varighed og tydelig rytme f.eks. 120 BPM =
> 2 Hz, og afspil den ved hundrede gange normalt tempo. Dette vil
> flytte grundpulsen op til 200 Hz, så den kan høres som en tone.
> (Den oprindelige musik vil skubbes op til omkring grænsen af det
> hørbare område, så det giver nok et frygteligt piveri. Til gengæld
> varer det kun et par sekunder.)
>
> --
> Jonas Møller Larsen

Det vil jeg foreslå Danmarks Radio.
--
M.V.H.
Preben Riis Sørensen
preben@esenet.dk



Richard Thordsen (08-02-2003)
Kommentar
Fra : Richard Thordsen


Dato : 08-02-03 09:41

Bjarke Walling Petersen skrev i meddelelsen ...
>...
>Af ren interesse kom jeg til at tænke på om der er lavet computerprogrammer
>der kan detektere rytmen i en sang - f.eks. finde ud af at der er en
>betoning (eller hvad det hedder) på 1., 2. og 4. taktslag. Også hvor kraftig
>...

Prøv at se på flg. side:

http://www.pyramidedata.dk/autobpm.html

Det virker ret godt.


Bjarke Walling Peter~ (08-02-2003)
Kommentar
Fra : Bjarke Walling Peter~


Dato : 08-02-03 16:38

Richard Thordsen skrev:
> Prøv at se på flg. side:
>
> http://www.pyramidedata.dk/autobpm.html
>
> Det virker ret godt.

Ja - det er også lidt sjovt at se grafen den viser. Man kan rent faktisk se
de periodiske udslag i frekvensområderne. Men jeg forstår ikke helt hvorfor
det netop er tre frekvensbånd den deler musikken op i. Måske er det meget
simpelt for at vise det farvekodet (rød, grøn, blå)?

Men jeg har spillet enkelte sange, hvor programmet er bleven "snydt" i
enkelte passager og grafen nærmest gik "amok" - hvor det ikke kunne finde
nogen periodisk rytme sandsynligvis.

Mvh. Bjarke



Bjarke Walling Peter~ (09-02-2003)
Kommentar
Fra : Bjarke Walling Peter~


Dato : 09-02-03 14:22

Richard Thordsen skrev:
> Det virker ret godt.

Indtil videre har jeg kun haft få problemer, men: "Beatles - Yesterday" kan
den overhovedet ikke klare! Grafen flyver vildt op og ned og BPM-tallet
skifter ligeså.
Der er nu ellers en ret tydelig rytme i sangen skulle jeg mene.

Mvh. Bjarke



Ulrik Smed (09-02-2003)
Kommentar
Fra : Ulrik Smed


Dato : 09-02-03 23:22


"Bjarke Walling Petersen" <bwp@bwp.dk> skrev i en meddelelse
news:b25kl8$2869$1@news.cybercity.dk...
> Richard Thordsen skrev:
> > Det virker ret godt.
>
> Indtil videre har jeg kun haft få problemer, men: "Beatles -
Yesterday" kan
> den overhovedet ikke klare! Grafen flyver vildt op og ned og
BPM-tallet
> skifter ligeså.
> Der er nu ellers en ret tydelig rytme i sangen skulle jeg mene.

Der er ingen trommer i. Det er nok problemet. Jeg har iøvrigt set
nogle stereoanlæg der selv kan sætte kunstige trommer på
almindeligt popmusik, det virkede faktisk ret fedt.



Carlsen (20-02-2003)
Kommentar
Fra : Carlsen


Dato : 20-02-03 23:44


"Bjarke Walling Petersen" <bwp@bwp.dk> skrev i en meddelelse
news:b20mbs$hi8$1@news.cybercity.dk...
> Hej.
>
> Af ren interesse kom jeg til at tænke på om der er lavet
computerprogrammer
> der kan detektere rytmen i en sang - f.eks. finde ud af at der er en
> betoning (eller hvad det hedder) på 1., 2. og 4. taktslag. Også hvor
kraftig
> den betoning er - f.eks. at der på 1. og 3. taktslag er en kraftig
betoning
> og en mindre på slag 1,25 og 3,25. Eller noget lignende dette i hvert
fald.
> Så ville man kunne udvide programmet til at sætte ekstra (passende)
> trommerytme på musikken, hvis det nu var det man ville. Spørgsmålet er:
> Findes disse programmer? - hvor? Hvordan fungerer de?
> Jeg ved i hvert fald at det er muligt at detektere tempoet, dvs. "beats
per
> minute". Ekstra spørgsmål: Hvorledes fungerer dette? Er metoden til
> BPM-detektering brugbar for al slags musik?
>
> Jeg kunne forestille mig at det måske var meget simpelt: "Blot" at se på
om
> nogle bestemte frekvenser findes rytmisk i musikken. Men så simpelt er det
> jo nok heller ikke.
> I øvrigt kan jeg ikke se hvorledes man skulle kunne sortere
> frekvenserne/betoningerne - så man kunne finde ud af på hvilke taktslag
der
> er mere eller mindre betoning.
> Og hvordan finder programmet til BPM-detektering ud af at rytmen i en
> bestemt frekvens ikke blot er den fordoblede rytme - at den egentlig kun
> skulle tælle hvert andet udslag i frekvensen?
>
> På forhånd tak! - håber ikke at alle de spørgsmål er alt for overvældende.
>
> Mvh. Bjarke
>
>



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste