No subject


Sat Mar 19 21:51:29 CET 2011


I have 2 tunes that use Reason's FFT vocoder. In FFT mode it has 32
frequency bands.
The carrier input on these tunes are water recordings at 96k and the
modulator is drum beats of which samples were recorded at 44.1k.
I usually work in 48khz. So being able to work with differen't sample
rates and have the audio playing at sample rate of file would be
great.

http://sites.google.com/site/chuxlingchaxrazauralarielz/bp1.mp3
http://sites.google.com/site/chuxlingchaxrazauralarielz/bp2.mp3

performance of reason and latency was good enough to record live midi
input while vocoding on a 2.2GHz. AMD with 1Gb of ram. I'm not sure of
the latency at the time of those recordings but was using pd along
with reason. pd was used to retune midi notes with pitchbend. I don't
know how they do it but It but would sure like to know.
fast convolution is a feature I would love to be able to use in pd.

I remember there were lots of tricks that could be done with graphics
and integer math as well as binary bit twidling before math
coprocessors were in every machine. Look at fractint.

Example of circle code seems like I optimized this further but can't remember.

/////////////////////////////////////////////////////////////////////////
void bcircle(int x0,int y0,int radius,int c)
{
int x,y;
long a, asquared, twoasquared;
long b, bsquared, twobsquared;
long d, dx, dy;
int Aspecty,Aspectx;
getaspectratio(&Aspectx,&Aspecty);
x=0;
y=radius;
//a=radius*Aspecty/Aspectx;
a=radius*1.33333333;
asquared=a*a;
twoasquared=2*asquared;
b=radius;
bsquared=b*b;
twobsquared=2*bsquared;
d=bsquared-asquared*b+asquared/4L;
dx=0;
dy=twoasquared*b;
while(dx<dy)
    {
     if(d>0)
       {
        y=y-1;
        dy=dy-twoasquared;
        d=d-dy;
        putpixel(x0+x,y0+y,c);
        putpixel(x0-x,y0+y,c);
        putpixel(x0+x,y0-y,c);
        putpixel(x0-x,y0-y,c);
        x=x+1;
        dx=dx+twobsquared;
        d=d+bsquared+dx;
       }else{
             x=x+1;
             dx=dx+twobsquared;
             d=d+bsquared+dx;
              putpixel(x0+x,y0+y,c);
        putpixel(x0-x,y0+y,c);
        putpixel(x0+x,y0-y,c);
        putpixel(x0-x,y0-y,c);
             };
    };
 d=d+(3L*(asquared-bsquared)/2L-(dx+dy))/2L;
 while(y>0)
     {
      if(d<0)
        {
         x=x+1;
         dx=dx+twobsquared;
         d=d+dx;
        };
      y=y-1;
      putpixel(x0+x,y0+y,c);
      putpixel(x0-x,y0+y,c);
      putpixel(x0+x,y0-y,c);
      putpixel(x0-x,y0-y,c);

      dy=dy-twoasquared;
      d=d+asquared-dy;
     };
};
/////////////////////////////////////////////////////////////////////////


Could something like this be done with audio to speed up operations?



More information about the Pd-list mailing list