Beispiel #1
0
static void list2send_list(t_list2send *x, t_symbol *s, int ac, t_atom *av)
{
  if((ac >= 2) && (IS_A_FLOAT(av,0)))
  {
    int identifier_index = (int)atom_getintarg(0, ac, av);
    
    if(identifier_index < x->x_max)
    {
      if(x->x_snd_able[identifier_index])
      {
        t_symbol *sender = x->x_send_entries[identifier_index];
        
        if(sender->s_thing)
        {
          if(ac == 2)
          {
            if(IS_A_FLOAT(av, 1))
              pd_float(sender->s_thing, atom_getfloatarg(1, ac, av));
            else if(IS_A_SYMBOL(av, 1))
              pd_symbol(sender->s_thing, atom_getsymbolarg(1, ac, av));
          }
          else
            pd_list(sender->s_thing, &s_list, ac-1, av+1);
        }
      }
    }
  }
}
Beispiel #2
0
static void bindlist_list(t_bindlist *x, t_symbol *s,
    int argc, t_atom *argv)
{
    t_bindelem *e;
    for (e = x->b_list; e; e = e->e_next)
        pd_list(e->e_who, s, argc, argv);
}
Beispiel #3
0
void inmidi_clk(double timing)
{

    static t_float prev = 0;
    static t_float count = 0;
    t_float cur,diff;

    if (pd_this->pd_midiclkin_sym->s_thing)
    {
        t_atom at[2];
        diff =timing - prev;
        count++;
   
        if (count == 3)
        {  /* 24 count per quoter note */
             SETFLOAT(at, 1 );
             count = 0;
        }
        else SETFLOAT(at, 0);

        SETFLOAT(at+1, diff);
        pd_list(pd_this->pd_midiclkin_sym->s_thing, &s_list, 2, at);
        prev = timing;
    }
}
Beispiel #4
0
void radio_output(t_radio *x)
{
    int i;
    t_atom av[256];
    if(x->f_mode)
    {
        for(i = 0; i < x->f_nitems; i++)
            atom_setfloat(av+i, (float)x->f_items[i]);
        outlet_list(x->f_out, &s_list, x->f_nitems, av);
        if(ebox_getsender((t_ebox *) x))
            pd_list(ebox_getsender((t_ebox *) x), &s_list, x->f_nitems, av);
    }
    else
    {
        for(i = 0; i < x->f_nitems; i++)
        {
            if(x->f_items[i] != 0)
            {
                outlet_float(x->f_out, (float)i);
                if(ebox_getsender((t_ebox *) x))
                    pd_float(ebox_getsender((t_ebox *) x), (float)i);
            }
        }
    }
}
Beispiel #5
0
void outlet_list(t_outlet *x, t_symbol *s, int argc, t_atom *argv)
{
    t_outconnect *oc;
    char c;
    if (&c < stacklimit)
    	outlet_stackerror(x);
    else for (oc = x->o_connections; oc; oc = oc->oc_next)
    	pd_list(oc->oc_to, s, argc, argv);
}
Beispiel #6
0
static void dist_list(t_dist *x, t_symbol *s, int argc, t_atom *argv)
{
	int i;

	for(i = 0; i <= x->x_rec; i++)
	{
		if (x->x_sym[i]->s_thing) pd_list(x->x_sym[i]->s_thing, s, argc, argv);
	}
}
Beispiel #7
0
Datei: m_obj.c Projekt: toto/ipd
static void inlet_list(t_inlet *x, t_symbol *s, int argc, t_atom *argv)
{
    t_atom at;
    if (x->i_symfrom == &s_list || x->i_symfrom == &s_float
        || x->i_symfrom == &s_symbol || x->i_symfrom == &s_pointer)
            typedmess(x->i_dest, x->i_symto, argc, argv);
    else if (!x->i_symfrom) pd_list(x->i_dest, s, argc, argv);
    else inlet_wrong(x, &s_list);
}
Beispiel #8
0
void inmidi_sysex(int portno, int byte)
{
    t_atom at[2];
    if (pd_this->pd_sysexin_sym->s_thing)
    {
        SETFLOAT(at, byte);
        SETFLOAT(at+1, portno);
        pd_list(pd_this->pd_sysexin_sym->s_thing, 0, 2, at);
    }
}
Beispiel #9
0
void inmidi_realtimein(int portno, int SysMsg)
{
    if (pd_this->pd_midirealtimein_sym->s_thing)
    {
        t_atom at[2];
        SETFLOAT(at, portno);
        SETFLOAT(at+1, SysMsg);
        pd_list(pd_this->pd_midirealtimein_sym->s_thing, &s_list, 2, at);
    }
}
Beispiel #10
0
void outlet_list(t_outlet *x, t_symbol *s, int argc, t_atom *argv)
{
    t_outconnect *oc;
    if(++stackcount >= STACKITER)
        outlet_stackerror(x);
    else
    for (oc = x->o_connections; oc; oc = oc->oc_next)
        pd_list(oc->oc_to, s, argc, argv);
    --stackcount;
}
Beispiel #11
0
static void grab_list(t_grab *x, t_symbol *s, int ac, t_atom *av)
{
    t_pd *grabbed;
    grab_start(x);
    while (grabbed = grab_next(x))
    {
	pd_list(grabbed, s, ac, av);
	grab_restore(x);
    }
}
Beispiel #12
0
void inmidi_programchange(int portno, int channel, int value)
{
    if (pd_this->pd_pgmin_sym->s_thing)
    {
        t_atom at[2];
        SETFLOAT(at, value + 1);
        SETFLOAT(at+1, (channel + (portno << 4) + 1));
        pd_list(pd_this->pd_pgmin_sym->s_thing, &s_list, 2, at);
    }
}
Beispiel #13
0
void inmidi_aftertouch(int portno, int channel, int value)
{
    if (pd_this->pd_touchin_sym->s_thing)
    {
        t_atom at[2];
        SETFLOAT(at, value);
        SETFLOAT(at+1, (channel + (portno << 4) + 1));
        pd_list(pd_this->pd_touchin_sym->s_thing, &s_list, 2, at);
    }
}
Beispiel #14
0
void inmidi_pitchbend(int portno, int channel, int value)
{
    if (bendin_sym->s_thing)
    {
        t_atom at[2];
        SETFLOAT(at, value);
        SETFLOAT(at+1, (channel + (portno << 4) + 1));
        pd_list(bendin_sym->s_thing, &s_list, 2, at);
    }
}
Beispiel #15
0
void inmidi_byte(int portno, int byte)
{
    t_atom at[2];
    if (midiin_sym->s_thing)
    {
        SETFLOAT(at, byte);
        SETFLOAT(at+1, portno + 1);
        pd_list(midiin_sym->s_thing, 0, 2, at);
    }
}
Beispiel #16
0
void pd_forwardmess(t_pd *x, int argc, t_atom *argv)
{
    if (argc)
    {
        t_atomtype t = argv->a_type;
        if (t == A_SYMBOL) pd_typedmess(x, argv->a_w.w_symbol, argc-1, argv+1);
        else if (t == A_POINTER)
        {
            if (argc == 1) pd_pointer(x, argv->a_w.w_gpointer);
            else pd_list(x, &s_list, argc, argv);
        }
        else if (t == A_FLOAT)
        {
            if (argc == 1) pd_float(x, argv->a_w.w_float);
            else pd_list(x, &s_list, argc, argv);
        }
        else bug("pd_forwardmess");
    }

}
Beispiel #17
0
Datei: m_pd.c Projekt: Tzero2/pd
static void bindlist_list(t_bindlist *x, t_symbol *s,
    int argc, t_atom *argv)
{
    t_bindelem *e;
	change_bindlist_via_graph = 1;
    for (e = x->b_list; e; e = e->e_next)
        if (e->e_who != NULL) pd_list(e->e_who, s, argc, argv);
	if (change_bindlist_via_graph > 1)
		bindlist_cleanup(x);
	change_bindlist_via_graph = 0;
}
Beispiel #18
0
void inmidi_polyaftertouch(int portno, int channel, int pitch, int value)
{
    if (pd_this->pd_polytouchin_sym->s_thing)
    {
        t_atom at[3];
        SETFLOAT(at, pitch);
        SETFLOAT(at+1, value);
        SETFLOAT(at+2, (channel + (portno << 4) + 1));
        pd_list(pd_this->pd_polytouchin_sym->s_thing, &s_list, 3, at);
    }
}
Beispiel #19
0
void inmidi_noteon(int portno, int channel, int pitch, int velo)
{
    if (pd_this->pd_notein_sym->s_thing)
    {
        t_atom at[3];
        SETFLOAT(at, pitch);
        SETFLOAT(at+1, velo);
        SETFLOAT(at+2, (channel + (portno << 4) + 1));
        pd_list(pd_this->pd_notein_sym->s_thing, &s_list, 3, at);
    }
}
Beispiel #20
0
void inmidi_controlchange(int portno, int channel, int ctlnumber, int value)
{
    if (pd_this->pd_ctlin_sym->s_thing)
    {
        t_atom at[3];
        SETFLOAT(at, ctlnumber);
        SETFLOAT(at+1, value);
        SETFLOAT(at+2, (channel + (portno << 4) + 1));
        pd_list(pd_this->pd_ctlin_sym->s_thing, &s_list, 3, at);
    }
}
Beispiel #21
0
void matrixctrl_output(t_matrixctrl *x, int i, int j)
{
    t_atom av[3];
    if(i < x->f_size.x && j < x->f_size.y)
    {
        atom_setfloat(av, i);
        atom_setfloat(av+1, j);
        atom_setfloat(av+2,  x->f_values[j * (long)x->f_size.x + i]);
    }
    outlet_list(x->f_out_cell, &s_list, 3, av);
    if(ebox_getsender((t_ebox *) x))
        pd_list(ebox_getsender((t_ebox *) x), &s_list, 3, av);}
