| Portability | non-portable (TF,GNTD) |
|---|---|
| Stability | experimental |
| Maintainer | hans@hanshoglund.se |
| Safe Haskell | None |
Music.Score.Voice
Description
Provides the Voice type.
Documentation
A voice is a list of events with explicit duration. Events can not overlap.
Voice is a Monoid under sequential composition. mempty is the empty part and mappend
appends parts.
Voice has an Applicative instance derived from the Monad instance.
Voice is a Monad. return creates a part containing a single value of duration
one, and >>= transforms the values of a part, allowing the addition and
removal of values under relative duration. Perhaps more intuitively, join scales
each inner part to the duration of the outer part, then removes the
intermediate structure.
let p = Voice [(1, Just 0), (2, Just 1)] :: Voice Int
p >>= \x -> Voice [ (1, Just $ toEnum $ x+65),
(3, Just $ toEnum $ x+97) ] :: Voice Char
===> Voice {getVoice = [ (1 % 1,Just 'A'),
(3 % 1,Just 'a'),
(2 % 1,Just 'B'),
(6 % 1,Just 'b') ]}
Voice is a VectorSpace using sequential composition as addition, and time scaling
as scalar multiplication.
Instances
| Monad Voice | |
| Functor Voice | |
| Applicative Voice | |
| Foldable Voice | |
| Pointed Voice | |
| Stretchable Voice | |
| Performable Voice | |
| HasDuration Voice | |
| Eq a => Eq (Voice a) | |
| Ord a => Ord (Voice a) | |
| Show a => Show (Voice a) | |
| Monoid (Voice a) | |
| IsDynamics a => IsDynamics (Voice a) | |
| IsPitch a => IsPitch (Voice a) | |
| Semigroup (Voice a) |