Goto: [ Program Documentation ]

//
// Programmer:    Craig Stuart Sapp <craig@ccrma.stanford.edu>
// Creation Date: Wed Apr 30 11:18:14 GMT-0800 1997
// Last Modified: Sun May 25 19:00:05 GMT-0800 1997
// Filename:      ...sig/doc/examples/sig/sigfile/echos/echos.cpp
// Syntax:        C++; sig
//
// Description:   a soundfile echo program
//

#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 != 3) exitUsage(argv[0]); 

   SoundHeader header(argv[1]);

   int sampleDelay = 0;
   double timeIn;
   cout << "Enter the time in seconds for echo: " << endl;
   cin  >> timeIn;
   sampleDelay = (int)(timeIn * header.getSrate());

   // Elements:
   SoundFileIn  insound(argv[1]);
   SoundFileOut outsound(argv[2], header);
   Add          add;
   Add          addRight;
   Delayline    delay(sampleDelay);
   Delayline    delayRight(sampleDelay);

   // Connections:
   delay.connect(insound);
   add.connect(delay);
   add.connect(insound);
   delayRight.connect(insound, 0, 1);
   addRight.connect(delayRight);
   addRight.connect(delayRight, 1, 1);
   outsound.connect(add, 0);
   if (header.getChannels() == 2) {
      outsound.connect(addRight, 1);
   }

   int numSamples = header.getSamples() + sampleDelay;

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


   return 0;
}



void exitUsage(const char* command) {
   cout << endl;
   cout <<"A program which takes a mono input file (or the left channel of a\n";
   cout << "stereo file) and places that channel in the left channel of the\n";
   cout << "output. The output right channel contains a delayed version of\n";
   cout << "the input. It is delayed by the user specified time in seconds.\n";
   cout << endl;
   cout << "Usage: " << command << " insound outsound" << endl;
   cout << endl;
   cout << "Program input: " << endl;
   cout << "   (a) start time of echos in seconds" << endl;
   cout << endl;

   exit(1);
}



// md5sum: bd6a3044ca750752b72b640458a121ed echos.cpp [20050403]