Hello,
Thanks for pointing me to the concept of proxy inlets.
I've tried to implement a test external using this code: http://puredata.info/Members/mjmogo/proxy-example-for-pd.zip/view
In the linked code, they're basically making another class of type t_proxy:
typedef struct _proxy { t_pd l_pd; // if you want to maintain a pointer to your main class, // if not, besure to change the 'init' function void *yourclass; } t_proxy;
This struct is declared as a member of the main class's struct:
typedef struct _yourclass { t_object x_obj; t_proxy pxy; } t_yourclass;
and the new inlet is created in the "new" method of the main class (yourclass_new) but with the destination pointing to the proxy rather than the main class. This is done via:
inlet_new(&x -> x_obj, &x -> pxy.l_pd, 0, 0); with no selectors passed. However, this only makes a control inlet.
Trying out:
inlet_new(&x -> x_obj, &x -> pxy.l_pd, &s_signal, &s_signal); makes a signal inlet, but it seems like the signal values are only accessible via the main class's dsp/perform methods and not via the dsp/perform methods i tried to make for proxy (I call CLASS_MAINSIGNALIN in both the setup of the main class and the proxy class). That's not a huge deal, but I also declared a float method within proxy's setup via class_addfloat(proxy_class, (t_method)proxy_post); where proxy_post just posts to the pd window whenever it receives a float and this method only seems to be called when I declare the inlet the first way with no selectors (when it's a control inlet) and not the second way passing the signal selectors (making it a signal inlet). In the second way, the float just acts like a substitute for a signal (which is what I don't want).
My main goal is to have a second signal inlet that can also accept floats not as a substitute for a signal but calls a separate method. Any ideas? Thanks!
www.derekxkwan.com