diff --git a/live/chill/dimanche_mineur.tidal b/live/chill/dimanche_mineur.tidal new file mode 100644 index 0000000..67df1c3 --- /dev/null +++ b/live/chill/dimanche_mineur.tidal @@ -0,0 +1,101 @@ +-- Dimanche mineur: Tech breakbeat melancholic +resetCycles + +do +let prog = ">" +let progMin = ">" +setcps (105/60/4) +let g = (whenmod 32 28 (# djf (slow 4 $ range 0.5 0.05 isaw))) +d1 $ g + $ mask "" + $ whenmod 64 32 (<| "k k(<3!3 5>,8)") + $ someCyclesBy "" (<| "k*4") + $ "[kick:5,jazz]" + # lpf 2000 + # room 0 + # gain 1 +d2 $ g + $ mask "" + $ whenmod 64 32 (const + $ slice 8 ("0 1 2*<1 2> <3!3 <~ [~ 3]>>") + $ loopAt 2 $ "fbreak100" + # gain (slow 32 $ range 0.85 1.5 saw) + ) + $ fix (|* gain 0.95) (n 7) + $ n (stack [ + "[4(5,8),4(<0!3 1>,8,7)]", + "7 7 7 <7!3 [~ 7]>", + "" + ]) # "hh27" + # gain 0.9 +d3 -- Lifeline + $ whenmod 32 30 (slow 2) + $ whenmod 32 28 (slow 2) + $ sometimesBy "0!7 <0 0.1>" (ply 2) + $ "tech:4*4" + # gain (slow 16 $ range 1.2 0.6 perlin) +d4 $ g -- Bass chill hypno + $ mask "" + $ struct "t(5,8,<0!6 4!2>)" + $ arp "" + $ note (prog) + # "bassWarsaw" + # octave 3 + # pan 0.2 + # legato "<1!3 2>" + # room 0.5 + # gain (slow 32 $ range 0.95 0.75 (1 - cosine)) +d5 $ g -- Rhodes+arp + $ mask "" + $ mask "" -- Complement sax + $ whenmod 32 8 (off "h" ( + struct "t(12,16)" + . arpeggiate + . (|+ note "[0,12]") + . (|+ pan 0.8) + . (|* gain "<0.85 0.9 1 1.1>") + )) + $ note (prog + + "<0!8 [0 <12 <-12 24>>]!8>" -- spread + ) + # "FMRhodes1" + # octave 3 + # gain (slow 8 $ range 1 1.16 saw) +d6 -- Fantômes + $ mask "" + $ note (progMin) + # "moogBass" + # gain 0.75 + # pan 0.85 +d7 -- Sax gauche + $ mask "" + $ mask "" + $ note ("<<-2 0>!3 <0 2>>") + # "sax:2" + # pan 0.35 + # gain (slow 4 $ range 0.7 0.9 saw) +d8 -- Sax droit + $ mask "" + $ mask "" + $ note ("<0 0 <4 7 [0,[12 12]]> 0>") + # "sax:1" + # pan 0.2 + # release 2 + # cut 8 + # gain (slow 4 $ range 0.75 1 saw) +d10 -- Kurt's random interjections + $ mask "" + $ off "[s|q|0.375|e]" (# crush 7) + $ off "[h|1]" (# lpf 2000) + $ "kurt" # n (irand 7) + # gain (slow 17 $ range 0.85 1 perlin) +d9 -- Chopped winds + $ mask "" + $ someCyclesBy "<1!16 0!112>" (|* gain (slow 16 $ range 0.3 1 saw)) + $ whenmod 8 4 (chop "<16!3 8>") + $ "space:3" + # speed (range 0.35 "<1!12 1.5!4>" saw) + # room 0.8 # sz 0.9 + # legato 4 + # pan 0.9 + # gain (slow 64 $ range 0.5 0.75 saw) diff --git a/live/midi/beats.tidal b/live/midi/beats.tidal index 554ca58..528a922 100644 --- a/live/midi/beats.tidal +++ b/live/midi/beats.tidal @@ -1,7 +1,8 @@ -- Metronome do + let gF = 1.5 setcps (100/60/4) - d1 $ "m*4" # "gretsch:11" # gain 0.55 + d1 $ "m*4" # "gretsch:11" # gain gF * 0.55 d2 $ every' 4 3 (off (1 - "e") (|* gain 0.8) @@ -9,7 +10,7 @@ do ) $ "[bd,gretsch:12]" # release 1 - # gain "<0.55 0.5!3>" + # gain gF * "<0.55 0.5!3>" d1 $ slow 2 $ stitch "t . t(3,8)" (n "0 .. 7" # sound "bd") diff --git a/live/midi/nova/FM/fm.tidal b/live/midi/nova/FM/fm.tidal new file mode 100644 index 0000000..b2ba62a --- /dev/null +++ b/live/midi/nova/FM/fm.tidal @@ -0,0 +1,43 @@ +:{ + -- sets the amount of operator 'op' in the superfm output mix + -- (1 <= op <= 6) + fmamp :: Int -> Pattern Double -> ControlPattern + 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 + fmratio op = pF ("ratio" ++ show op) + + -- set the detune for operator 'op' + fmdetune :: Int -> Pattern Double -> ControlPattern + 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 + fmmod opa opb = pF ("mod" ++ show opa ++ show opb) + + -- feedback + fmfeedback :: Pattern Double -> ControlPattern + fmfeedback = pF "feedback" + + -- Envelope definition: each operator has an envelop with 4 steps + fmeglevel :: Int -> Int -> Pattern Double -> ControlPattern + 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 + fmegrate op step = pF ("egrate" ++ show op ++ show step) + +-- Array functions + fmparam function (x:xs) = foldr (#) (function 1 x) (zipWith function [2..] xs) + lfma = fmparam fmamp + lfmr = fmparam fmratio + lfmd = fmparam fmdetune + lfmer op = fmparam (fmegrate op) + lfmel op = fmparam (fmeglevel op) +} diff --git a/live/midi/nova/FM/paul_machine.tidal b/live/midi/nova/FM/paul_machine.tidal new file mode 100644 index 0000000..275dfb7 --- /dev/null +++ b/live/midi/nova/FM/paul_machine.tidal @@ -0,0 +1,154 @@ +-- region V1: 6 op, too complex +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) +d1 + $ s "superfm" + |+| note (scale "aeolian" ( + -- arp "pinkyup" "[0,4,7,12] [0,5,7,9]" + "[0,4,6]" + + "[0(<3 3 <3 1> <5 [5 3]>>,8)]*2" + + "0 2" + - 7 + )) + # gain (range 0 1.8 "^77") + # fmfeedback (range 0 2 "^78") + # fmamps ["^15", "^16", "^17", "^18", "^19", "^20"] + # fmratios ["^31", "^32", "^33", "^34", "^35", "^36"] + # fmdetunes ["^51", "^52", "^53", "^54", "^55", "^56"] + # fmmod 1 1 1 + # fmmod 1 2 0 + # fmmod 2 3 0 + # fmmod 3 4 0 + # fmmod 4 5 0 + # fmmod 5 6 0 + # 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] + # envrate 3 [10, 0.5, 0.4, 1, 0, 0] + # lpf 1000 + # room 0.3 +-- endregion V1 + + + +-- region V2 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 novaOn ch pat = someCyclesBy ch pat +let novaOff 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 + $ s "superfm" + |+| note (scale "aeolian" ( + -- arp "pinkyup" "[0,4,7,12] [0,5,7,9]" + "<[1 2] [2 <3 [3 4]>]>" + + "[0,6,10]" + + "[0(<3 3 <3 1> <5 [5 3]>>,8)]*2" + + "0 2" + - 7 + )) + # gain (range 0 1 "^77") + # fmfeedback (range 0 400 "^78") + # lfofreq (range 500 1000 "^79") + # lfodepth (range 0 1 "^80") + -- # fmamps ["^15", "^17", "^19"] + # fmratios [range 0 100 "^31", range 0 100 "^33", range 0 100 "^35"] + -- # fmdetunes ["^32", "^53", "^55"] + # fmmod 1 1 (range 0 4 "^16") + # fmmod 1 2 (range 0 4 "^32") + # fmmod 1 3 (range 0 4 "^52") + # fmmod 2 1 "^18" + # fmmod 2 2 "^34" + # fmmod 2 3 "^54" + # fmmod 3 1 "^20" + # fmmod 3 2 "^36" + # fmmod 3 3 "^56" + # fmmod 3 4 1 + # fmmod 4 5 1 + # fmmod 5 6 1 + # envlevel 1 [1, perlin, perlin, 0, 0, 0] + # envrate 1 [perlin, 1, 1, 0, 0, 0] + # envlevel 2 [1, 1, 1, 0, 0, 0] + # envrate 2 [1, 0, 1, 0, 0, 0] + # envlevel 3 [1, 0, 1, slow 4 sine, slow 8 cosine, 1] + # envrate 3 [1, fast 4 sine, 1, 1, 1, 1] + # envlevel 4 [1, 1, 1, 1, 1, 1] + # envrate 4 [1, 1, 1, 1, 1, 1] + # envlevel 5 [1, 1, 1, 1, 1, 1] + # envrate 5 [1, 1, 1, 1, 1, 1] + -- # envlevel 6 [1, 1, 1, 1, 1, 1] + -- # envrate 6 [1, 1, 1, 1, 1, 1] +-- endregion V2 diff --git a/live/midi/nova/FM/superFM.tidal b/live/midi/nova/FM/superFM.tidal new file mode 100644 index 0000000..a09d74c --- /dev/null +++ b/live/midi/nova/FM/superFM.tidal @@ -0,0 +1,307 @@ +-- # superfm +-- > 6-op FM synth (DX7-like). Works a bit different from the original DX7. Instead of algorithms, you set the amount of modulation every operator receives from other operators and itself (feedback), virtually providing an endless number of possible combinations (algorithms). +-- voice is the preset number: 0 is user-defined; 1-5 are randomly generated presets +-- lfofreq is the overall pitch modulation frequency +-- lfodepth is the overall pitch modulation amplitude + +-- Each operator responds to +-- +-- amp (operator volume - becomes carrier) +-- ratio (frequency ratio) +-- detune (in Hz) +-- eglevel (1-4) (4 envelope generator levels) +-- egrate (1-4) (4 envelope generator rates) +-- +-- The syntax for operator arguments is [modulatorIndex | egIndex]. For example: +-- +-- amp1 1 (op1 as carrier with full volume) +-- ratio2 2.3 (op2 frequency ratio) +-- mod11 0.5 (op1 feedback) +-- mod12 0.78 (op1 modulation amount by op2) +-- detune1 0.2 (op1 detune) +-- eglevel12 0.1 (op1 EG level2) +-- egrate11 0.01 (op1 EG rate1) – WARNING: higher values go FASTER! + + +-- region paul1 functions +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) +d1 + $ stut 2 0.7 0.125 + $ slow 3 $ s "superfm" + |+| note (arp "pinkyup" "[0,4,7,12] [0,5,7,9]" ) + # fmfeedback 1 + -- # fmamps [1, 1, 1, 0, 0, 0] + # fmratios [1, (range 0 4 (slow 4 sine)), 0.26, 0.5, 0.5, 0.5] + -- # fmdetunes [0, 1, 0, 0, 0, 0] + # fmmod 1 1 "<0 1.25>" + # fmmod 1 2 (range 0 4 (slow 4 sine)) + # fmmod 1 3 (range 0 4 (slow 3 saw)) + # fmmod 3 2 (range 0 3 (slow 2 sine)) + # 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] + # envrate 3 [10, 0.5, 0.4, 1, 0, 0] + # lpf 1000 + # room 0.3 + + + +d1 $ stut 2 0.7 0.125 $ slow 3 $ s "superfm" + |+| note (arp "pinkyup" "[0,4,7,12] [0,5,7,9]" ) + # fmfeedback 1 -- global multiplier for 'fmod x x' feedback parameters. + # fmamp 1 0 -- amplitudes default to '1', so probably need to set all 6 of them... + # fmamp 2 0 + # fmamp 3 1 + # fmamp 4 0 + # fmamp 5 0 + # fmamp 6 0 + # fmratio 1 1 -- oscillator frequency is note * ratio + detune Hz. + # fmratio 2 0.5 -- (range 0.25 20 (slow 3 $ sine)) + # fmdetune 2 1 + # fmratio 3 0.26 + # fmmod 1 1 "0" + # fmmod 1 2 (range 0 4 (slow 4 $ sine)) -- fmod a b Pattern = modulate op a with op b.. + # fmmod 1 3 (range 0 4 (slow 3 $ sine)) + # fmmod 3 2 (range 0 3 (slow 2 $ sine)) + # fmeglevel 1 1 "1" -- envelope generator has 4 rates and 4 steps for each operator... + # fmeglevel 1 2 "0.5" + # fmeglevel 1 3 "0" + # fmeglevel 1 4 "0" + # fmegrate 1 1 "10" + # fmegrate 1 2 "0.1" + # fmegrate 1 3 "0.1" + # fmegrate 1 4 "1" + # fmeglevel 2 1 "1" -- envelope generator has 4 rates and 4 steps for each operator... + # fmeglevel 2 2 "0" + # fmeglevel 2 3 "0" + # fmeglevel 2 4 "0" + # fmegrate 2 1 "1" + # fmegrate 2 2 "0.3" + # fmegrate 2 3 "0.7" + # fmegrate 2 4 "1" + # fmeglevel 3 1 "1" -- envelope generator has 4 rates and 4 steps for each operator... + # fmeglevel 3 2 "0.2" + # fmeglevel 3 3 "0" + # fmeglevel 3 4 "1" + # fmegrate 3 1 "10" + # fmegrate 3 2 "0.5" + # fmegrate 3 3 "0.4" + # fmegrate 3 4 "1" + # room 0.3 + -- # gain 0.7 +-- endregion + + +-- region manual definitions à la Yaxu +do-- modulators +let mod11 = pF "mod11" +let mod12 = pF "mod12" +let mod13 = pF "mod13" +let mod14 = pF "mod14" +let mod15 = pF "mod15" +let mod16 = pF "mod16" +let mod21 = pF "mod21" +let mod22 = pF "mod22" +let mod23 = pF "mod23" +let mod24 = pF "mod24" +let mod25 = pF "mod25" +let mod26 = pF "mod26" +let mod31 = pF "mod31" +let mod32 = pF "mod32" +let mod33 = pF "mod33" +let mod34 = pF "mod34" +let mod35 = pF "mod35" +let mod36 = pF "mod36" +let mod41 = pF "mod41" +let mod42 = pF "mod42" +let mod43 = pF "mod43" +let mod44 = pF "mod44" +let mod45 = pF "mod45" +let mod46 = pF "mod46" +let mod51 = pF "mod51" +let mod52 = pF "mod52" +let mod53 = pF "mod53" +let mod54 = pF "mod54" +let mod55 = pF "mod55" +let mod56 = pF "mod56" +let mod61 = pF "mod61" +let mod62 = pF "mod62" +let mod63 = pF "mod63" +let mod64 = pF "mod64" +let mod65 = pF "mod65" +let mod66 = pF "mod66" +-- operator envelope generator levels +let eglevel11 = pF "eglevel11" +let eglevel12 = pF "eglevel12" +let eglevel13 = pF "eglevel13" +let eglevel14 = pF "eglevel14" +let eglevel21 = pF "eglevel21" +let eglevel22 = pF "eglevel22" +let eglevel23 = pF "eglevel23" +let eglevel24 = pF "eglevel24" +let eglevel31 = pF "eglevel31" +let eglevel32 = pF "eglevel32" +let eglevel33 = pF "eglevel33" +let eglevel34 = pF "eglevel34" +let eglevel41 = pF "eglevel41" +let eglevel42 = pF "eglevel42" +let eglevel43 = pF "eglevel43" +let eglevel44 = pF "eglevel44" +let eglevel51 = pF "eglevel51" +let eglevel52 = pF "eglevel52" +let eglevel53 = pF "eglevel53" +let eglevel54 = pF "eglevel54" +let eglevel61 = pF "eglevel61" +let eglevel62 = pF "eglevel62" +let eglevel63 = pF "eglevel63" +let eglevel64 = pF "eglevel64" +-- operator envelope generator rates +let egrate11 = pF "egrate11" +let egrate12 = pF "egrate12" +let egrate13 = pF "egrate13" +let egrate14 = pF "egrate14" +let egrate21 = pF "egrate21" +let egrate22 = pF "egrate22" +let egrate23 = pF "egrate23" +let egrate24 = pF "egrate24" +let egrate31 = pF "egrate31" +let egrate32 = pF "egrate32" +let egrate33 = pF "egrate33" +let egrate34 = pF "egrate34" +let egrate41 = pF "egrate41" +let egrate42 = pF "egrate42" +let egrate43 = pF "egrate43" +let egrate44 = pF "egrate44" +let egrate51 = pF "egrate51" +let egrate52 = pF "egrate52" +let egrate53 = pF "egrate53" +let egrate54 = pF "egrate54" +let egrate61 = pF "egrate61" +let egrate62 = pF "egrate62" +let egrate63 = pF "egrate63" +let egrate64 = pF "egrate64" +-- operator output levels +let amp1 = pF "amp1" +let amp2 = pF "amp2" +let amp3 = pF "amp3" +let amp4 = pF "amp4" +let amp5 = pF "amp5" +let amp6 = pF "amp6" +-- operator frequency ratios +let ratio1 = pF "ratio1" +let ratio2 = pF "ratio2" +let ratio3 = pF "ratio3" +let ratio4 = pF "ratio4" +let ratio5 = pF "ratio5" +let ratio6 = pF "ratio6" +-- operator frequency detuners +let detune1 = pF "detune1" +let detune2 = pF "detune2" +let detune3 = pF "detune3" +let detune4 = pF "detune4" +let detune5 = pF "detune5" +let detune6 = pF "detune6" +-- other +let feedback = pF "feedback" +let lfofreq = pF "lfofreq" +let lfodepth = pF "lfodepth" +d1 + -- $ ply "3 4" + -- $ ply 2 + -- $ superimpose (# octave 3) + $ slow 2 + $ up (arpeggiate "") + # "superfm" + # gain 0.65 + # amp1 1 # detune1 20 + # amp2 1 # detune2 1 + -- # room 0.5 # sz 0.5 + -- region Double Saw + # amp1 1 + # amp2 0 + # amp3 1 + # amp4 0 + # amp5 0 + # amp6 0 + # ratio2 1.01 + # mod12 0.75 + # mod34 0.7 + # mod45 0.6 + -- endregion + -- region Double pulse + # amp1 1 + # amp2 0 + # amp3 1 + # amp4 0 + # amp5 0 + # amp6 0 + # ratio2 2.01 + # ratio4 2 + # ratio5 2 + # mod12 0.75 + # mod34 0.7 + # mod45 0.6 + -- endregion + -- region FM Bass + # amp1 1 + # amp2 1 + # amp3 0 + # amp4 0 + # amp5 0 + # amp6 1 + # ratio2 2 + # ratio3 3 + # ratio4 4 + # ratio5 0.5 + # ratio6 0.25 + # feedback 1 + # mod11 1 + # mod16 1 + # mod23 1 + # mod34 1 + # mod45 1 + # mod66 1 + # egrate61 1 + # egrate62 10 + # egrate63 1 + # eglevel62 0.13 + # eglevel63 1.5 + # room 0.5 + -- endregion + +-- endregion DRONEDIM diff --git a/live/midi/nova/instruments/AtomicRhodes.tidal b/live/midi/nova/instruments/AtomicRhodes.tidal index aa1035b..14c21de 100644 --- a/live/midi/nova/instruments/AtomicRhodes.tidal +++ b/live/midi/nova/instruments/AtomicRhodes.tidal @@ -1,21 +1,5 @@ resetCycles -do -d1 $ "" # "reverbkick" # gain 0.7 -d2 - -once $ note (arpeggiate "c2'maj'4") - # "supergong" # gain 0.65 - # accelerate (-0.4) - -d1 -$ n (slow 2 $ fmap (*7) $ run 8) -# s "supergong" -# decay (range 0 1000 "^13") -# voice (range "-1" 1 "^14") -# accelerate (range "-1" 1 "^29") -# gain 0.7 - do let gFactor = 1.2 diff --git a/live/midi/lounge/invoque_ete.tidal b/live/midi/nova/lounge/invoque_ete.tidal similarity index 100% rename from live/midi/lounge/invoque_ete.tidal rename to live/midi/nova/lounge/invoque_ete.tidal diff --git a/live/midi/nova/party/funk_angel_frappe.tidal b/live/midi/nova/party/funk_angel_frappe.tidal new file mode 100644 index 0000000..844a125 --- /dev/null +++ b/live/midi/nova/party/funk_angel_frappe.tidal @@ -0,0 +1,54 @@ +-- FUNKY ANGEL FRAPPE +do +d1 + $ mask "" + $ "k k k " + # "[jazz,cpu]" + # room 0.8 # sz 0.8 # dry 1 + # gain 1.4 +d2 + $ mask "" + $ "~ [clap,cp]" + # lpf 2500 # gain 1.2 # room 0.7 + # dry 0.99 +d3 -- Break 4/4 + -- $ sometimes (off "e" id) + $ fix (|* gain 0.8) (n 2) + $ n "2 3 0 <3!3 <[~ ~ 3 5] [3 3 ~ [5 ~]]>>" + # "amencutup" + # gain 1.2 + # pan 0.4 +d4 -- RESONANT BASSLINE + $ whenmod 16 12 ( + degradeBy ("[0 1!3]*2" * (slow 17 $ range 0 0.5 perlin)) + . (# legato 2) + ) + -- $ juxBy 0.8 (# crush (slow 16 $ range 16 5 isaw)) + $ note "b2!6 > b2" # "supersaw" + # accelerate ("<0!60 -0.1 -0.1 -0.2 -0.2>") + # gain 0.85 + # lpf (slow 32 $ range 500 10000 sine) + # lpq (slow 4 $ range 0 0.8 perlin) + # room 0.5 # sz 0.8 +d5 + $ mask "" + $ whenmod 8 4 (juxBy 0.25 (rev . (# cut 51))) + $ loopAt 2 + $ slice 8 ("0 1*<1 2 4> 2(<1 2 3 5>,8) <3 7 3 [6 7]>") + $ "fsynth:47" + # gain (slow 16 $ range 0.95 1.1 sine) + # cut 5 +d8 + $ fix (|* gain 0.9) ("hh27") + $ "d*[8 <[8 4 8] [8 16 8] [8 4] 16>]" + # "[drum:2,hh27:4]" + # pan (slow 16 $ range 0.4 0.6 saw) + # gain 1.25 +d7 + -- $ loopAt 2 + $ slice 16 "1 1 5*<1 2 4> 0*<1!7 2>" + -- $ mask "" + $ "ffills:7" + # cut 7 + # pan 0.6 + # gain (slow 10 $ range 0.9 1.2 perlin)