57 lines
798 B
C++
57 lines
798 B
C++
// -*- mode: c++ -*-
|
|
#ifndef GRAIN_H
|
|
#define GRAIN_H
|
|
|
|
#include "fft.h"
|
|
#include "sbsms.h"
|
|
|
|
namespace _sbsms_ {
|
|
|
|
enum windowType {
|
|
hann,
|
|
hannpoisson
|
|
};
|
|
|
|
class GrainAllocator;
|
|
|
|
class grain {
|
|
public:
|
|
~grain();
|
|
void analyze();
|
|
void synthesize();
|
|
void downsample(grain *gdown);
|
|
audio *x;
|
|
friend class GrainAllocator;
|
|
protected:
|
|
grain(int N, int N2);
|
|
float *w;
|
|
int N;
|
|
float synthScale;
|
|
int refCount;
|
|
fftplan fftPlan;
|
|
fftplan ifftPlan;
|
|
};
|
|
|
|
class GrainAllocator {
|
|
public:
|
|
GrainAllocator(int N, int N2, int type);
|
|
~GrainAllocator();
|
|
grain *create();
|
|
void reference(grain *g);
|
|
void forget(grain *g);
|
|
friend class grain;
|
|
friend class GrainBuf;
|
|
protected:
|
|
int N;
|
|
int N2;
|
|
int type;
|
|
float *w;
|
|
audio *W;
|
|
fftplan fftPlan;
|
|
fftplan ifftPlan;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|