% 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}