home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 January / PCWorld_2007-01_cd.bin / temacd / reaper / reaper147-install.exe / Effects / Meters / tonemeter next >
Text File  |  2005-06-24  |  914b  |  52 lines

  1. desc: tone meter (left channel only) -- doesnt really work
  2.  
  3. slider1:750<1,2000,10>block size (ms)
  4. slider2:250<1,2000,10>update interval (ms)
  5. slider3:0,octaves from a440
  6. slider4:0<0,11,1{A,A#,B,C,C#,D,D#,E,F,F#,G,G#}>note
  7. slider5:0,cents
  8. slider6:0,freq (Hz)
  9.  
  10. @slider 
  11.   bsize=(slider1*srate*0.001)|0;
  12.   bpos=0; 
  13.   zccnt0=0;
  14.   ls0=0;
  15.   updlen=slider2*srate*0.001;
  16.   isc=srate/bsize;
  17.  
  18. @block 
  19.   updcnt+=samplesblock; 
  20.   updcnt>updlen ? 
  21.   (
  22.      updcnt=0;
  23.      oofs=log(slider6/440)/log(2);
  24.      slider3=oofs|0;
  25.      slider4=(oofs*12+0.5)%12;
  26.      slider5=((oofs*12+0.5)*100)%100 - 50;
  27.      sliderchange(4+8+16+32);
  28.   );
  29.  
  30. @sample
  31.  
  32. // count zero crossings
  33. ts0=spl0>0;
  34.  
  35. ts0 && ls0 ? zccnt0+=1;
  36.  
  37. ls0=!ts0;
  38.  
  39. lcnt0=lzccnt0+zccnt0-bpos[0];
  40. bpos[0]=zccnt0;
  41.  
  42. slider6=lcnt0*isc;
  43.  
  44. // advance buffer
  45. bpos+=1;
  46. bpos >= bsize ? (
  47.     bpos=0;
  48.     lzccnt0=zccnt0;
  49.     zccnt0=0;
  50. );
  51.  
  52.