#include <iostream>
#include <cmath>
#include "AudioFile.h"

using namespace std;

int main()
{
    //---------------------------------------------------------------
    // 1. Let's setup our AudioFile instance

    const int    RATE  = 44100;             // Samples per second
    const double duration = 5;              // 5 seconds.
    AudioFile<float> a;
    a.setNumChannels (1);                // We generate mono
    a.setNumSamplesPerChannel(duration*RATE);  // 5 seconds of sound


    //---------------------------------------------------------------
    // 2. Create some variables to help us generate a sine wave
        
    const double FREQUENCY1 =   50.0;           // Hz
    const double FREQUENCY2 = 2000.0;           // Hz
    const double TWOPI     = 2.0*M_PI;
    
    //---------------------------------------------------------------
    // 3. Write the samples to the AudioFile sample buffer

    int channel=0;     
    for (int i = 0; i < a.getNumSamplesPerChannel(); i++)
      {
         double t=1.0*i/RATE;
         double f=(FREQUENCY2-FREQUENCY1)*t/duration+FREQUENCY1;
         a.samples[channel][i] = sin(t*f*TWOPI);
      } 

    //---------------------------------------------------------------
    // 4. Save the AudioFile

    a.save ("chirp.wav", AudioFileFormat::Wave);

    return 0;
}

