On Jan 9, 2007, at 2:50 PM, ugur guney wrote:
# Hi list!
# I'm trying to learn how to write externals (after being able to link
and compile the source codes thanks to Yvan Vander Sanden's tutorial)
and come up with a strange behavoir: The object [additive~] turns into
a messege box [additive~( (and sometimes its borders are totally erased
or sometimes pd crashes) after saving the patch (but not everytime).
Maybe I made a mistake that I couldn't find. What might be the reason
of such an error?
# Here is the code I've written. The object should be post the number
of incoming bangs and the time after creation (when dsp is on) and
compiled .dll file is attached.
-ugur-
#include "m_pd.h"
static t_class
*additive_tilde_class;
typedef struct
_additive_tilde {
t_object x_obj;
t_int bangtime;
t_float time;
}
t_additive_tilde;
void
additive_tilde_bang(t_additive_tilde *x)
{
post("you
banged %d times. time: %f", x->bangtime++, x->time);
}
t_int
*additive_tilde_perform(t_int *w)
{
t_additive_tilde *x = (t_additive_tilde *)(w[1]);
t_sample
*out = (t_sample *)(w[2]);
int n = (int)(w[3]);
while (n--)
{
*out++ =
x->time;
x->time
+= 1.0f/44100;
}
return (w+4);
}
void
additive_tilde_dsp(t_additive_tilde *x, t_signal **sp)
{
dsp_add(additive_tilde_perform, 3, x,
sp[0]->s_vec, sp[0]->s_n);
}
void
*additive_tilde_new(t_floatarg f)
{
t_additive_tilde *x = (t_additive_tilde *)pd_new(additive_tilde_class);
x->time = f;
x->bangtime
= 0;
outlet_new(&x->x_obj, gensym("signal"));
return (void
*)x;
}
__declspec
(dllexport) void additive_tilde_setup(void)
{
additive_tilde_class = class_new(gensym("additive~"),
(t_newmethod)additive_tilde_new,
0,
sizeof(t_additive_tilde),
CLASS_DEFAULT,
A_DEFFLOAT, 0);
class_addmethod(additive_tilde_class,
(t_method)additive_tilde_dsp, gensym("dsp"), 0);
class_addbang(additive_tilde_class, additive_tilde_bang);
}
<additive~.dll>
_______________________________________________