Goto: [ Program Documentation ]
// // Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> // Creation Date: Sun Apr 27 12:17:57 GMT-0800 1997 // Last Modified: Sun May 25 00:06:31 GMT-0800 1997 // Filename: ...sig/doc/examples/sig/sigfile/.../simplestLowpass.cpp // Syntax: C++; sig // // Description: Adds the current sample and the previous sample together // to create a slow-attenuation lowpass filter. // #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 == 1) exitUsage(argv[0]); SoundHeader header(argv[1]); char* infilename = ""; char* outfilename = NULL; float noiseAmp = 0.0; long numSamples = 0; if (argc == 2) { // no input sound header.setHighMono(); outfilename = argv[1]; cout << "What amplitude for the noise: "; cin >> noiseAmp; cout << "How many seconds of noise to use: [0 .. 1] "; float temp; cin >> temp; numSamples = (long)(temp * 44100); } else if (argc == 3) { // input file specified header.setHeader(argv[1]); numSamples = header.getSamples() + 2; outfilename = argv[2]; infilename = argv[1]; } else { exitUsage(argv[0]); } // Elements: SoundFileIn insound(infilename); SoundFileOut outsound(outfilename, header); WhiteNoise noise(noiseAmp); Add add; Scale scale(0.5); // scale by 50% Delayline delay(2); // 1 sample delay delay.setDelay(1); // Connections: outsound.connect(scale); if (strlen(infilename) == 0) { // use noise delay.connect(noise); add.connect(noise); } else { // use input file delay.connect(insound); add.connect(insound); } add.connect(delay); scale.connect(add); Action action; action.tick(outsound, header.getSamples() + 1); return 0; } void exitUsage(const char* command) { cout << "Averages adjacent samples together to give a low-quality lowpass " << endl; cout << "filter. If no input sound, then use whitenoise. " << endl; cout << endl; cout << "Usage: " << command << " [insound] outsound" << endl; cout << endl; cout << "Program input: " << endl; cout << " (a) amplitude of input noise (if no input sound)" << endl; cout << " (b) duration of noise in samples (if no input sound)" << endl; cout << endl; exit(1); } // md5sum: c75b17a647df58e3da4f8d4da839b0d0 simplestLowpass.cpp [20050403]