2 Pages V   1 2 >  
Reply to this topicStart new topic
> Fourier Analysis And Audio Synthsizing, An important assingnment
Frederik
post Dec 6 2009, 09:04 PM
Post #1


Learning Tone Seeker
*

Group: Members
Posts: 616
Joined: 30-January 09
From: Aalborg, Denmark
Member No.: 6.696



I am currently writing a project on the topic "Fourier analysis and audio synthsizing"
Does anyone have knowledge on this topic, and care to explain it? or perhaps link to usefull articles
The project is pretty important for me, so it would be very nice if you could share your knowledge, especially if there are some mathematical or physical brainiacs in here. practical knowledge on synthesizing is also very welcome biggrin.gif

-Frederik
Go to the top of the page
 
+Quote Post
Daniel Realpe
post Dec 7 2009, 03:52 AM
Post #2


Instructor
Group Icon

Group: GMC Instructor
Posts: 5.655
Joined: 11-October 09
From: Bogota
Member No.: 7.694



that's quite interesting, I just watched this video



Good luck with that wacko.gif

This post has been edited by Daniel Realpe: Dec 7 2009, 03:54 AM


--------------------
Visit my:
INSTRUCTOR PROFILE

"If a composer could say what he had to say in words he would not bother trying to say it in music."
Gustav Mahler


Subscribe to my Youtube Channel here
Go to the top of the page
 
+Quote Post
Frederik
post Dec 7 2009, 11:54 AM
Post #3


Learning Tone Seeker
*

Group: Members
Posts: 616
Joined: 30-January 09
From: Aalborg, Denmark
Member No.: 6.696



That was pretty usefull, im probaly gonna watch i a couple more times to really get how he figured out the fourier coeficients

any other knowledge on synthesizing is still more than welcome!
Go to the top of the page
 
+Quote Post
Emir Hot
post Dec 7 2009, 12:05 PM
Post #4


Instructor
Group Icon

Group: GMC Instructor
Posts: 7.201
Joined: 14-July 08
From: London UK
Member No.: 5.490



I had that module at school but nothing like this guy on the video smile.gif We just had to produce synthetic sounds by using software for it. No equations smile.gif


--------------------
Check out my <a href="https://www.guitarmasterclass.net/instructor/Emir-Hot" target="_blank">Instructor profile</a>

www.emirhot.com
www.myspace.com/emirhotguitar
www.myspace.com/sevdahmetal
Go to the top of the page
 
+Quote Post
zen
post Dec 7 2009, 01:16 PM
Post #5


Learning Tone Seeker
*

Group: Members
Posts: 1.114
Joined: 26-January 08
From: Melbourne, Australia
Member No.: 3.995



Please don't call me a nerd but I did study it 7-8 years back, even gave a paper on it .. but I'm SO glad i remember nothing of it !! laugh.gif

You should be able to find a lot of articles on it online.. Apologies im not much help now .. maybe a few years back I wouldve been tongue.gif

All the best on the project !!


--------------------
"If the need is deep, you WILL find a way , if it isn't, you'll find some excuse"

Check out my Student Instructor Lesson on Metal Riffing HERE

Visit My Youtube Channel
Go to the top of the page
 
+Quote Post
Frederik
post Dec 7 2009, 01:19 PM
Post #6


Learning Tone Seeker
*

Group: Members
Posts: 616
Joined: 30-January 09
From: Aalborg, Denmark
Member No.: 6.696



QUOTE (zen @ Dec 7 2009, 01:16 PM) *
Please don't call me a nerd but I did study it 7-8 years back, even gave a paper on it .. but I'm SO glad i remember nothing of it !! laugh.gif

You should be able to find a lot of articles on it online.. Apologies im not much help now .. maybe a few years back I wouldve been tongue.gif

All the best on the project !!


Thanks smile.gif
sorry not to be ab´le to call u a nerd, cause that just what i need biggrin.gif
Go to the top of the page
 
+Quote Post
zen
post Dec 7 2009, 01:24 PM
Post #7


Learning Tone Seeker
*

