/ 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
Frekvensanalyse af lydsignal
Fra : Jacob Jensen


Dato : 20-08-06 14:25

Jeg går med overvejelser omkring et lille program som skal kan bruges til at
tune instrumenter. Alt det program-specifikke vil jeg prøve at undgå i denne
gruppe (jeg vil skrive på dk.edb.programmering.c om dette hvis nogle er
interesserede).

Mit spørgsmål går ud på hvordan jeg foretager en frekvensanalyse. Jeg går ud
fra det ville være en god ide at bruge noget fourier transformation men man
bliver vel nødt til at lade et vindue glide henover signalets tids-akse for
at kunne foretage denne transformation ikke? Hvordan gøres det bedst? Hvor
stort skal dette vindue være?

Jeg har set at nogle programmer bruger f.eks. "Blackmann-Harris" vinduer til
dette. Hvad er det? Er det kompliceret? Hvad kan i anbefale? Jeg skal kunne
bestemme grundfrekvensen i et signal som spilles ind på en lille billig
PC-mikrofon.

Hvis nogle kender nogle rigtigt gode websider med introduktion til fourier
transformationer er i velkomne til at give en praj om dem. Det er snart
noget tid siden jeg sad med den slags.

--
Jacob Jensen
E-mail: jacob@etlivmedsle.dk
Hjemmeside: www.etlivmedsle.dk



 
 
Glenn Møller-Holst (20-08-2006)
Kommentar
Fra : Glenn Møller-Holst


Dato : 20-08-06 15:40

Jacob Jensen wrote:
> Jeg går med overvejelser omkring et lille program som skal kan bruges til at tune instrumenter. Alt det program-specifikke vil jeg prøve at undgå i denne gruppe (jeg vil skrive på dk.edb.programmering.c om dette hvis nogle er interesserede).
>
> Mit spørgsmål går ud på hvordan jeg foretager en frekvensanalyse. Jeg går ud fra det ville være en god ide at bruge noget fourier transformation men man bliver vel nødt til at lade et vindue glide henover signalets tids-akse for at kunne foretage denne transformation ikke? Hvordan gøres det bedst? Hvor stort skal dette vindue være?
>
> Jeg har set at nogle programmer bruger f.eks. "Blackmann-Harris" vinduer til dette. Hvad er det? Er det kompliceret? Hvad kan i anbefale? Jeg skal kunne bestemme grundfrekvensen i et signal som spilles ind på en lille billig PC-mikrofon.
>
> Hvis nogle kender nogle rigtigt gode websider med introduktion til fourier transformationer er i velkomne til at give en praj om dem. Det er snart noget tid siden jeg sad med den slags.
>

Hej Jacob

Desværre er stemning ikke så simpelt. Især ved høje frekvenser vil vores
øres opfattelse af hvilken tone som er harmonisk med en lavere ikke
passe. Tonen skal være en anelse højere - mere ved jeg ikke om stemning.

De såkaldte sampling/diskretiseringsvinduer er lette at lave og anvende.
Det er for det meste blot en kontinuert funktion uden "knæk" - dvs at
den afledede også skal være kontinuert. Funktionen skal gå mod nul i
enderne og helst være symmetrisk om midten. Denne funktion diskretiseres
og ganges på det diskretiserede signal der skal fouriertransformeres.

Der findes mange vindusvarianter:

http://www.tiepie.nl/uk/products/7/76/print
Citat: "...rectangular, Hanning, Hamming, Bartlett, Blackmann, Parzen,
Welch, Blackmann-Harris..."

- men undgå det rektangulære vindue. Grunden er at selve det at klippe
signalet hårdt ud (rektanglet!) i langt de fleste tilfælde bl.a. vil
have en diskontinuitet mellem start og slut. Dette er som regel et
symptom på at signalet indeholdt frekvenser som fouriertransformationen
ikke kan repræsentere. Disse diskretiserede frekvenser bliver
bogstaveligt tværet ud som en bred vulkanform omkring (også cyklisk -
henover nul og fmax!) den sande frekvens med få input-værdier.

Ved at gange et passende vindue, på kan man samle den brede vulkanform
en del og dermed få et mere nøjagtigt billede af frekvensspektret.

/Glenn

Jacob Jensen (20-08-2006)
Kommentar
Fra : Jacob Jensen


Dato : 20-08-06 15:50

> Desværre er stemning ikke så simpelt. Især ved høje frekvenser vil vores
> øres opfattelse af hvilken tone som er harmonisk med en lavere ikke passe.
> Tonen skal være en anelse højere - mere ved jeg ikke om stemning.

