# How do I compute a sine wave

Discussion in 'C++' started by Xanax, Oct 4, 2003.

1. ### XanaxGuest

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.

Xanax, Oct 4, 2003

2. ### Gianni MarianiGuest

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.

Gianni Mariani, Oct 4, 2003

3. ### BruceGuest

In comp.lang.c++
Gianni Mariani <> 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)
{
}

}

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

Bruce, Oct 4, 2003
4. ### Jerry CoffinGuest

In article <jECfb.150\$>, 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.

Jerry Coffin, Oct 5, 2003
5. ### XanaxGuest

Thanks all that's great!!
"Jerry Coffin" <> wrote in message
news:...
> In article <jECfb.150\$>, 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, Oct 5, 2003
6. ### AshishGuest

"Xanax" <> wrote in message news:jECfb.150\$...
> 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, Oct 6, 2003
7. ### AshishGuest

"Jerry Coffin" <> wrote in message
news:...
> In article <jECfb.150\$>, 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.

Ashish, Oct 6, 2003