36 typedef struct _audiosend{
40 t_symbol *attr_target;
42 t_object *obj_direct_target;
45 float *audio_in[MAX_NUM_CHANNELS];
73 void audiosend_assist(t_audiosend *x,
void *b,
long msg,
long arg,
char *dst);
92 void audiosend_dsp(t_audiosend *x, t_signal **sp,
short *count);
105 static t_class *s_audiosend_class;
110 void send_tilde_initclass(
void)
118 sizeof(t_audiosend), (method)NULL, A_GIMME, 0);
124 class_addmethod(c, (method)object_obex_dumpout,
"dumpout", A_CANT,0);
127 attr = attr_offset_new(
"target", _sym_symbol, attrflags,
129 class_addattr(c, attr);
135 class_register(CLASS_BOX, c);
136 s_audiosend_class = c;
146 long attrstart = attr_args_offset(argc, argv);
147 t_audiosend *x = (t_audiosend *)object_alloc(s_audiosend_class);
151 x->dumpout = outlet_new(x, NULL);
152 object_obex_store(x, _sym_dumpout, (t_object *)x->dumpout);
154 x->attr_target = _sym_nothing;
157 for (i=0; i<attrstart; i++) {
158 if (argv[i].a_type == A_LONG)
159 x->num_inputs = atom_getlong(argv+i);
160 else if (argv[i].a_type == A_SYM)
161 x->attr_target = atom_getsym(argv+i);
164 dsp_setup((t_pxobject *)x, x->num_inputs);
165 x->obj.z_misc = Z_NO_INPLACE;
166 attr_args_process(x, argc, argv);
174 dsp_free((t_pxobject *)x);
185 strcpy(dst,
"input to send to a named module");
187 strcpy(dst,
"dumpout");
194 t_symbol **moduleNames = NULL;
198 jamoma_get_all_module_names(&numModules, &moduleNames);
200 atom_setsym(a+0, SymbolGen(
"clear"));
201 outlet_anything(x->dumpout, SymbolGen(
"menu"), 1, a);
203 atom_setsym(a+0, SymbolGen(
"append"));
204 for (i=0; i<numModules; i++) {
205 atom_setsym(a+1, moduleNames[i]);
206 outlet_anything(x->dumpout, SymbolGen(
"menu"), 2, a);
209 sysmem_freeptr(moduleNames);
215 t_audiosend *x = (t_audiosend*)(w[1]);
217 object_method(x->obj_direct_target, SymbolGen(
"remoteaudio"), x->audio_in, (
long)(w[2]));
224 long numInputs = x->num_inputs;
228 if (x->attr_target && x->attr_target != _sym_nothing) {
229 hub = jamoma_get_hub_for_module_named(x->attr_target);
230 if (hub != x->obj_target) {
235 x->obj_direct_target = (t_object*)object_method(hub, SymbolGen(
"getobj_audioin"));
239 for (i=0, j=0; i<numInputs; i++) {
242 x->audio_in[i] = (t_float*)sp[i]->s_vec;
258 x->attr_target = atom_getsym(argv);
259 hub = jamoma_get_hub_for_module_named(x->attr_target);
262 x->obj_direct_target = (t_object*)object_method(hub, SymbolGen(
"getobj_audioin"));
void audiosend_free(t_audiosend *x)
Free up and dispose of the object.
void audiosend_bang(t_audiosend *x)
When banged, fill a menu with potential targets.
void audiosend_assist(t_audiosend *x, void *b, long msg, long arg, char *dst)
Method for displaying assist strings for inlets and outlets.
t_max_err audiosend_attr_settarget(t_audiosend *x, void *attr, long argc, t_atom *argv)
Set the hub of the module we are sending to as an attribute.
void * audiosend_new(t_symbol *s, long argc, t_atom *argv)
Called at object instantiation.
t_int * audiosend_perform(t_int *w)
Audio perform method for the object.
void audiosend_dsp(t_audiosend *x, t_signal **sp, short *count)
The DSP method for the object, called when compiling the audio chain.