A common instance of Music.T.

    > module Haskore.Music.GeneralMIDI
    >    (T, Note, NoteBody, Instr,
    >     RhyMusic.velocity, RhyMusic.body,
    >     RhyMusic.instrument, RhyMusic.pitch, RhyMusic.drum,
    >     RhyMusic.noteFromStdMelodyNote,
    >     fromStdMelody, fromMelodyNullAttr,
    >
    >     GM.Instrument(..), GM.Drum(..),
    >     toProgram, toChannel,
    >
    >     bn, wn, hn, qn, en, sn, tn, sfn,
    >     dwn, dhn, dqn, den, dsn, dtn,
    >     ddhn, ddqn, dden,
    >     bnr, wnr, hnr, qnr, enr, snr, tnr, sfnr,
    >     dwnr, dhnr, dqnr, denr, dsnr, dtnr,
    >     ddhnr, ddqnr, ddenr,
    >     line, chord, changeTempo, transpose, phrase,
    >     (Music.+:+), (Music.=:=), Dur,
    >
    >     PhraseAttribute(..), Dynamic(..),
    >     Tempo(..), Articulation(..), Ornament(..), NoteHead(..),
    >     accent, crescendo, diminuendo, loudness1,
    >     ritardando, accelerando, staccato, legato,
    >     defltLegato, defltStaccato,
    >     defltAccent, bigAccent) where

    > import qualified Sound.MIDI.General as GM
    > import           Sound.MIDI.Message.Channel (toChannel, toProgram, )
    > import           Haskore.Basic.Duration           hiding (T)
    > import           Haskore.Music           as Music hiding (T)
    > import qualified Haskore.Music.Rhythmic  as RhyMusic
    > import qualified Haskore.Melody          as Melody
    > import qualified Haskore.Melody.Standard as StdMelody

    > type Instr = GM.Instrument
    > type Drum  = GM.Drum

    > type Note     = RhyMusic.Note     Drum Instr
    > type NoteBody = RhyMusic.NoteBody Drum Instr
    > type T        = RhyMusic.T        Drum Instr

    > -- | in contrast to RhyMusic.fromStdMelody it has fixed instrument type
    > fromStdMelody :: Instr -> StdMelody.T -> T
    > fromStdMelody = RhyMusic.fromStdMelody

    > fromMelodyNullAttr :: Instr -> Melody.T () -> T
    > fromMelodyNullAttr = RhyMusic.fromMelodyNullAttr