int main(int argc, char *argv[] ) { float fnbsamples; CMDUI* interface = new CMDUI(argc, argv); DSP.buildUserInterface(interface); interface->addOption("-n", &fnbsamples, 16, 0.0, 100000000.0); if (DSP.getNumInputs() > 0) { fprintf(stderr, "no inputs allowed\n"); exit(1); } // init signal processor and the user interface values DSP.init(44100); // modify the UI values according to the command line options interface->process_command(); int nouts = DSP.getNumOutputs(); channels chan (kFrames, nouts); int nbsamples = int(fnbsamples); while (nbsamples > kFrames) { DSP.compute(kFrames, 0, chan.buffers()); for (int i = 0; i < kFrames; i++) { for (int c = 0; c < nouts; c++) { printf("%8f\t", chan.buffers()[c][i]); } cout << endl; } nbsamples -= kFrames; } DSP.compute(nbsamples, 0, chan.buffers()); for (int i = 0; i < nbsamples; i++) { for (int c = 0; c < nouts; c++) { printf("%8f\t", chan.buffers()[c][i]); } cout << endl; } return 0; }
/* * processDSP(threadID) * Compute the DSP frames of the Faust object. */ void *processDSP(void *threadID) { while (on) { // getting input signal if (inChanNumb >= 1) android_AudioIn(p, bufferin[0], vecSamps); // computing... if (polyMax == 0) DSP.compute(vecSamps, bufferin, bufferout); else DSPpoly->compute(vecSamps, bufferin, bufferout); // sending output signal android_AudioOut(p, bufferout, vecSamps); } }
int main(int argc, char *argv[]) { SNDFILE* in_sf; SNDFILE* out_sf; SF_INFO in_info; SF_INFO out_info; unsigned int nAppend = 0; // number of frames to append beyond input file if (argc < 3) { fprintf(stderr,"*** USAGE: %s input_soundfile output_soundfile\n",argv[0]); exit(1); } nAppend = loptrm(&argc, argv, "--continue", "-c", 0); CMDUI* interface = new CMDUI(argc, argv); DSP.buildUserInterface(interface); interface->process_command(); // open input file in_info.format = 0; in_sf = sf_open(interface->input_file(), SFM_READ, &in_info); if (in_sf == NULL) { fprintf(stderr,"*** Input file not found.\n"); sf_perror(in_sf); exit(1); } // open output file out_info = in_info; out_info.format = in_info.format; out_info.channels = DSP.getNumOutputs(); out_sf = sf_open(interface->output_file(), SFM_WRITE, &out_info); if (out_sf == NULL) { fprintf(stderr,"*** Cannot write output file.\n"); sf_perror(out_sf); exit(1); } // create separator and interleaver Separator sep(kFrames, in_info.channels, DSP.getNumInputs()); Interleaver ilv(kFrames, DSP.getNumOutputs()); // init signal processor DSP.init(in_info.samplerate); //DSP.buildUserInterface(interface); interface->process_init(); // process all samples int nbf; do { nbf = READ_SAMPLE(in_sf, sep.input(), kFrames); sep.separate(); DSP.compute(nbf, sep.outputs(), ilv.inputs()); ilv.interleave(); sf_writef_float(out_sf, ilv.output(), nbf); //sf_write_raw(out_sf, ilv.output(), nbf); } while (nbf == kFrames); sf_close(in_sf); // compute tail, if any if (nAppend>0) { FAUSTFLOAT *input = (FAUSTFLOAT*) calloc(nAppend * DSP.getNumInputs(), sizeof(FAUSTFLOAT)); FAUSTFLOAT *inputs[1] = { input }; Interleaver ailv(nAppend, DSP.getNumOutputs()); DSP.compute(nAppend, inputs, ailv.inputs()); ailv.interleave(); sf_writef_float(out_sf, ailv.output(), nAppend); } sf_close(out_sf); }