Goto: [ Program Documentation ]

//
// Programmer:    Craig Stuart Sapp <craig@ccrma.stanford.edu>
// Creation Date: Mon May 19 21:51:06 GMT-0800 1997
// Last Modified: Sun May 25 01:54:01 GMT-0800 1997
// Filename:      ...sig/doc/examples/sig/sigfile/.../binauralBeats.cpp
// Syntax:        C++; sig
//
// Description:   make a stereo soundfile with (different) sinwaves in 
//                each channel
//

#include "sigAudio.h"

#ifndef OLDCPP
   #include <iostream>
   using namespace std;
#else
   #include <iostream.h>
#endif

void exitUsage(const char* command);


int main(int argc, char* argv[]) {
   if (argc != 4) exitUsage(argv[0]); 

   int numSamples;
   float duration;
   cout << "How many seconds should the sound last: ";
   cin  >> duration;
   numSamples = (int)(duration * 44100 + 0.5);
  
   SoundHeader header;
   header.setHighStereo();

   // Elements:
   Osc          oscillator1;
   Osc          oscillator2;
   SoundFileOut outsound(argv[3], header);
   Envelope     ampEnv("(0 0; 2000 0.3; s; 10000 0)", numSamples);
   Envelope     freqEnv1(argv[1], numSamples);
   Envelope     freqEnv2(argv[2], numSamples);


   // Connections:
   oscillator1.connect(freqEnv1, 0);
   oscillator1.connect(ampEnv, 1);
   oscillator2.connect(freqEnv2, 0);
   oscillator2.connect(ampEnv, 1);
   outsound.connect(oscillator1, 0);   // left channel
   outsound.connect(oscillator2, 1);   // right channel

   Action action;
   action.tick(outsound, numSamples);


   return 0;
}



void exitUsage(const char* command) {
   cout << endl;
   cout 
   << "Generates a stereo soundfile with sinewave of different frequencies in\n"
   << "each channel.\n";
   cout << endl;
   cout << "Usage: " << command << " freqLeftEnv freqRightEnv outsound" 
        << endl;
   cout << endl;
   cout << "Program input: " << endl;
   cout << "   (a) duration of the sound" << endl;
   cout << "   (b) amplitude of the sound" << endl;
   cout << endl;

   exit(1);
}



// md5sum: 59d9592d096639d80e57a91c7802331a binauralBeats.cpp [20050403]