From a382ef8401bd173d610bc3844df57e081959b56d Mon Sep 17 00:00:00 2001 From: Paul-Louis NECH Date: Tue, 29 Jun 2021 09:56:14 +0200 Subject: [PATCH] live: From amis_roots to fm_radio --- live/ambient/fm_radio.tidal | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ live/dub/amis_roots.tidal | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ live/dub/fdlm2021.tidal | 5 ++++- live/midi/nova/FM/fm.tidal | 2 +- live/midi/nova/FM/heure_a_perdre.tidal | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ live/midi/nova/FM/paul_machine.tidal | 12 +++++------- live/midi/nova/breaks/StolenChoir.tidal | 15 +++++++-------- live/midi/nova/lofi/back_baby.tidal | 2 -- live/midi/nova/lofi/dark_money.tidal | 24 +++++++++++++++++++++--- live/midi/nova/lounge/top_hats.tidal | 4 ++-- 10 files changed, 335 insertions(+), 24 deletions(-) create mode 100644 live/ambient/fm_radio.tidal create mode 100644 live/dub/amis_roots.tidal create mode 100644 live/midi/nova/FM/heure_a_perdre.tidal diff --git a/live/ambient/fm_radio.tidal b/live/ambient/fm_radio.tidal new file mode 100644 index 0000000..8f2c18d --- /dev/null +++ b/live/ambient/fm_radio.tidal @@ -0,0 +1,121 @@ +resetCycles + +setcps (120/60/4) + +do +let fmamp op = pF ("amp" ++ show op) +let fmratio op = pF ("ratio" ++ show op) +let fmdetune op = pF ("detune" ++ show op) +let fmmod opa opb = pF ("mod" ++ show opa ++ show opb) +let fmfeedback = pF "feedback" +let fmeglevel op step = pF ("eglevel" ++ show op ++ show step) +let fmegrate op step = pF ("egrate" ++ show op ++ show step) +let fmparam function (x:xs) = foldr (#) (function 1 x) (zipWith function [2..] xs) +let fmamps = fmparam fmamp +let fmratios = fmparam fmratio +let fmdetunes = fmparam fmdetune +let envrate op = fmparam (fmegrate op) +let envlevel op = fmparam (fmeglevel op) +let prog = "" +let breakPont = whenmod 64 48 (# djf (slow 16 $ range 0.5 0.95 isaw)) +let breakDJF = whenmod 32 20 (# djf (slow 12 $ range 0.5 0.05 isaw)) +let break40 = mask "" +let g = breakDJF . breakPont +let gM = ((# djf "<0.5!20 0.4!12 0.5!16 0.6!16>")) -- Lighter breaks +let gOutDeg = (whenmod 256 128 (degradeBy ("0 0.5!15" * (slow 128 saw)))) +let gOut = (gOutDeg) +d1 $ g + $ break40 + $ mask "" -- Intro périodique + $ someCyclesBy "" (<| "k . k(<3 3 5 [5 8]>,8)") + $ someCyclesBy "" (<| "k k k ") + $ "[jazz,bd,cpu]" + # room 0.31 # sz 0.5 # dry 0.9 + # lpf 3000 + # gain (slow 32 $ range 0.45 0.6 saw) +d2 $ g + $ mask "" -- Intro périodique + $ mask "" + $ whenmod 8 6 (# n "7 . <0 [7 1]>") + $ "hh([8 <[8 [8|12]]!3 <4 [4 16]>>],8)" + # gain (0.33 + 0.1 * (fast 4 perlin)) + # pan "0.2 0.4" +d3 $ gM -- Modulated bassline + $ slow 2 + $ off "h" (arp "converge " . (|* gain 0.75)) + $ n ( + prog + - 12 + ) + # "superfm" + # fmamps [1,"<0!4 1!4>","<0 0.25 0.5 0.75>",0,0,0] + # envlevel 1 [slow 8 "<0.5 0.7 0.8 0.9 1!4>", (slow 16 $ range 1 6 saw), 0, 0, 0, 0] + # fmmod 1 1 1.1 + # fmmod 2 1 1.9 + # fmmod 2 1 "<0!8 0.098!8>" + # envrate 1 [1, 0.1, 0.1, 0, 0, 0] + # envlevel 2 [1, 0, 0, 0, 0, 0] + # envrate 2 [1, 0.3, 0.7, 0, 0, 0] + # envlevel 3 [1, 0.2, 0, 0, 0, 0] + # envrate 3 [10, 0.5, 0.4, 0, 0, 0] + # envlevel 4 [(slow 32 $ range 0.5 1 sine), (slow 32 $ range 0.5 1 cosine), 0, 0, 0, 0] + # legato 2 + # release 2.8 + # gain 0.5 + # fmfeedback ("<0!32 1!96>" * (slow 128 $ "<0!4 1!124>" * (range 0 5.8 (sine/4 + perlin)))) + # pan 0.2 + # hpf 500 +d4 $ gOut -- Réplique Aigue + $ break40 + $ slow 2 + $ struct "t t(<5!3 3>,16)" + $ n ( + arp "up down" + $ off "" id + (fast 6 $ prog + 12) + ) + # "superfm" + # fmamps [1,"<0!4 1!4>","<0 0.25 0.5 0.75>",0,0,0] + # envlevel 1 [slow 8 "<0.5 0.7 0.8 0.9 1!4>", (slow 16 $ range 1 6 saw), 0, 0, 0, 0] + # fmmod 1 1 1.1 + # fmmod 2 1 1.9 + # fmmod 2 1 "<0!8 0.098!8>" + # envrate 1 [1, 0.1, 0.1, 0, 0, 0] + # envlevel 2 [1, 0, 0, 0, 0, 0] + # envrate 2 [1, 0.3, 0.7, 0, 0, 0] + # envlevel 3 [1, 0.2, 0, 0, 0, 0] + # envrate 3 [10, 0.5, 0.4, 0, 0, 0] + # envlevel 4 [(slow 32 $ range 0.5 1 sine), (slow 32 $ range 0.5 1 cosine), 0, 0, 0, 0] + # cut 4 + # gain (range 0 0.48 (0.5 + 0.25 * (slow 16 saw) + 0.05 * perlin)) + # pan (slow 16 $ range 0.6 0.9 sine) + # hpf 1500 +d5 $ g $ gOut -- Snare roll + $ mask "" -- Intro périodique + $ often (ply "1 <2 0.5>") + $ stut 8 0.8 ("") + $ "~ . s" + # "808sd:1" + # gain (slow 8 $ range 0.32 "<0.35!16 0.5!16>" saw) + # room 0.2 + # dry 1.1 + # hpf 3500 +d6 -- CHOIR <3 + $ gM $ gOut + $ superimpose (|+ note 12) + $ note (prog - 24) -- Baseline + # "moogBass" + # gain (slow 32 $ range 0.25 0.305 saw) + # room 0.4 + # pan 0.75 +d7 -- Solists <3 + $ gM $ gOut + $ whenmod 128 64 (striate "1 . 2 4" . ply "<1!8 2!8 4!8 1!8>") + $ struct "t(<3 3 5 [5 <2 [8 <8 16>]>]>,8)" + $ note ("0*4" + + (arp "pinkyup" prog + "0 <7 5>") + ) -- Baseline + # "moogBass" + # gain (0.12 + 0.1 * (slow 16 $ range 0.5 1 saw)) + # room 0.4 + # pan 0.85 diff --git a/live/dub/amis_roots.tidal b/live/dub/amis_roots.tidal new file mode 100644 index 0000000..3dceb39 --- /dev/null +++ b/live/dub/amis_roots.tidal @@ -0,0 +1,76 @@ +import Sound.Tidal.ParVagues.Control + + +do +setcps (90/60/4) +let g = (# djfbus 1 (range 0.05 0.95 "^49")) +d1 $ g + $ midiOn "^41" (<| "f*2 f*2 f [f <~ f> f ~]") + $ midiOff "^41" (<| "0 . 0(3,8,<0!3 4>)") + $ "[rootsDrums,jazz]" + # midiG' "^78" 0 1.8 +d2 $ g + $ midiOn "^43" (fast 2) + $ superimpose ((# "cp") . (# room 0)) + $ n "[~ 4]*<2!6 4 [4 2]>" + # "rootsDrums" + # midiG' "^79" 0 1.8 + # room (slow 24 $ range 0.3 0.9 saw) +d3 $ g + $ slice 4 "0 1 2 3" + $ loopAt 2 + $ "break" + # midiG' "^80" 0 1.8 + # cut 3 +d6 + $ g -- BASSLINE + $ n "<2!4 2 3 3 ~>" + # "rootsBass" + # midiG' "^81" 0 1.5 + # crushbus 62 (range 16 1.4 "^53") + # cut 6 + # pan 0.15 +d4 $ g + $ midiOn "^58" (slice 4 ("<[0 1] [2 3]>")) + -- $ "] g ~ g ~ g ~ ~ [~ g*4]>" + $ "g/4" + # s "rootsGuitar" + # lesliebus 42 (range 0 16 "^54") + # lratebus 41 ("^34") + # midiG' "^82" 0 1.5 + # cut 4 + # pan 0.3 +d5 + $ g + $ degradeBy "^56" + $ slice 16 (run 16) + $ loopAt 2 + $ "rootsMix:1" + # midiG' "^84" 0 1.8 + # cut 5 + # pan 0.6 +d10 -- Trompettes + $ g + $ n "<0 0 ~ ~ 1 1 [1*2 ~] 1 2 [2 3] 3 3 4 5 6 7>" # "rootsTrump" + # cut 8 + # midiG' "^83" 0 (slow 16 $ range 1.4 0.8 saw) + # room 0.4 + # sz 0.8 + # pan 0.8 +d9 + $ "rootsTromb:3/2" + # midiG' "^83" 0 1.4 + # cut 9 +d7 $ g + $ superimpose ( + (# cut 7) + . struct "t*<8!3 12>" + . (|+| note (arp "" "")) + ) + $ note ( + "" + |+| "0 <7 <7 12>>" + ) + # "FMRhodes2" + # crushbus 72 (range 16 4.3 "^36") + # midiG' "^20" 0 1.4 diff --git a/live/dub/fdlm2021.tidal b/live/dub/fdlm2021.tidal index 431f40c..b7b8c8b 100644 --- a/live/dub/fdlm2021.tidal +++ b/live/dub/fdlm2021.tidal @@ -17,6 +17,9 @@ setcps (90/60/4) do let gDJF = (# djfbus 1 (range 0.05 0.95 "^49")) let g = gDJF + +d1 $ fast 4 $ "drum" + d1 $ g $ midiOn "^42" (fast 2) $ midiOn "^41" (<| "k k k ") @@ -121,7 +124,7 @@ d11 $ g -- Final saxes -- Je vous propose une dernière pour la route : -- Un précédent livecoding de Dub qui n'a encore jamais été diffusé ;)# --- Computer Riddim : +-- Computer Riddim : diff --git a/live/midi/nova/FM/fm.tidal b/live/midi/nova/FM/fm.tidal index b2ba62a..df85a34 100644 --- a/live/midi/nova/FM/fm.tidal +++ b/live/midi/nova/FM/fm.tidal @@ -14,7 +14,7 @@ fmdetune :: Int -> Pattern Double -> ControlPattern fmdetune op = pF ("detune" ++ show op) - -- set the modulation of oerator opa by operator opb + -- set the modulation of operator opa by operator opb -- if opa == opb, then the modulation amount is multiplied by the -- 'feedback' parameter fmmod :: Int -> Int -> Pattern Double -> ControlPattern diff --git a/live/midi/nova/FM/heure_a_perdre.tidal b/live/midi/nova/FM/heure_a_perdre.tidal new file mode 100644 index 0000000..98aa78a --- /dev/null +++ b/live/midi/nova/FM/heure_a_perdre.tidal @@ -0,0 +1,98 @@ +-- Reb00t minimaliste + + +do +-- sets the amount of operator 'op' in the superfm output mix +-- (1 <= op <= 6) +-- fmamp :: Int -> Pattern Double -> ControlPattern +let fmamp op = pF ("amp" ++ show op) +-- sets the ratio for operator 'op'. +-- the frequency is note * ratio + detune Hz +-- (1 <= op <= 6) +-- fmratio :: Int -> Pattern Double -> ControlPattern +let fmratio op = pF ("ratio" ++ show op) +-- set the detune for operator 'op' +-- fmdetune :: Int -> Pattern Double -> ControlPattern +let fmdetune op = pF ("detune" ++ show op) +-- set the modulation of oerator opa by operator opb +-- if opa == opb, then the modulation amount is multiplied by the +-- 'feedback' parameter +-- fmmod :: Int -> Int -> Pattern Double -> ControlPattern +let fmmod opa opb = pF ("mod" ++ show opa ++ show opb) +-- feedback +-- fmfeedback :: Pattern Double -> ControlPattern +let fmfeedback = pF "feedback" +-- Envelope definition: each operator has an envelop with 4 steps +-- fmeglevel :: Int -> Int -> Pattern Double -> ControlPattern +let fmeglevel op step = pF ("eglevel" ++ show op ++ show step) +-- Envelope definition: sets the rate at which the envelope moves +-- between steps. Low numbers are slow, high numbers are fast. +-- fmegrate :: Int -> Int -> Pattern Double -> ControlPattern +let fmegrate op step = pF ("egrate" ++ show op ++ show step) +let fmparam function (x:xs) = foldr (#) (function 1 x) (zipWith function [2..] xs) +let fmamps = fmparam fmamp +let fmratios = fmparam fmratio +let fmdetunes = fmparam fmdetune +let envrate op = fmparam (fmegrate op) +let envlevel op = fmparam (fmeglevel op) +-- Params +let lfodepth = pF "lfodepth" +let lfofreq = pF "lfofreq" +-- Nova +let midiOn ch pat = someCyclesBy ch pat +let midiOff ch pat = someCyclesBy (1 - ch) (pat) +let gDJF = (# djfbus 1 (range 0.05 0.95 "^49")) +let g = gDJF +-- Track +let prog = "" +let mel = (scale "aeolian" (slow (4 - (3 * "^57")) $ arp "updown" prog)) +d1 -- Kick 4/4 + $ g + $ midiOn "^41" (<| "k < k!3 ~ k!3> k >") + $ midiOff "^41" (<| "k ~>") + $ "[jazz,kick:5]*4" + # midiG' ("^77" * "^55") 0 1 +d2 -- Hats contretemps + $ ply "1 1 <1 <[2|1] 2>> 1" + $ mask "" + $ mask "" + $ "[~ hh]*4" + # n "<8!7 [8!3 10]>" + # release (slow 16 (range 1 0.05 saw)) + # gain (1.4 * (slow 4 $ range 1 1.48 saw) * "^77" * "^56") + # pan (slow 4 $ range 0.98 0.5 saw) +d3 $ g -- Running Hats + $ mask "" + $ midiOn "^41" (fast 2) + $ fast ("<1!4 2!4 4!24>" * "<1!8 2!8>" * "1 1 1 <1 [1 2] [2 1] 2>") + $ "hh" + # pan (slow 16 $ range 0.2 0.8 saw) + # gain (1.7 * "^77" * "^56") +d5 $ g + $ off "h" id + $ midiOn "^42" (scramble 2 . often (chop "<2!3 4 2 [2 4] 2 4>")) + $ midiOn "^43" (off "q" ((# room 0.2) . (|* gain 0.8))) + $ degradeBy ("<0 0.5> 1!7" * "^50") + $ midiOn "^44" (degradeBy "0 1!5 0.5 0.25") + $ note mel + # s "superfm" + # midiG' "^78" 0 1.3 + # crushbus 51 (range 10 2.65 "^29") + # pan "[<0.2 0.8> <0.8 0.2>]" + # octave (3 + "^59" + "^60") + # fmfeedback "^79" + # fmamps ["^15", "^16", "^17", 0, 0, 0] + # fmratios [1, 4, (slow 8 $ "<0.126 0.26 [0.51 0.52]>"), 0, 0, 0] + # fmdetunes ["^51", 1 - "^52", "^53", 0, 0, 0] + # fmmod 1 1 ("<0 1.25>" + "^31") + # fmmod 1 2 (range 0 2 "^32") + # fmmod 1 3 (range 0 4 "^33") + -- # fmmod 3 2 (range 0 3 (slow 4 sine + "^52")) + # envlevel 1 [1, 0.5, 0, 0, 0, 0] + # envrate 1 [10, 0.1, 0.1, 1, 0, 0] + # envlevel 2 [1, 0, 0, 0, 0, 0] + # envrate 2 [1, 0.3, 0.7, 1, 0, 0] + # envlevel 3 [1, 0.2, 0, 1, 0, 0] + # envlevel 3 [1, 0.2, 0, 1, 0, 0] + # envrate 3 [10, 0.5, 0.4, 1, 0, 0] + # room 0.5 # sz 0.5 diff --git a/live/midi/nova/FM/paul_machine.tidal b/live/midi/nova/FM/paul_machine.tidal index 275dfb7..74421ca 100644 --- a/live/midi/nova/FM/paul_machine.tidal +++ b/live/midi/nova/FM/paul_machine.tidal @@ -63,8 +63,6 @@ d1 # room 0.3 -- endregion V1 - - -- region V2 minimaliste do -- sets the amount of operator 'op' in the superfm output mix @@ -104,13 +102,13 @@ let envlevel op = fmparam (fmeglevel op) let lfodepth = pF "lfodepth" let lfofreq = pF "lfofreq" -- Nova -let novaOn ch pat = someCyclesBy ch pat -let novaOff ch pat = someCyclesBy (1 - ch) (pat) +let midiOn ch pat = someCyclesBy ch pat +let midiOff ch pat = someCyclesBy (1 - ch) pat d1 $ "jazz*<2!16 4!16>" # lpf 2000 # gain (1 - (0.5 * (1 - "^77"))) d2 - $ novaOn "^42" (off "q" ((# room 0.2) . (|* gain 0.8))) - $ novaOn "^43" (degradeBy "0 1!5 0.5 0.25") - $ novaOn "^41" rev + $ midiOn "^42" (off "q" ((# room 0.2) . (|* gain 0.8))) + $ midiOn "^43" (degradeBy "0 1!5 0.5 0.25") + $ midiOn "^41" rev $ s "superfm" |+| note (scale "aeolian" ( -- arp "pinkyup" "[0,4,7,12] [0,5,7,9]" diff --git a/live/midi/nova/breaks/StolenChoir.tidal b/live/midi/nova/breaks/StolenChoir.tidal index 9ce3782..b2c28b7 100644 --- a/live/midi/nova/breaks/StolenChoir.tidal +++ b/live/midi/nova/breaks/StolenChoir.tidal @@ -14,17 +14,16 @@ 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 novaOn ch pat = someCyclesBy ch pat let novaOff ch pat = someCyclesBy (1 - ch) pat -aqlet gReverb = ((# room "^29") . (# sz (range 0 0.9 "^30")) . (# dry (range 0 2 "^13"))) -let gLPF = (# lpf (min 10000 ((range 200 20400 ("^49"))))) -let gHPF = (# hpf (max 0 (min 7500 ((range "-7500" 7500 ("^49")))))) -let gDJF = (gLPF . gHPF) +let gReverb = ((# room "^29") . (# sz (range 0 0.9 "^30")) . (# dry (range 0 2 "^13"))) +let gDJF = (# djfbus 1 (range 0.05 0.95 "^49")) -- endregion Nova Utils let g = (gDJF . gReverb) let chords = "" setcps (80/60/4) d1 $ g - $ "k ~ . k*2 ~" - # "jazz" + $ novaOn "^41" (<| "k k k >") + $ novaOff "^41" (<| "k ~ . k*2 ~") + $ "jazz" # gM' 0 1.1 "^78" d2 $ g $ (# gM' 0.35 0.9 "^79") @@ -49,10 +48,10 @@ d4 $ g $ slice 8 ("<0!3 1 1 0 1 0>(<3 <1 5>>,8)") $ "choir:4" d5 $ g $ novaOn "^58" (chop (4 + ("12" * "^90"))) $ whenmod 4 2 (stutWith 4 "e" (# legato 0.25)) - $ note (chords) + $ note chords # "moogBass" # gM' 0.2 0.5 ("^82" / (1 + (0.4) * "^54")) - # crush (range 16 4 "^34") + # crushbus 51 (range 10 1 "^34") # chorus (range 0 4 "^54") -- 0.7 diff --git a/live/midi/nova/lofi/back_baby.tidal b/live/midi/nova/lofi/back_baby.tidal index b9ed020..2600738 100644 --- a/live/midi/nova/lofi/back_baby.tidal +++ b/live/midi/nova/lofi/back_baby.tidal @@ -10,7 +10,6 @@ d1 # "hh27:5" # cut 1 # midiG' "^78" 0 0.8 - d2 $ g -- $ mask "" @@ -20,7 +19,6 @@ d2 # release 0.57 # note "-5" # midiG' "^79" 0 0.8 - d3 $ g $ sometimesBy "0 1 0 0" (ply 16) $ "h h h ,2,<0!3 1>) [~!3 h]>" diff --git a/live/midi/nova/lofi/dark_money.tidal b/live/midi/nova/lofi/dark_money.tidal index 5970bf3..fec3172 100644 --- a/live/midi/nova/lofi/dark_money.tidal +++ b/live/midi/nova/lofi/dark_money.tidal @@ -4,6 +4,7 @@ import Sound.Tidal.ParVagues.Control -- Dark Money: Downtempo dark minor LoFi do setcps (60/60/4) +let modIndex = pF "modIndex" let whenIntro pat = someCyclesBy "" pat let whenNotIntro pat = someCyclesBy "" pat let whenBrk pat = whenmod 16 10 pat @@ -22,15 +23,17 @@ d1 $ g -- Kick # legato 2 # cut 1 # midiG' "^78" 0 1.2 d2 $ g -- Contretemps snare - $ whenBrkLPF + -- $ whenBrkLPF + $ midiOn "^43" (fast "<2 2 4 2>") $ whenmod 16 8 (fast 2) $ whenmod 8 6 (mask "") $ superimpose (# hpf 500) $ "~ s" # "snare:20" - # midiG "^79" + # midiG' "^79" 0 1.2 d3 $ g -- Drumroll fantôme $ midiOn "^76" (fast "<2!3 4>") + $ midiOn "^44" (fast "2") $ whenBrk (slow "<2 2 4 4 8 8 16 16>") $ fast ("8" * "<[2 1!7] 1!3> <2 [2 1] [2 . 1 2] [2 4]>") $ "drum:2" @@ -43,7 +46,22 @@ d5 $ g -- Bassline {hypno,aqua}tique $ note ("fs a" - 24) # "bassWarsaw" # crushbus 51 (range 10 5.2 "^53") - # midiG' "^81" 0 1.3 + # midiG' "^81" 0 1.5 +d6 $ g -- FMRhodes Arps <3 + -- $ midiOff + $ note ("fs a" + |+| "0 . <7 [7 12] [12 7] 12*4>(<2 <3 5>>,8)" + + "0 12" + - 24 + ) + # "FMRhodes1" + # modIndex (range 0 15 "^34") + -- # crushbus 51 (range 10 5.2 "^53") + # midiG' "^82" 0 1.3 +d10 + $ "~ clap:1" + # note (range "-12" 12 "^55") + # midiG' "^83" 0 1.5 d4 $ g -- Toy bogdan $ every' 16 15 (>| "~ ~ ~ bogdan:4") $ every' 16 9 ((>| "~ ~ ~ bogdan:2") . (|* gain 0.8)) diff --git a/live/midi/nova/lounge/top_hats.tidal b/live/midi/nova/lounge/top_hats.tidal index 2a298f4..d4011f0 100644 --- a/live/midi/nova/lounge/top_hats.tidal +++ b/live/midi/nova/lounge/top_hats.tidal @@ -27,9 +27,9 @@ d1 $ g # gM' 0 4 "^78" d2 $ g -- Breathing snare contretemps $ midiOn "^43" (fast "<2 2 2 2 4 2 2 4 4>") - $ "hh27:2 hh27:7" + $ "~ [hh27:7,snare:13]" # room 0.6 # sz 0.7 # dry (slow 20 $ range 0 2 perlin) - # gM' 0.5 1.5 "^79" + # gM' 0.5 1.8 "^79" d3 -- Runny Maracas $ g $ whenmod 16 8 (often $ fast 2) -- libgit2 0.27.0