;@ ins k k k k k k
;@ outs k k
opcode ModAHD, 0, kkkkkkk
  kAtt, kDec, kSW, kH, kMAtt, kMH, kMDec xin
; NOT FORGET ABOUT KEYBOARD KB
; NO SHAPE IMPLEMENTED
  kIn zkr 1 ; CHANGE
  kAM zkr 2; CHANGE
  kTrig zkr 3; CHANGE
  kMAIn zkr 4 ; CHANGE
  kMHIn zkr 5; CHANGE
  kMDIn zkr 6; CHANGE
  
  kTab[][] init 2,4 ;MAYBE GLOBAL?
  kTab fillarray 1,-1,  1, -1,  0, 1,  -1, 0 ;double check
  

  kEnv init 0
  kTimer init 0
  kSet init 0	
  kStage init 0	

; CHECK MODULATIONS
  kAtt -= kMAIn * kMAtt
  kH -= kMHIn * kMH
  kDec -= kMDIn * kMDec


  if kTrig == 0 then goto Run 
  	kSet = 1
  	kStage = 1			
Run:  
  kTimer += kSet/kr ; KR TIME STEP


  if kStage == 1 then
  	kEnv += kAtt/kr ; CHANGE SOMETHING use KAtt here	
  	if kAtt <= kTimer then
  		kStage = 2
  		kTimer = 0
  	endif		
  endif

  if kStage == 2 then
  	kEnv = 1
  	if kH <= kTimer then
  		kStage = 3
  		kTimer = 0
  	endif
  endif

  if kStage == 3 then
  	kEnv -= kDec/kr
  	if kDec <= kTimer then
  		kStage = 0
  		kTimer = 0
  	endif
  endif


  kEnvH = kTab[1][kSW]*kEnv*(1-kAM)+kTab[2][kSW] ; CHECK AM RANGE
  zkw kEnvH, 1 ; CHANGE
  zkw kIn*kEnvH, 2 ; CHANGE
endop
