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); }
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); }