Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
Envelope generators.
- data Envelope a = Envelope {
- env_levels :: [a]
- env_times :: [a]
- env_curves :: [Envelope_Curve a]
- env_release_node :: Maybe Int
- env_loop_node :: Maybe Int
- envelope :: [a] -> [a] -> [Envelope_Curve a] -> Envelope a
- envelope_duration :: Num n => Envelope n -> n
- envelope_n_segments :: (Num n, Integral i) => Envelope n -> i
- envelope_segment_ix :: (Ord a, Num a) => Envelope a -> a -> Maybe Int
- type Envelope_Segment t = (t, t, t, t, Envelope_Curve t)
- envelope_segment :: Num t => Envelope t -> Int -> Envelope_Segment t
- envelope_segments :: Num t => Envelope t -> [Envelope_Segment t]
- pack_envelope_segments :: Num t => [Envelope_Segment t] -> ([t], [t], [Envelope_Curve t])
- envelope_is_normal :: (Eq n, Num n) => Envelope n -> Bool
- envelope_normalise :: (Num a, Ord a) => Envelope a -> Envelope a
- envelope_at :: (Ord t, Floating t) => Envelope t -> t -> t
- envelope_render :: (Ord t, Floating t, Enum t) => t -> Envelope t -> [(t, t)]
- envelope_table :: (Ord t, Floating t, Enum t) => t -> Envelope t -> [t]
- envelope_curves :: Num a => Envelope a -> [Envelope_Curve a]
- envelope_sc3_array :: Num a => Envelope a -> Maybe [a]
- envelope_sc3_ienvgen_array :: Num a => Envelope a -> Maybe [a]
- env_is_sustained :: Envelope a -> Bool
- env_delay :: Envelope a -> a -> Envelope a
- env_circle :: (Num a, Fractional a) => Envelope a -> a -> Envelope_Curve a -> Envelope a
- envelope_to_ugen :: Envelope UGen -> UGen
- d_dx :: Num a => [a] -> [a]
- dx_d :: Num n => [n] -> [n]
- d_dx' :: Num n => [n] -> [n]
- dx_d' :: Num n => [n] -> [n]
Envelope
SC3 envelope segment model
Envelope | |
|
envelope :: [a] -> [a] -> [Envelope_Curve a] -> Envelope a Source
Variant without release and loop node inputs (defaulting to nil).
envelope_n_segments :: (Num n, Integral i) => Envelope n -> i Source
envelope_segment_ix :: (Ord a, Num a) => Envelope a -> a -> Maybe Int Source
Determine which envelope segment a given time t falls in.
type Envelope_Segment t = (t, t, t, t, Envelope_Curve t) Source
A set of start time, start level, end time, end level and curve.
envelope_segment :: Num t => Envelope t -> Int -> Envelope_Segment t Source
Extract envelope segment given at index i.
envelope_segments :: Num t => Envelope t -> [Envelope_Segment t] Source
Extract all segments.
pack_envelope_segments :: Num t => [Envelope_Segment t] -> ([t], [t], [Envelope_Curve t]) Source
Transform list of Envelope_Segment
s into lists (env_levels
,env_times
,env_curves
).
envelope_is_normal :: (Eq n, Num n) => Envelope n -> Bool Source
An envelope is normal if it has no segments with zero duration.
envelope_normalise :: (Num a, Ord a) => Envelope a -> Envelope a Source
Normalise envelope by deleting segments of zero duration.
envelope_at :: (Ord t, Floating t) => Envelope t -> t -> t Source
Get value for Envelope
at time t, or zero if t is out of
range. By convention if the envelope has a segment of zero
duration we give the rightmost value.
envelope_render :: (Ord t, Floating t, Enum t) => t -> Envelope t -> [(t, t)] Source
Render Envelope
to breakpoint set of n equi-distant places.
envelope_table :: (Ord t, Floating t, Enum t) => t -> Envelope t -> [t] Source
Contruct a lookup table of n places from Envelope
.
envelope_curves :: Num a => Envelope a -> [Envelope_Curve a] Source
Variant on env_curves
that expands the, possibly empty, user
list by cycling (if not empty) or by filling with EnvLin
.
envelope_sc3_array :: Num a => Envelope a -> Maybe [a] Source
Linear SC3 form of Envelope
data.
Form is: l0 #t reset loop l1 t0 c0 c0' ...
let {l = [0,0.6,0.3,1.0,0] ;t = [0.1,0.02,0.4,1.1] ;c = [EnvLin,EnvExp,EnvNum (-6),EnvSin] ;e = Envelope l t c Nothing Nothing ;r = [0,4,-99,-99,0.6,0.1,1,0,0.3,0.02,2,0,1,0.4,5,-6,0,1.1,3,0]} in envelope_sc3_array e == Just r
envelope_sc3_ienvgen_array :: Num a => Envelope a -> Maybe [a] Source
IEnvGen
SC3 form of Envelope
data. Offset not supported (zero).
let {l = [0,0.6,0.3,1.0,0] ;t = [0.1,0.02,0.4,1.1] ;c = [EnvLin,EnvExp,EnvNum (-6),EnvSin] ;e = Envelope l t c Nothing Nothing ;r = [0,0,4,1.62,0.1,1,0,0.6,0.02,2,0,0.3,0.4,5,-6,1,1.1,3,0,0]} in envelope_sc3_ienvgen_array e == Just r
env_is_sustained :: Envelope a -> Bool Source
True
if env_release_node
is not Nothing
.
env_circle :: (Num a, Fractional a) => Envelope a -> a -> Envelope_Curve a -> Envelope a Source
Connect releaseNode (or end) to first node of envelope.
UGen
envelope_to_ugen :: Envelope UGen -> UGen Source