Beispiel #22
0
int libpd_list(const char *recv, int n, t_atom *v) {
  t_pd *dest;
  sys_lock();
  dest = get_object(recv);
  if (dest == NULL)
  {
    sys_unlock();
    return -1;
  }
  pd_list(dest, &s_list, n, v);
  sys_unlock();
  return 0;
}
Beispiel #23
0
void hoa_space_output(t_hoa_space *x)
{
    for(int i = 0; i < x->f_number_of_microphones; i++)
        atom_setfloat(x->f_tempory_values+i, x->f_microphonesValues[i]);
    
    outlet_list(x->f_out, 0L, x->f_number_of_microphones, x->f_tempory_values);
    ebox_invalidate_layer((t_ebox *)x, gensym("harmonics_layer"));
    ebox_invalidate_layer((t_ebox *)x, gensym("microphones_layer"));
    ebox_invalidate_layer((t_ebox *)x, gensym("center_layer"));
    ebox_redraw((t_ebox *)x);
    if(ebox_getsender((t_ebox *) x))
        pd_list(ebox_getsender((t_ebox *) x), &s_list, x->f_number_of_microphones, x->f_tempory_values);
}
Beispiel #24
0
static void inlet_list(t_inlet *x, t_symbol *s, int argc, t_atom *argv)
{
    if (x->i_symfrom == &s_list || x->i_symfrom == &s_float
        || x->i_symfrom == &s_symbol || x->i_symfrom == &s_pointer)
            typedmess(x->i_dest, x->i_symto, argc, argv);
    else if (!x->i_symfrom) pd_list(x->i_dest, s, argc, argv);
    else if (!argc)
      inlet_bang(x);
    else if (argc==1 && argv->a_type == A_FLOAT)
      inlet_float(x, atom_getfloat(argv));
    else if (argc==1 && argv->a_type == A_SYMBOL)
      inlet_symbol(x, atom_getsymbol(argv));
    else inlet_wrong(x, &s_list);
}
Beispiel #25
0
static void plane_output(t_plane *x)
{
    t_atom argv[2];
    t_pd* send = ebox_getsender((t_ebox *) x);
    const float xval = ebox_parameter_getvalue((t_ebox *)x, 1);
    const float yval = ebox_parameter_getvalue((t_ebox *)x, 2);
    atom_setfloat(argv, xval);
    atom_setfloat(argv+1, yval);
    outlet_list(x->f_out_x, &s_list, 2, argv);
    outlet_float(x->f_out_y, yval);
    if(send)
    {
        pd_list(send, &s_list, 2, argv);
    }
}
Beispiel #26
0
void plane_output(t_plane *x)
{
    t_atom argv[2];
    if(ebox_isdrawable((t_ebox *)x))
    {
        outlet_float(x->f_out_x, x->f_position.x);
        outlet_float(x->f_out_y, x->f_position.y);
        if(ebox_getsender((t_ebox *) x))
        {
            atom_setfloat(argv, x->f_position.x);
            atom_setfloat(argv+1, x->f_position.y);
            pd_list(ebox_getsender((t_ebox *) x), &s_list, 2, argv);
        }
    }
}
Beispiel #27
0
static void breakpoints_dump(t_breakpoints* e)
{
     t_atom argv[50];
     int argc= 0;
     t_atom* a = argv;
     int i;

     SETFLOAT(a,e->finalvalues[0]);argc++;
     for (i=1;i <= e->last_state;i++) {
	  SETFLOAT(argv+argc,e->duration[i] - e->duration[i-1]);
	  argc++;
	  SETFLOAT(argv+argc,e->finalvalues[i]);
	  argc++;
     }
     outlet_list(e->out2,&s_list,argc,(t_atom*)&argv);
     if (e->d_sym != &s_) pd_list(e->d_sym->s_thing, &s_list, argc, argv);
     //pd_float(x->s_sym->s_thing, val);
     //EXTERN void pd_float(t_pd *x, t_float f);
     //EXTERN void outlet_list(t_outlet *x, t_symbol *s, int argc, t_atom *argv);
     //EXTERN void pd_list(t_pd *x, t_symbol *s, int argc, t_atom *argv);
     /////////////////////////////////////////////////////
}
Beispiel #28
0
static void send_list(t_send *x, t_symbol *s, int argc, t_atom *argv)
{
    if (x->x_sym->s_thing) pd_list(x->x_sym->s_thing, s, argc, argv);
}
Beispiel #29
0
static void eproxy_list(t_eproxy *x, t_symbol* s, int argc, t_atom* argv)
{
    t_eobj *z = (t_eobj *)x->p_owner;
    z->o_current_proxy = x->p_index;
    pd_list((t_pd *)x->p_owner, s, argc, argv);
}
Beispiel #30
0
int pd_extern_sched(char *flags)
{
    int naudioindev, audioindev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV];
    int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV];
    int i, j, rate, advance, callback, chin, chout, fill = 0, c, blocksize;
    t_binbuf *b = binbuf_new();

    sys_get_audio_params(&naudioindev, audioindev, chindev,
        &naudiooutdev, audiooutdev, choutdev, &rate, &advance, &callback,
            &blocksize);

    chin = (naudioindev < 1 ? 0 : chindev[0]);
    chout = (naudiooutdev < 1 ? 0 : choutdev[0]);

    /* fprintf(stderr, "Pd plug-in scheduler called, chans %d %d, sr %d\n",
        chin, chout, (int)rate); */
    sys_setchsr(chin, chout, rate);
    sys_audioapi = API_NONE;
    while ((c = getchar()) != EOF)
    {
        if (c == ';')
        {
            int n;
            t_atom *ap;
            binbuf_text(b, inbuf, fill);
            n = binbuf_getnatom(b);
            ap = binbuf_getvec(b);
            fill = 0;
            if (n > 0 && ap[0].a_type == A_FLOAT)
            {
                /* a list -- take it as incoming signals. */
                int chan, nchan = n/DEFDACBLKSIZE;
                t_sample *fp;
                for (i = chan = 0, fp = sys_soundin; chan < nchan; chan++)
                    for (j = 0; j < DEFDACBLKSIZE; j++)
                        *fp++ = atom_getfloat(ap++);
                for (; chan < chin; chan++)
                    for (j = 0; j < DEFDACBLKSIZE; j++)
                        *fp++ = 0;
                sched_tick(sys_time+sys_time_per_dsp_tick);
                sys_pollgui();
#if defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__GNU__)
                pollwatchdog();
#endif
                printf(";\n");
                for (i = chout*DEFDACBLKSIZE, fp = sys_soundout; i--; fp++)
                {
                    printf("%g\n", *fp);
                    *fp = 0;
                }
                printf(";\n");
                fflush(stdout);
            }
            else if (n > 1 && ap[0].a_type == A_SYMBOL)
            {
                t_pd *whom = ap[0].a_w.w_symbol->s_thing;
                if (!whom)
                    error("%s: no such object", ap[0].a_w.w_symbol->s_name);
                else if (ap[1].a_type == A_SYMBOL)
                    typedmess(whom, ap[1].a_w.w_symbol, n-2, ap+2);
                else pd_list(whom, 0, n-1, ap+1);
            }
        }
        else if (fill < BUFSIZE)
            inbuf[fill++] = c;
        else if (fill == BUFSIZE)
            fprintf(stderr, "pd-extern: input buffer overflow\n");
    }
    return (0);
}