Goto: [ Program Documentation ]

//
// Programmer:    Craig Stuart Sapp <craig@ccrma.stanford.edu>
// Creation Date: Wed May  7 00:48:18 GMT-0800 1997
// Last Modified: Sun May 25 01:34:18 GMT-0800 1997
// Filename:      ...sig/doc/examples/sig/sigfile/join/join.cpp
// Syntax:        C++; sig
//
// Description:   join two mono files into a stereo file
//

#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]); 

   SoundHeader header(argv[1]);
   header.setChannels(2);
  
   unsigned long delayAmount;
   cout << "Enter number of samples to delay sound 2 by: ";
   cin  >> delayAmount;

   // Elements:
   SoundFileIn  insound1(argv[1]);
   SoundFileIn  insound2(argv[2]);
   Delayline    delay(delayAmount+1);   // have to avoid a 0 delay for now
   SoundFileOut outsound(argv[3], header);

   // Connections:
   delay.connect(insound2);
   outsound.connect(insound1);
   outsound.connect(insound2);

   int samples1 = insound1.getSamples();
   int samples2 = delayAmount + insound2.getSamples();
   int numSamples = samples1 > samples2 ? samples1 : samples2;

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


   return 0;
}



void exitUsage(const char* command) {
   cout << endl;
   cout << 
      "Joins two mono files into a single stereo file.  The first input" <<endl;
   cout << 
      "file goes to the left channel, second to right channel." << endl;
   cout << endl;
   cout << "Usage: " << command << " inLeft inRight outsound" << endl;
   cout << endl;
   cout << "Program input: " << endl;
   cout << "   (a) offset delay in seconds of right channel" << endl;
   cout << endl;

   exit(1);
}



// md5sum: 7ea0a65bd6bb4d430efc5f0719e0af08 joinMono.cpp [20050403]