Group: Members
Posts: 1.114
Joined: 26-January 08
From: Melbourne, Australia
Member No.: 3.995



Shhhh .. u shouldnt say that or you wont get any replies smile.gif

And somehow the word fourier sent chills down my spine .. so I'm thinking i must've come very close to failing the test , laugh.gif


--------------------
"If the need is deep, you WILL find a way , if it isn't, you'll find some excuse"

Check out my Student Instructor Lesson on Metal Riffing HERE

Visit My Youtube Channel
Go to the top of the page
 
+Quote Post
audiopaal
post Dec 7 2009, 01:57 PM
Post #8


Competitions Coordinator - Up the Irons
Group Icon

Group: GMC Senior
Posts: 5.447
Joined: 17-February 08
From: Stavanger, Norway
Member No.: 4.276



I "borrowed" this from URS on the KVR forums:


The fourier transform converts a time representation ( samples ) into a frequency representation ( i.e. the frequency spectrum of these samples ) and vice versa.

Commonly it splits a number of audio samples, say 2048, into a corresponding number of sine waves of different frequencies, so that you know the volumes and the phase for each sine.


The principle is very simple:

If you multiply a set of samples with another set of reference samples and add each result, like this:

result = sample[ 0 ] * reference[ 0 ] + sample[ 1 ] * reference[ 1 ] + ... + sample[ n ] * reference[ n ]

... the result is an indicator for the similarity of both sets of samples.


And now with sines

Now, if you want to know the volume and the phase of a sine at a certain frequency inside an audio sample, you have to calculate 2 of these similarity values:

FC = 2 * PI * frequency / samplerate; // "frequency constant"

result_i = sample[ 0 ] * sin( FC * 0.f ) + sample[ 1 ] * sin( FC * 1.f )+ ... + sample[ n ] * sin( FC * n.f )

result_r = sample[ 0 ] * cos( FC * 0.f ) + sample[ 1 ] * cos( FC * 1.f )+ ... + sample[ n ] * cos( FC * n.f )

To get the actual phase and magnitude, you use simple pythagoras to get length and trigonometry to get the angle:

magnitude = sqrt( result_i * result_i + result_r * result_r);

phase = atan2( result_i, result_r) // I think...

This way you can determine how much of a frequency is present in an audio file etc., and which phase it has relative to the beginning.


Complex Numbers?

In Fourier Transform lingo, the sine part is oftenly called "imaginary" while the cosine part is called "rational". They pretend to be complex numbers, but that's more or less only a convention. The phase/magnitude representation IMHO feels more like complex numbers.


Getting the whole spectrum

Now, the idea behind fourier transforms is, if you start with a "fundamental" frequency of exactly 1 cycle over the whole length of the analysed set of samples (call it n samples) and do this with every multiple up to n/2 of the fundamental, you get a representation that thoroughly reflects the spectrum of the original sample. - If you transform it back (create a new bunch of n samples out of adding sines and cosines), it will perfectly fit the original samples!

Each "frequency slot" or multiple of the fundamental (1, 2, 3, ..., n/2) is called a "bin". (Note, there's also a zero-bin, I'll explain that later)


Fast Fourier Transform - FFT

This would be a very time consuming technique, if there wasn't the Fast Fourier Transform, or FFT. The FFT is a simple, yet highly difficult to understand algorithm. It takes advantage of the fact, that if you draw all those sines in a graph, you have many lines that cross each other at certain points. And because they cross each other pretty often, you need only 1 multiply to gather information for many results needed. Hence, what FFT does is recursively reordering ("prepacking", "butterfly") the samples in a tricky way so that only a fraction of calculations are needed to create the spectrum for a given range of audio samples. The drawback is, FFT requires certain lengths (or "ns") of samples, which are a power of 2: like 16, 32, 1024, 4096 samples etc.


DC offset and Nyquist in FFTs

