tidal-midi 0.9.5.2 → 0.9.9
raw patch · 5 files changed
+393/−63 lines, 5 filesdep ~tidal
Dependency ranges changed: tidal
Files
- Sound/Tidal/MIDI/Ambika.hs +3/−1
- Sound/Tidal/MIDI/Blofeld.hs +377/−54
- Sound/Tidal/MIDI/Control.hs +10/−5
- Sound/Tidal/MIDI/GMPerc.hs +1/−1
- tidal-midi.cabal +2/−2
Sound/Tidal/MIDI/Ambika.hs view
@@ -41,7 +41,7 @@ , mCC lfo3rate_p 61 , mCC lfo3shape_p 62 , mCC hold_p 64- , mCC legato_p 68+ , mCC mlegato_p 68 , mCC env1s_p 70 , mCC f1res_p 71 , mCC env1r_p 72@@ -140,6 +140,8 @@ (lfo4rate, lfo4rate_p) = pF "lfo4rate" (Just 0) (lfo4shape, lfo4shape_p) = pF "lfo4shape" (Just 0)++(mlegato, mlegato_p) = pF "mlegato" (Just 0) (env1a, env1a_p) = pF "env1a" (Just 0)
Sound/Tidal/MIDI/Blofeld.hs view
@@ -1,67 +1,390 @@ module Sound.Tidal.MIDI.Blofeld where import Sound.Tidal.MIDI.Control-import Sound.Tidal.Params hiding (octave_p, semitone_p)--bloController :: ControllerShape-bloController =- ControllerShape- { controls =- [ mCC portamento_p 5- , mCC expression_p 11- , CC lfoshape_p 15 (0, 5) passThru -- 0..5 - sine,triangle,square,saw,random,sample&hold- , mCC lforate_p 16- , CC lfosync_p 17 (0, 1) passThru -- 0 off, 1 on- , mCC lfodelay_p 18- , CC octave_p 27 (16, 112) passThru -- 16, 28, 40 .. 112 - 128' .. 1/2'- , CC semitone_p 28 (52, 76) passThru -- 52 .. 76 - -12 - +12 semitones- , mCC detune_p 29- , mCC osc1fm_p 30- , CC osc1shape_p 31 (0, 5) passThru -- 0..5 - pulse, saw, tri, sine, alt 1, alt 2- , mCC osc1pw_p 33- , mCC osc1pwm_p 34- , mCC osc1vol_p 52- , mCC osc1pan_p 53- , mCC ringmod_p 54- , mCC ringpan_p 55- , mCC noise_p 60- , mCC noisepan_p 61- , mCC noisecol_p 62- , mCC cutoff_p 69- , mCC attack_p 101- , mCC decay_p 102- , mCC sustain_p 103- , mCC release_p 106- ]- , latency = 0.1- }--blofeld = toShape bloController--(_, octave_p) = pF "octave" (Just 0)+import Sound.Tidal.Params -(_, semitone_p) = pF "semitone" (Just 0.5)+-- Blofeld midi mapping -- -(lforate, lforate_p) = pF "lforate" (Just 0)+-- mod wheel: MIDI CC 1, 0...127+-- breath control: MIDI CC 2, 0...127+-- foot control: MIDI CC 4, 0...127+-- glide rate: MIDI CC 5, 0...127+-- channel volume: MIDI CC 7, 0...127+-- pan: MIDI CC 10, 0...127+--+-- arp range: MIDI CC 12, 0...9 +-- arp length: MIDI CC 13, 0...15 +-- arp active: MIDI CC 14, 0...3 +--+-- lfo 1 shape: MIDI CC 15, 0...5 +-- lfo 1 speed: MIDI CC 16, 0...127 +-- lfo 1 sync: MIDI CC 17, 0...1 +-- lfo 1 delay: MIDI CC 18, 0...127 +--+-- lfo 2 shape: MIDI CC 19, 0...5 +-- lfo 2 speed: MIDI CC 20, 0...127 +-- lfo 2 sync: MIDI CC 21, 0...1 +-- lfo 2 delay: MIDI CC 22, 0...127 +--+-- lfo 3 shape: MIDI CC 23, 0...5 +-- lfo 3 speed: MIDI CC 24, 0...127 +-- lfo 3 sync: MIDI CC 25, 0...1 +-- lfo 3 delay: MIDI CC 26, 0...127 +--+-- osc 1 octave: MIDI CC 27, 16,28,40...112+-- osc 1 semitone: MIDI CC 28, 52...76+-- osc 1 detune: MIDI CC 29, 0...127+-- osc 1 fm: MIDI CC 30, 0...127+-- osc 1 shape: MIDI CC 31, 0...5+--+-- bank select LSB: MIDI CC 32, 0...n+--+-- osc 1 pw: MIDI CC 33, 0...127+-- osc 1 pwm: MIDI CC 34, 0...127+--+-- osc 2 octave: MIDI CC 35, 16,28,40...112+-- osc 2 semitone: MIDI CC 36, 52...76+-- osc 2 detune: MIDI CC 37, 0...127+-- osc 2 fm: MIDI CC 38, 0...127+-- osc 2 shape: MIDI CC 39, 0...5+-- osc 2 pw: MIDI CC 40, 0...127+-- osc 2 pwm: MIDI CC 41, 0...127+--+-- osc 3 octave: MIDI CC 42, 16,28,40...112+-- osc 3 semitone: MIDI CC 43, 52...76+-- osc 3 detune: MIDI CC 44, 0...127+-- osc 3 fm: MIDI CC 45, 0...127+-- osc 3 shape: MIDI CC 46, 0...5+-- osc 3 pw: MIDI CC 47, 0...127+-- osc 3 pwm: MIDI CC 48, 0...127+--+-- sync: MIDI CC 49, 0...1+-- pitchmod: MIDI CC 50, 0...127+-- glide mode: MIDI CC 51, 0...9+--+-- osc 1 level: MIDI CC 52, 0...127+-- osc 1 balance: MIDI CC 53, 0...127+--+-- ringmod level: MIDI CC 54, 0...127+-- ringmod bal: MIDI CC 55, 0...127+--+-- osc 2 level: MIDI CC 56, 0...127+-- osc 2 balance: MIDI CC 57, 0...127+--+-- osc 3 level: MIDI CC 58, 0...127+-- osc 3 balance: MIDI CC 59, 0...127+--+-- noise level: MIDI CC 60, 0...127+-- noise balance: MIDI CC 61, 0...127+-- noise colour: MIDI CC 62, 0...127+--+-- sustain pedal: MIDI CC 64, 0...127+-- glide active: MIDI CC 65, 0...127+-- sostenuto: MIDI CC 66, 0...127+--+-- routing: MIDI CC 67, 0...127+-- filter 1 type: MIDI CC 68, 0...10+-- filter 1 cutoff: MIDI CC 69, 0...127+-- filter 1 resonance: MIDI CC 70, 0...127+-- filter 1 drive: MIDI CC 71, 0...127+-- filter 1 keytrack: MIDI CC 72, 0...127+-- filter 1 env amnt: MIDI CC 73, 0...127+-- filter 1 env vel: MIDI CC 74, 0...127+-- filter 1 cutoff mod: MIDI CC 75, 0...127+-- filter 1 fm: MIDI CC 76, 0...127+-- filter 1 pan: MIDI CC 77, 0...127+-- filter 1 panmod: MIDI CC 78, 0...127+--+-- filter 2 type: MIDI CC 79, 0...10+-- filter 2 cutoff: MIDI CC 80, 0...127+-- filter 2 resonance: MIDI CC 81, 0...127+-- filter 2 drive: MIDI CC 82, 0...127+-- filter 2 keytrack: MIDI CC 83, 0...127+-- filter 2 env amnt: MIDI CC 84, 0...127+-- filter 2 env vel: MIDI CC 85, 0...127+-- filter 2 cutoff mod: MIDI CC 86, 0...127+-- filter 2 fm: MIDI CC 87, 0...127+-- filter 2 pan: MIDI CC 88, 0...127+-- filter 2 panmod: MIDI CC 89, 0...127+--+-- amp volume: MIDI CC 90, 0...127+-- amp velocity: MIDI CC 91, 0...127+-- amp mod: MIDI CC 92, 0...127+--+-- fx 1 mix: MIDI CC 93, 0...127+-- fx 2 mix: MIDI CC 94, 0...127+--+-- fe attack: MIDI CC 95, 0...127+-- fe decay: MIDI CC 96, 0...127+-- fe sustain: MIDI CC 97, 0...127+-- fe decay 2: MIDI CC 98, 0...127+-- fe sustain 2: MIDI CC 99, 0...127+-- fe release: MIDI CC 100, 0...127+--+-- ae attack: MIDI CC 101, 0...127+-- ae decay: MIDI CC 102, 0...127+-- ae sustain: MIDI CC 103, 0...127+-- ae decay 2: MIDI CC 104, 0...127+-- ae sustain 2: MIDI CC 105, 0...127+-- ae release: MIDI CC 106, 0...127+--+-- e3 attack: MIDI CC 107, 0...127+-- e3 decay: MIDI CC 108, 0...127+-- e3 sustain: MIDI CC 109, 0...127+-- e3 decay 2: MIDI CC 110, 0...127+-- e3 sustain 2: MIDI CC 111, 0...127+-- e3 release: MIDI CC 112, 0...127+--+-- e4 attack: MIDI CC 113, 0...127+-- e4 decay: MIDI CC 114, 0...127+-- e4 sustain: MIDI CC 115, 0...127+-- e4 decay 2: MIDI CC 116, 0...127+-- e4 sustain 2: MIDI CC 117, 0...127+-- e4 release: MIDI CC 118, 0...127+--+-- all sounds off: MIDI CC 120, 0+-- reset all controls: MIDI CC 121, 0+-- local control: MIDI CC 122, 0...127+-- all notes off: MIDI CC 123, 0 +(mod_w, mod_w_p) = pF "mod_w" (Just 0)+(br_ctrl, br_ctrl_p) = pF "br_ctrl" (Just 0)+(ft_ctrl, ft_ctrl_p) = pF "ft_ctrl" (Just 0)+(gl_rate, gl_rate_p) = pF "gl_rate" (Just 0)+(ch_vol, ch_vol_p) = pF "ch_vol" (Just 0)+(pan_, pan__p) = pF "pan" (Just 0)+(arp_rng, arp_rng_p) = pF "arp_rng" (Just 0)+(arp_len, arp_len_p) = pF "arp_len" (Just 0)+(arp_act, arp_act_p) = pF "arp_act" (Just 0)+(lfo1shape, lfo1shape_p) = pF "lfo1shape" (Just 0)+(lfo1speed, lfo1speed_p) = pF "lfo1speed" (Just 0)+(lfo1sync, lfo1sync_p) = pF "lfo1sync" (Just 0)+(lfo1delay, lfo1delay_p) = pF "lfo1delay" (Just 0)+(lfo2shape, lfo2shape_p) = pF "lfo2shape" (Just 0)+(lfo2speed, lfo2speed_p) = pF "lfo2speed" (Just 0)+(lfo2sync, lfo2sync_p) = pF "lfo2sync" (Just 0)+(lfo2delay, lfo2delay_p) = pF "lfo2delay" (Just 0)+(lfo3shape, lfo3shape_p) = pF "lfo3shape" (Just 0)+(lfo3speed, lfo3speed_p) = pF "lfo3speed" (Just 0)+(lfo3sync, lfo3sync_p) = pF "lfo3sync" (Just 0)+(lfo3delay, lfo3delay_p) = pF "lfo3delay" (Just 0)+(osc1oct, osc1oct_p) = pF "osc1oct" (Just 0)+(osc1semi, osc1semi_p) = pF "osc1semi" (Just 0)+(osc1detune, osc1detune_p) = pF "osc1detune" (Just 0) (osc1fm, osc1fm_p) = pF "osc1fm" (Just 0)- (osc1shape, osc1shape_p) = pF "osc1shape" (Just 0)-+(bank_sel, bank_sel_p) = pF "bank_sel" (Just 0) (osc1pw, osc1pw_p) = pF "osc1pw" (Just 0)- (osc1pwm, osc1pwm_p) = pF "osc1pwm" (Just 0)+(osc2oct, osc2oct_p) = pF "osc2oct" (Just 0)+(osc2semi, osc2semi_p) = pF "osc2semi" (Just 0)+(osc2detune, osc2detune_p) = pF "osc2detune" (Just 0)+(osc2fm, osc2fm_p) = pF "osc2fm" (Just 0)+(osc2shape, osc2shape_p) = pF "osc2shape" (Just 0)+(osc2pw, osc2pw_p) = pF "osc2pw" (Just 0)+(osc2pwm, osc2pwm_p) = pF "osc2pwm" (Just 0)+(osc3oct, osc3oct_p) = pF "osc3oct" (Just 0)+(osc3semi, osc3semi_p) = pF "osc3semi" (Just 0)+(osc3detune, osc3detune_p) = pF "osc3detune" (Just 0)+(osc3fm, osc3fm_p) = pF "osc3fm" (Just 0)+(osc3shape, osc3shape_p) = pF "osc3shape" (Just 0)+(osc3pw, osc3pw_p) = pF "osc3pw" (Just 0)+(osc3pwm, osc3pwm_p) = pF "osc3pwm" (Just 0)+(sync, sync_p) = pF "sync" (Just 0)+(pitchmod, pitchmod_p) = pF "pitchmod" (Just 0)+(glide_mode, glide_mode_p) = pF "glide_mode" (Just 0)+(osc1lvl, osc1lvl_p) = pF "osc1lvl" (Just 0)+(osc1bal, osc1bal_p) = pF "osc1bal" (Just 0)+(ringmod_lvl, ringmod_lvl_p) = pF "ringmod_lvl" (Just 0)+(ringmod_bal, ringmod_bal_p) = pF "ringmod_bal" (Just 0)+(osc2lvl, osc2lvl_p) = pF "osc2lvl" (Just 0)+(osc2bal, osc2bal_p) = pF "osc2bal" (Just 0)+(osc3lvl, osc3lvl_p) = pF "osc3lvl" (Just 0)+(osc3bal, osc3bal_p) = pF "osc3bal" (Just 0)+(noise_lvl, noise_lvl_p) = pF "noise_lvl" (Just 0)+(noise_bal, noise_bal_p) = pF "noise_bal" (Just 0)+(noise_col, noise_col_p) = pF "noise_col" (Just 0)+(sus_ped, sus_ped_p) = pF "sus_ped" (Just 0)+(glide_act, glide_act_p) = pF "glide_act" (Just 0)+(sostenuto, sostenuto_p) = pF "sostenuto" (Just 0)+(routing, routing_p) = pF "routing" (Just 0)+(fil1tp, fil1tp_p) = pF "fil1tp" (Just 0)+(fil1cut, fil1cut_p) = pF "fil1cut" (Just 0)+(fil1res, fil1res_p) = pF "fil1res" (Just 0)+(fil1drv, fil1drv_p) = pF "fil1drv" (Just 0)+(fil1key, fil1key_p) = pF "fil1key" (Just 0)+(fil1enva, fil1enva_p) = pF "fil1enva" (Just 0)+(fil1envv, fil1envv_p) = pF "fil1envv" (Just 0)+(fil1cutmo, fil1cutmo_p) = pF "fil1cutmo" (Just 0)+(fil1fm, fil1fm_p) = pF "fil1fm" (Just 0)+(fil1pan, fil1pan_p) = pF "fil1pan" (Just 0)+(fil1panmod, fil1panmod_p) = pF "fil1panmod" (Just 0)+(fil2tp, fil2tp_p) = pF "fil2tp" (Just 0)+(fil2cut, fil2cut_p) = pF "fil2cut" (Just 0)+(fil2res, fil2res_p) = pF "fil2res" (Just 0)+(fil2drv, fil2drv_p) = pF "fil2drv" (Just 0)+(fil2key, fil2key_p) = pF "fil2key" (Just 0)+(fil2enva, fil2enva_p) = pF "fil2enva" (Just 0)+(fil2envv, fil2envv_p) = pF "fil2envv" (Just 0)+(fil2cutmo, fil2cutmo_p) = pF "fil2cutmo" (Just 0)+(fil2fm, fil2fm_p) = pF "fil2fm" (Just 0)+(fil2pan, fil2pan_p) = pF "fil2pan" (Just 0)+(fil2panmod, fil2panmod_p) = pF "fil2panmod" (Just 0)+(amp_vol, amp_vol_p) = pF "amp_vol" (Just 0)+(amp_vel, amp_vel_p) = pF "amp_vel" (Just 0)+(amp_mod, amp_mod_p) = pF "amp_mod" (Just 0)+(fx1mix, fx1mix_p) = pF "fx1mix" (Just 0)+(fx2mix, fx2mix_p) = pF "fx2mix" (Just 0)+(fe_att, fe_att_p) = pF "fe_att" (Just 0)+(fe_dec, fe_dec_p) = pF "fe_dec" (Just 0)+(fe_sus, fe_sus_p) = pF "fe_sus" (Just 0)+(fe_dec2, fe_dec2_p) = pF "fe_dec2" (Just 0)+(fe_sus2, fe_sus2_p) = pF "fe_sus2" (Just 0)+(fe_rel, fe_rel_p) = pF "fe_rel" (Just 0)+(ae_att, ae_att_p) = pF "ae_att" (Just 0)+(ae_dec, ae_dec_p) = pF "ae_dec" (Just 0)+(ae_sus, ae_sus_p) = pF "ae_sus" (Just 0)+(ae_dec2, ae_dec2_p) = pF "ae_dec2" (Just 0)+(ae_sus2, ae_sus2_p) = pF "ae_sus2" (Just 0)+(ae_rel, ae_rel_p) = pF "ae_rel" (Just 0)+(e3_att, e3_att_p) = pF "e3_att" (Just 0)+(e3_dec, e3_dec_p) = pF "e3_dec" (Just 0)+(e3_sus, e3_sus_p) = pF "e3_sus" (Just 0)+(e3_dec2, e3_dec2_p) = pF "e3_dec2" (Just 0)+(e3_sus2, e3_sus2_p) = pF "e3_sus2" (Just 0)+(e3_rel, e3_rel_p) = pF "e3_rel" (Just 0)+(e4_att, e4_att_p) = pF "e4_att" (Just 0)+(e4_dec, e4_dec_p) = pF "e4_dec" (Just 0)+(e4_sus, e4_sus_p) = pF "e4_sus" (Just 0)+(e4_dec2, e4_dec2_p) = pF "e4_dec2" (Just 0)+(e4_sus2, e4_sus2_p) = pF "e4_sus2" (Just 0)+(e4_rel, e4_rel_p) = pF "e4_rel" (Just 0)+(soff, soff_p) = pF "soff" (Just 0)+(res_ctrl, res_ctrl_p) = pF "res_ctrl" (Just 0)+(loc_cont, loc_cont_p) = pF "loc_cont" (Just 0)+(noff, noff_p) = pF "noff" (Just 0) -(osc1vol, osc1vol_p) = pF "osc1vol" (Just 0) -(osc1pan, osc1pan_p) = pF "osc1pan" (Just 0)--(ringmod, ringmod_p) = pF "ringmod" (Just 0)--(ringpan, ringpan_p) = pF "ringpan" (Just 0)--(noise, noise_p) = pF "noise" (Just 0)--(noisepan, noisepan_p) = pF "noisepan" (Just 0)+blofeldController :: ControllerShape+blofeldController = ControllerShape {+ controls = [+ mCC mod_w_p 1,+ mCC br_ctrl_p 2,+ mCC ft_ctrl_p 4,+ mCC gl_rate_p 5,+ mCC ch_vol_p 7,+ mCC pan__p 10,+ mCC arp_rng_p 12,+ mCC arp_len_p 13,+ mCC arp_act_p 14,+ CC lfo1shape_p 15 (0, 5) passThru -- 0..5 - sine,triangle,square,saw,random,sample&hold+ ,mCC lfo1speed_p 16,+ CC lfo1sync_p 17 (0, 1) passThru -- 0 off, 1 on+ ,mCC lfo1delay_p 18,+ mCC lfo2shape_p 19,+ mCC lfo2speed_p 20,+ mCC lfo2sync_p 21,+ mCC lfo2delay_p 22,+ mCC lfo3shape_p 23,+ mCC lfo3speed_p 24,+ mCC lfo3sync_p 25,+ mCC lfo3delay_p 26,+ CC osc1oct_p 27 (16, 112) passThru -- 16, 28, 40 .. 112 - 128' .. 1/2'+ ,CC osc1semi_p 28 (52, 76) passThru -- 52 .. 76 - -12 - +12 semitones+ ,mCC osc1detune_p 29,+ mCC osc1fm_p 30,+ CC osc1shape_p 31 (0, 5) passThru -- 0..5 - pulse, saw, tri, sine, alt 1, alt 2+ ,mCC bank_sel_p 32,+ mCC osc1pw_p 33,+ mCC osc1pwm_p 34,+ mCC osc2oct_p 35,+ mCC osc2semi_p 36,+ mCC osc2detune_p 37,+ mCC osc2fm_p 38,+ mCC osc2shape_p 39,+ mCC osc2pw_p 40,+ mCC osc2pwm_p 41,+ mCC osc3oct_p 42,+ mCC osc3semi_p 43,+ mCC osc3detune_p 44,+ mCC osc3fm_p 45,+ mCC osc3shape_p 46,+ mCC osc3pw_p 47,+ mCC osc3pwm_p 48,+ mCC sync_p 49,+ mCC pitchmod_p 50,+ mCC glide_mode_p 51,+ mCC osc1lvl_p 52,+ mCC osc1bal_p 53,+ mCC ringmod_lvl_p 54,+ mCC ringmod_bal_p 55,+ mCC osc2lvl_p 56,+ mCC osc2bal_p 57,+ mCC osc3lvl_p 58,+ mCC osc3bal_p 59,+ mCC noise_lvl_p 60,+ mCC noise_bal_p 61,+ mCC noise_col_p 62,+ mCC sus_ped_p 64,+ mCC glide_act_p 65,+ mCC sostenuto_p 66,+ mCC routing_p 67,+ mCC fil1tp_p 68,+ mCC fil1cut_p 69,+ mCC fil1res_p 70,+ mCC fil1drv_p 71,+ mCC fil1key_p 72,+ mCC fil1enva_p 73,+ mCC fil1envv_p 74,+ mCC fil1cutmo_p 75,+ mCC fil1fm_p 76,+ mCC fil1pan_p 77,+ mCC fil1panmod_p 78,+ mCC fil2tp_p 79,+ mCC fil2cut_p 80,+ mCC fil2res_p 81,+ mCC fil2drv_p 82,+ mCC fil2key_p 83,+ mCC fil2enva_p 84,+ mCC fil2envv_p 85,+ mCC fil2cutmo_p 86,+ mCC fil2fm_p 87,+ mCC fil2pan_p 88,+ mCC fil2panmod_p 89,+ mCC amp_vol_p 90,+ mCC amp_vel_p 91,+ mCC amp_mod_p 92,+ mCC fx1mix_p 93,+ mCC fx2mix_p 94,+ mCC fe_att_p 95,+ mCC fe_dec_p 96,+ mCC fe_sus_p 97,+ mCC fe_dec2_p 98,+ mCC fe_sus2_p 99,+ mCC fe_rel_p 100,+ mCC ae_att_p 101,+ mCC ae_dec_p 102,+ mCC ae_sus_p 103,+ mCC ae_dec2_p 104,+ mCC ae_sus2_p 105,+ mCC ae_rel_p 106,+ mCC e3_att_p 107,+ mCC e3_dec_p 108,+ mCC e3_sus_p 109,+ mCC e3_dec2_p 110,+ mCC e3_sus2_p 111,+ mCC e3_rel_p 112,+ mCC e4_att_p 113,+ mCC e4_dec_p 114,+ mCC e4_sus_p 115,+ mCC e4_dec2_p 116,+ mCC e4_sus2_p 117,+ mCC e4_rel_p 118,+ mCC soff_p 120,+ mCC res_ctrl_p 121,+ mCC loc_cont_p 122,+ mCC noff_p 123+ ],+ latency = 0.1 } -(noisecol, noisecol_p) = pF "noisecol" (Just 0)+blofeld = toShape blofeldController
Sound/Tidal/MIDI/Control.hs view
@@ -8,11 +8,14 @@ import Sound.Tidal.Tempo (Tempo(cps)) import qualified Data.Map.Strict as Map import Data.Ratio-import Sound.Tidal.Params hiding (n_p)+import Sound.Tidal.Params hiding (n_p, legato_p) n_p :: S.Param n_p = snd $ pI "n" (Just 128) +legato_p :: S.Param+legato_p = snd $ pF "legato" (Just $ negate 1.0)+ {-| Map a 'Double' to 'Int' using given min/max values -}@@ -72,7 +75,8 @@ n_p, nudge_p, velocity_p, - unit_p+ unit_p,+ legato_p ], S.latency = 0, S.cpsStamp = False@@ -89,12 +93,13 @@ -> ((Int,Int,Ratio Integer), Double) -- ^ A tuple of a 'Sound.Tidal.MIDI.Output.TimedNote' triplet and the value for 'nudge' to offset this note by computeTiming tempo duration note' = ((n', v', d'), nudge') where- unit' = S.svalue $ note' Map.! unit_p + legato' = realToFrac $ S.fvalue $ note' Map.! legato_p+ unit' = if (legato' <= 0) then (head $ S.svalue $ note' Map.! unit_p) else 'c' v' = mapRange (0, 127) $ S.fvalue $ note' Map.! velocity_p n' = S.ivalue $ note' Map.! n_p d' = case unit' of- "rate" -> byRate- "cycle" -> (+) (-0.001) $ (/) duration $ realToFrac $ cps tempo+ 'r'-> byRate+ 'c' -> (+) (-0.001) $ (*) (abs legato') $ (/) duration $ realToFrac $ cps tempo _ -> byRate byRate = realToFrac $ S.fvalue $ note' Map.! dur_p
Sound/Tidal/MIDI/GMPerc.hs view
@@ -13,7 +13,7 @@ perc = midinote . (percN <$>) -percN :: String -> Int+percN :: Num a => String -> a percN "hq" = 27 percN "sl" = 28 percN "sps" = 29
tidal-midi.cabal view
@@ -1,5 +1,5 @@ name: tidal-midi-version: 0.9.5.2+version: 0.9.9 synopsis: MIDI support for tidal -- description: homepage: http://tidal.lurk.org/@@ -39,7 +39,7 @@ Sound.Tidal.MIDI.System1M Sound.Tidal.MIDI.KorgKP3 - Build-depends: base < 5, tidal >= 0.9.5, PortMidi >= 0.1.6.0, time, containers, transformers+ Build-depends: base < 5, tidal >= 0.9.9, PortMidi >= 0.1.6.0, time, containers, transformers source-repository head type: git