Program för att analysera frekvenser i ljudfiler?

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Program för att analysera frekvenser i ljudfiler?

Inlägg av speakman »

Leta efter något lämpligt program för att analysera ljudfiler.
Det jag är ute efter är vilka frekvenser som finns att hämta hur ljudströmmen, vilken magnitud osv.
Har aldrig kört med Matlab, annars kanske en FFT-analys där skulle vara att föredra?
Är det svårt att komma igång med Matlab för såna här ändamål? Finns det några bra tutorials på nätet?
Tacksam för alla tips!

Mvh
speakman
Användarvisningsbild
Henrik
Inlägg: 661
Blev medlem: 26 maj 2003, 23:39:14
Ort: Göteborg
Kontakt:

Inlägg av Henrik »

Matlab skulle klara det enkelt, och på bästa sätt. Dock är det inget man köper, det är dyyyyrt. Är det en stor wavfil, behöver du göra det ofta? Är det en engångsgrej kan jag göra det om du vill, fast nu är jag på jobbet.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Tack för erbjudandet. Ja, det är en wavfil, eller snarare en "raw"-fil som jag genererar i mitt egna program. Filen skulle i princip kunna se ut hur som helst.
Om du kan Matlab kanske du skulle vilja göra en grund för en FFT-analys som jag skulle kunna ha som referens?
Googlade runt lite, och det finns väldigt många tutorials för FFT i Matlab, men ett praktiskt exempel hade helt klart varit smidigt!

Mvh
speakman
Användarvisningsbild
Henrik
Inlägg: 661
Blev medlem: 26 maj 2003, 23:39:14
Ort: Göteborg
Kontakt:

Inlägg av Henrik »

Detta kan du klistra in i en m-fil. Sedan döper du m-filen till exempelvis 'minfft.m' och sparar i din work-mapp. För att anropa m-filen skriver du helt enkelt 'minfft' i kommandofönstret.

Kod: Markera allt

% Exempel på FFT i matlab. Förutsätter float32-kodad mono-fil.

% Samplingsfrekvens

Fs=44100;                       

% Upplösning på FFT i bitar. 
% Ex 10 bitar = 1024 punkters upplösning

Bits=10;            

% Eftersom filen vi skall läsa kan vara i vilket format som helst,
% ser vi till att öppna vår fil binärt. Då gör man så här:

File_ID=fopen('G:\minfil.raw','r');

% nu kan vi läsa innehållet filen,
% alla samples läggs i en vektor "samples".

samples=fread(File_ID,inf,'float32');

% Periodtid sampling

Ts=1/Fs;            

% Antal sampel i filen

N=length(samples);

% Skapa tidsvektor

t=0:Ts:Ts*N-Ts;                 

% Skapa frekvensvektor upp till Fs/2 (Nyquist)

f=0:(Fs/2)/2^(Bits-1):Fs/2-(Fs/2)/(2^Bits-1); 

% Plotta först originalsamplingen rätt upp och ner, i en övre graf

subplot(2,1,1);plot(t,samples);

% The magic

X=fft(samples,2^Bits);             

% Plottar i en undre graf absolutbeloppen av första halvan av fft'n. Absolutbelopp ty fft ger en real- och en imaginärdel.
% Den andra halvan av fft'n är ändå bara spegling av den första.

subplot(2,1,2); semilogx(f,abs(X(1:2^(Bits-1))))
Döds-lita inte på det här - jag är lite trött - men det ger ändå ett humm om hur upplägget ser ut.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Tack!

Men som du säkert förstår så får jag inte direkt ut 32-bitars flyttal från ljudkortet, så om det gick att ändra till signed 16-bitar (little endian), så hade det helt klart varit enklare. :D
Ska installera mitt "nyinköpta" *host* *host* MatLab ikväll och se vad som går att göra!

Mvh
speakman
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Prova det fria alternativet "octave" ("apt-get install octave"). Det är ett fritt alternativ till Matlab.
Användarvisningsbild
Henrik
Inlägg: 661
Blev medlem: 26 maj 2003, 23:39:14
Ort: Göteborg
Kontakt:

Inlägg av Henrik »

Signed 16-bitar läser du genom att endast ändra följande rad:
samples=fread(File_ID,inf,'int16');
Användarvisningsbild
JimmyAndersson
Inlägg: 26308
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

cykze: Kan man köra det i terminal-läget (dvs utan något GUI installerat) ? Vore inte dumt isåfall. :)
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

JimmyAndersson: Ja, octave körs i terminalen. Fast plotten visas grafiskt i ett X-fönster. Det kanske går att ställa in så att plotten visas i terminalen också.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Octave is fan the shit asså!! :D

Mvh
speakman
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1339
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Inlägg av baron3d »

Kan rekomendera Cool_edit_pro_2 även Cool_edit_pro är OK.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Kan man göra spektrumanalyser där?
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1339
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Inlägg av baron3d »

Ja
Skriv svar