\begin{haskelllisting}

    > module Haskore.Melody.Standard
    >           (Note, T, NoteAttributes, fromMelodyNullAttr,
    >            na, velocity1, vibrato, tremolo,
    >            cf,c,cs,df,d,ds,ef,e,es,ff,f,fs,gf,g,gs,af,a,as,bf,b,bs) where

    > import Haskore.Melody
    >           (cf,c,cs,df,d,ds,ef,e,es,ff,f,fs,gf,g,gs,af,a,as,bf,b,bs)

    > import qualified Haskore.Music  as Music
    > import qualified Haskore.Melody as Melody

    > import qualified Data.Accessor.Basic      as Accessor
    > import qualified Data.Accessor.Show as AccShow

    > type Note = Melody.Note NoteAttributes

    > type T    = Melody.T    NoteAttributes

\end{haskelllisting} % | Dynamics String % | Fingering Int Recall that the \code{Note} constructor contained a field of \code{NoteAttribute}s. These are values that are attached to notes for the purpose of notation or musical interpretation. \begin{haskelllisting}

    > data NoteAttributes =
    >    NoteAttributes {
    >       velocity_ :: Rational, -- intensity of playing between 0 and 1
    >       vibrato_  :: (Rational, Rational),
    >       tremolo_  :: (Rational, Rational)
    >    } deriving (Eq, Ord)
    >
    > instance Show NoteAttributes where
    >    showsPrec =
    >       AccShow.showsPrec
    >          [AccShow.field "velocity1" velocity1,
    >           AccShow.field "vibrato"   vibrato,
    >           AccShow.field "tremolo"   tremolo]
    >          "na" na
    >
    > na :: NoteAttributes
    > na = NoteAttributes 1 (0,0) (0,0)
    >
    > velocity1 :: Accessor.T NoteAttributes Rational
    > velocity1 =
    >    Accessor.fromSetGet (\v nas -> nas{velocity_ = v}) velocity_
    >
    > vibrato :: Accessor.T NoteAttributes (Rational, Rational)
    > vibrato =
    >    Accessor.fromSetGet (\v nas -> nas{vibrato_ = v}) vibrato_
    >
    > tremolo :: Accessor.T NoteAttributes (Rational, Rational)
    > tremolo =
    >    Accessor.fromSetGet (\v nas -> nas{tremolo_ = v}) tremolo_

\end{haskelllisting} \begin{haskelllisting}

    > fromMelodyNullAttr :: Melody.T () -> T
    > fromMelodyNullAttr =
    >    Music.mapNote (\(Melody.Note _ p) -> Melody.Note na p)

\end{haskelllisting} % Music.mapNote (Accessor.set Melody.noteAttrs na)