music-score-1.9.0: Musical score and part representation.

Copyright (c) Hans Hoglund 2012-2014 BSD-style hans@hanshoglund.se experimental non-portable (TF,GNTD) None Haskell2010

Music.Time.Juxtapose

Description

Synopsis

# Align without composition

lead :: (HasPosition a, HasPosition b, Transformable a) => a -> b -> a Source

```(a `lead` b)^.`offset` = b^.`onset`
```

follow :: (HasPosition a, HasPosition b, Transformable b) => a -> b -> b Source

```a^.`offset` = (a `follow` b)^.`onset`
```

# Standard composition

after :: (Semigroup a, Transformable a, HasPosition a) => a -> a -> a Source

before :: (Semigroup a, Transformable a, HasPosition a) => a -> a -> a Source

during :: (HasPosition a, HasPosition b, Transformable a, Transformable b) => a -> b -> a Source

Move a value so that its era is equal to the era of another value.

(|>) :: (Semigroup a, HasPosition a, Transformable a) => a -> a -> a infixr 6 Source

An infix alias for `after`.

(<|) :: (Semigroup a, HasPosition a, Transformable a) => a -> a -> a infixr 6 Source

An infix alias for `before`.

## More exotic

sustain :: (Semigroup a, HasPosition a, Transformable a) => a -> a -> a Source

Like `<>`, but scaling the second agument to the duration of the first.

palindrome :: (Semigroup a, Reversible a, HasPosition a) => a -> a Source

A value followed by its reverse (retrograde).

# Catenation

scat :: (Semigroup a, Monoid a, HasPosition a, Transformable a) => [a] -> a Source

Compose a list of sequential objects, with onset and offset tangent to one another.

For non-positioned types, this is the often same as `mconcat` For positioned types, this is the same as `afterAnother`

pcat :: (Semigroup a, Monoid a) => [a] -> a Source

Compose a list of parallel objects, so that their local origins align.

This not possible for non-positioned types, as they have no notion of an origin. For positioned types this is the same as `mconcat`.

# Repetition

times :: (Semigroup a, Monoid a, HasPosition a, Transformable a) => Int -> a -> a Source

Repeat exact amount of times.

````Int` -> `Score` a -> `Score` a
```