% from AutoTrack by Stefan Ratschan \section{Instruments} \begin{haskelllisting}

    > module Haskore.Interface.AutoTrack.Instrument
    >           (T, bass, bottomRange, topRange) where

    > import qualified Haskore.Basic.Pitch  as Pitch

\end{haskelllisting} Here we store various information about instruments. Currently the only information is the range of an instrument (its highest possible and lowest possible note). \begin{haskelllisting}

    > data T = Cons { lowest, highest :: Pitch.T }

    > bass :: T
    > bass = Cons { lowest=(2, Pitch.E), highest=(7, Pitch.G) }   -- ???

\end{haskelllisting} Create the deepest/highest note of a certain pitchclass, that an instrument can create. \begin{haskelllisting}

    > bottomRange :: T -> Pitch.Class -> Pitch.T
    > bottomRange instr cl =
    >    let (boct, bcl) = lowest instr
    >    in if cl > bcl
    >         then (boct,   cl)
    >         else (boct+1, cl)

    > topRange :: T -> Pitch.Class -> Pitch.T
    > topRange instr cl =
    >    let (boct, bcl) = highest instr
    >    in if cl < bcl
    >         then (boct,   cl)
    >         else (boct-1, cl)

\end{haskelllisting}