Hi Wade, a few very superficial remarks from my side (i'm in a hurry....).
following points
//why do I have 6 outlets defined here but 7 show up on the sphere~ object
box?
The reason is that for a signal object the leftmost signal inlet is implicit. It's always there.
In sphere_tilde_perform:
//no inclusion? what happens to w[0]?
Miller knows it.
t_sphere_tilde *ref = (t_sphere_tilde *)(w[1]); t_sample *in1 = (t_sample *)(w[2]); //centerx t_sample *in2 = (t_sample *)(w[3]); //centery t_sample *in3 = (t_sample *)(w[4]); //centerz t_sample *in4 = (t_sample *)(w[5]); //radius t_sample *in5 = (t_sample *)(w[6]); //conrolx t_sample *in6 = (t_sample *)(w[7]); //conroly t_sample *in7 = (t_sample *)(w[8]); //conrolz t_sample *out = (t_sample *)(w[9]); //outlet int n = (int)(w[10]);//number of samples in block
Look good.
Apart from that you should possibly clean up the code a bit..... one running index would probably be more clear and efficient than incrementing each pointer individually.
void sphere_tilde_dsp(t_sphere_tilde *ref, t_signal **sp) { dsp_add(sphere_tilde_perform, 10, ref, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[3]->s_vec,
sp[4]->s_vec, sp[5]->s_vec, sp[6]->s_vec, sp[0]->s_n);
}
You announce that you are passing 10 arguments here, while you are passing only 9!! Hence, you should pass another sp[7]->s_vec. Remember that you have 7 inbound and 1 outbound signals.
//optional question: what happens if I want to have an optional //number of defaults within the object box? //e.g. [sphere~ centerx centery centerz radius]
This won't work if your centerx, centery, centerz , radius are passed in as signals. Signals can't have a default value defined inside the external. Probably you don't need signals for these values? Will simple float messages do it as well?
best greetings, Thomas