% 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 (boct1, cl)
\end{haskelllisting}