Safe Haskell | None |
---|
Sound.Tidal.Pattern
- 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
- slowcat :: [Pattern a] -> Pattern a
- listToPat :: [a] -> Pattern a
- maybeListToPat :: [Maybe a] -> Pattern a
- run :: (Enum a, Num a) => a -> Pattern a
- density :: 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
- filterOffsets :: 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
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.
Instances
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 aSource
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 aSource
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 aSource
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 aSource
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 aSource
overlay
combines two Pattern
s into a new pattern, so that
their events are combined over time.
stack :: [Pattern a] -> Pattern aSource
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 aSource
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 aSource
append'
does the same as append
, but over two cycles, so that
the cycles alternate between the two patterns.
cat :: [Pattern a] -> Pattern aSource
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.
slowcat :: [Pattern a] -> Pattern aSource
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 aSource
listToPat
turns the given list of values to a Pattern, which
cycles through the list.
maybeListToPat :: [Maybe a] -> Pattern aSource
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 :: (Enum a, Num a) => a -> Pattern aSource
run
n
returns a pattern representing a cycle of numbers from 0
to n-1
.
density :: Time -> Pattern a -> Pattern aSource
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.
slow :: Time -> Pattern a -> Pattern aSource
slow
does the opposite of density
, i.e. slow 2 p
will
return a pattern that is half the speed.
(<~) :: Time -> Pattern a -> Pattern aSource
The <~
operator shift (or rotate) 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 aSource
The ~>
operator does the same as ~>
but shifts events to the
right (or clockwise) rather than to the left.
rev :: Pattern a -> Pattern aSource
rev p
returns p
with the event positions in each cycle
reversed (or mirrored).
palindrome :: Pattern a -> Pattern aSource
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 aSource
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 aSource
every n f p
applies the function f
to p
, but only affects
every n
cycles.
sig :: (Time -> a) -> Pattern aSource
sig f
takes a function from time to values, and turns it into a
Pattern
.
sinewave :: Pattern DoubleSource
sinewave
returns a Pattern
of continuous Double
values following a
sinewave with frequency of one cycle, and amplitude from -1 to 1.
sinerat :: Pattern RationalSource
sinerat
is equivalent to sinewave
for Rational
values,
suitable for use as Time
offsets.
sinewave1 :: Pattern DoubleSource
sinewave1
is equivalent to sinewave
, but with amplitude from 0 to 1.
sinerat1 :: Pattern RationalSource
sinerat1
is equivalent to sinerat
, but with amplitude from 0 to 1.
sineAmp1 :: Double -> Pattern DoubleSource
sineAmp1 d
returns sinewave1
with its amplitude offset by d
.
sawrat :: Pattern RationalSource
sawrat
is the same as sawwave
but returns Rational
values
suitable for use as Time
offsets.
trirat :: Pattern RationalSource
trirat
is the same as triwave
but returns Rational
values
suitable for use as Time
offsets.
filterOffsets :: Pattern a -> Pattern aSource
seqToRelOnsets :: Arc -> Pattern a -> [(Double, a)]Source
groupByTime :: [Event a] -> [Event [a]]Source