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

using namespace std;

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

    const int RATE  = 44100;             // Samples per second

    AudioFile<float> a;
    a.setNumChannels (1);                // We generate mono
    a.setNumSamplesPerChannel (5*RATE);  // 5 seconds of sound

    //---------------------------------------------------------------
    // 2. Create some variables to help us generate a sine wave

    const double FREQUENCY1 = 261.626;           // C in Hz
    const double FREQUENCY2 = 329.628;           // E in Hz
    const double FREQUENCY3 = 391.995;           // G in 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;

         if (t>1) a.samples[channel][i] += 0.40*sin(t*TWOPI*FREQUENCY1);
         if (t>2) a.samples[channel][i] += 0.20*sin(t*TWOPI*FREQUENCY2);
         if (t>3) a.samples[channel][i] += 0.20*sin(t*TWOPI*FREQUENCY3);
      }

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

    a.save ("cmajor.wav", AudioFileFormat::Wave);
    return 0;
}

