module Bang.Interface.Drum where
import Bang.Music.Class
import Bang.Interface.Base
import System.MIDI
data PercussionSound =
BassDrum2
| BassDrum1
| SideStick
| SnareDrum1
| HandClap
| SnareDrum2
| LowTom2
| ClosedHihat
| LowTom1
| PedalHihat
| MidTom2
| OpenHihat
| MidTom1
| HighTom2
| CrashCymbal1
| HighTom1
| RideCymbal1
| ChineseCymbal
| RideBell
| Tambourine
| SplashCymbal
| Cowbell
| CrashCymbal2
| VibraSlap
| RideCymbal2
| HighBongo
| LowBongo
| MuteHighConga
| OpenHighConga
| LowConga
| HighTimbale
| LowTimbale
| HighAgogo
| LowAgogo
| Cabasa
| Maracas
| ShortWhistle
| LongWhistle
| ShortGuiro
| LongGuiro
| Claves
| HighWoodBlock
| LowWoodBlock
| MuteCuica
| OpenCuica
| MuteTriangle
| OpenTriangle
deriving (Show,Eq,Ord,Enum)
drum :: PercussionSound -> Dur -> Music Dur PercussionSound
drum ps d = Prim (Note d ps)
qd :: PercussionSound -> Music Dur PercussionSound
qd ps = drum ps (1/4)
toMIDINum :: PercussionSound -> Int
toMIDINum ps = fromEnum ps + 35
hc :: Music Dur PercussionSound
hc = closedHihat
ho :: Music Dur PercussionSound
ho = openHihat
hco :: Music Dur PercussionSound
hco = pedalHihat
bd :: Music Dur PercussionSound
bd = bassDrum1
bd2 :: Music Dur PercussionSound
bd2 = bassDrum2
sn :: Music Dur PercussionSound
sn = snareDrum1
sn2 :: Music Dur PercussionSound
sn2 = snareDrum2
stick :: Music Dur PercussionSound
stick = sideStick
t1 :: Music Dur PercussionSound
t1 = highTom1
t2 :: Music Dur PercussionSound
t2 = highTom2
t3 :: Music Dur PercussionSound
t3 = midTom1
t4 :: Music Dur PercussionSound
t4 = midTom2
t5 :: Music Dur PercussionSound
t5 = lowTom1
t6 :: Music Dur PercussionSound
t6 = lowTom2
cc :: Music Dur PercussionSound
cc = crashCymbal1
cc2 :: Music Dur PercussionSound
cc2 = crashCymbal2
rc :: Music Dur PercussionSound
rc = rideCymbal1
rc2 :: Music Dur PercussionSound
rc2 = rideCymbal2
china :: Music Dur PercussionSound
china = chineseCymbal
splash :: Music Dur PercussionSound
splash = splashCymbal
bell :: Music Dur PercussionSound
bell = rideBell
clap :: Music Dur PercussionSound
clap = handClap
drumToMidiEvent :: Primitive Dur PercussionSound -> MidiEvent
drumToMidiEvent (Note d ps) = MidiEvent (fromIntegral (round d)) (MidiMessage 10 (NoteOn (fromEnum ps + 35) 64))
bassDrum2 :: Music Dur PercussionSound
bassDrum2 = qd BassDrum2
bassDrum1 :: Music Dur PercussionSound
bassDrum1 = qd BassDrum1
sideStick :: Music Dur PercussionSound
sideStick = qd SideStick
snareDrum1 :: Music Dur PercussionSound
snareDrum1 = qd SnareDrum1
handClap :: Music Dur PercussionSound
handClap = qd HandClap
snareDrum2 :: Music Dur PercussionSound
snareDrum2 = qd SnareDrum2
lowTom2 :: Music Dur PercussionSound
lowTom2 = qd LowTom2
closedHihat :: Music Dur PercussionSound
closedHihat = qd ClosedHihat
lowTom1 :: Music Dur PercussionSound
lowTom1 = qd LowTom1
pedalHihat :: Music Dur PercussionSound
pedalHihat = qd PedalHihat
midTom2 :: Music Dur PercussionSound
midTom2 = qd MidTom2
openHihat :: Music Dur PercussionSound
openHihat = qd OpenHihat
midTom1 :: Music Dur PercussionSound
midTom1 = qd MidTom1
highTom2 :: Music Dur PercussionSound
highTom2 = qd HighTom2
crashCymbal1 :: Music Dur PercussionSound
crashCymbal1 = qd CrashCymbal1
highTom1 :: Music Dur PercussionSound
highTom1 = qd HighTom1
rideCymbal1 :: Music Dur PercussionSound
rideCymbal1 = qd RideCymbal1
chineseCymbal :: Music Dur PercussionSound
chineseCymbal = qd ChineseCymbal
rideBell :: Music Dur PercussionSound
rideBell = qd RideBell
tambourine :: Music Dur PercussionSound
tambourine = qd Tambourine
splashCymbal :: Music Dur PercussionSound
splashCymbal = qd SplashCymbal
cowbell :: Music Dur PercussionSound
cowbell = qd Cowbell
crashCymbal2 :: Music Dur PercussionSound
crashCymbal2 = qd CrashCymbal2
vibraSlap :: Music Dur PercussionSound
vibraSlap = qd VibraSlap
rideCymbal2 :: Music Dur PercussionSound
rideCymbal2 = qd RideCymbal2
highBongo :: Music Dur PercussionSound
highBongo = qd HighBongo
lowBongo :: Music Dur PercussionSound
lowBongo = qd LowBongo
muteHighConga :: Music Dur PercussionSound
muteHighConga = qd MuteHighConga
openHighConga :: Music Dur PercussionSound
openHighConga = qd OpenHighConga
lowConga :: Music Dur PercussionSound
lowConga = qd LowConga
highTimbale :: Music Dur PercussionSound
highTimbale = qd HighTimbale
lowTimbale :: Music Dur PercussionSound
lowTimbale = qd LowTimbale
highAgogo :: Music Dur PercussionSound
highAgogo = qd HighAgogo
lowAgogo :: Music Dur PercussionSound
lowAgogo = qd LowAgogo
cabasa :: Music Dur PercussionSound
cabasa = qd Cabasa
maracas :: Music Dur PercussionSound
maracas = qd Maracas
shortWhistle :: Music Dur PercussionSound
shortWhistle = qd ShortWhistle
longWhistle :: Music Dur PercussionSound
longWhistle = qd LongWhistle
shortGuiro :: Music Dur PercussionSound
shortGuiro = qd ShortGuiro
longGuiro :: Music Dur PercussionSound
longGuiro = qd LongGuiro
claves :: Music Dur PercussionSound
claves = qd Claves
highWoodBlock :: Music Dur PercussionSound
highWoodBlock = qd HighWoodBlock
lowWoodBlock :: Music Dur PercussionSound
lowWoodBlock = qd LowWoodBlock
muteCuica :: Music Dur PercussionSound
muteCuica = qd MuteCuica
openCuica :: Music Dur PercussionSound
openCuica = qd OpenCuica
muteTriangle :: Music Dur PercussionSound
muteTriangle = qd MuteTriangle
openTriangle :: Music Dur PercussionSound
openTriangle = qd OpenTriangle