-- maquinitas-tidal
-- parameters for instruments by Korg
module Korg.VolcaBeats where
import qualified Sound.Tidal.Params
import Sound.Tidal.Pattern
-- MIDI notes
midiNote :: Pattern String -> ControlPattern
midiNote = Sound.Tidal.Params.n . (subtract 60 . volcaBeatsMidiNote <$>)
volcaBeatsMidiNote :: Num a => String -> a
volcaBeatsMidiNote m =
case m of
"bd" -> 36 -- kick
"sd" -> 38 -- snare
"lt" -> 43 -- loTom
"ht" -> 50 -- hiTom
"ch" -> 42 -- clHat
"oh" -> 46 -- opHat
"cp" -> 39 -- clap
"cl" -> 75 -- claves
"ag" -> 67 -- agogo
"cr" -> 49 -- crash
_ -> 0
-- Korg MR-16 drum machine
mr16 :: Pattern String -> ControlPattern
mr16 = Sound.Tidal.Params.n . (subtract 60 . mr16MidiNote <$>)
mr16MidiNote :: Num a => String -> a
mr16MidiNote m =
case m of
"bd" -> 35 -- bass drum
"rs" -> 37 -- rimshot
"sd" -> 38 -- snare drum
"cp" -> 39 -- clap
"lt" -> 41 -- low tom
"ch" -> 42 -- closed hihat
"oh" -> 46 -- open hihat
"ht" -> 47 -- high tom
"cr" -> 49 -- crash
"rd" -> 51 -- ride
"lc" -> 52 -- low conga
"hc" -> 53 -- high conga
"ta" -> 54 -- tambourine
"cb" -> 56 -- cow bell
"ti" -> 57 -- timbale
"ca" -> 58 -- cabasa
"wb" -> 60 -- wood block
"la" -> 61 -- low agogo
"ha" -> 63 -- high agogo
"mp" -> 64 -- metronome piano
"mf" -> 65 -- metronome forte
_ -> 0 -- no match
-- ControlChange list
ccn :: Pattern String -> ControlPattern
ccn = Sound.Tidal.Params.ccn . (ccnList <$>)
ccnList :: Num a => String -> a
ccnList m =
case m of
"kickLevel" -> 40
"snareLevel" -> 41
"loTomLevel" -> 42
"hiTomLevel" -> 43
"clHatLevel" -> 44
"opHatLevel" -> 45
"clapLevel" -> 46
"clavesLevel" -> 47
"agogoLevel" -> 48
"crashLevel" -> 49
"clapSpeed" -> 50
"clavesSpeed" -> 51
"agogoSpeed" -> 52
"crashSpeed" -> 53
"stutterTime" -> 54
"stutterDepth" -> 55
"tomDecay" -> 56
"closedHatDecay" -> 57
"openHatDecay" -> 58
"hatGrain" -> 59
_ -> 0