Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   How do I compute a sine wave (http://www.velocityreviews.com/forums/t278156-how-do-i-compute-a-sine-wave.html)

 Xanax 10-04-2003 04:37 PM

How do I compute a sine wave

Hi all,
I need to produce a sine wave and use the WaveOut APi to sound it on my
sound card.
I also need to compute Fast Fourier Transform to modify the Sine wave.

Any ideas on where to start or get some info on this??
Cheers,
Xanax.

 Gianni Mariani 10-04-2003 04:37 PM

Re: How do I compute a sine wave

Xanax wrote:
> Hi all,
> I need to produce a sine wave and use the WaveOut APi to sound it on my
> sound card.
> I also need to compute Fast Fourier Transform to modify the Sine wave.
>
> Any ideas on where to start or get some info on this??

This NG is about the C++ language.

You'll need to look elsewhere for help on FFT's and sound API's.

 Bruce 10-04-2003 06:05 PM

Re: How do I compute a sine wave

In comp.lang.c++
Gianni Mariani <gi2nospam@mariani.ws> wrote:

>Xanax wrote:
>> Hi all,
>> I need to produce a sine wave and use the WaveOut APi to sound it on my
>> sound card.
>> I also need to compute Fast Fourier Transform to modify the Sine wave.
>>
>> Any ideas on where to start or get some info on this??

>
>This NG is about the C++ language.

So why don't you give him an example in C++?
#include <iostream>
#include <math.h>

using namespace std;

const double DegreesPerWave = 360.0;
const double Pi = 3.1415926535897932384626433832795;

class SineWave
{
public:
SineWave(){Amplitude = 2.0; Resolution = 256; Wave = new double[256];};
SineWave(double Amp, int Res){Amplitude = Amp; Resolution = Res; Wave =
new double[Res]; };
~SineWave(){delete Wave;};

void MakeSinWave();
void DumpSinWave();
double Deg2Rad( double x) {return x * Pi/180.0;};

private:
double Amplitude;
int Resolution;
double *Wave;
};

int main(int argc, char **argv)
{
SineWave s;

s.MakeSinWave();
s.DumpSinWave();
return 0;
}

void SineWave::MakeSinWave()
{
double cnt = 0.0, step = DegreesPerWave / Resolution;

for ( int i = 0; i < Resolution; i++, cnt += step)
{
Wave[i] = Amplitude * sin(Deg2Rad(cnt));
}

}

void SineWave::DumpSinWave()
{
for ( int i = 0; i < Resolution; i++)
{
cout << Wave[i] << endl;
}
}

 Jerry Coffin 10-05-2003 05:11 AM

Re: How do I compute a sine wave

In article <jECfb.150\$1Q3.760@news.indigo.ie>, jo@fo.mo says...
> Hi all,
> I need to produce a sine wave and use the WaveOut APi to sound it on my
> sound card.

std::sin would be the obvious way.

> I also need to compute Fast Fourier Transform to modify the Sine wave.

If you're starting with a sine wave, the result of an FFT is a foregone
conclusion -- a sine wave is a pure fundamental, so you basically get a
spike to 100% at the fundamental, and above that you'll get a tiny bit
of "noise" that's basically just an artifact of the sampling.

If you want to add overtones, you don't need to apply an FFT to a sine
wave to start with -- you can just put in the overtones you want, and
then do an inverse FFT to get your waveform.

--
Later,
Jerry.

The universe is a figment of its own imagination.

 Xanax 10-05-2003 02:40 PM

Re: How do I compute a sine wave

Thanks all that's great!!
"Jerry Coffin" <jcoffin@taeus.com> wrote in message
> In article <jECfb.150\$1Q3.760@news.indigo.ie>, jo@fo.mo says...
> > Hi all,
> > I need to produce a sine wave and use the WaveOut APi to sound it on my
> > sound card.

>
> std::sin would be the obvious way.
>
> > I also need to compute Fast Fourier Transform to modify the Sine wave.

>
> If you're starting with a sine wave, the result of an FFT is a foregone
> conclusion -- a sine wave is a pure fundamental, so you basically get a
> spike to 100% at the fundamental, and above that you'll get a tiny bit
> of "noise" that's basically just an artifact of the sampling.
>
> If you want to add overtones, you don't need to apply an FFT to a sine
> wave to start with -- you can just put in the overtones you want, and
> then do an inverse FFT to get your waveform.
>
> --
> Later,
> Jerry.
>
> The universe is a figment of its own imagination.

 Ashish 10-06-2003 09:52 PM

Re: How do I compute a sine wave

"Xanax" <jo@fo.mo> wrote in message news:jECfb.150\$1Q3.760@news.indigo.ie...
> Hi all,
> I need to produce a sine wave and use the WaveOut APi to sound it on my
> sound card.
> I also need to compute Fast Fourier Transform to modify the Sine wave.
>
> Any ideas on where to start or get some info on this??
> Cheers,
> Xanax.
>
>

Ask this question in a mathematics newsgroup (Sorry, I am too lazy to look
up newsgroup names for you)

 Ashish 10-06-2003 09:54 PM

Re: How do I compute a sine wave

"Jerry Coffin" <jcoffin@taeus.com> wrote in message
> In article <jECfb.150\$1Q3.760@news.indigo.ie>, jo@fo.mo says...
> > Hi all,
> > I need to produce a sine wave and use the WaveOut APi to sound it on my
> > sound card.

>
> std::sin would be the obvious way.
>
> > I also need to compute Fast Fourier Transform to modify the Sine wave.

>
> If you're starting with a sine wave, the result of an FFT is a foregone
> conclusion -- a sine wave is a pure fundamental, so you basically get a
> spike to 100% at the fundamental, and above that you'll get a tiny bit
> of "noise" that's basically just an artifact of the sampling.
>
> If you want to add overtones, you don't need to apply an FFT to a sine
> wave to start with -- you can just put in the overtones you want, and
> then do an inverse FFT to get your waveform.
>

Dont confuse the newbie.

 All times are GMT. The time now is 05:29 PM.