;@ ins k
;@ outs k
opcode LevConv, 0, kkkk
  kI, kO, kIn,kOut xin

  kin zkr kIn
  if (kI == 0) then
  	if (kO ==0) then
  		kout = kin
  	elseif (kO ==1) then
  		kout = -kin
  	elseif (kO ==2) then
  		kout = (kin+1)*.5
  	elseif (kO ==3) then
  		kout = (-kin+1)*.5
  	elseif (kO ==4) then
  		kout = (kin+1)*.5
  	elseif (kO ==5) then
  		kout = -(kin+1)*.5
  	endif
  elseif (kI == 1) then
  	if (kO ==0) then
  		kout = 2*kin-1
  	elseif (kO ==1) then
  		kout = -(2*kin-1)
  	elseif (kO ==2) then
  		kout = kin
  	elseif (kO ==3) then
  		kout = 1-kin
  	elseif (kO ==4) then
  		kout = -kin
  	elseif (kO ==5) then
  		kout = -1+kin
  	endif
  elseif (kI == 2) then
  	if (kO ==0) then
  		kout = 2*kin+1
  	elseif (kO ==1) then
  		kout = -(2*kin+1)
  	elseif (kO ==2) then
  		kout = kin+1
  	elseif (kO ==3) then
  		kout = -kin
  	elseif (kO ==4) then
  		kout = kin
  	elseif (kO ==5) then
  		kout = -1+kin
  	endif

  zkw kout,kOut
endop

;@ ins a
;@ outs a
opcode LevConv, 0, kkkk
  kI, kO, kIn,kOut xin
  setksmps 1
  ain zar kIn
  kin = k(ain)
  if (kI == 0) then
  	if (kO ==0) then
  		kout = kin
  	elseif (kO ==1) then
  		kout = -kin
  	elseif (kO ==2) then
  		kout = (kin+1)*.5
  	elseif (kO ==3) then
  		kout = (-kin+1)*.5
  	elseif (kO ==4) then
  		kout = (kin+1)*.5
  	elseif (kO ==5) then
  		kout = -(kin+1)*.5
  	endif
  elseif (kI == 1) then
  	if (kO ==0) then
  		kout = 2*kin-1
  	elseif (kO ==1) then
  		kout = -(2*kin-1)
  	elseif (kO ==2) then
  		kout = kin
  	elseif (kO ==3) then
  		kout = 1-kin
  	elseif (kO ==4) then
  		kout = -kin
  	elseif (kO ==5) then
  		kout = -1+kin
  	endif
  elseif (kI == 2) then
  	if (kO ==0) then
  		kout = 2*kin+1
  	elseif (kO ==1) then
  		kout = -(2*kin+1)
  	elseif (kO ==2) then
  		kout = kin+1
  	elseif (kO ==3) then
  		kout = -kin
  	elseif (kO ==4) then
  		kout = kin
  	elseif (kO ==5) then
  		kout = -1+kin
  	endif

  zaw a(kout),kOut
endop

; UP 10.04.20
