#ifndef WELAY_T_H
#define WELAY_T_H

//Funktionen fuer PD-Externals

#include "wabor_t_definitions.h"
//#include "tabor_t_array_functions.h" 


static t_class *pcWelay_t;

struct _sWelay_t {
    t_object x_obj; //t_object has to be the first entry in the structure!!

    t_float fConstSignal;
    t_inlet *x_in; //Inlet fuer Audio
    t_inlet *x_inf; //Inlet fuer Floats
    t_outlet *x_out; //Outlet fuer Audio

    t_float fDelay;
    
    struct _sSound{ //Array das die gesamte Audiodatei enthaelt.
	    t_sample ALIGN16 *pA; //Pointer auf Ersten Eintrag des Vektors
	    t_sample *pC; //Pointer auf Eintrag wo weiter gespeicher wird
	    t_sample *pE; //Pointer auf eins hinter Ende
	    t_int iLength;
	} sSound;
};
typedef struct _sWelay_t sWelay_t;

void welay_t_setup(void);
void *welay_t_new(t_floatarg fArg);
void welay_t_delete(sWelay_t *psW);
void welay_t_dsp(sWelay_t *psW, t_signal **sp);
t_int *welay_t_perform(t_int *aw);
void welay_t_bang(sWelay_t const * const psW);
void welay_t_initialize_sSound(sWelay_t *psW);
void welay_t_set_soundbuffer_length_factor(sWelay_t *psW, t_float fFactor);

#endif //WELAY_T_H


