-- /home/pln/Downloads/PerfectSunriseLoop.gif
-- Absolutely! Here’s how you can express the core "Riders on the Storm" elements in TidalCycles using named notes instead of MIDI numbers.
-- ## **Bass Line (E Dorian)**
-- A classic modal bass pattern, alternating E and A, with passing notes for groove:
d1 $ note "e e a e g e b e" # s "bassWarsaw" |- note 24
d5 $ n "e fs g a b g a e" # s "FMRhodes1"
d3 $ n "d cs c b a g fs e" # s "superpiano"

-- ## **Melodic/Lead Lines**
-- **Dorian/pentatonic flavor for solos or riffs:**
d4 $ n "e g a b d b a g" # s "cs80leadMH"
d4 $ note "e fs g a b d" # s "cs80leadMH" |- note 12
-- ## **Tips**
-- - Use `# gain` or `# cutoff` for filter modulation.
-- - Layer rain or vocal samples for atmosphere.
-- - Try syncopating the bass or keys for a more techno feel.
-- **Summary:**  
-- - **Bass:** `d1 $ n "e e a e g e b e"`
-- - **Piano:** `d2 $ n ""`
-- - **Descending line:** `d3 $ n "d cs c b a g fs e"`
-- - **Lead:** `d4 $ n "e g a b d b a g"`

