module Drum where

import Midi ( Event, Time, Message, Channel, note, channel )


type Drum = Integer ;

drum :: Drum -> Time -> [Event Message] ;
drum :: Drum -> Drum -> [Event Message]
drum Drum
kind Drum
dur = Drum -> Drum -> [Event Message]
note Drum
dur Drum
kind ;

drumChannel :: [Event a] -> [Event (Channel a)] ;
drumChannel :: forall a. [Event a] -> [Event (Channel a)]
drumChannel = Drum -> [Event a] -> [Event (Channel a)]
forall a. Drum -> [Event a] -> [Event (Channel a)]
channel Drum
9 ;

acousticBassDrum, bassDrum1, sideStick, acousticSnare, 
  handClap, electricSnare, lowFloorTom, closedHiHat, 
  highFloorTom, pedalHiHat, lowTom, openHiHat, 
  lowMidTom, hiMidTom, crashCymbal1, highTom, 
  rideCymbal1, chineseCymbal, rideBell, tambourine, 
  splashCymbal, cowbell, crashCymbal2, vibraslap, 
  rideCymbal2, hiBongo, lowBongo, muteHiConga, 
  openHiConga, lowConga, highTimbale, lowTimbale, 
  highAgogo, lowAgogo, cabasa, maracas, 
  shortWhistle, longWhistle, shortGuiro, longGuiro, 
  claves, hiWoodBlock, lowWoodBlock, muteCuica, 
  openCuica, muteTriangle, openTriangle :: Drum ;


-- general MIDI drum aliases

acousticBassDrum :: Drum
acousticBassDrum = Drum
35 ;
bassDrum1 :: Drum
bassDrum1        = Drum
36 ;
sideStick :: Drum
sideStick        = Drum
37 ;
acousticSnare :: Drum
acousticSnare    = Drum
38 ;
handClap :: Drum
handClap         = Drum
39 ;
electricSnare :: Drum
electricSnare    = Drum
40 ;
lowFloorTom :: Drum
lowFloorTom      = Drum
41 ;
closedHiHat :: Drum
closedHiHat      = Drum
42 ;
highFloorTom :: Drum
highFloorTom     = Drum
43 ;
pedalHiHat :: Drum
pedalHiHat       = Drum
44 ;
lowTom :: Drum
lowTom           = Drum
45 ;
openHiHat :: Drum
openHiHat        = Drum
46 ;
lowMidTom :: Drum
lowMidTom        = Drum
47 ;
hiMidTom :: Drum
hiMidTom         = Drum
48 ;
crashCymbal1 :: Drum
crashCymbal1     = Drum
49 ;
highTom :: Drum
highTom          = Drum
50 ;
rideCymbal1 :: Drum
rideCymbal1      = Drum
51 ;
chineseCymbal :: Drum
chineseCymbal    = Drum
52 ;
rideBell :: Drum
rideBell         = Drum
53 ;
tambourine :: Drum
tambourine       = Drum
54 ;
splashCymbal :: Drum
splashCymbal     = Drum
55 ;
cowbell :: Drum
cowbell          = Drum
56 ;
crashCymbal2 :: Drum
crashCymbal2     = Drum
57 ;
vibraslap :: Drum
vibraslap        = Drum
58 ;
rideCymbal2 :: Drum
rideCymbal2      = Drum
59 ;
hiBongo :: Drum
hiBongo          = Drum
60 ;
lowBongo :: Drum
lowBongo         = Drum
61 ;
muteHiConga :: Drum
muteHiConga      = Drum
62 ;
openHiConga :: Drum
openHiConga      = Drum
63 ;
lowConga :: Drum
lowConga         = Drum
64 ;
highTimbale :: Drum
highTimbale      = Drum
65 ;
lowTimbale :: Drum
lowTimbale       = Drum
66 ;
highAgogo :: Drum
highAgogo        = Drum
67 ;
lowAgogo :: Drum
lowAgogo         = Drum
68 ;
cabasa :: Drum
cabasa           = Drum
69 ;
maracas :: Drum
maracas          = Drum
70 ;
shortWhistle :: Drum
shortWhistle     = Drum
71 ;
longWhistle :: Drum
longWhistle      = Drum
72 ;
shortGuiro :: Drum
shortGuiro       = Drum
73 ;
longGuiro :: Drum
longGuiro        = Drum
74 ;
claves :: Drum
claves           = Drum
75 ;
hiWoodBlock :: Drum
hiWoodBlock      = Drum
76 ;
lowWoodBlock :: Drum
lowWoodBlock     = Drum
77 ;
muteCuica :: Drum
muteCuica        = Drum
78 ;
openCuica :: Drum
openCuica        = Drum
79 ;
muteTriangle :: Drum
muteTriangle     = Drum
80 ;
openTriangle :: Drum
openTriangle     = Drum
81 ;