-- maquinitas-tidal
-- parameters for instruments by Roland

module Roland where
  import Sound.Tidal.Params
  import Sound.Tidal.Pattern
  
  -- i copied this from volcaBeats
  -- where this notation was used for midi notes
  -- so this needs to be adapted to CC
  sh01a :: Pattern String -> ControlPattern
  sh01a :: Pattern String -> ControlPattern
sh01a = Pattern Note -> ControlPattern
n (Pattern Note -> ControlPattern)
-> (Pattern String -> Pattern Note)
-> Pattern String
-> ControlPattern
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Note -> Note -> Note
forall a. Num a => a -> a -> a
subtract Note
60 (Note -> Note) -> (String -> Note) -> String -> Note
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Note
forall a. Num a => String -> a
sh01aMidiCC (String -> Note) -> Pattern String -> Pattern Note
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)

  sh01aMidiCC :: Num a => String -> a
  sh01aMidiCC :: String -> a
sh01aMidiCC String
"modulation" = a
1
  sh01aMidiCC String
"lfoRate" = a
3
  sh01aMidiCC String
"portamentoTime" = a
5
  sh01aMidiCC String
"expressionPedal" = a
11
  sh01aMidiCC String
"lfoWaveform" = a
12
  sh01aMidiCC String
"vcoModDepth" = a
13
  sh01aMidiCC String
"vcoRange" = a
14
  sh01aMidiCC String
"vcoPulseWidth" = a
15
  sh01aMidiCC String
"vcoPwmSource" = a
16
  sh01aMidiCC String
"vcoModSens" = a
17
  sh01aMidiCC String
"vcoBendDepth" = a
18
  sh01aMidiCC String
"vcoPwmLevel" = a
19
  sh01aMidiCC String
"vcoSawLevel" = a
20
  sh01aMidiCC String
"vcoSubLevel" = a
21
  sh01aMidiCC String
"vcoSubType" = a
22
  sh01aMidiCC String
"vcoNoiseLevel" = a
23
  sh01aMidiCC String
"vcfEnvDepth" = a
24
  sh01aMidiCC String
"vcfModDepth" = a
25
  sh01aMidiCC String
"vcfKeyFollow" = a
26
  sh01aMidiCC String
"vcfBendDepth" = a
27
  sh01aMidiCC String
"vcaEnvSw" = a
28
  sh01aMidiCC String
"vcaEnvMode" = a
29
  sh01aMidiCC String
"envSustain" = a
30
  sh01aMidiCC String
"portamentMode" = a
31
  sh01aMidiCC String
"hold" = a
64
  sh01aMidiCC String
"portamento" = a
65
  sh01aMidiCC String
"vcfResonance" = a
71
  sh01aMidiCC String
"envRelease" = a
72
  sh01aMidiCC String
"envAttack" = a
73
  sh01aMidiCC String
"vcfCutoff" = a
74
  sh01aMidiCC String
"envDecay" = a
75
  sh01aMidiCC String
"tune" = a
76
  sh01aMidiCC String
"transposeSw" = a
77
  sh01aMidiCC String
"noiseMode" = a
78
  sh01aMidiCC String
"lfoMode" = a
79
  sh01aMidiCC String
"assignMode" = a
80
  sh01aMidiCC String
"chordVoice2Sw" = a
81
  sh01aMidiCC String
"chordVoice3Sw" = a
82
  sh01aMidiCC String
"chordVoice4Sw" = a
83
  sh01aMidiCC String
"chordVoice2KeyShift" = a
85
  sh01aMidiCC String
"chordVoice3KeyShift" = a
86
  sh01aMidiCC String
"chordVoice4KeyShift" = a
87

  -- TODO: also needs to be adapted
  tr08 :: Pattern String -> ControlPattern
  tr08 :: Pattern String -> ControlPattern
tr08 = Pattern Note -> ControlPattern
n (Pattern Note -> ControlPattern)
-> (Pattern String -> Pattern Note)
-> Pattern String
-> ControlPattern
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Note -> Note -> Note
forall a. Num a => a -> a -> a
subtract Note
60 (Note -> Note) -> (String -> Note) -> String -> Note
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Note
forall a. Num a => String -> a
tr08MidiCC (String -> Note) -> Pattern String -> Pattern Note
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)

  tr08MidiCC :: String -> p
tr08MidiCC String
"bdTune" = p
20
  tr08MidiCC String
"bdTone" = p
21
  tr08MidiCC String
"bdComp" = p
22
  tr08MidiCC String
"bdDecay" = p
23
  tr08MidiCC String
"bdLevel" = p
24
  tr08MidiCC String
"sdTone" = p
25
  tr08MidiCC String
"sdSnappy" = p
26
  tr08MidiCC String
"sdComp" = p
27
  tr08MidiCC String
"sdDecay" = p
28
  tr08MidiCC String
"sdLevel" = p
29
  tr08MidiCC String
"ltTune" = p
46
  tr08MidiCC String
"ltDecay" = p
47
  tr08MidiCC String
"ltLevel" = p
48
  tr08MidiCC String
"mtTune" = p
49
  tr08MidiCC String
"mtDecay" = p
50
  tr08MidiCC String
"mtLevel" = p
51
  tr08MidiCC String
"htTune" = p
52
  tr08MidiCC String
"htDecay" = p
53
  tr08MidiCC String
"htLevel" = p
54
  tr08MidiCC String
"rsTune" = p
55
  tr08MidiCC String
"rsDecay" = p
56
  tr08MidiCC String
"rsLevel" = p
57
  tr08MidiCC String
"cpTune" = p
58
  tr08MidiCC String
"cpDecay" = p
59
  tr08MidiCC String
"cpLevel" = p
60
  tr08MidiCC String
"chTune" = p
61
  tr08MidiCC String
"chDecay" = p
62
  tr08MidiCC String
"chLevel" = p
63
  tr08MidiCC String
"accent" = p
71
  tr08MidiCC String
"ohTune" = p
80
  tr08MidiCC String
"ohDecay" = p
81
  tr08MidiCC String
"ohLevel" = p
82
  tr08MidiCC String
"cyTune" = p
83
  tr08MidiCC String
"cyDecay" = p
84
  tr08MidiCC String
"cyLevel" = p
85
  tr08MidiCC String
"cbTune" = p
86
  tr08MidiCC String
"cbDecay" = p
87
  tr08MidiCC String
"cbLevel" = p
88