Goto: [ Program Documentation ]

//
// Programmer:    Craig Stuart Sapp <craig@ccrma.stanford.edu>
// Creation Date: Wed Apr 30 15:51:15 GMT-0800 1997
// Last Modified: Sat May 24 23:58:05 GMT-0800 1997
// Filename:      ...sig/doc/examples/sig/sigfile/sinewave/sinewave.cpp
// Syntax:        C++; sig
//
// Description:   make a soundfile with the specified sinewave frequency/cycles
//

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

   float frequency;
   cout << "Enter frequency for the sinewave: ";
   cin  >> frequency;

   float numCycles;
   cout << "How many cycles of the sine wave in output: ";
   cin  >> numCycles;

   float amplitude;
   cout << "What amplitude: ";
   cin  >> amplitude;

   float phase;
   cout << "What phase: ";
   cin  >> phase;

   int numSamples;
   numSamples = (int)(1.0/frequency*numCycles*44100 + 0.5);

   SoundHeader header;
   header.setHighMono();

   // Elements:
   FixedSine     sinewave(frequency, amplitude, phase);
   SoundFileOut  outsound(argv[1], header);

   // Connections:
   outsound.connect(sinewave);

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


   return 0;
}



void exitUsage(const char* command) {
   cout << endl;
   cout <<  
      "Creates a fixed-frequency sinusoid for a specified number of cycles" 
        << endl;
   cout << endl;
   cout << "Usage: " << command << " outsound" << endl;
   cout << endl;
   cout << "Program input: " << endl;
   cout << "   (a) frequency in Hz of sinusoid" << endl;
   cout << "   (b) number of cycles in output sound" << endl;
   cout << "   (c) amplitude of sinusoid [0 .. 1]" << endl;
   cout << "   (d) phase of sinusoid at beginning of soundfile" << endl;
   cout << endl;

   exit(1);
}



// md5sum: 5782491da9b2928d8c9f67e87c1f42d9 sinewave.cpp [20050403]