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

Portabilitynon-portable (TF,GNTD)
Stabilityexperimental
Maintainerhans@hanshoglund.se
Safe HaskellNone

Music.Score.Voice

Description

Provides the Voice type.

Synopsis

Documentation

newtype Voice a Source

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.

Constructors

Voice 

Fields

getVoice :: [(DurationT, a)]