diff --git a/lib-parvagues/lib-parvagues.cabal b/lib-parvagues/lib-parvagues.cabal index a866eaa..b8d0813 100644 --- a/lib-parvagues/lib-parvagues.cabal +++ b/lib-parvagues/lib-parvagues.cabal @@ -1,5 +1,5 @@ name: lib-parvagues -version: 0.2.1 +version: 0.3.1 -- synopsis: -- description: homepage: https://git.plnech.fr/Tidal diff --git a/lib-parvagues/src/Sound/Tidal/ParVagues/Control.hs b/lib-parvagues/src/Sound/Tidal/ParVagues/Control.hs index ec3c1ff..4d538ad 100644 --- a/lib-parvagues/src/Sound/Tidal/ParVagues/Control.hs +++ b/lib-parvagues/src/Sound/Tidal/ParVagues/Control.hs @@ -4,7 +4,8 @@ module Sound.Tidal.ParVagues.Control ( midiNo, midiDJF, midiG, - midiG' + midiG', + midiGGlobal ) where import Sound.Tidal.Context @@ -12,6 +13,7 @@ module Sound.Tidal.ParVagues.Control ( import Sound.Tidal.Chords -- Midi boolean buttons + -- midiOn midiOn ch pat = someCyclesBy ch pat midiOff ch pat = someCyclesBy (1 - ch) pat midiNo c1 c2 pat = someCyclesBy (1 - c1 - c2) pat @@ -20,12 +22,10 @@ module Sound.Tidal.ParVagues.Control ( _LPF lMin lMax ch = (# lpf (min lMax ((range lMin ((lMax*2) - lMin) ch)))) _HPF hMin hMax ch = (# hpf (max hMin (min hMax (range (hMin - hMax) (hMax - hMin) ch)))) midiDJF ch lMin lMax hMin hMax = (_LPF lMin lMax ch) . (_HPF hMin hMax ch) + -- FIXME: Seems to cut some lows when lMin != 0 -- Midi gain control (faders) - _gainG ch gFactor = (gain (gf * "^77" * ch)) -- gain Global - midiG' ch l h - midiG - -- TODO Finir gain control - let gG a = (gain (gF * "^77" * a)) -- gain Global - let gM' l h a = (gG (range l h a)) -- gain Modéré - let gM a = (gM' 0.2 0.8 a) -- gain Modéré doux + midiGGlobal = "^77" + _gainG ch = (gain (midiGGlobal * ch)) -- gain Global + midiG' ch l h = _gainG (range l h ch) -- midiGain control + midiG ch = midiG' ch 0 1 -- midiGain default diff --git a/live/hip/trapped_in_space.tidal b/live/hip/trapped_in_space.tidal new file mode 100644 index 0000000..ffd201f --- /dev/null +++ b/live/hip/trapped_in_space.tidal @@ -0,0 +1,110 @@ +-- TRAPPED IN SPACE: Glitchy trap beat + +do +setcps (120/60/4) +let whenTrap = (whenmod 32 16) +let prog = "<0 0 0 0 1 2 0 0 1 2 1 2 3 4 1 0>" +let modIndex = pF "modIndex" +d1 + $ whenTrap (|<| "k ~ ~ k . ~") + $ "k ~ ~ k . ~" + # "reverbkick" + # lpf 500 + # orbit 0 + # legato 2 + # room 0.2 # dry 1 + # gain 0.75 +d2 + $ "~ hh27:9" + # lpf 1000 + # room 0.87 # dry 0.99 + # gain 1 + # orbit 1 +d3 + $ whenTrap (<| "<~ h*4> <~ h*8>") + $ "h*<4 8> h*<8!3 16>" + # "[hh27:3,dr]" + # gain (slow 16 $ range 0.5 0.8 saw) + # lpf 4500 + # orbit 0 +d4 + $ whenTrap ( + (|+ note 12) + . (# hpf 1500) + . (# lpf 10000) + . (# crush (slow 16 $ range 8 3.5 saw) -- Sync whenTrap + ) + ) + $ whenmod 4 3 (scramble 6) + $ whenmod 4 3 (scramble 6) + $ whenmod 8 4 rev + $ mask "" + $ note (scale "aeolian" ( + "<~!3 5 ~!4> . 0 1 3 2 0" + + "[0]" + + prog + ) - 24) + # "arpy" + # gain (slow 24 $ range 0.55 0.75 perlin) + # lpf 500 + # room 0.3 + # orbit 4 + # crush 4 +d5 + $ whenTrap ( + (# crush (slow 16 $ range 10 5 saw)) -- Sync 16/whenTrap + . (|+ gain (slow 16 $ range 0 0.15 saw)) -- Sync whenTrap + ) + $ note (scale "aeolian" ( + "0 . 0 [0 1]" + + prog + ) - 24) + # orbit 4 + # "supersaw" + # voice 0.1 + # pan 0.2 + # gain (slow 16 $ range 0.35 0.55 perlin) +d6 + $ note (scale "aeolian" ( + whenmod 16 9 (+ "<0 -1 -2 -4>") + "0*[16 8]" + )) + # "hh27:4" -- Clochettes + # gain (slow 16 $ range 0.5 0.8 saw) +d7 -- ARPS <3 + $ degradeBy (slow 8 $ range 0.8 0.2 saw) + $ fast "1 2" + $ arp "pinkyup" + $ note (scale "aeolian" ( + "<0 ~> 0" + + prog) + + "0 -12" + ) + # "FMRhodes1" + # modIndex "[0,5,10]" + # pan 0.6 + # gain 0.9 + + + + +once $ "hh27:0" -- Drum metal echo + -- # gain 1.5 + +once $ "hh27:1" -- Ho lo +once $ "hh27:7" -- Ho hi +once $ "hh27:10" -- Ho hi soft + +once $ "hh27:2" -- Maracas fermées +once $ "hh27:9" -- Maracas fermées lo + +once $ "hh27:3" -- Maracas ouvertes / balai +once $ "hh27:8" -- Same plus aigu + +once $ "hh27:4" -- Clochettes + +once $ "hh27:5" -- Kick neige +once $ "hh27:6" -- Kick sec + +once $ "hh27:12" -- Snare lo +once $ "hh27:11" -- Snare hi diff --git a/live/midi/nova/breaks/break_90s.tidal b/live/midi/nova/breaks/break_90s.tidal new file mode 100644 index 0000000..30d8a6f --- /dev/null +++ b/live/midi/nova/breaks/break_90s.tidal @@ -0,0 +1,120 @@ +import Sound.Tidal.ParVagues.Control + +-- Accompagnement en ré au https://mmontag.github.io/dx7-synth-js/ + +setcps (80/60/4) +resetCycles + +do +let gG a = (gain (1 * "^77" * a)) -- gain Global +let gF = (whenmod 16 12 (# djf (slow 4 $ range 0 0.5 sine))) +let gDJF = (midiDJF "^49" 0 10000 0 10000) +let gM' l h a = (gG (range l h a)) -- gain Modéré +let gM a = (gM' 0.2 0.8 a) -- gain Modéré doux +let g = (gF . gDJF) +d1 + $ g + $ midiOn "^41" (superimpose (# "kick:5") + . (<| "k k k k k k k k*2") + . (# room 0) + . (|* gain 0.9) + ) + $ midiOn "^42" (mask "") + $ whenmod 4 2 (off (-1/"<8 16>") ( + degradeBy "0 1!7" . (|* gain 0.9)) + ) + $ midiOff "^41" ( + someCyclesBy "<0!8 1!8>" (<| "k . k(<5 <3 [3 <8 [8!3 4]>]>>,8)") + . someCyclesBy "<1!8 0!8>" (<| "k . <~!4 k!4>" ) + ) + $ "reverbkick" + # room 0.4 # sz 0.8 # dry 0.99 # orbit 1 + # midiG' "^78" 0 1.5 +d2 + $ g + $ midiOn "^43" (slice 4 "0 1") + $ midiOff "^43" ( + slice 4 ( + "0 1*[1|2] 2 3*<1 1 2 <2 4>>" -- Progressif + -- "0 <~ 0 1 ~> <0 0 2 2> <~ 0 2 3>" -- Broken + )) + $ "fbreak80:2" + # midiG' "^79" 0 1.5 + # pan 0.6 + # cut 2 +d3 -- Bassline + $ (# lpf (range 10000 500 "^53")) + $ g + $ midiOn "^89" (off "h" ( + -- mask "t f" + (# speed 2) + . (# cut 31) + . (|* gain 0.8) + . (|+ gain 0.1) + )) + $ loopAt 2 + $ midiOn "^57" ( -- Le slice + whenmod 16 4 ( + slice 4 "0 1 2*2 <0 3>" + ) . every' 16 3 ( + slice 4 "0 1 2 [2 3]" + ) + ) + $ midiOff "^57" ( -- L'attente + slice 4 "0 <~ 1> <~ ~ 2 2> <~!3 3>" + ) + $ "fbass:9" + # cut 3 + # crush (range 10 4 "^53") + # pan 0.2 + # midiG' ("^81" + 0.125*"^53") 0 1.5 +d4 + $ g + $ superimpose (const + $ whenmod 8 4 (degrade) + $ segment 8 $ "fmono:9" + # midiG' "^55" 0.2 1.2 + # cut 42) + $ midiOn "^59" (superimpose ( + degradeBy ("0 1!14 0" * (slow 16 $ (1-"^55"))) + . struct "t*16" + . (|+ note (12 + "[0|5]")) + . (|* gain (slow 16 $ range 0.9 0.5 sine)) + . (# cut 41) + )) + $ slice 8 ("<~ 3 ~ 2> 0 <~ 4 5 6> <0 1>") + $ "forgan:9" # cut 5 + # orbit 4 + # room 0.7 # sz 0.8 + # midiG' "^83" 0.2 0.8 +d5 $ g + $ midiOn "^58" (superimpose ( + (0.5 ~>) + . fast "<1!8 2!8 4!8 1!4 2!4 4!8>" + . (|+ note ("12")) + . (|* gain 1.2) + . (|+ pan 0.125) + )) + $ sometimesBy 0.125 ("1/32" ~>) + $ whenmod 16 4 (|+| note "<0!4 [0 a4]!4>") + $ note "" + # "superpiano" + # velocity (0.35 + perlin/8) + # room 0.6 # sz 0.5 + # pan 0.6 + # orbit 5 + # midiG' "^82" 0.3 1.5 +d8 $ g + $ someCyclesBy (slow 8 $ saw) (juxBy 0.3 rev) + $ whenmod 16 8 (ply "2 1") + $ "hh27:2(<4 5 8 [8 16]>,8)" + # pan 0.8 # room 0.4 # orbit 8 # dry 0.9 + # midiG' "^80" 0 1.5 +d9 + $ whenmod 16 12 ( + fast 2 . (|* gain (slow 4 $ range 1 0.5 saw)) + ) + $ midiOn "^60" (fast 2 ) -- TODO DNB + $ "~ clap" + # release "<0.25!3 0.125 0.25!4 0.125!4>" + # midiG' "^84" 0 1.5 diff --git a/live/midi/nova/lounge/invoque_ete.tidal b/live/midi/nova/lounge/invoque_ete.tidal index a86b369..e5c2775 100644 --- a/live/midi/nova/lounge/invoque_ete.tidal +++ b/live/midi/nova/lounge/invoque_ete.tidal @@ -15,36 +15,40 @@ setcps (115/60/4) d1 $ g $ novaOn "^41" (<| "k k k ") $ novaOff "^41" (<| "k*2") - $ "[jazz,808bd:1]" + $ "[reverbkick,jazz,808bd:1]" # gM' 0 1.2 "^78" -d2 +d2 $ g $ novaOn "^75" (fast 2) - $ (|* gain - "0.75 1 1 1 0.75 1 1 1" ) + $ (|* gain "0.75 1 1 1 0.75 1 1 1") $ "d ~ ~ d d ~ d <~!3 d>" - # "snare:22" # gM' 0 1.2 "^79" + # "snare:22" # gM' 0 1.4 "^79" # speed (range 0.5 1.5 "^51") d4 $ g - $ novaOn "^44" (slow 2) - $ novaOn "^76" (slice 8 ("0 1 2 3 <4 0> <5 1> 6 7") . (loopAt 2) . (>| "fbreak80:2") . - (# gM' 0 1.5 "^80") - ) - $ (|* gain (slow 2 $ range 1 1.1 perlin)) - $ novaOff "^76" (<| "s*[8 . 16 8 8]" ) - $ "snare:26" - # speed (range 0.5 1.5 "^52") - # gM' 0 1 "^80" + $ midiOn "^44" (slice 8 "0 <1 ~> 7 3*<1 2 4 4>") + $ sometimesBy "0 ^32!7" (shuffle 8) + $ someCyclesBy "^52" (iter 4) + -- $ slice 8 "0 1 <2!3 0> <3!3 1 4 5 6 7>" "0 1 <2!3 0> <3!3 1>" + $ chop 8 + $ loopAt 2 $ "breaks125:3" + # gM' 0 1.5 "^80" # cut 4 d5 $ g $ loopAt 2 $ slice 8 (run "<4!4 8 8 [4 8 4] 8>") $ "fbass:13" # pan 0.2 - # gM' 0.4 1.1 "^81" # room 0.2 # crush (range 10 4.5 "^53") + # gM' 0.3 1.1 "^81" # cut 4 d6 $ g + $ someCyclesBy "^58" (superimpose ( + degradeBy (slow 8 $ sine) . segment 8 + . (# speed 1) + . (|* gain (0.5 + 0.1 * perlin)) . (|+ pan 0.1) + . (# cut 31) + ) + ) $ whenmod 16 12 (rev) $ whenmod 8 4 (chop 4) $ loopAt 4 @@ -84,7 +88,7 @@ d8 $ g # gM' 0 1 "^84" # pan (segment 16 $ "^36") d9 $ g - -- $ whenmod 8 4 (juxBy 0.5 rev) + $ degradeBy (slow 16 $ range 0.8 0.2 saw) $ struct "t(3,8) [ ]" $ novaOn "^59" (# speed (range 0.25 2 ("^55" + perlin))) $ novaOff "^59" (# speed diff --git a/live/midi/nova/lounge/top_hats.tidal b/live/midi/nova/lounge/top_hats.tidal index 9bacf49..49e5864 100644 --- a/live/midi/nova/lounge/top_hats.tidal +++ b/live/midi/nova/lounge/top_hats.tidal @@ -12,7 +12,7 @@ let modIndex = pF "modIndex" -- 0.2 let gG a = (gain (1.2 * "^77" * a)) -- gain Global let gM' l h a = (gG (range l h a)) -- gain Modéré let gM a = (gM' 0.2 0.8 a) -- gain Modéré doux -let gDJF = midiDJF "^49" 200 10000 0 7500 +let gDJF = midiDJF "^49" 0 10000 0 7500 let g = (gDJF) setcps 0.5 d1 $ g @@ -31,6 +31,7 @@ d3 $ g $ whenmod 16 8 (often $ fast 2) $ someCyclesBy "<1!16 0!16>" (often $ slow "2!3 1") + $ fix ((|* gain 0.9) . (# release 0.8)) (n 9) $ "hh27*8" # n "2 <2 <[2|9] [9 <9 ~> <~ 9> 2]>>" # gM' 0.5 1.75 "^80" @@ -42,7 +43,7 @@ d4 . fast "1 2" . arp "pinkyup" . (|+ pan 0.1) - . (|* gain 1.25) + . (|* gain 1.2) )) $ note (( "<0 ~> 0" @@ -54,7 +55,7 @@ d4 # modIndex "[0,5,10]" # pan 0.6 # crush (range 10 4 "^54") - # gM' 0.3 1.5 "^82" + # gM' 0.3 1.6 "^82" d5 $ g -- Choirs + arps $ juxBy "-0.7" ( arp ">" @@ -65,7 +66,7 @@ d5 $ g -- Choirs + arps $ "moogBass" # note prog # octave 3 - # gain 0.75 + # gM' 0.3 1.5 "^56" # pan 0.2 # chorus 0.6 d6 $ g -- Guitar riffs @@ -74,7 +75,7 @@ d6 $ g -- Guitar riffs . (# cut 61) )) $ slice 4 ( - whenmod 16 8 (+| "0 0") + whenmod 16 8 (+| "0 <0!6 ~ ~>") "<0!4 1 1 2 3>" ) $ note 2 -- correction @@ -100,26 +101,9 @@ d8 $ g # cut 8 # gM' 0 1.5 "^83" # release 100 -d9 $ g $ "~ clap" # note (-8) # gM' 0 1.5 "^84" - - -once $ "hh27:0" -- Drum metal echo - # gain 1.5 - -once $ "hh27:1" -- Ho lo -once $ "hh27:7" -- Ho hi -once $ "hh27:10" -- Ho hi soft - -once $ "hh27:2" -- Maracas fermées -once $ "hh27:9" -- Maracas fermées lo - -once $ "hh27:3" -- Maracas ouvertes / balai -once $ "hh27:8" -- Same plus aigu - -once $ "hh27:4" -- Clochettes - -once $ "hh27:5" -- Kick neige -once $ "hh27:6" -- Kick sec - -once $ "hh27:12" -- Snare lo -once $ "hh27:11" -- Snare hi +d9 $ g + $ midiOn "^60" (fast 2 . ply "1 <1 <2!3 1>>") + $ midiOn "^92" (fast 4) + $ "~ clap" + # note (-8) + # gM' 0 1.5 "^84" diff --git a/live/mood/soothing/tone_down.tidal b/live/mood/soothing/tone_down.tidal index 6ae7726..d11cbb2 100644 --- a/live/mood/soothing/tone_down.tidal +++ b/live/mood/soothing/tone_down.tidal @@ -1,8 +1,9 @@ +resetCycles +setcps (60/60/4) + -- DIGITAL DREAMS OF MINITEL REVIVAL -- Techno numérico-mélancolique résolvable do -resetCycles -setcps (60/60/4) let mel = "c > > @4" d1 -- BEAT -- $ slow 2-- TODO Resolve :) diff --git a/live/mood/tired/afternoon.tidal b/live/mood/tired/afternoon.tidal index 0151554..2e1277d 100644 --- a/live/mood/tired/afternoon.tidal +++ b/live/mood/tired/afternoon.tidal @@ -1,5 +1,6 @@ -do resetCycles + +do setcps (60/60/4) let mel = "] e3 b3>" let prog = ">" @@ -8,9 +9,10 @@ d1 -- BEAT + Snares whenmod 4 3 (ply "2 4") . fast "<1!4 2!10 4 [4 8]>" . (# n "[3,11]") - . (# gain 0.75) + . (# gain 0.6) ) ("snare") - $ "jazz(<1!3 <3 5>>,8) snare" # gain 0.7 + $ "[jazz,bd](<1!3 <3 5>>,8) snare" # gain 0.8 + # room 0.2 # sz 0.6 d2 -- BREAK $ whenmod 32 16 (# djf (slow 32 (cosine + 0.5))) $ slice 8 ( @@ -23,10 +25,13 @@ d2 -- BREAK # gain 0.65 # cut 2 d6 -- Nappes Rhodes - $ note prog + $ note ( + prog + + "0 12" + ) # "FMRhodes1" # pan 0.2 - # gain 0.9 + # gain 1.1 d7 -- Hello PWM $ note (mel - 12) # "superpwm" @@ -34,4 +39,4 @@ d7 -- Hello PWM # accelerate "<0!7 <6 12>>" # rate "<1!5 2 4 <1 4>>" # resonance (slow 32 $ range 0.2 0.6 sine) - # gain (slow 128 $ range 0.5 0.65 saw) + # gain (slow 32 $ range 0.65 0.85 saw) diff --git a/live/techno/funk/electric.tidal b/live/techno/funk/electric.tidal index 0b89402..5c32a1e 100644 --- a/live/techno/funk/electric.tidal +++ b/live/techno/funk/electric.tidal @@ -1,5 +1,6 @@ resetCycles -- ElectricFunk: TODO less electric feel bass + do setcps (110/60/4) let gDjfLeg = (whenmod 64 32 (# djf (slow 32 $ range 0.2 0.8 sine)))