-- maquinitas-tidal
-- parameters for instruments by Korg

module Korg.VolcaBeats where

  import Korg.KorgBase
  import Sound.Tidal.Params
  import Sound.Tidal.Pattern 

  midiNote :: Pattern String -> ControlPattern
  midiNote :: Pattern String -> ControlPattern
midiNote = Pattern Note -> ControlPattern
n forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Num a => a -> a -> a
subtract Note
60 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Num a => String -> a
volcaBeatsMidiNote forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)

  volcaBeatsMidiNote :: Num a => String -> a
  volcaBeatsMidiNote :: forall a. Num a => String -> a
volcaBeatsMidiNote String
"bd" = a
36
  volcaBeatsMidiNote String
"sd" = a
38
  volcaBeatsMidiNote String
"lt" = a
43
  volcaBeatsMidiNote String
"ht" = a
50
  volcaBeatsMidiNote String
"ch" = a
42
  volcaBeatsMidiNote String
"oh" = a
46
  volcaBeatsMidiNote String
"cp" = a
39
  volcaBeatsMidiNote String
"cl" = a
75
  volcaBeatsMidiNote String
"ag" = a
67
  volcaBeatsMidiNote String
"cr" = a
49

  -- Korg MR-16 drum machine
  mr16 :: Pattern String -> ControlPattern
  mr16 :: Pattern String -> ControlPattern
mr16 = Pattern Note -> ControlPattern
n forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Num a => a -> a -> a
subtract Note
60 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Num a => String -> a
mr16MidiNote forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)
  mr16MidiNote :: Num a => String -> a
  -- bass drum
  mr16MidiNote :: forall a. Num a => String -> a
mr16MidiNote String
"bd" = a
35
  -- rimshot
  mr16MidiNote String
"rs" = a
37
  -- snare drum
  mr16MidiNote String
"sd" = a
38
  -- clap
  mr16MidiNote String
"cp" = a
39
  -- low tom
  mr16MidiNote String
"lt" = a
41  
  -- closed hihat
  mr16MidiNote String
"ch" = a
42
  -- open hihat
  mr16MidiNote String
"oh" = a
46
  -- high tom
  mr16MidiNote String
"ht" = a
47
  -- crash
  mr16MidiNote String
"cr" = a
49
  -- ride
  mr16MidiNote String
"rd" = a
51
  -- low conga
  mr16MidiNote String
"lc" = a
52
  -- high conga
  mr16MidiNote String
"hc" = a
53
  -- tambourine
  mr16MidiNote String
"ta" = a
54
  -- cow bell
  mr16MidiNote String
"cb" = a
56
  -- timbale
  mr16MidiNote String
"ti" = a
57
  -- cabasa
  mr16MidiNote String
"ca" = a
58
  -- wood block
  mr16MidiNote String
"wb" = a
60
  -- low agogo
  mr16MidiNote String
"la" = a
61
  -- high agogo
  mr16MidiNote String
"ha" = a
63
  -- metronome piano
  mr16MidiNote String
"mp" = a
64
  -- metronome forte
  mr16MidiNote String
"mf" = a
65


  -- ccv xx # ccn yy
  -- ccn: cc param number
  -- ccv: cc value (0 to 127)

  ccn_num_1 :: String -> a
ccn_num_1 String
m =
    ([ a
1 | String
m forall a. Eq a => a -> a -> Bool
== String
"aa" ] forall a. [a] -> [a] -> [a]
++
    [ a
2 | String
m forall a. Eq a => a -> a -> Bool
== String
"bb" ] forall a. [a] -> [a] -> [a]
++
    [ a
3 | String
m forall a. Eq a => a -> a -> Bool
== String
"cc" ] forall a. [a] -> [a] -> [a]
++
    [ a
4 | String
m forall a. Eq a => a -> a -> Bool
== String
"dd" ] forall a. [a] -> [a] -> [a]
++
    [ a
5 ])forall a. [a] -> Int -> a
!!Int
0

  ccn_num_2 :: String -> a
ccn_num_2 String
m
    | String
m forall a. Eq a => a -> a -> Bool
== String
"aa" = a
1
    | String
m forall a. Eq a => a -> a -> Bool
== String
"bb" = a
2
    | String
m forall a. Eq a => a -> a -> Bool
== String
"cc" = a
3
    | String
m forall a. Eq a => a -> a -> Bool
== String
"dd" = a
4
    | Bool
otherwise = a
5
  
  -- ccn_num :: Pattern String -> ControlPattern
  ccn_num :: String -> a
ccn_num String
m =
    case String
m of
      String
"kickLevel" -> a
40
      String
"snareLevel" -> a
41
      String
"cc" -> a
3
      String
"dd" -> a
4
      String
_ -> a
5
    
  ccparam :: String -> a -> String
ccparam String
m a
v = String
"ccv " forall a. [a] -> [a] -> [a]
++ (forall a. Show a => a -> String
show a
v) forall a. [a] -> [a] -> [a]
++ String
" # ccn " forall a. [a] -> [a] -> [a]
++ (forall a. Show a => a -> String
show (forall a. Num a => String -> a
ccn_num String
m))