do
-- resetCycles
setcps (205/60/4)
let gMask = (midiOn "^41" (mask "<t f>"))
let gMute1 = (midiOn "^73" (mask "f*16"))
let gMute2 = (midiOn "^74" (mask "f*16"))
let gMute3 = (midiOn "^75" (mask "f*16"))
let gM1 = gMask . gMute1
let gM2 = gMask . gMute2
let gM3 = gMask . gMute3
let modIndex = pF "modIndex"
d1 $ gF1 $ gMute2
  $ midiOn "^30" (# "hardkick_rha")
  $ midiOn "^42"  (struct "t t t*<1!6 2 1> t*<1!7 2>")
  $ midiOff "^42" (struct "t . ~ t*<1!3 2> ~ <~!3 t*<2 [2 1] [4 2] [2 4]>>")
  $ stack [
  "kick" # lpf 10000 # cut 1,
  "rumble" |* gain 1.3
  # lpf 200
  # cut 11,
  ""
  ]
  # "[techno:1,jazz]"
  # gain 1.4
d2 $ gF1 $ gM1
  $ midiOn "^43" (<|"~ s ~ s*<1 2>")
  $ midiOff "^43" (<| "~ s")
  $ "[vec1_snare:5]"
  # note "<-0!12 -2 -2 -3 0>"
  # gain 1.3
  # lpf 4000
  # sustain 0.8
d3 $ gF1 $ gM1
 $ (0.125 ~>)
 $ slow 2
 $ midiOn "^76" (ply "1 <2!3 4>")
 $ midiOn "^44" (
   (# delay "<0 0.2 0.3 0.5 0.6 0.7 0.8 0.9>") .
   (# delayt "s") .
   (# delayfb 0.5)
   )
 $ chop 8
 $ n "<1 2 3>" 
 # "orage" 
 # cut 3 
 # gain 1.4
d5 $ gF3 $ gM3 -- Orage base riff 
  $ slow 4
  $ n "<6 6 7 7 8 8 8 9 6 7 8 9 6 8 7 9 10 11 12 13 14 15 14 16>" 
  # "orage"
  # hpf 300 
  # gain 1.4 
  # cut 5
  # room 0.2
d12 
  $ "wind:4" 
  # speed ("<0.2!3 0.5>")
  # gain 1.4 
  # cut 12
d8 $ gF1 $ gM1 -- Break discret face à une telle idole
  -- $ midiOn "^60" (mask "t(4,8,<1!3 0>)" . chop 8)
  -- $ midiOn "^36" (id . (loopAt 0.5 . (# "jungle_breaks:130")))
  $ midiOn "^92" (mask "t(16,32)" . ply "2 2 <4 8 16 16> 2")
  $ midiOn "^36" (loopAt 0.5 . (# n 45) . (|* gain 1.1)) -- Orleanaise
  $ midiOn "^56" (loopAt 2 . (# n 12))
  $ chop 16
  $ loopAt 4
  $ "jungle_breaks:12" # cut 8
  # gain 1.4
d4 $ gF2 $ gM2
  -- $ mask "t(4,8)"
  $ note "ef <ef gs ds <c f>> <af <g!3 gf>> f*<1!3 2> gs ef bf <ef!3 <ef f>>" 
  # s "bassWarsaw" |- note "[12,24]"
  # pan 0.2
  # room 0.2
  # octersub 0.5
  # sz 0.8
 # crushbus 41 (range 15 4 "^53")
-- d5 $ n "e fs g a b g a e" # s "FMRhodes1"
-- d3 $ n "d cs c b a g fs e" # s "superpiano"
d9 $ gF3 $ gM3 -- CHOEUR INTRO TODO ALIGNER MELODIQUEMENT
  $ slow 8 $ slice 8 (run "8!3 <4 8 8 16>")
  $ "medieval:216"
  # room 0.4
  # note "-2"

  

d6 $ gF1 $ gM1
   $ midiOn "^43" (<|"~ s ~ s*<1 2>")
   $ midiOff "^43" (<| "~ s")
   $ "clap:2"
   # hpf 2500
   # room (slow 16 $ range 0 0.8 saw) 
   # dry 1.1
d8 $ gF1 $ gM1 $ "jungle_breaks:22" # cut 8
  -- # note "<-0!12 -2 -2 -3 0>"
    -- # gain 1.3
-- d3 $ gF1 $ gM1 -- Cymbales sol
--   $ midiOn "^44" (<| "~ cy ~ cy ~ cy ~ <cy [~ cy]>")
--   $ midiOff "^44" (<| "~!7 <~ <cy ~> ~ cy>")
--   $ "cy" # "<cy:1!6 cy:2!2>" # "h2ogmcy"
--   |* gain (range 1.1 0.8 perlin)
--   |* legato (range 0.5 2 (fast 2 perlin))
d4 $ gF2 $ gM3 -- BASS <3
  $ juxBy 2 (# cut 41)
  $ "orage"
  # cut 4
  # gain 1.1
  # room 0.3 # sz 0.3 # dry 1.3
  # crushbus 41 (range 16 4 "^53")
  # octerbus 42 (range 0 0.93 "^33")
d5 $ gF3 $ gM3 -- Rain piano <3
  $ midiOn "^58" ((>| n "5/2"))
  $ slow 4 $ ply "4 . 2 0" -- Slowly, loop 4 times each 
  $ n "<5   6  7  8  8  8  7  8    9 10 11 12 13 14 13 12   17 18 19 20 17 18 20 20   17 18 19 20 21 23 22 20 21 22 23 24 25 26 27 28 29 30 31 32 33   34 35 36 37 37 37 38 37 38 39 ~ 37 ~ ~ 38 38 38 39 ~>" # "orage"
  # cut 5
  -- # octersubbus 51 (range 0 2 "^18")
  -- # octerbus    52 "^34"
  # crushbus    53 (range 16 5 "^54")
  # room 0.3 # sz 0.4
  # gain (slow 32 $ range 0.6 1.2 saw)
d7 $ gF2 $ gM3 
  $ midiOn "^59" (struct "~ t ~ t ~ t <~ t t ~> t*<1!3 2>")
  $ fix ((|+ note 12). ((|* gain "^35"))) "vec1_acid:30"
  $ fix ((|+ note 12)) "vec1_acid:27"
  $ note ("<[c3@3 d3]!3 [d3!3 [ds3 d3 ds3]]>" + 12)
  # "[vec1_acid:27,vec1_acid:30]"
  # gain 1.5
d10  
  $ loopAt 8 
  $ "risers" 
  # room 0.4
d11 $ gF3 $ gM3
  $ n "[f4 c5 gs4 c5 f4 bf4 d5 bf4]" 
  # s "FMRhodes1"
  # modIndex (range 0 8 "^30")
  # room 0.4
  # att 0.04 # rel 2
  # gain 1.3
