// Clicker By Joaquins Void
desc: Clicker

slider1:4<1,16,1>Step (16th Notes)
slider2:0.9<0,1,0.01>Decay
slider3:-3<-120,0,1>Volume
slider4:0<0,1,1{off,on}>Always On

@init
c = 0;
Synced = 0;
decay = 0;

s0 = 0.5;
s1 = 0;
sinAlpha = 2 * sin($pi * 440.0/srate);


@slider
wet = 2 ^(slider3 / 6);
decayTime = slider2 * 0.099 + 0.9;
Synced = 0;


@block
d = srate * (60/tempo) / 4 * slider1;

(play_state == 1) || (play_state == 5) ? (
  (Synced == 0) ? ( //Do Sync
    beat_frac = beat_position - (0|beat_position);
    skip_ahead = ((60/tempo) * beat_frac) * srate;
    c = skip_ahead % d;
    c == 0 ? c = d;
    Synced = 1;
  ); 
) : (
  Synced = 0;
);


@sample 
(slider4 || Synced) ? (

  s0 = s0 - sinAlpha * s1;
  s1 = s1 + sinAlpha * s0; 
  
  c += 1;
  
  (c >= d) ? ( 
    c -= d;
    decay = 1;
  );
   
  decay = decay * decayTime;
  out1 = out2 = s1 * decay;
  
  spl0 += out1 * wet;
  spl1 += out2 * wet;
);