Jeg skulle nok kunne finde frekvenserne svarende til tonerne A-G et eller
andet sted.

Jeg ved godt at instrumenter kan stemmes forskelligt og at forskellige
stemninger også bliver brugt rundt omkring i verden men mit udgangspunkt er
at A = k*440Hz og de 12 toner er lige langt fra hinanden.

Jacob



Kåre Nejmann (22-08-2006)
Kommentar
Fra : Kåre Nejmann


Dato : 22-08-06 21:11

"Jacob Jensen" <omo@adslhome.dk> wrote:

>Jeg ved godt at instrumenter kan stemmes forskelligt og at forskellige
>stemninger også bliver brugt rundt omkring i verden men mit udgangspunkt er
>at A = k*440Hz og de 12 toner er lige langt fra hinanden.

Hvis du har mulighed for det, så lad A-frekvensen være justérbar i dit
program. Ældre klaverer og flygler er ofte stemt nogen hertz lavere,
så strengene ikke skal strammes helt så meget.

Jeg ved også at nogen operasangere har deres egen præference for, hvor
A skal være...

--
Kåre

Glenn Møller-Holst (20-08-2006)
Kommentar
Fra : Glenn Møller-Holst


Dato : 20-08-06 15:46

Jacob Jensen wrote:

> Jeg går med overvejelser omkring et lille program som skal kan bruges til at
> tune instrumenter. Alt det program-specifikke vil jeg prøve at undgå i denne
> gruppe (jeg vil skrive på dk.edb.programmering.c om dette hvis nogle er
> interesserede).
>
> Mit spørgsmål går ud på hvordan jeg foretager en frekvensanalyse. Jeg går ud
> fra det ville være en god ide at bruge noget fourier transformation men man
> bliver vel nødt til at lade et vindue glide henover signalets tids-akse for
> at kunne foretage denne transformation ikke? Hvordan gøres det bedst? Hvor
> stort skal dette vindue være?

Hej Jacob

Kig her:

Understanding FFT Windows:
http://www.lds-group.com/docs/site_documents/AN014%2520Understanding%2520FFT%2520Windows.pdf

/Glenn


Jacob Jensen (20-08-2006)
Kommentar
Fra : Jacob Jensen


Dato : 20-08-06 19:20

> Kig her:
>
> Understanding FFT Windows:
> http://www.lds-group.com/docs/site_documents/AN014%2520Understanding%2520FFT%2520Windows.pdf

Mange tak. Den ser god ud.

Også tak for alle de andre links du er kommet med. Jeg skal måske lige sige
at jeg blot havde tænkt mig at implementere en O(n^2)-algoritme. Det er knap
så vigtigt at den kører hurtigere i mit tilfælde tror jeg. Det vil vise sig
når jeg får det implementeret :)

Jacob



Jacob Jensen (21-08-2006)
Kommentar
Fra : Jacob Jensen


Dato : 21-08-06 13:15

> Understanding FFT Windows:
> http://www.lds-group.com/docs/site_documents/AN014%2520Understanding%2520FFT%2520Windows.pdf

Hvis nogle er interesserede så har jeg lagt noget tekst og lidt billeder op
af et eksperiment jeg gjorde i Matlab.

www.etlivmedsle.dk/fourier/

Kan nogle kommentere lidt? Jeg synes ikke jeg ser helt det samme som i
artiklen.

Jacob



Glenn Møller-Holst (22-08-2006)
Kommentar
Fra : Glenn Møller-Holst


Dato : 22-08-06 18:56

Jacob Jensen wrote:

>>Understanding FFT Windows:
>>http://www.lds-group.com/docs/site_documents/AN014%2520Understanding%2520FFT%2520Windows.pdf
>
>
> Hvis nogle er interesserede så har jeg lagt noget tekst og lidt billeder op
> af et eksperiment jeg gjorde i Matlab.
>
> www.etlivmedsle.dk/fourier/
>
> Kan nogle kommentere lidt? Jeg synes ikke jeg ser helt det samme som i
> artiklen.
>
> Jacob

Hej Jacob

Jeg kan se at du har været kreativ.

Du skal bemærke at to frekvenssignalstumper på 220Hz og 330Hz faktisk
kan fortolkes/ses som to separate signaler klippet med hvert sit
rektangelvindue - dog er den ene ende af hver signal "blødet" af med
Gauss-vinduet. Men rektangelvinduernes anden ende vil tvære
frekvensignalerne ud i frekvensrummet.

Frekvensaksen bør ses efter.

/Glenn


