コード例 #1
0
ファイル: for++.c プロジェクト: kmatheussen/libpd
static void forpp_bang(t_forpp *x)
{
  x->x_cur = x->x_beg;
  outlet_float(x->x_obj.ob_outlet, x->x_cur);
  x->x_cur += x->x_incr;
  if(x->x_incr > 0)
  {
    if(x->x_cur <= x->x_end)
      clock_delay(x->x_clock, x->x_delay);
    else
    {
      clock_unset(x->x_clock);
      clock_delay(x->x_clock2, x->x_delay);
    }
  }
  else
  {
    if(x->x_cur >= x->x_end)
      clock_delay(x->x_clock, x->x_delay);
    else
    {
      clock_unset(x->x_clock);
      clock_delay(x->x_clock2, x->x_delay);
    }
  }
  
}
コード例 #2
0
ファイル: for++.c プロジェクト: kmatheussen/libpd
static void forpp_stop(t_forpp *x)
{
  if(x->x_incr > 0)
    x->x_cur = x->x_end + 1;
  else
    x->x_cur = x->x_end - 1;
  clock_unset(x->x_clock);
  clock_unset(x->x_clock2);
}
bool flext::Timer::Reset()
{
#if FLEXT_SYS == FLEXT_SYS_PD
    clock_unset(clk);
#elif FLEXT_SYS == FLEXT_SYS_MAX
    clock_unset(clk);
    if(queued) ::qelem_unset(qelem);
#else
    #error Not implemented
#endif
    return true;
}
コード例 #4
0
ファイル: Manager.cpp プロジェクト: kmatheussen/libpd
void GemMan :: destroyWindow()
{
  GemMan::pleaseDestroy=false;

  // don't want to get rid of this
  //  if (s_singleContext) return;

  // nothing to destroy...
  if (!m_windowState) return;

  stopRendering();
  clock_unset(s_windowClock);
  s_windowClock = NULL;

  glFlush();
  glFinish();

  destroyGemWindow(gfxInfo);

  m_windowState = 0;
    
  windowCleanup();

  // this should really go into the GemWinCreate<OS> files::

  // reestablish the const glxContext 
  /* this crashes on linux with intel cards */
  gemWinMakeCurrent(constInfo);
  s_windowRun = 0;
}
コード例 #5
0
ファイル: temperature.c プロジェクト: MatiasDelera/pd
static void temperature_time(t_temperature *x, t_floatarg f)
{
	x->x_time = (t_int)f;
	if(x->x_time < 1) x->x_time = 1;
	clock_unset(x->x_clock);
	clock_delay(x->x_clock, x->x_time);
}
コード例 #6
0
ファイル: autotune~.c プロジェクト: Angeldude/pd
// Destroy
void autotune_free(t_autotune *x)
{
	//dsp_free((t_object *)x);		// Always call dsp_free first in this routine
	unsigned int ti;
	clock_unset(x->clock);
	clock_free(x->clock); 
	fft_des(x->fx);
	freebytes(x->cbi,0);
	freebytes(x->cbf,0);
	freebytes(x->cbo,0);
	//freebytes(x->cbonorm,0);
	freebytes(x->cbwindow,0);
	freebytes(x->hannwindow,0);
	freebytes(x->acwinv,0);
	freebytes(x->frag,0);
	freebytes(x->ffttime,0);
	freebytes(x->fftfreqre,0);
	freebytes(x->fftfreqim,0);
	free(x->fk);
	free(x->fb);
	free(x->fc);
	free(x->frb);
	free(x->frc);
	free(x->fsmooth);
	free(x->fsig);
	for (ti=0; ti<x->ford; ti++) {
		free(x->fbuff[ti]);
	}
	free(x->fbuff);
	free(x->ftvec);
}
コード例 #7
0
static void qlist_rewind(t_qlist *x)
{
    x->x_onset = 0;
    if (x->x_clock) clock_unset(x->x_clock);
    x->x_whenclockset = 0;
    x->x_reentered = 1;
}
コード例 #8
0
ファイル: senseX.cpp プロジェクト: opendragon/Max_Objects
/*------------------------------------ senseXFree ---*/
static void
senseXFree(SenseXData * xx)
{
    if (xx)
    {
        xx->fStopping = true;
        if (xx->fPollClock)
        {
            clock_unset(xx->fPollClock);
            clock_free(reinterpret_cast<t_object *>(xx->fPollClock));
            xx->fPollClock = NULL;
        }
        if (xx->fPollQueue)
        {
            qelem_unset(xx->fPollQueue);
            qelem_free(xx->fPollQueue);
            xx->fPollQueue = NULL;
        }
        if (xx->fProxy)
        {
            freeobject(reinterpret_cast<t_object *>(xx->fProxy));
            xx->fProxy = NULL;
        }
    }
} // senseXFree
コード例 #9
0
ファイル: c.incdec.cpp プロジェクト: EQ4/CreamLibrary
static void incdec_mouseup(t_incdec *x, t_object *patcherview, t_pt pt, long modifiers)
{
    x->f_mouse_down = 0;
    clock_unset(x->f_clock);
    ebox_invalidate_layer((t_ebox *)x, cream_sym_background_layer);
    ebox_redraw((t_ebox *)x);
}
コード例 #10
0
ファイル: tab_cross_corr.c プロジェクト: Angeldude/pd
static void tab_cross_corr_tick(t_tab_cross_corr *x)
{
  x->x_counter++;
  if(x->x_counter < x->x_n)
  {
    iemarray_t *vec_src1, *vec_src2, *vec_dst;
    t_float sum;
    int j, m;
    
    vec_src1 = x->x_beg_mem_src1 + x->x_counter;
    vec_src2 = x->x_beg_mem_src2;
    vec_dst = x->x_beg_mem_dst + x->x_counter;
    m = x->x_size_src2;
    sum = 0.0f;
    for(j=0; j<m; j++)
    {
      sum += iemarray_getfloat(vec_src1, j)*iemarray_getfloat(vec_src2, j);
    }
    iemarray_setfloat(vec_dst, 0, sum*x->x_factor);
    clock_delay(x->x_clock, x->x_delay);
  }
  else
  {
    t_garray *a;
    
    clock_unset(x->x_clock);
    outlet_bang(x->x_obj.ob_outlet);
    a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
    garray_redraw(a);
  }
}
コード例 #11
0
ファイル: implicitmap.c プロジェクト: malloch/implicitmap
// *********************************************************
// -(query handler)-----------------------------------------
void impmap_on_query(mapper_signal sig, mapper_id instance, const void *value,
                     int count, mapper_timetag_t *time)
{
    t_signal_ref *ref = mapper_signal_user_data(sig);
    if (!ref) {
        post("implicitmap: no user data for signal '%s' in on_input()",
             mapper_signal_name(sig));
    }
    impmap *x = ref->x;

    int i, len = mapper_signal_length(sig);
    float *valf = (float*)value;
    for (i = 0; i < len; i++) {
        if (ref->offset + i >= MAX_LIST) {
            post("mapper: Maximum vector length exceeded!");
            break;
        }
        if (valf)
            x->snapshots->outputs[ref->offset + i] = valf[i];
    }

    x->query_count --;

    if (x->query_count == 0) {
        clock_unset(x->timeout);
        impmap_output_snapshot(x);
    }
}
コード例 #12
0
ファイル: s2f~.c プロジェクト: porres/Porres-ELS
static void s2f_stop(t_s2f *x){
    x->x_stopped = 1;
    if (x->x_on){
        clock_unset(x->x_clock);
        x->x_on = 0;
    }
}
コード例 #13
0
ファイル: x_time.c プロジェクト: porres/pure-data
static void line_float(t_line *x, t_float f)
{
    double timenow = clock_getsystime();
    if (x->x_gotinlet && x->x_in1val > 0)
    {
        if (timenow > x->x_targettime) x->x_setval = x->x_targetval;
        else x->x_setval = x->x_setval + x->x_1overtimediff *
            (timenow - x->x_prevtime)
            * (x->x_targetval - x->x_setval);
        x->x_prevtime = timenow;
        x->x_targettime = clock_getsystimeafter(x->x_in1val);
        x->x_targetval = f;
        line_tick(x);
        x->x_gotinlet = 0;
        x->x_1overtimediff = 1./ (x->x_targettime - timenow);
        if (x->x_grain <= 0)
            x->x_grain = DEFAULTLINEGRAIN;
        clock_delay(x->x_clock,
            (x->x_grain > x->x_in1val ? x->x_in1val : x->x_grain));

    }
    else
    {
        clock_unset(x->x_clock);
        x->x_targetval = x->x_setval = f;
        outlet_float(x->x_obj.ob_outlet, f);
    }
    x->x_gotinlet = 0;
}
コード例 #14
0
ファイル: mtr.c プロジェクト: EQ4/PdPulpito
static void mtrack_setmode(t_mtrack *tp, int newmode)
{
    if (tp->tr_mode == MTR_PLAYMODE)
    {
	clock_unset(tp->tr_clock);
	tp->tr_ixnext = 0;
    }
    switch (tp->tr_mode = newmode)
    {
    case MTR_STEPMODE:
	break;
    case MTR_RECMODE:
	binbuf_clear(tp->tr_binbuf);
	tp->tr_prevtime = clock_getlogicaltime();
	break;
    case MTR_PLAYMODE:
	tp->tr_atdelta = 0;
	tp->tr_ixnext = 0;
	tp->tr_prevtime = 0.;
	mtrack_donext(tp);
	break;
    default:
	loudbug_bug("mtrack_setmode");
    }
}
コード例 #15
0
ファイル: xeq.c プロジェクト: pure-data/xeq
void xeq_rewind(t_xeq *x)
{
    xeqit_rewind(&x->x_autoit);
    xeqit_rewind(&x->x_stepit);  /* LATER rethink */
    if (x->x_clock) clock_unset(x->x_clock);
    x->x_whenclockset = 0;
}
コード例 #16
0
ファイル: Snapshot.c プロジェクト: Git689/libpd-cyclone-ios
static void snapshot_stop(t_snapshot *x)
{
    x->x_stopped = 1;
    if (x->x_on)
    {
	clock_unset(x->x_clock);
	x->x_on = 0;
    }
}
コード例 #17
0
ファイル: senseX.cpp プロジェクト: opendragon/Max_Objects
/*------------------------------------ senseXDoMessage ---*/
void
senseXDoMessage(SenseXData * xx)
{
    if (! xx->fStopping)
    {
        short prevLock;

        switch (xx->fState)
        {
            case kAwaitingFirstMessage:
                prevLock = lockout_set(1);
                if (0 > xx->fOnDelay)
                {
                    clock_delay(xx->fPollClock, xx->fOnDelay);
                    xx->fState = kBetweenMessages;
                }
                else
                {
                    outlet_int(xx->fResultOut, 1);
                    if (0 > xx->fOffDelay)
                    {
                        clock_delay(xx->fPollClock, xx->fOffDelay);
                        xx->fState = kAfterSecondMessage;
                    }
                    else
                    {
                        outlet_int(xx->fResultOut, 0);
                        xx->fState = kAwaitingFirstMessage;
                    }
                }
                lockout_set(prevLock);
                break;

            case kBetweenMessages:
                prevLock = lockout_set(1);
                outlet_int(xx->fResultOut, 1);
                clock_unset(xx->fPollClock);
                if (0 < xx->fOffDelay)
                {
                    clock_delay(xx->fPollClock, xx->fOffDelay);
                    xx->fState = kAfterSecondMessage;
                }
                else
                {
                    outlet_int(xx->fResultOut, 0);
                    xx->fState = kAwaitingFirstMessage;
                }
                lockout_set(prevLock);
                break;

            default:
                break;
                
        }
    }
} // senseXDoMessage
コード例 #18
0
ファイル: s2f~.c プロジェクト: porres/Porres-ELS
static void s2f_correct(t_s2f *x){
    int wason = x->x_on;
    x->x_offset = (x->x_rqoffset < x->x_nblock ? x->x_rqoffset : x->x_nblock - 1);
    x->x_npoints = x->x_deltime * x->x_ksr - x->x_nblock + x->x_offset;
    if((x->x_on = !x->x_stopped)){
        if(!wason) x->x_nleft = x->x_offset;
    }
    else if(wason)
        clock_unset(x->x_clock);
}
コード例 #19
0
ファイル: c.scope~.cpp プロジェクト: rvega/CicmWrapper
void scope_tick(t_scope *x)
{
    ebox_invalidate_layer((t_ebox *)x, gensym("signal_layer"));
    ebox_redraw((t_ebox *)x);

    if(!sys_getdspstate())
    {
        x->f_startclock = 0;
        clock_unset(x->f_clock);
    }
}
コード例 #20
0
ファイル: c.scope_tilde.cpp プロジェクト: EQ4/CreamLibrary
static void scope_tick(t_scope *x)
{
    ebox_invalidate_layer((t_ebox *)x, cream_sym_signal_layer);
    ebox_redraw((t_ebox *)x);

    if(!canvas_dspstate)
    {
        x->f_startclock = 0;
        clock_unset(x->f_clock);
    }
}
コード例 #21
0
ファイル: Snapshot.c プロジェクト: Git689/libpd-cyclone-ios
static void snapshot_correct(t_snapshot *x)
{
    int wason = x->x_on;
    x->x_offset =
	(x->x_rqoffset < x->x_nblock ? x->x_rqoffset : x->x_nblock - 1);
    x->x_npoints = x->x_deltime * x->x_ksr - x->x_nblock + x->x_offset;
    if (x->x_on = (!x->x_stopped && x->x_deltime > 0.))
    {
	if (!wason) x->x_nleft = x->x_offset;  /* CHECKME */
    }
    else if (wason) clock_unset(x->x_clock);
}
コード例 #22
0
ファイル: x_time.c プロジェクト: porres/pure-data
static void line_stop(t_line *x)
{
    if (pd_compatibilitylevel >= 48)
    {
        if (clock_getsystime() >= x->x_targettime)
            x->x_setval = x->x_targetval;
        else x->x_setval += x->x_1overtimediff *
            (clock_getsystime() - x->x_prevtime) *
                (x->x_targetval - x->x_setval);
    }
    x->x_targetval = x->x_setval;
    clock_unset(x->x_clock);
}
コード例 #23
0
ファイル: rvu~.c プロジェクト: IcaroL2ORK/pd
static void rvu_tilde_float(t_rvu_tilde *x, t_floatarg f)
{
  if(f == 0.0f)
  {
    clock_unset(x->x_clock_metro);
    x->x_started = 0;
  }
  else
  {
    clock_delay(x->x_clock_metro, x->x_metro_time);
    x->x_started = 1;
  }
}
コード例 #24
0
ファイル: Manager.cpp プロジェクト: kmatheussen/libpd
/////////////////////////////////////////////////////////
// stopRendering
//
/////////////////////////////////////////////////////////
void GemMan :: stopRendering()
{
  if (!m_rendering) return;

  m_rendering = 0;
  clock_unset(s_clock);
  s_hit = 1;

  // clean out all of the gemheads
  renderChain(gensym("__gem_render"), false);
  renderChain(gensym("__gem_render_osd"), false);

  logpost(NULL, 3, "GEM: Stop rendering");
}
コード例 #25
0
ファイル: oggread-.c プロジェクト: adhikasigit/ProjectKP
static int oggread_decode_input(t_oggread *x)
{
	long ret;		/* bytes per channel returned by decoder */
	int i;
	float **pcm;

	x->x_vi = ov_info(&x->x_ov, x->x_current_section);

	while(!x->x_eos)
	{
		ret = ov_read_float(&x->x_ov, &pcm, READ, &x->x_current_section); 
		if (ret == 0)
		{
			/* EOF */
			x->x_eos = 1;
			x->x_stream = 0;
			clock_unset(x->x_clock);
			// post("oggread~: end of file detected, stopping");
			outlet_bang(x->x_out_end);
		}
		else if (ret < 0)
		{
			/* error in the stream.  Not a problem, just reporting it in
			case we (the app) cares.  In this case, we don't. */
		}
		else
		{
			/* we don't bother dealing with sample rate changes, etc, but
			you'll have to */
			long j;
			for(j = 0; j < ret; j++)
			{
				for(i = 0; i < x->x_vi->channels; i++)
				{
					x->x_outbuffer[x->x_outwriteposition] = pcm[i][j];
					x->x_outwriteposition = (x->x_outwriteposition + 1)%x->x_outbuffersize;
				}
			}
			x->x_outunread += (t_int)ret * x->x_vi->channels;

		}
		break;
	}
	x->x_decoded = (t_int)ret * x->x_vi->channels;		/* num. of samples we got from decoder */

	x->x_position = (t_float)ov_time_tell(&x->x_ov);
  
		/* exit decoding 'loop' here, we'll get called again by perform() */
	return 1;
}
コード例 #26
0
ファイル: xeq.c プロジェクト: pure-data/xeq
void xeq_stop(t_xeq *x)
{
    x->x_autoit.i_restarted = 1;  /* LATER rethink */
    if (x->x_clock) clock_unset(x->x_clock);
    if (x->x_whenclockset != 0)
    {
    	float elapsed = clock_gettimesince(x->x_whenclockset);
    	float left = x->x_clockdelay - elapsed;
    	if (left < 0) left = 0;
	x->x_autoit.i_playloc.l_delay = left / x->x_tempo;
#if 0
	post("stop: delay set to %f (user %f)",
	     x->x_autoit.i_playloc.l_delay, left);
#endif
	x->x_whenclockset = 0;
    }
}
コード例 #27
0
ファイル: tripleLine.c プロジェクト: Angeldude/pd
static void setLineParameters(t_tripleLine *x, t_symbol *s, int argc, t_atom *argv)
{
    float numCounts;
	int i;
    t_atom newargv[3];
	float time = x->destTime;
	
	clock_unset(x->clock);
	
	if (argc == 4) time = atom_getfloat(&argv[3]);
	else if (argc != 3)
	{
		error("tripleLine: requires 3 or 4 args");
		return;
	}

	x->destTime = time;
	numCounts = time / x->grain;
	if (x->destTime <= 0.)
	{
		x->curTime = 0;
		for (i = 0; i < 3; i++)
		{
			x->curVal[i] = x->destVal[i] = atom_getfloat(&argv[i]);
			SETFLOAT((&newargv[i]), x->curVal[i]);
		}
		outlet_list(x->t_out1, &s_list, 3, newargv);
		return;
	}
	else
	{
		for (i = 0; i < 3; i++)
		{
			x->destVal[i] = atom_getfloat(&argv[i]);
			x->stepVal[i] = (x->destVal[i] - x->curVal[i]) / numCounts;
			SETFLOAT((&newargv[i]), x->curVal[i]);
		}
	}
	x->curTime = 0;

   	clock_delay(x->clock, x->grain);
	outlet_list(x->t_out1, &s_list, 3, newargv);
}
コード例 #28
0
ファイル: m_sched.c プロジェクト: IvanKhodorich/pd
    /* set the clock to call back at an absolute system time */
