#include #include #include #include #include #define BUFFER_LEN 1024 void applyOverdriveDistortion (SNDFILE *inputFile, SNDFILE *outputFile); void applyFuzzDistortion (SNDFILE *inputFile, SNDFILE *outputFile); void applyDistortion (SNDFILE *inputFile, SNDFILE *outputFile); void applyBoostDistortion (SNDFILE *inputFile, SNDFILE *outputFile, float gain); int main(int argc, char **argv) { int distortionLevel; SNDFILE *infile, *outfile; SF_INFO sfinfo; // Check for distortion level argument if (argc < 3) { printf("Usage: %s distortion-type distortion_level\n", argv[0]); return 1; } distortionLevel = atoi(argv[2]); // Open standard input as input file if (!(infile = sf_open_fd(0, SFM_READ, &sfinfo, 0))) { printf("Error: could not open standard input\n"); return 1; } // Open standard output as output file if (!(outfile = sf_open_fd(1, SFM_WRITE, &sfinfo, 0))) { printf("Error: could not open standard output\n"); return 1; } if (memcmp(argv[1], "overdrive", strlen("overdrive")) == 0) { fprintf(stderr, "overdrive\n"); applyOverdriveDistortion(infile, outfile); } if (memcmp(argv[1], "fuzz", strlen("fuzz")) == 0) { fprintf(stderr, "fuzz\n"); applyFuzzDistortion(infile, outfile); } if (memcmp(argv[1], "distortion", strlen("distortion")) == 0) { fprintf(stderr, "distortion\n"); applyDistortion(infile, outfile); } if (memcmp(argv[1], "boost", strlen("boost")) == 0) { fprintf(stderr, "boost\n"); applyBoostDistortion(infile, outfile, distortionLevel); } // // Read and process data // double buffer[BUFFER_LEN]; // while (sf_read_double(infile, buffer, BUFFER_LEN) > 0) { // for (int i=0; i