Goto: [ Program Documentation ]
//
// Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu>
// Creation Date: Mon May 26 09:32:04 GMT-0800 1997
// Last Modified: Mon May 26 09:32:07 GMT-0800 1997
// Filename: ...sig/doc/examples/sig/sigfile/decayEcho/decayEcho.cpp
// Syntax: C++; sig
//
// Description: a soundfile echo program
//
#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 != 3) exitUsage(argv[0]);
SoundHeader header(argv[1]);
int sampleDelay = 0;
double timeIn;
cout << "Enter the time in seconds for echo: " << endl;
cin >> timeIn;
sampleDelay = (int)(timeIn * header.getSrate());
float scaleFactor;
cout << "Enter the decay rate factor: ";
cin >> scaleFactor;
int numEchos;
cout << "Enter the number of echos: ";
cin >> numEchos;
// Elements:
SoundFileIn insound(argv[1]);
SoundFileOut outsound(argv[2], header);
Add addLeft;
Add addRight;
Scale scaleLeft(scaleFactor);
Scale scaleRight(scaleFactor);
Delayline delayLeft(sampleDelay-1);
Delayline delayRight(sampleDelay-1);
// Connections:
addLeft.connect(insound);
addLeft.connect(scaleLeft);
delayLeft.connect(addLeft);
addRight.connect(insound, 0, 1);
addRight.connect(scaleRight);
delayRight.connect(addRight);
outsound.connect(delayLeft);
scaleRight.connect(delayRight);
scaleLeft.connect(delayLeft);
if (header.getChannels() == 2) {
outsound.connect(delayRight);
}
int numSamples = header.getSamples() + (numEchos + 1) * sampleDelay;
Action action;
action.tick(outsound, numSamples);
return 0;
}
void exitUsage(const char* command) {
cout << endl;
cout << "Creates echos which decay at a specified rate." << endl;
cout << endl;
cout << "Usage: " << command << " insound outsound" << endl;
cout << endl;
cout << "Program input: " << endl;
cout << " (a) echo time in seconds" << endl;
cout << " (b) decay factor for each echo" << endl;
cout << " (c) number of echos to create" << endl;
cout << endl;
exit(1);
}
// md5sum: b5baa9313ae4050630c292bcb46ee72a decayEcho.cpp [20050403]