Commit 5e2f35e0 authored by ericlyon's avatar ericlyon

commit EL

parent 89f83765
......@@ -7,8 +7,11 @@ LIBRARY_NAME = fftease
# variable, help files will be included automatically, and for GUI
# objects, the matching .tcl file too
SOURCES = bthresher~.c burrow~.c cavoc~.c cavoc27~.c centerring~.c \
codepend~.c cross~.c dentist~.c disarrain~.c \
pvoc~.c
codepend~.c cross~.c dentist~.c disarrain~.c disarray~.c drown~.c \
enrich~.c ether~.c leaker~.c mindwarp~.c morphine~.c multyq~.c \
pileup~.c pvcompand~.c pvgrain~.c pvharm~.c pvoc~.c pvtuner~.c pvwarp~.c pvwarpb~.c \
reanimator~.c resent~.c residency~.c residency_buffer~.c schmear~.c scrape~.c \
shapee~.c swinger~.c taint~.c thresher~.c vacancy~.c xsyn~.c
# list all pd objects (i.e. myobject.pd) files here, and their helpfiles will
# be included automatically
......
Port Max 6 to Pd
0. add external to Makefile SOURCES
1. change all t_doubles and doubles to t_float
2. change t_pxobject to t_object
/* Pd 32-bit FFTease 3.0 */
1. change t_pxobject to t_object
t_object x_obj;
t_float x_f;
3. float x_f;
4. add prototypes for XXX_dsp() & XXX_perform()
void bthresher_dsp(t_bthresher *x, t_signal **sp);
t_int *bthresher_perform(t_int *w);
5. write XXX-tilde_setup
void bthresher_tilde_setup(void)
{
t_class *c;
c = class_new(gensym("bthresher~"), (t_newmethod)bthresher_new,
(t_method)bthresher_free,sizeof(t_bthresher), 0,A_GIMME,0);
CLASS_MAINSIGNALIN(c, t_bthresher, x_f);
class_addmethod(c,(t_method)bthresher_dsp,gensym("dsp"),0);
class_addmethod(c,(t_method)bthresher_mute,gensym("mute"),A_FLOAT,0);
class_addmethod(c,(t_method)bthresher_fftinfo,gensym("fftinfo"),0);
class_addmethod(c,(t_method)bthresher_oscbank,gensym("oscbank"),A_FLOAT,0);
class_addmethod(c,(t_method)bthresher_transpose,gensym("transpose"),A_FLOAT,0);
class_addmethod(c,(t_method)bthresher_synthresh,gensym("synthresh"),A_FLOAT,0);
bthresher_class = c;
fftease_announce(OBJECT_NAME);
}
6. comment out main() function
7. modify new() function:
pd_new() for object_alloc()
outlet_new(&x->x_obj, gensym("signal"));
inlet_new(&x->x_obj, &x->x_obj.ob_pd,gensym("signal"), gensym("signal"));
outlet_new(&x->x_obj, gensym("signal"));
Make note of z_no_inplace issues
add non-signal outlets *after* signal outlets
add optional arguments
if(argc > 0){ fft->N = (int) atom_getfloatarg(0, argc, argv); }
x->mybang = outlet_new(&x->x_obj, gensym("bang"));
x->m_clock = clock_new(x,(void *)sigseq_tick);
if(argc > 0){ fft->N = (int) atom_getfloatarg(0, argc, argv); }
if(argc > 1){ fft->overlap = (int) atom_getfloatarg(1, argc, argv); }
8. modify init()
kill use of obj.z_disabled
9. modify perform() function
deal with pointers
change sysmem_copyptr to memcpy
replace vectorsize with MSPVectorSize
remove inlet-connected conditionals
return w+XXX
t_int *bthresher_perform(t_int *w)
t_bthresher *x = (t_bthresher *) (w[1]);
t_float *MSPInputVector = (t_float *)(w[2]);
if( fft->bufferStatus == EQUAL_TO_MSP_VECTOR ){
memcpy(input, input + D, (Nw - D) * sizeof(t_float));
memcpy(input + (Nw - D), MSPInputVector, D * sizeof(t_float));
do_bthresher(x);
for ( j = 0; j < D; j++ ){ *MSPOutputVector++ = output[j] * mult; }
memcpy(output, output + D, (Nw-D) * sizeof(t_float));
for(j = (Nw-D); j < Nw; j++){ output[j] = 0.0; }
}
else if( fft->bufferStatus == SMALLER_THAN_MSP_VECTOR ) {
for( i = 0; i < operationRepeat; i++ ){
memcpy(input, input + D, (Nw - D) * sizeof(t_float));
memcpy(input + (Nw-D), MSPInputVector + (D*i), D * sizeof(t_float));
do_bthresher(x);
for ( j = 0; j < D; j++ ){ *MSPOutputVector++ = output[j] * mult; }
memcpy(output, output + D, (Nw-D) * sizeof(t_float));
for(j = (Nw-D); j < Nw; j++){ output[j] = 0.0; }
}
}
else if( fft->bufferStatus == BIGGER_THAN_MSP_VECTOR ) {
memcpy(internalInputVector + (operationCount * MSPVectorSize), MSPInputVector,MSPVectorSize * sizeof(t_float));
memcpy(MSPOutputVector, internalOutputVector + (operationCount * MSPVectorSize),MSPVectorSize * sizeof(t_float));
operationCount = (operationCount + 1) % operationRepeat;
if( operationCount == 0 ) {
memcpy(input, input + D, (Nw - D) * sizeof(t_float));
memcpy(input + (Nw - D), internalInputVector, D * sizeof(t_float));
do_bthresher(x);
for ( j = 0; j < D; j++ ){ internalOutputVector[j] = output[j] * mult; }
memcpy(output, output + D, (Nw - D) * sizeof(t_float));
for(j = (Nw-D); j < Nw; j++){ output[j] = 0.0; }
}
fft->operationCount = operationCount;
}
10. modify DSP method
void bthresher_dsp(t_bthresher *x, t_signal **sp)
{
int reset_required = 0;
int maxvectorsize = sys_getblksize();
int samplerate = sys_getsr();
if(!samplerate)
return;
t_fftease *fft = x->fft;
if(fft->R != samplerate || fft->MSPVectorSize != maxvectorsize || fft->initialized == 0){
reset_required = 1;
}
if(fft->MSPVectorSize != maxvectorsize){
fft->MSPVectorSize = maxvectorsize;
fftease_set_fft_buffers(fft);
}
if(fft->R != samplerate){
fft->R = samplerate;
}
if(reset_required){
bthresher_init(x);
}
if(fftease_msp_sanity_check(fft,OBJECT_NAME)) {
dsp_add(bthresher_perform, 5, x, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec);
}
}
11. Remove dsp_free from free function
12. add back any messages from attributes
......
......@@ -61,7 +61,7 @@ void bthresher_tilde_setup(void)
{
t_class *c;
c = class_new(gensym("bthresher~"), (t_newmethod)bthresher_new,
(t_method)bthresher_free,sizeof(t_bthresher), 0,A_GIMME,0);
(t_method)bthresher_free,sizeof(t_bthresher), 0,A_GIMME,0);
CLASS_MAINSIGNALIN(c, t_bthresher, x_f);
class_addmethod(c,(t_method)bthresher_dsp,gensym("dsp"),0);
class_addmethod(c,(t_method)bthresher_mute,gensym("mute"),A_FLOAT,0);
......@@ -85,7 +85,7 @@ void bthresher_tilde_setup(void)
void bthresher_fftinfo( t_bthresher *x )
{
fftease_fftinfo( x->fft, OBJECT_NAME );
fftease_fftinfo( x->fft, OBJECT_NAME );
}
void bthresher_free( t_bthresher *x ){
......@@ -125,7 +125,7 @@ void bthresher_alldamp(t_bthresher *x, t_float f)
{
int i;
t_fftease *fft = x->fft;
//post("damp %f",f);
for(i=0;i < fft->N2+1;i++)
x->damping_factor[i] = f;
......@@ -164,9 +164,9 @@ void bthresher_dump (t_bthresher *x) {
t_float *move_threshold = x->move_threshold;
int i,j, count;
for( i = 0, j = 0; i < x->fft->N2 * 3 ; i += 3, j++ ) {
SETFLOAT(list_data+i,(t_float)j);
SETFLOAT(list_data+(i+1),damping_factor[j]);
SETFLOAT(list_data+(i+2),move_threshold[j]);
......@@ -180,14 +180,14 @@ void bthresher_dump (t_bthresher *x) {
void *bthresher_new(t_symbol *s, int argc, t_atom *argv)
{
t_fftease *fft;
t_fftease *fft;
t_bthresher *x = (t_bthresher *)pd_new(bthresher_class);
inlet_new(&x->x_obj, &x->x_obj.ob_pd,gensym("signal"), gensym("signal"));
inlet_new(&x->x_obj, &x->x_obj.ob_pd,gensym("signal"), gensym("signal"));
outlet_new(&x->x_obj, gensym("signal"));
x->list_outlet = outlet_new(&x->x_obj, gensym("list"));
x->fft = (t_fftease *) calloc( 1, sizeof(t_fftease) );
......@@ -195,13 +195,13 @@ t_fftease *fft;
fft->initialized = 0;
x->init_thresh = 0.1;
x->init_damping = 0.99;
fft->N = FFTEASE_DEFAULT_FFTSIZE;
fft->overlap = FFTEASE_DEFAULT_OVERLAP;
fft->winfac = FFTEASE_DEFAULT_WINFAC;
if(argc > 0){ fft->N = (int) atom_getfloatarg(0, argc, argv); }
if(argc > 1){ fft->overlap = (int) atom_getfloatarg(1, argc, argv); }
return x;
}
......@@ -219,11 +219,11 @@ void bthresher_synthresh(t_bthresher *x, t_float thresh)
void bthresher_init(t_bthresher *x)
{
int i;
int i;
t_fftease *fft = x->fft;
short initialized = fft->initialized;
fftease_init(fft);
fftease_init(fft);
if(!initialized){
x->first_frame = 1;
......@@ -243,7 +243,7 @@ void bthresher_init(t_bthresher *x)
x->list_data = (t_atom *) calloc((fft->N2 + 1) * 3, sizeof(t_atom));
x->move_threshold = (t_float *) calloc((fft->N2+1), sizeof(t_float));
x->damping_factor = (t_float *) calloc((fft->N2+1), sizeof(t_float));
for(i = 0; i < fft->N2+1; i++) {
x->move_threshold[i] = x->init_thresh;
x->damping_factor[i] = x->init_damping;
......@@ -252,9 +252,9 @@ void bthresher_init(t_bthresher *x)
x->list_data = (t_atom *) realloc((void *)x->list_data, (fft->N2 + 1) * 3 * sizeof(t_atom));
x->move_threshold = (t_float *) realloc((void *)x->move_threshold, (fft->N2+1) * sizeof(t_float));
x->damping_factor = (t_float *) realloc((void *)x->damping_factor, (fft->N2+1) * sizeof(t_float));
}
// NEED TO HANDLE REALLOC CASE!!!
}
// NEED TO HANDLE REALLOC CASE!!!
x->tadv = (t_float) fft->D / (t_float) fft->R;
x->max_hold_frames = x->max_hold_time / x->tadv;
}
......@@ -266,7 +266,7 @@ void bthresher_version(void)
void bthresher_rdamper(t_bthresher *x, t_float min, t_float max)
{
int i;
int i;
for( i = 0; i < x->fft->N2; i++ ) {
x->damping_factor[i] = bthresher_boundrand(min, max);
......@@ -298,9 +298,9 @@ void bthresher_bin(t_bthresher *x, t_float bin_num, t_float damper, t_float thre
void do_bthresher(t_bthresher *x)
{
t_fftease *fft = x->fft;
int N = fft->N;
t_float *channel = fft->channel;
t_float *damping_factor = x->damping_factor;
t_float *move_threshold = x->move_threshold;
......@@ -313,15 +313,15 @@ void do_bthresher(t_bthresher *x)
int i, j;
fold(fft);
rdft(fft,1);
convert(fft);
rdft(fft,1);
convert(fft);
if( x->first_frame ){
for ( i = 0; i < N+2; i++ ){
composite_frame[i] = channel[i];
x->frames_left[i] = max_hold_frames;
}
x->first_frame = 0;
}
}
else {
if( thresh_scalar < .999 || thresh_scalar > 1.001 || damp_scalar < .999 || damp_scalar > 1.001 ) {
for(i = 0, j = 0; i < N+2; i += 2, j++ ){
......@@ -329,7 +329,7 @@ void do_bthresher(t_bthresher *x)
composite_frame[i] = channel[i];
composite_frame[i+1] = channel[i+1];
frames_left[j] = max_hold_frames;
}
}
else {
if(!inf_hold){
--(frames_left[j]);
......@@ -340,7 +340,7 @@ void do_bthresher(t_bthresher *x)
}
}
}
}
else {
for( i = 0, j = 0; i < N+2; i += 2, j++ ){
if( fabs( composite_frame[i] - channel[i] ) > move_threshold[j] || frames_left[j] <= 0 ){
......@@ -359,7 +359,7 @@ void do_bthresher(t_bthresher *x)
}
}
}
// use memcopy
// use memcopy
for(i = 0; i < N+2; i++){
channel[i] = composite_frame[i];
}
......@@ -378,7 +378,7 @@ void bthresher_oscbank(t_bthresher *x, t_float flag)
}
t_int *bthresher_perform(t_int *w)
{
{
int i,j;
t_bthresher *x = (t_bthresher *) (w[1]);
t_float *MSPInputVector = (t_float *)(w[2]);
......@@ -391,7 +391,7 @@ t_int *bthresher_perform(t_int *w)
int operationRepeat = fft->operationRepeat;
int operationCount = fft->operationCount;
t_float *internalInputVector = fft->internalInputVector;
t_float *internalOutputVector = fft->internalOutputVector;
t_float *internalOutputVector = fft->internalOutputVector;
t_float *input = fft->input;
t_float *output = fft->output;
int Nw = fft->Nw;
......@@ -404,11 +404,11 @@ t_int *bthresher_perform(t_int *w)
}
return w+6;
}
x->thresh_scalar = *inthresh;
x->damp_scalar = *damping;
if( fft->bufferStatus == EQUAL_TO_MSP_VECTOR ){
if( fft->bufferStatus == EQUAL_TO_MSP_VECTOR ){
memcpy(input, input + D, (Nw - D) * sizeof(t_float));
memcpy(input + (Nw - D), MSPInputVector, D * sizeof(t_float));
......@@ -429,7 +429,7 @@ t_int *bthresher_perform(t_int *w)
memcpy(output, output + D, (Nw-D) * sizeof(t_float));
for(j = (Nw-D); j < Nw; j++){ output[j] = 0.0; }
}
}
}
else if( fft->bufferStatus == BIGGER_THAN_MSP_VECTOR ) {
memcpy(internalInputVector + (operationCount * MSPVectorSize), MSPInputVector,MSPVectorSize * sizeof(t_float));
memcpy(MSPOutputVector, internalOutputVector + (operationCount * MSPVectorSize),MSPVectorSize * sizeof(t_float));
......@@ -438,7 +438,7 @@ t_int *bthresher_perform(t_int *w)
if( operationCount == 0 ) {
memcpy(input, input + D, (Nw - D) * sizeof(t_float));
memcpy(input + (Nw - D), internalInputVector, D * sizeof(t_float));
do_bthresher(x);
for ( j = 0; j < D; j++ ){ internalOutputVector[j] = output[j] * mult; }
......@@ -484,4 +484,3 @@ t_float bthresher_boundrand( t_float min, t_float max) {
return (min + frand * (max-min) );
}
......@@ -19,9 +19,6 @@ typedef struct _burrow
short bypass;
} t_burrow;
/* msp function prototypes */
void *burrow_new(t_symbol *s, int argc, t_atom *argv);
void burrow_dsp(t_burrow *x, t_signal **sp);
t_int *burrow_perform(t_int *w);
......@@ -110,12 +107,10 @@ void *burrow_new(t_symbol *s, int argc, t_atom *argv)
{
t_fftease *fft, *fft2;
t_burrow *x = (t_burrow *) pd_new(burrow_class);
//dsp_setup((t_pxobject *)x,4);
inlet_new(&x->x_obj, &x->x_obj.ob_pd,gensym("signal"), gensym("signal"));
inlet_new(&x->x_obj, &x->x_obj.ob_pd,gensym("signal"), gensym("signal"));
inlet_new(&x->x_obj, &x->x_obj.ob_pd,gensym("signal"), gensym("signal"));
outlet_new(&x->x_obj, gensym("signal"));
//outlet_new((t_pxobject *)x, "signal");
x->fft = (t_fftease *) calloc(1, sizeof(t_fftease));
x->fft2 = (t_fftease *) calloc(1, sizeof(t_fftease));
......@@ -136,7 +131,6 @@ void *burrow_new(t_symbol *s, int argc, t_atom *argv)
if(argc > 0){ fft->N = fft2->N = (int) atom_getfloatarg(0, argc, argv); }
if(argc > 1){ fft->overlap = fft2->overlap = (int) atom_getfloatarg(1, argc, argv); }
// burrow_init(x);
return x;
}
......@@ -362,8 +356,6 @@ void do_burrow(t_burrow *x)
}
void burrow_dsp(t_burrow *x, t_signal **sp)
{
int reset_required = 0;
......
File deleted
......@@ -93,9 +93,8 @@ void cavoc27_tilde_setup(void)
class_addmethod(c,(t_method)cavoc27_manual,gensym("manual"),A_FLOAT,0);
class_addmethod(c,(t_method)cavoc27_freeze,gensym("freeze"),A_FLOAT,0);
class_addmethod(c,(t_method)cavoc27_trigger,gensym("trigger"),0);
class_addmethod(c,(t_method)cavoc27_fftinfo,gensym("fftinfo"),0);
class_addmethod(c,(t_method)cavoc27_density,gensym("density"),0);
class_addmethod(c,(t_method)cavoc27_hold_time,gensym("hold_time"),0);
class_addmethod(c,(t_method)cavoc27_density,gensym("density"),A_FLOAT,0);
class_addmethod(c,(t_method)cavoc27_hold_time,gensym("hold_time"),A_FLOAT,0);
cavoc27_class = c;
fftease_announce(OBJECT_NAME);
}
......@@ -123,6 +122,7 @@ void cavoc27_manual(t_cavoc27 *x, t_floatarg tog)
{
x->manual_mode = (short) tog;
}
void cavoc27_trigger(t_cavoc27 *x)
{
x->external_trigger = 1;
......@@ -169,7 +169,8 @@ void cavoc27_interpolate(t_cavoc27 *x, t_floatarg flag)
void cavoc27_capture_spectrum(t_cavoc27 *x, t_floatarg flag )
{
x->capture_lock = (short)flag;
x->capture_lock = (short)flag;
post("capture flag: %d", x->capture_lock);
}
void cavoc27_capture_lock(t_cavoc27 *x, t_floatarg flag )
......@@ -221,7 +222,6 @@ t_fftease *fft;
if(argc > 1){ fft->overlap = (int) atom_getfloatarg(1, argc, argv); }
if(argc > 2){ x->density = atom_getfloatarg(2, argc, argv); }
if(argc > 3){ x->hold_time = atom_getfloatarg(3, argc, argv); }
// cavoc27_init(x);
return x;
}
......@@ -294,7 +294,15 @@ void cavoc27_init(t_cavoc27 *x)
x->tmpchannel = (t_float *)realloc(x->tmpchannel,(fft->N+2)*sizeof(t_float));
x->last_frame = (t_float *)realloc(x->last_frame,(fft->N+2)*sizeof(t_float));
}
cavoc27_rand_set_rule(x);
if(x->frame_duration != 0){
x->hold_frames = (int) ( (x->hold_time/1000.0) / x->frame_duration);
} else {
post("%s: zero FFT frame duration", OBJECT_NAME);
}
if( x->hold_frames < 1 )
x->hold_frames = 1;
cavoc27_rand_set_rule(x);
cavoc27_rand_set_spectrum(x);
for( i = 0; i < fft->N+2; i++ ){
x->last_frame[i] = fft->channel[i];
......@@ -430,25 +438,31 @@ t_int *cavoc27_perform(t_int *w)
////////////
t_cavoc27 *x = (t_cavoc27 *) (w[1]);
t_float *MSPOutputVector = (t_float *) (w[2]);
t_float *MSPInputVector = (t_float *) (w[2]);
t_float *MSPOutputVector = (t_float *) (w[3]);
t_fftease *fft = x->fft;
int D = fft->D;
int Nw = fft->Nw;
t_float *input = fft->input;
t_float *output = fft->output;
t_float mult = fft->mult ;
t_float mult = fft->mult;
int MSPVectorSize = fft->MSPVectorSize;
t_float *internalInputVector = fft->internalInputVector;
t_float *internalOutputVector = fft->internalOutputVector;
int operationRepeat = fft->operationRepeat;
int operationCount = fft->operationCount;
if(x->mute){
for(i=0; i < MSPVectorSize; i++){ MSPOutputVector[i] = 0.0; }
return w+3;
return w+4;
}
if(fft->obank_flag){
mult *= FFTEASE_OSCBANK_SCALAR;
}
if( fft->bufferStatus == EQUAL_TO_MSP_VECTOR ){
memcpy(input, input + D, (Nw - D) * sizeof(t_float));
memcpy(input + (Nw - D), MSPInputVector, D * sizeof(t_float));
do_cavoc27(x);
for ( j = 0; j < D; j++ ){ *MSPOutputVector++ = output[j] * mult; }
memcpy(output, output + D, (Nw-D) * sizeof(t_float));
......@@ -456,6 +470,8 @@ t_int *cavoc27_perform(t_int *w)
}
else if( fft->bufferStatus == SMALLER_THAN_MSP_VECTOR ) {
for( i = 0; i < operationRepeat; i++ ){
memcpy(input, input + D, (Nw - D) * sizeof(t_float));
memcpy(input + (Nw-D), MSPInputVector + (D*i), D * sizeof(t_float));
do_cavoc27(x);
for ( j = 0; j < D; j++ ){ *MSPOutputVector++ = output[j] * mult; }
memcpy(output, output + D, (Nw-D) * sizeof(t_float));
......@@ -463,9 +479,12 @@ t_int *cavoc27_perform(t_int *w)
}
}
else if( fft->bufferStatus == BIGGER_THAN_MSP_VECTOR ) {
memcpy(MSPOutputVector, internalOutputVector + (operationCount * MSPVectorSize), MSPVectorSize * sizeof(float));
memcpy(internalInputVector + (operationCount * MSPVectorSize), MSPInputVector,MSPVectorSize * sizeof(t_float));
memcpy(MSPOutputVector, internalOutputVector + (operationCount * MSPVectorSize),MSPVectorSize * sizeof(t_float));
operationCount = (operationCount + 1) % operationRepeat;
if( operationCount == 0 ) {
memcpy(input, input + D, (Nw - D) * sizeof(t_float));
memcpy(input + (Nw - D), internalInputVector, D * sizeof(t_float));
do_cavoc27(x);
for ( j = 0; j < D; j++ ){ internalOutputVector[j] = output[j] * mult; }
memcpy(output, output + D, (Nw - D) * sizeof(t_float));
......@@ -473,7 +492,7 @@ t_int *cavoc27_perform(t_int *w)
}
fft->operationCount = operationCount;
}
return w+3;
return w+4;
}
int cavoc27_apply_rule( short left, short right, short center, short *rule){
......@@ -571,17 +590,19 @@ void cavoc27_density(t_cavoc27 *x, t_floatarg density)
void cavoc27_hold_time(t_cavoc27 *x, t_floatarg hold_time)
{
if(hold_time <= 0){
post("illegal hold time %f",hold_time);
return;
}
x->hold_time = hold_time * 0.001;
x->hold_time = hold_time;
if(! x->fft->initialized){
return;
}
if(! x->frame_duration){
error("%s: zero frame duration",OBJECT_NAME);
x->frame_duration = .15;
return;
}
x->hold_frames = (int) ( (hold_time/1000.0) / x->frame_duration);
x->hold_frames = (int) ( (x->hold_time/1000.0) / x->frame_duration);
if( x->hold_frames < 1 )
x->hold_frames = 1;
}
......@@ -607,6 +628,6 @@ void cavoc27_dsp(t_cavoc27 *x, t_signal **sp)
if(reset_required){
cavoc27_init(x);
}
dsp_add(cavoc27_perform, 2, x, sp[1]->s_vec);
dsp_add(cavoc27_perform, 3, x, sp[0]->s_vec, sp[1]->s_vec);
}
File deleted
......@@ -69,17 +69,14 @@ void cavoc_tilde_setup(void)
class_addmethod(c,(t_method)cavoc_dsp,gensym("dsp"),0);
class_addmethod(c,(t_method)cavoc_mute,gensym("mute"),A_FLOAT,0);
class_addmethod(c,(t_method)cavoc_oscbank,gensym("oscbank"),A_FLOAT,0);
class_addmethod(c,(t_method)cavoc_fftinfo,gensym("fftinfo"),0);
class_addmethod(c,(t_method)cavoc_rule,gensym("rule"),A_GIMME,0);
class_addmethod(c,(t_method)cavoc_external_trigger,gensym("external_trigger"),A_FLOAT,0);
class_addmethod(c,(t_method)cavoc_bang,gensym("bang"),0);
class_addmethod(c,(t_method)cavoc_retune,gensym("retune"),A_FLOAT,A_FLOAT,0);
class_addmethod(c,(t_method)cavoc_topfreq,gensym("topfreq"),A_FLOAT,0);
class_addmethod(c,(t_method)cavoc_bottomfreq,gensym("bottomfreq"),A_FLOAT,0);
class_addmethod(c,(t_method)cavoc_oscbank,gensym("oscbank"),A_FLOAT,0);
class_addmethod(c,(t_method)cavoc_density,gensym("density"),A_FLOAT,0);
class_addmethod(c,(t_method)cavoc_hold_time,gensym("hold_time"),A_FLOAT,0);
class_addmethod(c,(t_method)cavoc_fftinfo,gensym("fftinfo"),0);
cavoc_class = c;
fftease_announce(OBJECT_NAME);
}
......@@ -450,7 +447,6 @@ float cavoc_randf(float min, float max)
return (min + ((max-min) * randv)) ;
}
void cavoc_dsp(t_cavoc *x, t_signal **sp)
{
int reset_required = 0;
......
File deleted
......@@ -32,8 +32,6 @@ typedef struct _centerring
short bypass;
} t_centerring;
/* msp function prototypes */
void *centerring_new(t_symbol *s, int argc, t_atom *argv);
t_int *centerring_perform(t_int *w);
void centerring_dsp(t_centerring *x, t_signal **sp);
......
......@@ -23,9 +23,6 @@ typedef struct _codepend
t_float invert_pad;
} t_codepend;
/* msp function prototypes */
void *codepend_new(t_symbol *s, int argc, t_atom *argv);
void codepend_dsp(t_codepend *x, t_signal **sp);
t_int *codepend_perform(t_int *w);
......
while(<*>){
chomp;
if(/darwin$/ || /libfftease.dylib/){
`mv $_ fftease32-externals`;
}
}
File deleted
......@@ -13,10 +13,9 @@ typedef struct _cross
t_fftease *fft;
t_fftease *fft2;
t_float threshie;
short thresh_connected;
short mute;//flag
short bypass;
short autonorm;// for self gain regulation
t_float normult; // adjusted multiplier on a per-frame basis
} t_cross;