Safe Haskell | None |
---|---|
Language | Haskell98 |
- data Pattern a = Pattern {}
- atom :: a -> Pattern a
- silence :: Pattern a
- mapQueryArc :: (Arc -> Arc) -> Pattern a -> Pattern a
- mapQueryTime :: (Time -> Time) -> Pattern a -> Pattern a
- mapResultArc :: (Arc -> Arc) -> Pattern a -> Pattern a
- mapResultTime :: (Time -> Time) -> Pattern a -> Pattern a
- overlay :: Pattern a -> Pattern a -> Pattern a
- (>+<) :: Pattern a -> Pattern a -> Pattern a
- stack :: [Pattern a] -> Pattern a
- append :: Pattern a -> Pattern a -> Pattern a
- append' :: Pattern a -> Pattern a -> Pattern a
- cat :: [Pattern a] -> Pattern a
- splitAtSam :: Pattern a -> Pattern a
- slowcat :: [Pattern a] -> Pattern a
- listToPat :: [a] -> Pattern a
- maybeListToPat :: [Maybe a] -> Pattern a
- run :: (Num a, Enum a) => a -> Pattern a
- density :: Time -> Pattern a -> Pattern a
- densityGap :: Time -> Pattern a -> Pattern a
- slow :: Time -> Pattern a -> Pattern a
- (<~) :: Time -> Pattern a -> Pattern a
- (~>) :: Time -> Pattern a -> Pattern a
- rev :: Pattern a -> Pattern a
- palindrome :: Pattern a -> Pattern a
- when :: (Int -> Bool) -> (Pattern a -> Pattern a) -> Pattern a -> Pattern a
- every :: Int -> (Pattern a -> Pattern a) -> Pattern a -> Pattern a
- sig :: (Time -> a) -> Pattern a
- sinewave :: Pattern Double
- sine :: Pattern Double
- sinerat :: Pattern Rational
- ratsine :: Pattern Rational
- sinewave1 :: Pattern Double
- sine1 :: Pattern Double
- sinerat1 :: Pattern Rational
- sineAmp1 :: Double -> Pattern Double
- sawwave :: Pattern Double
- saw :: Pattern Double
- sawrat :: Pattern Rational
- sawwave1 :: Pattern Double
- saw1 :: Pattern Double
- sawrat1 :: Pattern Rational
- triwave :: Pattern Double
- tri :: Pattern Double
- trirat :: Pattern Rational
- triwave1 :: Pattern Double
- tri1 :: Pattern Double
- trirat1 :: Pattern Rational
- squarewave1 :: Pattern Double
- square1 :: Pattern Double
- squarewave :: Pattern Double
- square :: Pattern Double
- filterOnsets :: Pattern a -> Pattern a
- filterStartInRange :: Pattern a -> Pattern a
- filterOnsetsInRange :: Pattern a -> Pattern a
- seqToRelOnsets :: Arc -> Pattern a -> [(Double, a)]
- segment :: Pattern a -> Pattern [a]
- segment' :: [Event a] -> [Event a]
- split :: Time -> [Event a] -> [Event a]
- points :: [Event a] -> [Time]
- groupByTime :: [Event a] -> [Event [a]]
- ifp :: (Int -> Bool) -> (Pattern a -> Pattern a) -> (Pattern a -> Pattern a) -> Pattern a -> Pattern a
- rand :: Pattern Double
- irand :: Double -> Pattern Int
- wedge :: Time -> Pattern a -> Pattern a -> Pattern a
Documentation
The pattern datatype, a function from a time Arc
to Event
values. For discrete patterns, this returns the events which are
active during that time. For continuous patterns, events with
values for the midpoint of the given Arc
is returned.
Monad Pattern | |
Functor Pattern | |
Applicative Pattern |
|
Show a => Show (Pattern a) |
|
Parseable a => IsString (Pattern a) | |
Monoid (Pattern a) |
|
mapQueryArc :: (Arc -> Arc) -> Pattern a -> Pattern a Source
mapQueryArc f p
returns a new Pattern
with function f
applied to the Arc
values passed to the original Pattern
p
.
mapQueryTime :: (Time -> Time) -> Pattern a -> Pattern a Source
mapQueryTime f p
returns a new Pattern
with function f
applied to the both the start and end Time
of the Arc
passed to
Pattern
p
.
mapResultArc :: (Arc -> Arc) -> Pattern a -> Pattern a Source
mapResultArc f p
returns a new Pattern
with function f
applied to the Arc
values in the events returned from the
original Pattern
p
.
mapResultTime :: (Time -> Time) -> Pattern a -> Pattern a Source
mapResultTime f p
returns a new Pattern
with function f
applied to the both the start and end Time
of the Arc
values in
the events returned from the original Pattern
p
.
overlay :: Pattern a -> Pattern a -> Pattern a Source
overlay
combines two Pattern
s into a new pattern, so that
their events are combined over time.
stack :: [Pattern a] -> Pattern a Source
stack
combines a list of Pattern
s into a new pattern, so that
their events are combined over time.
append :: Pattern a -> Pattern a -> Pattern a Source
append
combines two patterns Pattern
s into a new pattern, so
that the events of the second pattern are appended to those of the
first pattern, within a single cycle
append' :: Pattern a -> Pattern a -> Pattern a Source
append'
does the same as append
, but over two cycles, so that
the cycles alternate between the two patterns.
cat :: [Pattern a] -> Pattern a Source
cat
returns a new pattern which interlaces the cycles of the
given patterns, within a single cycle. It's the equivalent of
append
, but with a list of patterns.
splitAtSam :: Pattern a -> Pattern a Source
slowcat :: [Pattern a] -> Pattern a Source
slowcat
does the same as cat
, but maintaining the duration of
the original patterns. It is the equivalent of append'
, but with
a list of patterns.
listToPat :: [a] -> Pattern a Source
listToPat
turns the given list of values to a Pattern, which
cycles through the list.
maybeListToPat :: [Maybe a] -> Pattern a Source
maybeListToPat
is similar to listToPat
, but allows values to
be optional using the Maybe
type, so that Nothing
results in
gaps in the pattern.
run :: (Num a, Enum a) => a -> Pattern a Source
run
n
returns a pattern representing a cycle of numbers from 0
to n-1
.
density :: Time -> Pattern a -> Pattern a Source
density
returns the given pattern with density increased by the
given Time
factor. Therefore density 2 p
will return a pattern
that is twice as fast, and density (1%3) p
will return one three
times as slow.
densityGap :: Time -> Pattern a -> Pattern a Source
densityGap
is similar to density
but maintains its cyclic
alignment. For example, densityGap 2 p
would squash the events in
pattern p
into the first half of each cycle (and the second
halves would be empty).
slow :: Time -> Pattern a -> Pattern a Source
slow
does the opposite of density
, i.e. slow 2 p
will
return a pattern that is half the speed.
(<~) :: Time -> Pattern a -> Pattern a Source
The <~
operator shifts (or rotates) a pattern to the left (or
counter-clockwise) by the given Time
value. For example
(1%16) <~ p
will return a pattern with all the events moved
one 16th of a cycle to the left.
(~>) :: Time -> Pattern a -> Pattern a Source
The ~>
operator does the same as ~>
but shifts events to the
right (or clockwise) rather than to the left.
rev :: Pattern a -> Pattern a Source
rev p
returns p
with the event positions in each cycle
reversed (or mirrored).
palindrome :: Pattern a -> Pattern a Source
palindrome p
applies rev
to p
every other cycle, so that
the pattern alternates between forwards and backwards.
when :: (Int -> Bool) -> (Pattern a -> Pattern a) -> Pattern a -> Pattern a Source
when test f p
applies the function f
to p
, but in a way
which only affects cycles where the test
function applied to the
cycle number returns True
.
every :: Int -> (Pattern a -> Pattern a) -> Pattern a -> Pattern a Source
every n f p
applies the function f
to p
, but only affects
every n
cycles.
sig :: (Time -> a) -> Pattern a Source
sig f
takes a function from time to values, and turns it into a
Pattern
.
sinewave :: Pattern Double Source
sinewave
returns a Pattern
of continuous Double
values following a
sinewave with frequency of one cycle, and amplitude from -1 to 1.
sinerat :: Pattern Rational Source
sinerat
is equivalent to sinewave
for Rational
values,
suitable for use as Time
offsets.
sinewave1 :: Pattern Double Source
sinewave1
is equivalent to sinewave
, but with amplitude from 0 to 1.
sinerat1 :: Pattern Rational Source
sinerat1
is equivalent to sinerat
, but with amplitude from 0 to 1.
sineAmp1 :: Double -> Pattern Double Source
sineAmp1 d
returns sinewave1
with its amplitude offset by d
.
sawrat :: Pattern Rational Source
sawrat
is the same as sawwave
but returns Rational
values
suitable for use as Time
offsets.
trirat :: Pattern Rational Source
trirat
is the same as triwave
but returns Rational
values
suitable for use as Time
offsets.
filterOnsets :: Pattern a -> Pattern a Source
filterStartInRange :: Pattern a -> Pattern a Source
filterOnsetsInRange :: Pattern a -> Pattern a Source
seqToRelOnsets :: Arc -> Pattern a -> [(Double, a)] Source
groupByTime :: [Event a] -> [Event [a]] Source