//
// Programmer:    Craig Stuart Sapp <craig@ccrma.stanford.edu>
// Creation Date: Sun Jan 20 12:13:18 PST 2002
// Last Modified: Sun Feb  3 11:08:04 PST 2002 (updated for soundfile 2.0)
// Filename:      ...soundfile/examples/writetest.cpp
// Syntax:        C++ 
//
// Description:   Test writing a soundfile using SoundFileWrite class.
//

#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.define("n|samples=i:100", "number of samples to write");
   options.define("s|start=i:0",     "starting value to write");
   options.define("d|double=b",      "write samples also as doubles");
   options.process(argc, argv);
   if (options.getArgCount() == 0) {
      cout << "Usage: " << options.getCommand() 
           << " [-n count][-s start][-d] filename" 
           << endl;
      exit(1);
   }

   SoundHeader header;
   header.setHighMono();
   SoundFileWrite soundfile(options.getArg(1), header);
   int count = options.getInteger("samples");
   int start = options.getInteger("start");
   int i;

   for (i=0; i<count; i++) {
      soundfile.writeSample16Bit((short)(i+start));
   }

   // test writing doubles to the file (writing the same info as last loop)

   if (options.getBoolean("double")) {
      for (i=0; i<count; i++) {
         soundfile.writeSampleDouble(((double)(i+start))/0x8000);
      }
   }


   // file will be closed automatically, but can be done manually:
   soundfile.close();

   return 0;
}





// md5sum: 0786311b475438b96f55ce4c2fe3d9ce writetest.cpp [20050403]