module Sound.SC3.UGen.Math.Composite where
import Sound.SC3.Common.Math.Operator
import Sound.SC3.UGen.Type
import Sound.SC3.UGen.UGen
ugen_if :: Num a => a -> a -> a -> a
ugen_if :: a -> a -> a -> a
ugen_if a
p a
q a
r = (a
p a -> a -> a
forall a. Num a => a -> a -> a
* a
q) a -> a -> a
forall a. Num a => a -> a -> a
+ ((a
1 a -> a -> a
forall a. Num a => a -> a -> a
- a
p) a -> a -> a
forall a. Num a => a -> a -> a
* a
r)
ugen_integral_and_fractional_parts :: UGen -> UGen
ugen_integral_and_fractional_parts :: UGen -> UGen
ugen_integral_and_fractional_parts UGen
n =
let gt_eq_0 :: UGen
gt_eq_0 = let n' :: UGen
n' = UGen -> UGen
forall a. RealFracE a => a -> a
floorE UGen
n in UGen -> UGen -> UGen
mce2 UGen
n' (UGen
n UGen -> UGen -> UGen
forall a. Num a => a -> a -> a
- UGen
n')
lt_0 :: UGen
lt_0 = let n' :: UGen
n' = UGen -> UGen
forall a. RealFracE a => a -> a
ceilingE UGen
n in UGen -> UGen -> UGen
mce2 UGen
n' (UGen
n UGen -> UGen -> UGen
forall a. Num a => a -> a -> a
- UGen
n')
in UGen -> UGen -> UGen -> UGen
forall a. Num a => a -> a -> a -> a
ugen_if (UGen
n UGen -> UGen -> UGen
forall a. OrdE a => a -> a -> a
`greater_than_or_equal_to` UGen
0) UGen
gt_eq_0 UGen
lt_0
ugen_fmidi_to_midi_detune :: UGen -> UGen
ugen_fmidi_to_midi_detune :: UGen -> UGen
ugen_fmidi_to_midi_detune UGen
mnn =
let (UGen
n,UGen
c) = UGen -> (UGen, UGen)
unmce2 (UGen -> UGen
ugen_integral_and_fractional_parts UGen
mnn)
in UGen -> UGen -> UGen
mce2 UGen
n (UGen
c UGen -> UGen -> UGen
forall a. Num a => a -> a -> a
* UGen
100)