Goto: [ Program Documentation ]
//
// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu>
// Creation Date: Wed Apr 30 13:01:29 GMT-0800 1997
// Last Modified: Sun May 25 00:09:05 GMT-0800 1997
// Last Modified: Thu Aug 26 15:04:28 PDT 2004 (added Option class)
// Filename: ...sig/doc/examples/sig/sigfile/silence/silence.cpp
// Syntax: C++; sig
//
// Description: make a blank soundfile.
//
#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[]) {
Options options;
options.define("s|samples=i:44100", "number of samples to generate");
options.define("sec|seconds=d:1.0", "duration of sound if no -s option");
options.define("r|srate|sr=d:44100", "sampling rate of output sound");
options.define("c|channels|chan=i:1", "number of channels in output sound");
options.process(argc, argv);
if (options.getArgCount() != 1) {
exitUsage(options.getCommand());
}
int srate = (int)options.getDouble("srate");
int numSamples = options.getInteger("samples");
if (!options.getBoolean("samples") && options.getBoolean("seconds")) {
double seconds = options.getDouble("seconds");
numSamples = (int)(seconds * srate + 0.5);
}
if (numSamples < 1) {
numSamples = 1000;
}
int channels = options.getInteger("channels");
if (channels < 1) {
channels = 1;
}
SoundHeader header;
header.setHighMono("This is a blank soundfile.");
header.setChannels(channels);
header.setSrate(srate);
// Elements:
Constant constant(0);
SoundFileOut outsound(options.getArg(1), header);
// Connections:
int i;
for (i=0; i<channels; i++) {
outsound.connect(constant, i, 0);
}
Action action;
action.tick(outsound, numSamples);
return 0;
}
void exitUsage(const char* command) {
cout << endl;
cout << "Generates a blank soundfile with specified length." << endl;
cout << endl;
cout << "Usage: " << command << " [-s|--sec] [-r] [-c] outsound" << endl;
cout << endl;
cout << " -s sample_count = make outsound sample_count samples long\n";
cout << " --sec seconds = make outsound specified seconds long\n";
cout << " -r sampling_rate = specify outsound sampling rate\n";
cout << " -c channels = specify outsound channel count\n";
cout << endl;
exit(1);
}
// md5sum: 16ac3d8a48c311055bcc93dfa8029483 silence.cpp [20050403]