//
// Programmer:    Craig Stuart Sapp <craig@ccrma.stanford.edu>
// Creation Date: Sun Feb  3 12:55:04 PST 2002
// Last Modified: Sun Aug 29 03:33:21 PDT 2004 (updated for compiling in GCC3)
// Filename:      ...soundfile/examples/sndreverse.cpp
// Syntax:        C++ 
//
// Description:   Demonstration of the SoundFileRead::gotoSample().
//                Reverses all of the samples from input soundfile.
//

#include "soundfile.h"
#include <stdlib.h>

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

int main(int argc, char** argv) {
   Options options;
   options.process(argc, argv);
   if (options.getArgCount() != 2) {
      cout << "Usage: " << options.getCommand() << " insound outsound" << endl;
      exit(1);
   }

   SoundFileRead insound(options.getArg(1));
   SoundFileWrite outsound(options.getArg(2), insound);
   int channels     = insound.getChannels();
   int totalsamples = insound.getSamples();
   int i, j;

   for (i=totalsamples - 1; i >= 0; i--) {
      insound.gotoSample(i);
      for (j=0; j<channels; j++) {
         outsound.writeSampleDouble(insound.getCurrentSampleDouble(j));
      }
   }

   return 0;
}


// md5sum: 4c34aecc7438a9317eaf85a75f24a2e7 sndreverse.cpp [20050403]