Ok I'll try the changes and post to the pd-list like you suggested aloha Rick
On Fri, Sep 9, 2011 at 11:06 PM, Patrice Colet <[email protected]>wrote: > > ----- "Patrice Colet" <[email protected]> a écrit : > > Also I've just figured out that amp variable isn't really needed since it > can be performed by [*~] > > > AFAIU you just need an output signal, would you mind trying something > > like this: > > > > > > static void sineq_tilde_amp (t_sineq_tilde *x, t_floatarg f) > > { > > if ((f >= 0) && (f <= 1)) > > x->amp = f; > > else > > x->amp = 0; > > } > > > > > > static void sineq_tilde_freq (t_sineq_tilde *x, t_floatarg f) > > { > > if ((f > 0) && (f <= 20000)) > > x->freq = f; > > else > > x->freq = 0; > > } > > > > > > > > static void sineq_tilde_phase (t_sineq_tilde *x, t_floatarg f) > > { > > if ((f >= -1) && (f <= 1)) > > x->phase = f; > > else > > if (f < -1) x->phase = -1; > > if (f > 1) x->phase = 1; > > } > > > > > > static void sineq_tilde_vertoff (t_sineq_tilde *x, t_floatarg f) > > { > > if ((f >= -1) && (f <= 1)) > > x->vertoff = f; > > else > > if (f < -1) x->vertoff = -1; > > if (f > 1) x->vertoff = 1; > > } > > > > > > > > > > t_int *sineq_tilde_perform(t_int *w) > > { > > t_sineq_tilde *x = (t_sineq_tilde *)(w[1]); > > t_sample *out = (t_sample *)(w[2]); > > int n = (int) (w[3]); > > > > while (n--) > > { > > *out++ = > > x->amp*sin(2*PI*x->freq+(deg2rad(x->phase)))+x->vertoff; > > } > > return (w+4); > > } > > > > static void *sineq_tilde_new(t_symbol *s, int argc, t_atom *argv) > > { > > unsigned int numargs; > > t_sineq_tilde *x = (t_sineq_tilde *)pd_new(sineq_tilde_class); > > > > outlet_new(&x->x_obj, gensym("signal")); > > return (x); > > } > > > > > > void sineq_tilde_dsp(t_sineq_tilde *x, t_signal **sp) > > { > > dsp_add(sineq_tilde_perform, 3, x, > > sp[0]->s_vec, sp[0]->s_n); > > } > > > > void sineq_tilde_setup(void) > > { > > sineq_tilde_class = class_new(gensym("sineq~"), > > (t_newmethod)sineq_tilde_new, 0, > > sizeof(t_sineq_tilde), 0, > > A_DEFFLOAT, 0); > > class_addmethod(sineq_tilde_class, > > (t_method)sineq_tilde_dsp, gensym("dsp"), 0); > > CLASS_MAINSIGNALIN(sineq_tilde_class,t_sineq_tilde, f); > > class_addmethod(sineq_tilde, (t_method)sineq_tilde_amp, > > gensym("amp"), A_DEFFLOAT, 0); > > class_addmethod(sineq_tilde, (t_method)sineq_tilde_freq, > > gensym("freq"), A_DEFFLOAT, 0); > > class_addmethod(sineq_tilde, (t_method)sineq_tilde_phase, > > gensym("phase"), A_DEFFLOAT, 0); > > class_addmethod(sineq_tilde, (t_method)sineq_tilde_vertoff, > > gensym("vertoff"), A_DEFFLOAT, 0); > > } > > > > > > I didn't try this code but i think it should look like this > > > > You might want to post this thread in pd_list, then more people that > > is able to help would interact. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > It does a "make" successfully but I get this warning message > > > > > /usr/bin/ld: warning: cannot find entry symbol xport_dynamic; > > > > > defaulting to 00000000000007f0 > > > > > > > > > > > > > it's certainly caused by your makefile during linking, it's rather > > > > export_dynamic, you've certainly made a typo ^^ > > > > > > > > > > > > > > > > I thought so to but when I take a look at the make file it looks > > > fine > > > > here's a link to the code in (pastebin) > > > > > > > > > > Okay, in fact you should write: > > > > > > -Wl,-export-dynamic to pass it with gcc > > > > > > > > > This caused compilation to fail so I had to take it out > > > > > > > > > > What does the console say? > > > > > > > > > > > > > > > > > > > > > > > > > > > but when I try and add it in PD it says "couldn't create". I've > > > > looked > > > > > at the pan~ tutorial and the d_osc.c file as recommended, which > > > did > > > > > help. I tried to take pieces from the two which I thought were > > > > > applicable to my situation but I'm still having some issues. > > > > > > > > > > > > > maybe a little look into bassmu~ source code could also be > > > interesting > > > > > > > > > > > > I looked into it but this seems more complex than the d_osc.c file I > > > need easier at the moment not more complex > > > > > > > > > > > > I've found bassemu~.c perform part easier to understand than d_osc~.c > > that's why I suggested to have a look. > > > > > > > > > > > > > > > > > > > > > > > > > > > Do you know the name for the source file or know where I can find > > > it? > > > > I typed in bassmu~ > > > > in PD and nothing came back. > > > > > > > > > > ah sorry I've made a typo :D > > > it's bassemu~ > > > > > > you can get it in pd-extended externals sources > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Here's a link to the workflow (dropbox) > > > > > http://dl.dropbox.com/u/6576402/questions/pd/Sine_EQ_Diagram.jpg > > > > > > > > > > > > > > > Here's a link to the C code online (pastebin) > > > > > http://pastebin.com/9rK3szUE > > > > > > > > > > > > > > > > > > > > > > > > > My external is a reproduction of the sinewave equation with 4 > > > inputs > > > > > and one output my logic is to have 4 inlets one for the > > > > > frequency,amplitude,phase and vertical offset and an output for > > > the > > > > > created signal. Granted this isn't the final equation but this > > > will > > > > > help me understand how to create the full equation once done. If > > > you > > > > > want to see the full equation I'll be using here's a link to it > > > > below. > > > > > Basically it's a 1 second periodic signal with the sample rate > > at > > > > > 44100 which the equation gives me control over the > > > > > frequency,amplitude,phase and vertical offset, which will be > > > > > controlled by a usb midi controller. > > > > > > > > > > > > > > > Another question I have is what do I use for the t (time) for my > > > > final > > > > > equation is that the t_sample object in PD? or do I need to > > create > > > a > > > > > for loop counting from 1-44100 for a 1 second 44100 sampled > > > > equation? > > > > > > > > > > > > > > > http://dl.dropbox.com/u/6576402/questions/eq1.txt > > > > > > > > > > > > > > > > > > > > > > > > > PS: I'm compiling on ubuntu 10.04 using gcc > > > > > > > > > > On Sun, Sep 4, 2011 at 12:13 PM, Martin Peach < > > > > > [email protected] > wrote: > > > > > > > > > > > > > > > On 2011-09-04 16:52, Rick T wrote: > > > > > ... > > > > > > > > > > > > > > > > > > > > > > > > > I've been able to find instructions on how to create a hello > > world > > > > > C-external but not one that creates a simple sine wave from a > > > > sinewave > > > > > equation like A*sin(w*t+p) > > > > > ( https://secure.wikimedia.org/ wikipedia/en/wiki/Sine_wave ) > > Does > > > > > anyone > > > > > have one or know where to find one. > > > > > > > > > > The canonical reference is here: > > > > > http://iem.at/pd/externals- HOWTO/node6.html > > > > > You just need to plug your equation into the perform routine. > > > > > Also check the source for osc~ in d_osc.c of the Pd source, > > which > > > > uses > > > > > a fancy 32-bit float cosine table scanning method that was > > useful > > > > when > > > > > it mattered but is getting obsolete as a call to sin() is > > probably > > > > > just as fast nowadays. > > > > > > > > > > Martin > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > Pd-dev mailing list > > > > > [email protected] > > > > > http://lists.puredata.info/listinfo/pd-dev > > > > > > > > -- > > > > Patrice Colet > > > > > > > > > > > > > > > > Aloha > > > > and thanks for the help every bit helps -- > > > > > > -- > > > Patrice Colet > > > > > > > > > > > > > > > aloha > > > Rick > > > _______________________________________________ > > > Pd-dev mailing list > > > [email protected] > > > http://lists.puredata.info/listinfo/pd-dev > > > > -- > > Patrice Colet > > > > _______________________________________________ > > Pd-dev mailing list > > [email protected] > > http://lists.puredata.info/listinfo/pd-dev > > -- > Patrice Colet >
_______________________________________________ Pd-dev mailing list [email protected] http://lists.puredata.info/listinfo/pd-dev
