void test_notch() { // WhiteNoise osc; Sine osc(600); // LineSegment cutoffSweep(3, 2000.0, 200.0); Sine sweep; sweep.set_frequency(1); sweep.set_scale(550); sweep.set_offset(600); Notch lpfilter(osc, osc.sample_rate(), sweep, 0.99995F ); logMsg("playing band-reject (notch) filter..."); run_test(lpfilter); logMsg("notch test done."); }
void test_moog() { WhiteNoise osc; osc.set_scale(0.2); // Sawtooth osc(400); // LineSegment cutoffSweep(5, 2000.0, 200.0); Sine cutoffSweep(1); cutoffSweep.set_scale(2000); cutoffSweep.set_offset(3000); Moog lpfilter(osc, osc.sample_rate(), cutoffSweep); // Moog lpfilter(osc, osc.sample_rate(), 500.0); // lpfilter.set_resonance(cutoffSweep); logMsg("playing moog filtered noise..."); run_test(lpfilter, 5); logMsg("moog done."); }
void test_filter_sweep() { WhiteNoise wnoise; Sine centerSin; centerSin.set_frequency(0.5); MulOp centerMod(centerSin, 500.0); StaticVariable centerOffset(1000); AddOp centerSweep(centerMod, 1000.0); Sine BWSin; BWSin.set_frequency(5); MulOp BWMod(BWSin, 50.0); AddOp BWSweep(BWMod, 100.0); Butter lpfilter(wnoise, wnoise.sample_rate(), Butter::BW_BAND_PASS, centerSweep, BWSweep); logMsg("playing filter_sweep..."); run_test(lpfilter); logMsg("filter_sweep done."); }
void test_formant() { // WhiteNoise osc; Sawtooth osc; osc.set_frequency(400); Sine sweep; sweep.set_frequency(1); sweep.set_scale(200); sweep.set_offset(600); // LineSegment cutoffSweep(3, 2000.0, 200.0); // StaticVariable cutoffSweep(2000); Formant lpfilter(osc, osc.sample_rate(), sweep, 0.995F ); // Formant lpfilter(osc, osc.sample_rate(), 600, 0.995F ); // lpfilter.set_normalize(false); // Filter lpfilter(osc); logMsg("playing Formant..."); run_test(lpfilter, 10); logMsg("Formant done."); }
void CLightSet::RunLightPrep(IplImage* src,IplImage* dest) { int M,N; M=0; N=0; if (src->roi) { M = src->roi->width; N = src->roi->height; } else { M = src->width; N = src->height; } CvMat *matD; // create mat for meshgrid frequency matrices matD = cvCreateMat(M,N,CV_32FC1); CDM(M,N,matD); CvMat *matH; matH = cvCreateMat(M,N,CV_32FC1); // mat for lowpass filter float D0 = 10.0; float rH,rL,c; rH = 2.0; rL = 0.5; c = 1.0; lpfilter(matD,matH,D0,rH,rL,c); IplImage *srcshift; // shift center srcshift = cvCloneImage(src); cvShiftDFT(srcshift,srcshift); IplImage *log, *temp; log = cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1); temp = cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1); cvCvtScale(srcshift,temp,1.0,0); cvLog(temp,log); cvCvtScale(log,log,-1.0,0); CvMat *Fourier; Fourier = cvCreateMat( M, N, CV_32FC2 ); fft2(log,Fourier); IplImage* image_im; image_im = cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1); cvSplit(Fourier,dest,image_im,0,0); cvMul(dest,matH,dest); cvMul(image_im,matH,image_im); IplImage *dst; dst = cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,2); cvMerge(dest,image_im,0,0,dst); cvDFT(dst,dst,CV_DXT_INV_SCALE); cvExp(dst,dst); cvZero(dest); cvZero(image_im); cvSplit(dst,dest,image_im,0,0); //使得图像按照原来的顺序显示 cvShiftDFT(dest,dest); double max,min; // normalize cvMinMaxLoc(dest,&min,&max,NULL,NULL); cvReleaseImage(&image_im); cvReleaseImage(&srcshift); cvReleaseImage(&dst); cvReleaseImage(&log); cvReleaseImage(&temp); cvReleaseMat(&matD); cvReleaseMat(&matH); }