void clock_set(t_clock *x, double setticks)
{
    if (setticks < sys_time) setticks = sys_time;
    clock_unset(x);
    x->c_settime = setticks;
    if (clock_setlist && clock_setlist->c_settime <= setticks)
    {
        t_clock *cbefore, *cafter;
        for (cbefore = clock_setlist, cafter = clock_setlist->c_next;
            cbefore; cbefore = cafter, cafter = cbefore->c_next)
        {
            if (!cafter || cafter->c_settime > setticks)
            {
                cbefore->c_next = x;
                x->c_next = cafter;
                return;
            }
        }
    }
    else x->c_next = clock_setlist, clock_setlist = x;
}
コード例 #29
0
ファイル: x10.cpp プロジェクト: opendragon/Max_Objects
/*------------------------------------ x10Free ---*/
static void
x10Free(X10ControlData * xx)
{
    if (xx)
    {
        xx->fStopping = true;
        if (xx->fPollClock)
        {
            clock_unset(xx->fPollClock);
            clock_free(reinterpret_cast<t_object *>(xx->fPollClock));
            xx->fPollClock = NULL;
        }
        if (xx->fPollQueue)
        {
            qelem_unset(xx->fPollQueue);
            qelem_free(xx->fPollQueue);
            xx->fPollQueue = NULL;
        }
        FREE_BYTES(xx->fOutBuffer);
    }
} // x10Free
コード例 #30
0
ファイル: m_sched.c プロジェクト: IvanKhodorich/pd
    /* take the scheduler forward one DSP tick, also handling clock timeouts */
void sched_tick(double next_sys_time)
{
    int countdown = 5000;
    while (clock_setlist && clock_setlist->c_settime < next_sys_time)
    {
        t_clock *c = clock_setlist;
        sys_time = c->c_settime;
        clock_unset(clock_setlist);
        outlet_setstacklim();
        (*c->c_fn)(c->c_owner);
        if (!countdown--)
        {
            countdown = 5000;
            sys_pollgui();
        }
        if (sys_quit)
            return;
    }
    sys_time = next_sys_time;
    dsp_tick();
    sched_diddsp++;
}