Typically, a FFT outputs the spectrum in sines and cosines, but it also output 2 special values: A cosine representing the DC (offset of powers above zero and below zero), which is bin 0, or the fundamental frequency * 0 and a sine representing Nyquist (because at Nyquist, there can't be a cosine!). Hence some algorithms require N/2+1 bins, others "pack" the Nyquist bin into the sine field of the DC bin.



This is a fairly "easy" decription according to him....

Hope this might be of help smile.gif
Go to the top of the page
 
+Quote Post
Frederik
post Dec 7 2009, 02:09 PM
Post #9


Learning Tone Seeker
*

Group: Members
Posts: 616
Joined: 30-January 09
From: Aalborg, Denmark
Member No.: 6.696



Yeah, its a hard nut to crack smile.gif

great post audiopaal biggrin.gif
Go to the top of the page
 
+Quote Post
Nimrandir
post Dec 7 2009, 03:29 PM
Post #10


GMC:er
*

Group: Members
Posts: 221
Joined: 13-August 09
From: Finland
Member No.: 7.514



This is a really interesting topic smile.gif. Thanks for the videos Daniel, I've already watched five and so far they are really easy to understand. I'm math logic major, so I don't almost anything about Fourier analysis (sorry Frederik smile.gif ), but I'm already beginning to understand how it all works.

By the way what exactly do you need : creating different waveforms by combining sinusoids or decomposing waveforms into sinusoids? (as far as I unerstood the latter is more difficult, and it is what Paal was writing about smile.gif ).
Go to the top of the page
 
+Quote Post
Andrew Cockburn
post Dec 7 2009, 03:33 PM
Post #11


Moderation Policy Director
Group Icon

Group: GMC Instructor
Posts: 10.459
Joined: 6-February 07
From: CT, USA
Member No.: 1.167



There are many approaches to synthesis but here are a few simple ideas and building blocks.

So called "Subtractive Synthesis" in the old analog syas consisted of generating a waveform then filtering it in various ways. Nowaday in the digital domain, you can still do the same thing in a few steps.

Firstly, you need to generate a waveform. This is a simple mathematical function such as sin(). When you are working as a VST plugin, all you have to do is give the host a sequence of numbers that represent the amplitude of the waveform you want to create, once for each sample. So, a little math allows you to work out how the voltage evolves over time. For instance:

440hz is a particular pitch of the note A. You know that the sinewave needs to cycle every 1/440th of a second, and that your sample rate is for example 44,000 khz.

44,000/440 = 1000, so we want to split our wave into 1000 steps. Each complete wave consists of 360 degrees, so we divide 360 by 1000 to get .36. Now all we need to do is start at zero, and add .36 for each sample, and take the sine of that to get the amplitude - that gives you a basic sound. Of course you would want to read the keyboard and check which note is being asked for and then do the appropriate math as above but with a different frequency for each note - that is the basis of getting a sound out.

You may need to do this for several notes at once if you are writing a polyphonic synth, and you would then need to mix the resulting signals together. That is simply a case of multiplying each by a scaling factor (to represent the overall loudness) and adding them.

Next, you may want to filter, and that is where the fourier analysis comes in. Fourier analysis basically looks at a section of samples, for instance a second, or a millisecond, and performs a calculation that represents that data exactly, but broken down into frequency bands. When you write the algorithm you decide how many bands. If for instance you had 20 bands you would end up with a value for each band over that time period. Now we can play with frequency - pick a band and multiply it by a scaling factor and you have increased or decreased the amplitude of just that frequency. If you then subject it to a reverse fourier, you will end up with the original sound with an altered frequency balance - this is the basics of how digital EQs and graphic equalizers work.

So now our simple synth has generated a sinewave and filtered it - Subtractive synthesis. The rest is just more complex math!


--------------------
Check out my Instructor profile
Live long and prosper ...

My Stuff:

Electric Guitars : Ibanez Jem7v, Line6 Variax 700, Fender Plus Strat with 57/62 Pickups, Line6 Variax 705 Bass
Acoustic Guitars : Taylor 816ce, Martin D-15, Line6 Variax Acoustic 300 Nylon
Effects : Line6 Helix, Keeley Modded Boss DS1, Keeley Modded Boss BD2, Keeley 4 knob compressor, Keeley OxBlood
Amps : Epiphone Valve Jnr & Head, Cockburn A.C.1, Cockburn A.C.2, Blackstar Club 50 Head & 4x12 Cab
Go to the top of the page
 
+Quote Post
Frederik
post Dec 7 2009, 04:36 PM
Post #12


Learning Tone Seeker
*

Group: Members
Posts: 616
Joined: 30-January 09
From: Aalborg, Denmark
Member No.: 6.696



QUOTE (Nimrandir @ Dec 7 2009, 03:29 PM) *
By the way what exactly do you need : creating different waveforms by combining sinusoids or decomposing waveforms into sinusoids? (as far as I unerstood the latter is more difficult, and it is what Paal was writing about smile.gif ).


I currently cannot understand how he finds the fourier-coefficients
so what where im behind is "decomposing waveforms into sinusoids"
if you mind to explain what u understood i would be very appretiated smile.gif
what i have to do is not prove it (even though i would like to) but do a short theoretical statement(I hope it means sort of "explanation") of fourier analysis (splitting a complex periodic signal - tone, into sine-waves/signals)

Thanks Andrew smile.gif
Nice input especially with the EQ. thats a really nice practical example to use.
gives me the idea to talk about noisegating (which is eliminating to frequensies below a certain amplitude (a set value for the fourier coefficints)
and filtering (removing a certain bandwith(frequency spectrum) of the signal?)
Go to the top of the page
 
+Quote Post
Nimrandir
post Dec 7 2009, 05:55 PM
Post #13


GMC:er
*

Group: Members
Posts: 221
Joined: 13-August 09
From: Finland
Member No.: 7.514



I'll explain how he finds coefficients, just give me a couple of minutes smile.gif

By the way,
QUOTE
Rest your fingers and brain between practice sessions, in order to practice effectively and avoid injury.

This is certainly not about this topic laugh.gif
Go to the top of the page
 
+Quote Post
Andrew Cockburn
post Dec 7 2009, 06:05 PM
Post #14


Moderation Policy Director
Group Icon

Group: GMC Instructor
Posts: 10.459
Joined: 6-February 07
From: CT, USA
Member No.: 1.167



QUOTE (Frederik @ Dec 7 2009, 10:36 AM) *
Thanks Andrew smile.gif
Nice input especially with the EQ. thats a really nice practical example to use.
gives me the idea to talk about noisegating (which is eliminating to frequensies below a certain amplitude (a set value for the fourier coefficints)
and filtering (removing a certain bandwith(frequency spectrum) of the signal?)


Noise gating would simply be based on the amplitude of the original signal - no fourier transforms needed for that. Although some noisegates listen to specific frequency ranges for the signal, and yes, you would use a fourier transform to figure that out smile.gif


--------------------
Check out my Instructor profile
Live long and prosper ...

My Stuff:

Electric Guitars : Ibanez Jem7v, Line6 Variax 700, Fender Plus Strat with 57/62 Pickups, Line6 Variax 705 Bass
Acoustic Guitars : Taylor 816ce, Martin D-15, Line6 Variax Acoustic 300 Nylon
Effects : Line6 Helix, Keeley Modded Boss DS1, Keeley Modded Boss BD2, Keeley 4 knob compressor, Keeley OxBlood
Amps : Epiphone Valve Jnr & Head, Cockburn A.C.1, Cockburn A.C.2, Blackstar Club 50 Head & 4x12 Cab
Go to the top of the page
 
+Quote Post
Frederik
post Dec 7 2009, 07:02 PM
Post #15


Learning Tone Seeker
*

Group: Members
Posts: 616
Joined: 30-January 09
From: Aalborg, Denmark
Member No.: 6.696



QUOTE (Nimrandir @ Dec 7 2009, 05:55 PM) *
I'll explain how he finds coefficients, just give me a couple of minutes smile.gif

By the way,

This is certainly not about this topic laugh.gif


Nice!
and tell me about it smile.gif i actually had a headache 5 mins ago wink.gif

QUOTE (Andrew Cockburn @ Dec 7 2009, 06:05 PM) *
Noise gating would simply be based on the amplitude of the original signal - no fourier transforms needed for that. Although some noisegates listen to specific frequency ranges for the signal, and yes, you would use a fourier transform to figure that out smile.gif


Ahh i see wink.gif but wouldnt you have to seperate the noise from the signal? elseway the signal too will be cut a bit?
Go to the top of the page
 
+Quote Post
Nimrandir
post Dec 7 2009, 07:15 PM
Post #16


GMC:er
*

Group: Members
Posts: 221
Joined: 13-August 09
From: Finland
Member No.: 7.514



OK, first I hope you believe the formulas he has on the right side of the board smile.gif. Then we take some function f:[-pi,pi]->R which is integrable on this interval. The next thing is - we assume that this function is expandable to the trigonometric series
Attached Image
The problem now is to find all coefficients. Our first try is integrating both sides (f is integrable and the right hand side is a sum of integrable functions, although I'm not completely sure if it works for infinite sums).
Attached Image
Now he makes assumption that we can interchange the summation and integral signs - again, for finite sums there is no question, but maybe there are special infinite cases... whatever smile.gif . Then we simplify the expression:
Attached Image
The last step uses these formulas that he has on the right :
Attached Image
So, from here it is easy to derive a_0:
Attached Image
Attached Image

Now, going to a_n, n>0... First you multiply both sides of the Fourier expansion by cos(kx), where k is (any) positive integer
Attached Image
and then integrate both sides:
Attached Image
Now we exchange sum and integral as above to get
Attached Image
The leftmost integral of the right hand side is zero by the formula above. Now take a close look at what's inside the sum. The right integral is always zero - by one on the formulas on the board. The left integral also seems to be always zero, but if n=k (and since it all happens under summation sign, n takes all possible positive integer values, and k is positive integer -> n will be equal to k at some point), then the expression will simplify to cosine squared of kx, and for this case there is another formula, which states that the integral of this is pi smile.gif . So, inside the sum, everything is zero except one integral at n=k, so this whole thing simplifies to:
Attached Image
or
Attached Image

You can get b_n by the same process, but multiplying by sine kx instead of cosine kx.


Hope that helps biggrin.gif. If something is unclear, just ask smile.gif
Go to the top of the page
 
+Quote Post
Nimrandir
post Dec 7 2009, 07:55 PM
Post #17


GMC:er
*

Group: Members
Posts: 221
Joined: 13-August 09
From: Finland
Member No.: 7.514



Also about wave decomposition (note : those are my own thoughts and as such are very unreliable biggrin.gif):

I'd guess, if you want to use this method with Fourier series directly, first step would be to approximate the input wave with some kind of function : it may be a step function, or something like this:
Attached Image
The point is, you divide the interval into a finite number of subintervals, and on each subinterval approximate the initial wave with some simple function. In the end, you will get piecewise continious function, which will be integrable and usable for finding coefficients smile.gif However, this is kind of brute-force way and as such will require LOADS of computations (imagine computing integral for every small function you get smile.gif ). There is most certainly a much better way.

Anyway, just thoughts smile.gif
Go to the top of the page
 
+Quote Post
Frederik
post Dec 7 2009, 08:23 PM
Post #18


Learning Tone Seeker
*

Group: Members
Posts: 616
Joined: 30-January 09
From: Aalborg, Denmark
Member No.: 6.696



Thank you so much smile.gif
i have i few dummy/lingo questions first:
What "amount of numbers" is Z+ ? dunno the english tranlation
and what is an interger?

So the first expression is just math for what we have assumed? am i right? i had been wondering how they got that expression for long biggrin.gif

those funktions on the right of his board (those that equals zero, and pi) should they be obvious (if thats the case, then ill look at them and understand them) or are they to advanced? they seem simple, but i might be wrong. that the same area i below the graph as the one over the graph

can you explain how you can interchange(meaning switch?) the sigma (at least for finite amounts)? i can see som sort of realtion. that integrals sums up. and sigma writes a lot of sums smile.gif..

QUOTE (Nimrandir @ Dec 7 2009, 07:55 PM) *
Also about wave decomposition (note : those are my own thoughts and as such are very unreliable biggrin.gif):

I'd guess, if you want to use this method with Fourier series directly, first step would be to approximate the input wave with some kind of function : it may be a step function, or something like this:
Attached Image
The point is, you divide the interval into a finite number of subintervals, and on each subinterval approximate the initial wave with some simple function. In the end, you will get piecewise continious function, which will be integrable and usable for finding coefficients smile.gif However, this is kind of brute-force way and as such will require LOADS of computations (imagine computing integral for every small function you get smile.gif ). There is most certainly a much better way.

Anyway, just thoughts smile.gif


think i have used something like that, by aproximation an unknow funktion with a lot of "tangets" is that the word? by using Eulers method (which is slow, and has to be done in small steps) therefore another method the "runge-kutta method" can be used (4 times as quick) but i can remember the procedure. I remember it as difficult, but once u got the method it went pretty fluidly
Go to the top of the page
 
+Quote Post
Nimrandir
post Dec 7 2009, 08:43 PM
Post #19


GMC:er
*

Group: Members
Posts: 221
Joined: 13-August 09
From: Finland
Member No.: 7.514



Soo, let's deal with every question separately smile.gif
QUOTE (Frederik @ Dec 7 2009, 09:23 PM) *
What "amount of numbers" is Z+ ? dunno the english tranlation
and what is an interger?

Integer is ummm... a number without decimal point smile.gif Like 1, 3, 10000 but 10.12 and pi are not integers smile.gif
Z+ is 1, 2, 3,... It is the same thing as natural numbers, only 0 is not included smile.gif.

QUOTE (Frederik @ Dec 7 2009, 09:23 PM) *
So the first expression is just math for what we have assumed? am i right? i had been wondering how they got that expression for long biggrin.gif

First of all, as the guy points out in the video, the expression in general is not true. However, for example if the function is continious at the point x, then the formula will yield correct result at that point (he says more on this stuff in some later lecture, about convergence theorems). The formula itself is something that has to be proved, it did not appear "out of thin air" smile.gif. Here, we're just assuming that it holds.

QUOTE (Frederik @ Dec 7 2009, 09:23 PM) *
those funktions on the right of his board (those that equals zero, and pi) should they be obvious (if thats the case, then ill look at them and understand them) or are they to advanced? they seem simple, but i might be wrong. that the same area i below the graph as the one over the graph

It is pretty easy to see that those integrals are zero, you just need to use some trigonometric identities smile.gif.

QUOTE (Frederik @ Dec 7 2009, 09:23 PM) *
can you explain how you can interchange(meaning switch?) the sigma (at least for finite amounts)? i can see som sort of realtion. that integrals sums up. and sigma writes a lot of sums smile.gif..

You just use the property of integral - "integral of sum is sum of integrals" smile.gif Arghhh.. don't have latex here smile.gif Here:
Attached Image

QUOTE (Frederik @ Dec 7 2009, 09:23 PM) *
think i have used something like that, by aproximation an unknow funktion with a lot of "tangets" is that the word? by using Eulers method (which is slow, and has to be done in small steps) therefore another method the "runge-kutta method" can be used (4 times as quick) but i can remember the procedure. I remember it as difficult, but once u got the method it went pretty fluidly

To be honest I've never done numerical methods or any approximation algorithms smile.gif But isn't Euler's method the method for solving differential equations?
Go to the top of the page
 
+Quote Post
Frederik
post Dec 7 2009, 10:05 PM
Post #20


Learning Tone Seeker
*

Group: Members
Posts: 616
Joined: 30-January 09
From: Aalborg, Denmark
Member No.: 6.696



Ahh thanks smile.gif
about the Euler method. it makes good sense in my book, since its used for finding tangets (by differentiating) that u aproximate the graph with. but i dont remember it well
Go to the top of the page
 
+Quote Post

2 Pages V   1 2 >
Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 


RSS Lo-Fi Version Time is now: 23rd July 2017 - 11:51 PM