[PD] arguments not passed to an external

Alexandros Drymonitis adrcki at gmail.com
Sun May 25 22:12:55 CEST 2014


On Sun, May 25, 2014 at 10:28 PM, Jonathan Wilkes <jancsika at yahoo.com>wrote:

> What's your setup routine for the external look like?
>
void tabPowSine_tilde_setup(void)
{
        // Initialize the class
        tabPowSine_class = class_new(gensym("tabPowSine~"),
(t_newmethod)tabPowSine_new, (t_method)tabPowSine_free,
sizeof(t_tabPowSine), 0, A_GIMME, 0);

        // Specify signal input, with automatic float to signal conversion
        CLASS_MAINSIGNALIN(tabPowSine_class, t_tabPowSine, x_f);

        // Bind the DSP method, which is called when the DACs are turned on
        class_addmethod(tabPowSine_class, (t_method)tabPowSine_dsp,
gensym("dsp"), A_CANT, 0);

        // Print authorship to Pd window
        post("powSine~: Sinewave oscillator raised to a power\n external by
Alexandros Drymonitis");
}

Lyon's book explaing what A_GIMME does, but not A_CANT. I checked m_pd.h a
bit but didn't make much out of it. It is there where the problem lies?

>
> -Jonathan
>
>
>   On Sunday, May 25, 2014 2:14 PM, Alexandros Drymonitis <adrcki at gmail.com>
> wrote:
>
>
> I'm building an external (my very first one) and it's working as expected,
> only the arguments I type when I create it are not passed and the variables
> set to get values from these arguments are set to zero.
>
> The new instance routine prototype is this:
> void *tabPowSine_new(t_symbol *s, short argc, t_atom argv)
>
> and in this routine I type the following two lines:
> if(argc >= 1) { x->x_frequency = atom_getfloatarg(0, argc, argv); }
> if(argc >= 2) { x->x_power = atom_getfloatarg(1, argc, argv); }
>
> but if I create an object like this [tabPowSine~ 220 0.5], the variables
> x_frequency and x_power (declared in the object structure) won't get these
> values. As soon as I send a signal or float to the respective inlet,
> everything works fine.
>
> Also, I get a warning when I type "make" in the terminal, to make the Pd
> object, which is:
> tabPowSine~.c:60:32: warning: unused parameter 's' [-Wunused-parameter]
>
> Can I just ommint the t_symbol *s?
> I'm following Eric Lyon's book for writing externals, and he's passing
> this symbol pointer (it is a symbol pointer, right?) to the new instance
> routine...
>
> Final question, so that I don't send three different emails, is it
> preferable to use a table lookup cosine oscillator than using the cos
> function in the perform routine? Is there significant difference in the CPU
> consumption?
>
> _______________________________________________
> Pd-list at lists.iem.at mailing list
> UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20140525/2b42d73f/attachment-0001.html>


More information about the Pd-list mailing list