示例#1
0
void meter_tick(t_meter *x)
{
    meter_output(x);
    
    if(x->f_ramp == x->f_vector->getNumberOfChannels())
        x->f_ramp = 0;
    
    x->f_vector->process(x->f_signals, x->f_vector_coords + x->f_vector->getNumberOfChannels() * x->f_ramp);
    
    for(int i = 0; i < x->f_meter->getNumberOfChannels(); i++)
    {
        if(x->f_meter->getChannelEnergy(i) >= 0.)
            x->f_overled[i] = OVERLED_DRAWTIME;
        else
            x->f_overled[i] -= x->f_interval;
        
        if(x->f_overled[i] < 0)
            x->f_overled[i] = 0;
    }
    
	jbox_invalidate_layer((t_object *)x, NULL, s_leds_layer);
	jbox_invalidate_layer((t_object *)x, NULL, s_energy_layer);
    jbox_invalidate_layer((t_object *)x, NULL, s_velocity_layer);
	jbox_redraw((t_jbox *)x);
	if (sys_getdspstate())
		clock_fdelay(x->f_clock, x->f_interval);
}
示例#2
0
void meter_tick(t_meter *x)
{
    if(x->f_peak_value >= 0)
    {
        x->f_over_led_preserved = 1;
    }
    else if(x->f_over_led_preserved > 0)
    {
        x->f_over_led_preserved++;
    }
    if(x->f_over_led_preserved >= 1000. / x->f_interval)
    {
        x->f_over_led_preserved = 0;
    }
    
    meter_output(x);
    
	ebox_invalidate_layer((t_ebox *)x, gensym("leds_layer"));
	ebox_redraw((t_ebox *)x);
    
	if(sys_getdspstate())
		clock_delay(x->f_clock, x->f_interval);
}