Introduction
This library provides two kinds of musical structures. First is
general Score
representation. It tells how to combine musical
things together and how they can be transformed. Second is just
the oposite side of first one, it stands for
very basic musical structures like Pitch
, Scale
, Tone
, Volume
.
So you can see huge gap inbetween the two. For example this
module doesn't exports any
specific datatype for notes. Though there are data types Note
and Drum
defined in Temporal.Music.Notation.Note module
that can be seen as example of usage of basic data types.
It's up to you to fill in between.
But this gap is not just gap it's gap with bridges.
Pch/Tone/Vol Functors are those ropes that tie together those two
levels. To use all basic structures transformation in your specific
note-representation you only need to tell how they are wrapped, i.e.
provide instances of your note-representation for basic functors.
And then you can use the bridges.
For every XxxFunctor there is general instance for Score
.
For example
instance PchFunctor a => PchFunctor (Score c a) where (...)
It implies that transformations like
quiet
, step
or lower
can act on bunch of notes packed in
Score
if notes are inside PchFunctor
.
There are two preliminary steps for using this library
- find note representation that suits you
- if it contains basic musical structures, define corresponding XxxFunctor instances
And then let it sound in Score
.
Examples can be found in package source folder.
module Temporal.Music.Notation.Seg