Jacob Jensen (22-08-2006)
Kommentar
Fra : Jacob Jensen


Dato : 22-08-06 21:37

> Jeg kan se at du har været kreativ.

Ja :) Jeg er også gået i krig med FFT men der er lige et par ting jeg skal
have styr på først. Jeg kan ikke helt gennemskue den. Jeg håber det bliver
gjort i morgen.

> Frekvensaksen bør ses efter.

Hvorfor?

Signalet er samplet med 22050 s/p og jeg har fouriertransformeret 8820
samples. Det giver 8820 frekvenskooefficienter (k) svarende til
frekvenserne:

(22050/8820)*k

De to toppe du ser er ved k = 88 og k = 132, så det passer perfekt med 220Hz
og 330Hz.

Måske misforstår jeg noget?

Jacob



Jacob Jensen (23-08-2006)
Kommentar
Fra : Jacob Jensen


Dato : 23-08-06 10:45

> Ja :) Jeg er også gået i krig med FFT men der er lige et par ting jeg skal
> have styr på først. Jeg kan ikke helt gennemskue den. Jeg håber det bliver
> gjort i morgen.

Så kører den. Hvis nogle er interesserede vil jeg gerne pudse koden lidt og
lægge den online. Evt. med grafer som viser forskellen på O(N^2)- og
FFT-algoritmen ved forskellige N.

Jacob



Peter Wing Larsen (24-08-2006)
Kommentar
Fra : Peter Wing Larsen


Dato : 24-08-06 13:04

"Jacob Jensen" <omo@adslhome.dk> wrote in message
news:44ec23a0$0$84041$edfadb0f@dtext01.news.tele.dk...
>> Ja :) Jeg er også gået i krig med FFT men der er lige et par ting jeg
>> skal have styr på først. Jeg kan ikke helt gennemskue den. Jeg håber det
>> bliver gjort i morgen.
>
> Så kører den. Hvis nogle er interesserede vil jeg gerne pudse koden lidt
> og lægge den online. Evt. med grafer som viser forskellen på O(N^2)- og
> FFT-algoritmen ved forskellige N.

Du må meget gerne lægge det online.



Jacob Jensen (24-08-2006)
Kommentar
Fra : Jacob Jensen


Dato : 24-08-06 14:17

> Du må meget gerne lægge det online.

Det vil komme inden for nogle dage. Jeg skal nok skrive her i gruppen når
det er. Jeg overvejer hvor meget jeg skal gøre ud af det. Lige nu
understøtter den kun 8-bit mono signaler og det er sådan set tilstrækkeligt
til det jeg skulle bruge det til (input fra mikrofon), men det kunne jo være
sjovt... osv. :)

Jeg har også lavet en udledning af FFT fra DFT. Den vil jeg også lægge
online når jeg får skrevet den elektronisk. Jeg fandt meget få gode
sammenhængene og pædagogiske kilder da jeg skulle bruge det, så nu har jeg
samlet min egen.

Jeg er en smule travl i disse dage, men det skal nok komme.

Jacob



Glenn Møller-Holst (20-08-2006)
Kommentar
Fra : Glenn Møller-Holst


Dato : 20-08-06 15:50

Jacob Jensen wrote:

> Jeg går med overvejelser omkring et lille program som skal kan bruges til at
> tune instrumenter. Alt det program-specifikke vil jeg prøve at undgå i denne
> gruppe (jeg vil skrive på dk.edb.programmering.c om dette hvis nogle er
> interesserede).
>
> Mit spørgsmål går ud på hvordan jeg foretager en frekvensanalyse. Jeg går ud
> fra det ville være en god ide at bruge noget fourier transformation men man
> bliver vel nødt til at lade et vindue glide henover signalets tids-akse for
> at kunne foretage denne transformation ikke? Hvordan gøres det bedst? Hvor
> stort skal dette vindue være?

Hej Jacob

Se et stykke nede i denne adresse:

http://zone.ni.com/devzone/conceptd.nsf/webmain/E0F0B1FFE86A14A986256F2E0005AF4D
Citat: "...Figure 8. Recommendations for different window types..."

/Glenn


Glenn Møller-Holst (20-08-2006)
Kommentar
Fra : Glenn Møller-Holst


Dato : 20-08-06 16:35

Jacob Jensen wrote:
....
> Hvis nogle kender nogle rigtigt gode websider med introduktion til fourier
> transformationer er i velkomne til at give en praj om dem. Det er snart
> noget tid siden jeg sad med den slags.

Hej Jacob

Jeg fandt lidt om stemning på engelsk:

http://en.wikipedia.org/wiki/Category:Tuning

Hvis du har tid og lyst, vil jeg opfordre dig til at oversætte nogle af
artiklerne til det danske Wikipedia:
http://da.wikipedia.org/

-

Efterfølgende fundet via:
http://en.wikipedia.org/wiki/Piano_tuning

http://www.amarilli.co.uk/piano/theory/

The piano tuner-technicians' area:
http://www.amarilli.co.uk/piano/pttaccess.asp
Æv jeg kunne ikke svare på spørgsmålet...

How to Tune a Piano Yourself.
An online guide to tuning a piano.
Minimum equipment needed and a step-by-step procedure.
http://piano.detwiler.us/text.html

-

Summary: An overview of music tuning systems:
http://cnx.org/content/m11639/latest/

-

Med kildekode:
Free Music Instrument Tuner. License : GNU General Public License V2 or
later:
http://home.gna.org/fmit/
http://download.gna.org/fmit/

G-tune:
http://www.jhc-software.com/gtune.htm

enable Tuner:
http://www.5cup.com/shareware/Audio___MP3-Utilities___Plug-Ins-enable_Tuner-3.0.html

In-Tune Multi-Instrument Tuner:
http://www.musicmasterworks.com/tuning_software.html

Instrument Tuners:
http://www.hitsquad.com/smm/win95/INSTRUMENT_TUNERS/

http://www.pure-mac.com/music.html

Kig videre på følgende søgning:
http://www.google.dk/search?hl=da&q=tuning+musical+software

/Glenn

Glenn Møller-Holst (20-08-2006)
Kommentar
Fra : Glenn Møller-Holst


Dato : 20-08-06 17:01

Jacob Jensen wrote:
....
> Hvis nogle kender nogle rigtigt gode websider med introduktion til fourier
> transformationer er i velkomne til at give en praj om dem. Det er snart
> noget tid siden jeg sad med den slags.

Hej Jacob

Prøv at se på:

http://en.wikipedia.org/wiki/Fast_Fourier_transform
http://en.wikipedia.org/wiki/Category:FFT_algorithms

Fast Fourier Transform (FFT):
http://www.relisoft.com/Science/Physics/fft.html

http://www.google.com/Top/Science/Math/Numerical_Analysis/Software/Fast_Fourier_Transforms/?il=1

FFTW is a C subroutine library for computing the discrete Fourier
transform (DFT) in one or more dimensions, of arbitrary input size, and
of both real and complex data (as well as of even/odd data, i.e. the
discrete cosine/sine transforms or DCT/DST). We believe that FFTW, which
is free software, should become the FFT library of choice for most
applications:
http://www.fftw.org/

/Glenn


Glenn Møller-Holst (20-08-2006)
Kommentar
Fra : Glenn Møller-Holst


Dato : 20-08-06 17:04

Glenn Møller-Holst wrote:

> Jacob Jensen wrote:
> ...
>
>> Hvis nogle kender nogle rigtigt gode websider med introduktion til
>> fourier transformationer er i velkomne til at give en praj om dem. Det
>> er snart noget tid siden jeg sad med den slags.
>
>
> Hej Jacob
>
> Prøv at se på:
>
> http://en.wikipedia.org/wiki/Fast_Fourier_transform
> http://en.wikipedia.org/wiki/Category:FFT_algorithms
>
> Fast Fourier Transform (FFT):
> http://www.relisoft.com/Science/Physics/fft.html
>
> http://www.google.com/Top/Science/Math/Numerical_Analysis/Software/Fast_Fourier_Transforms/?il=1
>
>
> FFTW is a C subroutine library for computing the discrete Fourier
> transform (DFT) in one or more dimensions, of arbitrary input size, and
> of both real and complex data (as well as of even/odd data, i.e. the
> discrete cosine/sine transforms or DCT/DST). We believe that FFTW, which
> is free software, should become the FFT library of choice for most
> applications:
> http://www.fftw.org/
>
> /Glenn

Her er masser af FFT-information:

http://www.fftw.org/links.html

/Glenn

Glenn Møller-Holst (20-08-2006)
Kommentar
Fra : Glenn Møller-Holst


Dato : 20-08-06 17:21
Christen Fihl (20-08-2006)
Kommentar
Fra : Christen Fihl


Dato : 20-08-06 21:45

I gruppen comp.dsp laver de ikke andet en diskutere fft og alt det
der.
Prøv at skimme emnerne igennem deri.

--
Christen Fihl
http://HSPascal.Fihl.net/



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

Månedens bedste
Årets bedste
Sidste års bedste