19. maj 2004 - 16:52Der er
22 kommentarer og 1 løsning
MP3 frekvens data?
Jeg skal analyserer frekvensindholdet af nogle musikfiler, og derfor har valgt at bruge mp3-filer, fordi jeg ved at musikken gemmes som frekvensindhold. Jeg har dog ikke kunnet finde ud af præcis hvordan dette skal læse. Er der nogen som kender et sted, hvor man finde denne information, eller endnu bedre et sted man kan hente en c++ class, som kan bruges direkte?
Jeg har vist en FFT funktion til at ligge på en eller anden gammel harddisk. Det kræver at man laver musikken om til almindlige data, eller bruger .wav filer. Jeg kan godt se om jeg kan finde den frem.
overchord: Det er mig selv som skal lave analyseringen, da det er til en skole-opgave... det er til en playlist-generator, hvis det siger nogen noget :)
Nu ved jeg ikke præcist, hvad dine krav er, men jeg ville klart vælge at analysere en wave-fil, hvis jeg havde valget mellem de 2 formater. I en wave ligger al data med en simpel header først, og derefter alle samples i tidsområdet, der tilsammen udgør wave filen.
En MP3 har et kompliceret frameformat, som du skal finde ud af at læse - hvor bl.a. en værdi i frekvensområdet kan være repræsenteret ved et variabelt antal bits, som ikke nødvendigvis (læs: sjældent) passer med et helt antal bytes. Desuden benytter en mp3 enkoder sig af en pyskoakustisk model, som populært sagt skærer de frekvenser væk, som det menneskelige øre alligevel ikke kan høre. Det er derfor en mp3 fylder mindre end en wave. Dermed vil du også få en anderledes repræsentation af lyden i frekvensområdet hvis du læser fra en mp3 kontra den tilsvarende wave.
Hvis du bruger wave, skal du køre en FFT på samples, ja, men en FFT er faktisk ikke så svær at implementere, hvis du vil gøre det selv - og ellers findes der mange open source FFT algoritmer på nettet. Sig til hvis du skal bruge mere hjælp til det - jeg har selv skrevet en FFT rutine, som du kan få lov at se, hvis du er interesseret. Det er selvfølgelig langtfra jordens hurtigste, men den er hurtig nok til de fleste formål.
borrisholt >> Tak. Det er desværre ikke det, spørgeren spørger om her. Dit eksempel kan læse info fra frame-headerne i en mp3. Men spørger ønsker at kunne hente den egentlige lyddata i frekvensområdet ud, og viderebehandle det.
borrisholt: Tak for forsøget, jeg kigger lige på TbassPlayer. Jeg har programmeret i Delphi en gang, men det er nu ved at være længe siden :) Opgaven skulle desværre afleveres i dag, men det er jo spændende alligevel.
driis: Behold du bare pointene som tak for indsatsen... du kan jo eventuelt dele med borrisholt ;) men det må I selv finde ud af...
thomas_fogh og andre ... Hvis i ikke er "bange" for Delphi kode, eller bruger C++ builder er torry.net et meget godt sted at lede efter selv særdeles advancerede programmer gtatis Open source !!!
Jens B
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.