diff --git a/backlog.md b/backlog.md
index 88ea94b..14c330c 100644
--- a/backlog.md
+++ b/backlog.md
@@ -1,8 +1,14 @@
 # Work in progress
 ## Worksheet
-- Jazz noise: basis for jazzy drums / hip instru?o
+- Jazz noise: basis for jazzy drums / hip instru
+- TODO Foret noire: techno sorciere-forestiere!
 
-- TODO Foret noire: techno sorciere-forestiere !
+## MIDI
+Beats.tidal: various background beats, hip/techno
+
+- Metal break! Guitar break en Si
+- Cyprès Poudreux - Break dusty cypress + guitars, too much cypress
+- BruitHiver: grand froid cosmic noise
 
 ## Lessons
 
@@ -15,9 +21,11 @@
 ## Prod
 
 <!-- region TODO: Record! -->
-- [DNB] Sensation octobre Nass guitar
 
 <!-- endregion -->
+
+- BAILAR: Marcia danse pour moi!
+
 - Crapeau HipPo: Clav sur rythme hip-hop manuel
 - Break britafuninnique: boucle hip hop breatbeat piano attend un lead
 - Marche vertige: vertige vibration attend drum militaire
diff --git a/blocks/instruments.tidal b/blocks/instruments.tidal
index 0af5a27..f85a0c6 100644
--- a/blocks/instruments.tidal
+++ b/blocks/instruments.tidal
@@ -18,3 +18,19 @@ $ note ("5 6 8 ~ 8 [6 5] 6 ~"
 once $ note (-18) # "sax"
 -- # gain 0.47
 # cut 1
+
+-- LASER BRUITISTE
+d1 $ plyWith 8 (|* crush 1.4) $ n "0 2" # sound "cpu2"
+
+-- Orgue 8-bit
+d1
+  $ off 0.5 ((|+ note 12) . (|* gain 0.7))
+  $ slow 2
+  $ stut 8 0.85 (1/"<64!16 128!16>")
+  $ swingBy "q" 4
+  $ scramble 4 $ every 4 rev $ note (scale "lydian" (run 8))
+  # "supersquare" # gain 0.5
+  # voice (slow 4 sine)
+  # octave (slow 4 "<3 4 5 5>")
+  # legato 1
+  # gain 0.4
diff --git a/blocks/melody.tidal b/blocks/melody.tidal
index 46d30f7..507c72e 100644
--- a/blocks/melody.tidal
+++ b/blocks/melody.tidal
@@ -28,7 +28,7 @@ $ note (scale "aeolian" (
 ))
 
 d1 -- continuous laser
-$ s "bd" >| speed (segment 50 $ range 40 5 (saw))
+$ slow 4 $ "bd" >| speed (segment (slow 24 "<32 64 128>") $ range 40 5 sine)
 
 d1 -- continuous structured xylophone
 $ sound "bd" >| speed (struct "t ~ t ~ ~ t t" $ range 5 20 saw)
diff --git a/live/bdmania.tidal b/live/bdmania.tidal
index f6d3e52..43f000b 100644
--- a/live/bdmania.tidal
+++ b/live/bdmania.tidal
@@ -1,5 +1,5 @@
 
-once $ s "bd"
+ once $ s "bd"
 
 d1 -- kick
 -- $ euclid "<4 6>" 4
@@ -30,6 +30,7 @@ $ every' 4 3 (off 0.125 id)
 $ every 8 (# gain 0)
 $ every' 8 7 (# gain 1.2)
 $ rev $ iter 4 $ loopAt 4 $ chop 16 $ "bd"
+# gain 2.5
 
 d5 -- cordes guitare pincée
 $ someCycles (fast 2 . degrade)
diff --git a/live/chill/dub/riddim_du_dim.tidal b/live/chill/dub/riddim_du_dim.tidal
index f37d83b..7708f0a 100644
--- a/live/chill/dub/riddim_du_dim.tidal
+++ b/live/chill/dub/riddim_du_dim.tidal
@@ -2,7 +2,7 @@
 
 do
 -- resetCycles
-setcps (8/60/4)
+setcps (120/60/4)
 let melody = "0 <0 <2 -2>>"
 d1 --Kick : un low et un high pour donner du relief
   $ whenmod 32 16 (superimpose (
diff --git a/live/dnb/automne_electrique.tidal b/live/dnb/automne_electrique.tidal
index fbe15a1..8a22b7c 100644
--- a/live/dnb/automne_electrique.tidal
+++ b/live/dnb/automne_electrique.tidal
@@ -7,7 +7,7 @@
 -- 3 Guitar |     .........................xxxxxxxxxxxxxxFFFFFFFxxxxxxxxxxxxxxxx...........
 -- 4 Bass   | bbbbbbbbbbbbbbbbbxxxxxxxxxxxxx.......................xxxxxxxxxxxxxxbbbbbbbbb
 do
-resetCycles
+-- resetCycles
 setcps (160/4/60)
 d1 -- Poum tchak
   $ mask "<f!8 f!23 [f t] t!32 f!8 f!23 [f t] t!32>" -- Orchestration
@@ -34,9 +34,9 @@ d3
   $ "fguitar"
   # n ("<8!4 10!4 8 10 10 8>")
   # cut 3
-  # gain 0.9
-  # room 0.3
-  # size 0.4
+  # gain 1.1
+  # room 0.8
+  # size 0.9
   # dry 1
   # pan 0.35
 d4 -- BASSLINE ELECTRIQUE
diff --git a/live/fusion/dimitri.tidal b/live/fusion/dimitri.tidal
new file mode 100644
index 0000000..8a2c56e
--- /dev/null
+++ b/live/fusion/dimitri.tidal
@@ -0,0 +1,77 @@
+do
+setcps (120/60/4)
+d1
+  $ superimpose (const $ "jazz"
+  )
+  $ loopAt 4 $ "dusty"
+  # gain 0.8
+  # cut 1
+d2 $ fast "<4!3 8>" $ "dr" # gain 0.5
+d3
+  $ sometimesBy "0.75 0.5 0.25 0.1" (ply 2)
+  $ fast "<1!3 2>"
+  $ "~ ~ ~ [sn:1,snare:2]"
+  -- # gain 0.8
+
+-- TECHNO-CLAP
+do
+d1
+  $ "k . <~!4 k!4 k(<3 5>,8)!4>"
+  # "jazz" # gain 1.8
+d2
+  $ fix (
+    (stut 2 0.9 "<q e s>") .
+    (|* gain 2)
+    ) ("hh")
+  $ "c*2 c*<4 [2 4]>"
+  # "cpu:3!7 [cpu2:2,hh]"
+  # lpf (fast 4 $ range 2000 10000 rand)
+  # gain (slow 16 $ range 0.8 2 sine)
+
+
+-- Samedi après-midi venteux
+do
+setcps (130/60/4)
+let glob = (degradeBy ("0 1 1 [1 0]" * 0.95) . (# djf 0.3))
+d1
+  $ glob
+  $ "bd*<4!16 2 2 1 2>" # gain 1.5
+d2 -- continuous laser
+  $ glob
+  $ whenmod 32 0 (|* gain (slow 16 $ range 1 0.5 isaw))
+  $ jux rev
+  $ slow 2
+  $ "bd" >| speed (segment (slow 24 "<32 64 128>") $ range 40 5 sine)
+d3
+  -- $ glob
+  $ jux rev
+  $ iter 4
+  $ whenmod 64 32 (# squiz 2)
+  $ "bd*<[8 <8 8 2> 4 8]!3 [16!3 8]>"
+  # gain 2.5
+  # hpf 5000
+d4
+  $ glob
+  $ superimpose (
+    swing 2 . arp "<updown!3 downup>"
+    . (|+ note 12)
+  )
+  $ "supersaw"
+  # note ("<c3'maj c3'maj c3'min g3'maj>")
+  # voice 0.1
+  # gain (slow 8 $ range 0.55 1 sine)
+d5
+  $ glob
+  $ arp "up"
+  $ "supergong"
+  # note ("<c3'maj c3'maj c3'min g3'maj>")
+  # octave "<7 7 8 9>"
+  # gain 1.2
+d6 -- bourrasque
+  $ glob
+  $ every 16 (jux rev) -- echo
+  -- $ every 8 (# gain 0.9)
+  $ s "space:3"
+  # speed 0.25
+  # gain 1.25
+  # pan 1
diff --git a/live/midi/_init.scd b/live/midi/_init.scd
index d8d9447..d1fb16b 100644
--- a/live/midi/_init.scd
+++ b/live/midi/_init.scd
@@ -8,12 +8,18 @@ osc = NetAddr.new("127.0.0.1", 6010);
 MIDIClient.init;
 MIDIIn.connectAll;
 
+// Initial: sends velocity on note's channel
+// on = MIDIFunc.noteOn({ |val, num, chan, src|
+// 	osc.sendMsg("/ctrl", num.asString, val/127);
+// });
+
 on = MIDIFunc.noteOn({ |val, num, chan, src|
-	osc.sendMsg("/ctrl", num.asString, val/127);
+	// it will be passed the arguments val, num, chan, and src, corresponding to the message value (e.g. velocity, control value, etc.)
+	osc.sendMsg("/ctrl", "note", (num - 60));
 });
 
 off = MIDIFunc.noteOff({ |val, num, chan, src|
-	osc.sendMsg("/ctrl", num.asString, 0);
+	osc.sendMsg("/ctrl", "note", 0);
 });
 
 cc = MIDIFunc.cc({ |val, num, chan, src|
diff --git a/live/midi/jazz.tidal b/live/midi/beats.tidal
similarity index 67%
rename from live/midi/jazz.tidal
rename to live/midi/beats.tidal
index ab0af4a..b69db49 100644
--- a/live/midi/jazz.tidal
+++ b/live/midi/beats.tidal
@@ -6,118 +6,34 @@ do
     # gain "<0.75 0.65!3>"
     # hpf 1000
 
-once $ note (scale "locrian" ("a5" + (run 8))) # "superpiano" # velocity 0.2
 
-
--- setcps 0
--- TODO record with SEQ 6: jazz impro All the things you are left hand
--- Noisy Snake Hats
+-- TECHNO
 do
--- setcps 0.55
-resetCycles
-d1
-  $ someCyclesBy (slow 16 $ "<0 0.25>") (off "e" id)
-  $ "[jazz,cpu]"
-  # gain (slow 16 $ range 0.8 0.4 isaw)
-  # lpf 2000
-  # release 0.2
-  # pan 0.45
-  # dry 0.9
-d2 -- Snares / claps:  accel 16/8, djf/64
-  $ whenmod 16 8 (fast ("2 <4!8 <8!8 [4 . 8 [2|4]]!8>>"))
-  $ superimpose ((# "clap:2") . (|* gain 0.7))
-  $  "~ snare" # n "[1,2]"
-  -- # gain (slow 32 $ range 0.8 0.5 isaw)
-  # pan 0.3
-  # djf (slow 64 (cosine + perlin/4))
-d3 -- Hats snake-ish
-  $ (|+ pan (slow 10 $ range 0 0.25 saw))
-  $ juxBy 0.2 (rev . (|* gain 0.85))
-  $ fast 2
-  -- $ sometimesBy "0 1" (off "e" id)
-  $ "h . h ~ <h!3 h?> ~ ~ <~!3 h?>"
-  # "808oh"
-  # n "<0 3>"
-  # gain (slow 32 $ range 0.6 0.4 (sine + isaw/4))
-d10 -- DELICI0US N0153
-  $ whenmod 64 48 (juxBy 0.25 (# crush 5))
-  $ whenmod 8 6 (rarely (loopAt 2))
-  $ "~ ~ ~ <n!3 [~ n] n [~ n] n [~ n]>"
-  # "psr" # n "<1!8 10!4 11!4 12!7 2>" -- 1 10 11 12  rare 2
-  # lpf (slow 2 $ range 2000 1000 perlin)
-  # pan (slow 4 $ range 0.2 0.9 perlin)
-  # gain (slow 32 $ range 0.25 0.45 (saw + perlin))
-  # cut 10
+  setcps (120/60/4)
+  d1 $ "jazz*4"
+  d3 $ "hh*8"
+  d2 $ "~ cp"
 
 
--- Hip Beat
+-- Techno hh(13/16) PIANO prog+MIDI"note" degrade1
 do
-setcps (120/60/4)
-d1
-  $ whenmod 32 16 (# djf (slow 16 $ sine))
-  $ "k . k(<3 <5 1>>,8)"
-  # "jazz" # gain 0.8
-d2 $ "~ snare:8"
+d1 $ "jazz*4"
+d4 $ "hh(13,16)"
+d2
+  $ (1 ~>)
+  $ degradeBy (1 - (cF 0 "1"))
+  $ note "<0 5 7>"
+  # "superpiano"
+  # velocity 0.7 # legato 4
 d3
-  $ whenmod 16 8 (jux rev)
-  $ fast "<4 4 8 4>"
-  $ "drum:8" # gain (slow 16 $ range 0.6 0.85 saw)
-
+  $ degradeBy (1 - (cF 0 "1"))
+  $ euclid "<8!2 16!2>" 16 $ note (cF (0) "note")
+  # "superpiano"
+  # velocity 0.7 # legato 4
 
 -- BREAKS
 
--- CC1 General MIDI Acoustic Guitar
--- Accord parfait Si Ré Fa# Si
--- Impro Si Ré Mi Fa Fa# La Si
--- Metal march
-do
-  setcps (70/60/4)
-  d1
-    -- $ fast (slow 8 "<1 2 4 <8 [8 0]>>")
-    $ "[cpu,jazz]*8"
-    # room 0.8 # sz 0.8
-    # dry 1.02
-    # lpf 2000
-    # gain 0.75
-  d2
-    -- $ mask "<f!4 t!28>"
-    $ slice 4 (
-      whenmod  32 24 (>| "<3 3 0 0> <2 1> <1 2> <0!3 3> ")
-      $ whenmod 32 16 (>| "4 0 4 0")
-      "<0 [~ 0]> 1 2 3*<1!3 <2 4>>"
-      )
-    $ loopAt 4
-    $ "break"
-    # gain (slow 42 $ range 0.35 0.7 perlin)
-    # cut 2
-  d3
-    $ whenmod 8 0 (
-      sometimesBy "0!7 [0 1]" (
-      (# "ho:5")
-      . (|* gain 0.6)
-      . (|+ room 0.2)
-      . (# note "<0 0 3 0 3 3 0 0 3 0 3 0 0 0 -1 0>")
-      -- . ("e" ~>)
-    )
-    )
-    $ swing (slow 16 "<1 4>")
-    $ fast (8 * "1 <1!3 [2 1]>") $ "h"
-    # "hh"
-    # gain (slow 16 $ range 0.4 0.8 saw)
-    # room 0.1
-    # sz 0.5
-    # pan 0.9
-    # cut 3
-  d4 $ "~!7 cp" # lpf 200
-  d9
-    $ "<g!16 g(<3 3 5 <8 [8 4]>>,8)!16>"
-    # "glitch:2"
-    # crush (range 4 5 perlin)
-    # gain 0.57
-    # room 0.5
-
-
--- BreabBeat
+-- BreakBeat
 do
   setcps (80/60/4)
   d1
@@ -132,10 +48,62 @@ do
     # lpf (slow 24 $ range 10000 200 sine)
   d3 $ "~ ~ ~ cp/2" # djf (slow 16 cosine)
 
--- TECHNO
+
+  -- setcps 0
+  -- TODO record with SEQ 6: jazz impro All the things you are left hand
+  -- Noisy Snake Hats
+  do
+  -- setcps 0.55
+  -- resetCycles
+  let dg = (degradeBy $ (1 - (range 0.25 1 "^1")))
+  d1
+    $ dg
+    $ someCyclesBy (slow 16 $ "<0 0.25>") (off "e" id)
+    $ "[jazz,cpu]"
+    # gain (slow 16 $ range 0.8 0.4 isaw)
+    # lpf 2000
+    # release 0.2
+    # pan 0.45
+    # dry 0.9
+  d2 -- Snares / claps:  accel 16/8, djf/64
+    $ dg
+    $ whenmod 16 8 (fast ("2 <4!8 <8!8 [4 . 8 [2|4]]!8>>"))
+    $ superimpose ((# "clap:2") . (|* gain 0.7))
+    $  "~ snare" # n "[1,2]"
+    -- # gain (slow 32 $ range 0.8 0.5 isaw)
+    # pan 0.3
+    # djf (slow 64 (cosine + perlin/4))
+  d3 -- Hats snake-ish
+    $ dg
+    $ (|+ pan (slow 10 $ range 0 0.25 saw))
+    $ juxBy 0.2 (rev . (|* gain 0.85))
+    $ fast 2
+    -- $ sometimesBy "0 1" (off "e" id)
+    $ "h . h ~ <h!3 h?> ~ ~ <~!3 h?>"
+    # "808oh"
+    # n "<0 3>"
+    # gain (slow 32 $ range 0.6 0.4 (sine + isaw/4))
+  d10 -- DELICI0US N0153
+    $ dg
+    $ whenmod 64 48 (juxBy 0.25 (# crush 5))
+    $ whenmod 8 6 (rarely (loopAt 2))
+    $ "~ ~ ~ <n!3 [~ n] n [~ n] n [~ n]>"
+    # "psr" # n "<1!8 10!4 11!4 12!7 2>" -- 1 10 11 12  rare 2
+    # lpf (slow 2 $ range 2000 1000 perlin)
+    # pan (slow 4 $ range 0.2 0.9 perlin)
+    # gain (slow 32 $ range 0.25 0.45 (saw + perlin))
+    # cut 10
+
+
+-- Hip Beat rebond k k([3|5],8)
 do
-  setcps (120/60/4)
-  d1 $ "jazz*4"
-  d3 $ "hh*8"
-  d2 $ "~ cp"
-111
+setcps (120/60/4)
+d1
+  $ whenmod 32 16 (# djf (slow 16 $ sine))
+  $ "k . k(<3 <5 1>>,8)"
+  # "jazz" # gain 0.8
+d2 $ "~ snare:8"
+d3
+  $ whenmod 16 8 (jux rev)
+  $ fast "<4 4 8 4>"
+  $ "drum:8" # gain (slow 16 $ range 0.6 0.85 saw)
diff --git a/live/midi/break_metal.tidal b/live/midi/break_metal.tidal
new file mode 100644
index 0000000..7682b60
--- /dev/null
+++ b/live/midi/break_metal.tidal
@@ -0,0 +1,49 @@
+-- CC1 General MIDI Acoustic Guitar
+-- Accord parfait Si Ré Fa# Si
+-- Impro Si Ré Mi Fa Fa# La Si
+-- Metal march
+do
+  setcps (70/60/4)
+  d1
+    -- $ fast (slow 8 "<1 2 4 <8 [8 0]>>")
+    $ "[cpu,jazz]*8"
+    # room 0.8 # sz 0.8
+    # dry 1.02
+    # lpf 2000
+    # gain 0.75
+  d2
+    -- $ mask "<f!4 t!28>"
+    $ slice 4 (
+      whenmod  32 24 (>| "<3 3 0 0> <2 1> <1 2> <0!3 3> ")
+      $ whenmod 32 16 (>| "4 0 4 0")
+      "<0 [~ 0]> 1 2 3*<1!3 <2 4>>"
+      )
+    $ loopAt 4
+    $ "break"
+    # gain (slow 42 $ range 0.35 0.7 perlin)
+    # cut 2
+  d3
+    $ whenmod 8 0 (
+      sometimesBy "0!7 [0 1]" (
+      (# "ho:5")
+      . (|* gain 0.6)
+      . (|+ room 0.2)
+      . (# note "<0 0 3 0 3 3 0 0 3 0 3 0 0 0 -1 0>")
+      -- . ("e" ~>)
+    )
+    )
+    $ swing (slow 16 "<1 4>")
+    $ fast (8 * "1 <1!3 [2 1]>") $ "h"
+    # "hh"
+    # gain (slow 16 $ range 0.4 0.8 saw)
+    # room 0.1
+    # sz 0.5
+    # pan 0.9
+    # cut 3
+  d4 $ "~!7 cp" # lpf 200
+  d9
+    $ "<g!16 g(<3 3 5 <8 [8 4]>>,8)!16>"
+    # "glitch:2"
+    # crush (range 4 5 perlin)
+    # gain 0.57
+    # room 0.5
diff --git a/live/midi/bruit_hiver.tidal b/live/midi/bruit_hiver.tidal
new file mode 100644
index 0000000..3a8bc99
--- /dev/null
+++ b/live/midi/bruit_hiver.tidal
@@ -0,0 +1,32 @@
+-- BruitHiver: Les sons du grand froid
+do
+setcps (120/60/4)
+resetCycles
+d1
+  $ mask "<f!8 t!120>"
+  $ whenmod 32 16 (# djf (slow 16 $ sine))
+  $ "k . k(<3 <5 1>>,8)"
+  # "[jazz,bd]"
+  # gain 0.85
+  # lpf 6000
+d2
+  $ mask "<f!12 t!20 f!4 t!28>"
+  $ whenmod 64 32 (# squiz (slow 32 $ range 1 1.09 sine))
+  $ "~ snare:8 . ~"
+  # gain 0.8
+d3
+  $ mask "<f!3 t!125>"
+  $ whenmod 16 8 (jux rev)
+  $ fast "<4 4 8 [4 . <8 16> 16]>"
+  $ "drum" # n "[0,2]"
+  # gain (slow 16 $ range 0.6 0.85 saw)
+  # hpf 5000
+d10
+  $ "[cosmicg:2]"
+  # begin 0.05
+  # note ("f4" + "[0|12|24]")
+  # lpf (slow 64 $ range 2000 8000 sine)
+  # gain (slow 4 $ range 0.4 0.75 perlin)
+  # cut 10
+
+once $ "cosmicg:7" # gain 0.5  # cut 42
diff --git a/live/midi/dusty_cypres.tidal b/live/midi/dusty_cypres.tidal
new file mode 100644
index 0000000..ff7d5b8
--- /dev/null
+++ b/live/midi/dusty_cypres.tidal
@@ -0,0 +1,28 @@
+do
+setcps (90/60/4)
+resetCycles
+let glob = (degradeBy $ "<0 1> 0.95!15" * (1 - (cF 0 "1")))
+d1 -- Beat
+  $ mask "<f!4 t!12>"
+  $ "k . <~!8 k!8> ~ ~ k*<1!4 [1|2]!4>"
+  # "reverbkick"
+  # lpf 2000
+  # legato 1.5
+  # gain (fast 8 $ 0.9 + (perlin/10))
+d2 -- Break
+  $ glob
+  $ loopAt 4
+  $ slice 8 (iter 4 $ run 8)
+  $ "dusty" # n "<3!3 4>"
+  # pan 0.6
+  # cut 2
+  # gain (slow 16 $ range 0.6 1 sine)
+d3 -- CYPRESS
+  $ glob
+  $ loopAt 4
+  $ slice 4 "[0|2] 1 [0|2]*<1!3 [4 2]> 1*<1!7 2>"
+  $ "dusty:0"
+  # gain (slow 16 $ range 1 0.6 sine)
+  # lpf 2000
+  # pan 0.35
+  # cut 3
diff --git a/live/midi/dusty_marcia.tidal b/live/midi/dusty_marcia.tidal
new file mode 100644
index 0000000..494c9c5
--- /dev/null
+++ b/live/midi/dusty_marcia.tidal
@@ -0,0 +1,22 @@
+do
+setcps (90/60/4)
+d1 $ s "jazz"
+
+d2 $ "dusty/2" # gain 0.7 # cut 2
+
+once $ "dusty:1"
+
+-- BRASS /1
+once $ "dusty:1"
+
+
+-- Sandbox
+
+d4 -- Trumps
+  -- $ mask (slow 16 "<f t [f!3 t] [t!3 f]>")
+  $ "[~ dusty:2]/4"
+  # cut 4
+  # end 0.9
+  # gain 0.65
+
+once $ "dusty:2"
diff --git a/live/midi/hello_world.tidal b/live/midi/hello_world.tidal
index d6c5358..e8e0089 100644
--- a/live/midi/hello_world.tidal
+++ b/live/midi/hello_world.tidal
@@ -6,15 +6,16 @@ d2 $ fast 4 $ "drum:8"
 
 # gain 0.5
 
-d10 $ note (cF (0) "0") # "superpiano"
-# velocity 0.5
+-- TODO CLEANUP BELOW
+d10 $ fast 8 $ note ((cF (0) "1") * 26) # "superpiano"
+# velocity 0.7
 
 
 d1 $ sound "jazz*4"
   -- # djf (cF default CC_Number)
   -- # djf (cF 0.5 "14")
-  # djf ("^14")
-  # gain 0.6
+  # djf ("^1")
+  -- # gain 0.6
 
  # speed (cF 12 "0")
 
diff --git a/live/midi/jazz_tech_piano.tidal b/live/midi/jazz_tech_piano.tidal
new file mode 100644
index 0000000..5168177
--- /dev/null
+++ b/live/midi/jazz_tech_piano.tidal
@@ -0,0 +1,31 @@
+
+
+-- Parov : Psychedelic jazz
+-- Piano: Si do re mi
+do
+  setcps 0.46
+  d1 $ s "tech:5*4" # note (-4)
+  d2 $ s "[~ hh ~ <hh [hh ~ hh]>]*2"
+    # gain 0.9
+  d4
+    $ superimpose (
+      const
+      $ fix (# silence) (note "0") -- MUTE DEFAULT
+      $ "t([<12!4 3!4> <6!3 <8 16>>],16)"
+      >| (segment 16 $ note "^note")
+      # "superpiano"
+      # (velocity (range 0.4 0.7 "^1"))
+      # (crush (range 32 5 "^1"))
+    )
+    $ s "superpiano"
+    # note "<-20 [-19,-15] [-20,-16] ~>"
+    # velocity "<0.7 0.5 0.6>"
+    # sustain 3
+    # gain 0.9
+
+    d4
+      $ superimpose (>| note ("^note" + "0 0"))
+      $ s "superpiano"
+      # velocity "<0.7 0.5 0.6>"
+      # sustain 3
+      # gain 0.9
diff --git a/live/techno/bailar.tidal b/live/techno/bailar.tidal
new file mode 100644
index 0000000..369d72e
--- /dev/null
+++ b/live/techno/bailar.tidal
@@ -0,0 +1,43 @@
+do
+let gGlob = 1
+setcps (126/60/4)
+resetCycles
+d1 -- Kick etouffable
+  $ mask "<f!8 t!56 f!16 t!48>" -- Pont!
+  $ fast "<4!16 1!4 2!4 4!8 1!4 8 1!3 4 1 1 2 4 4!8>"
+  $ "[jazz,techno]"
+  # djf (slow 64 $ sine)
+  # gain (gGlob * 0.8)
+d2 -- Drums reguliers
+  $ mask "<t!64 f!8 t!56>" -- Pont!
+  $ sometimesBy "0 0 0.25 0" (ply 2)
+  $ fast "<4!12 8!6 16 [8 4]>"
+  $ "drum:2"
+  # djf (slow 64 $ sine)
+  # gain (gGlob * 1)
+d3 -- Tambours marche
+  $ mask "<t!64 f!12 t!52>" -- Pont!
+  $ "cpu:2*<4!3 <8 [8 16] [8 16 8] [16 8 16] [16!3 8]>>"
+  # room 0.125 # sz 0.1
+  # djf (slow 64 $ cosine)
+  # pan (slow 8 $ range 0.3 0.7 sine)
+  # gain (gGlob * (slow 32 $ range 0.45 0.85 sine))
+d4 -- Rita Orchestra
+  $ mask "<t!24 f!3 t f!4>"
+  $ juxBy 0.8 (# cut 41)
+  $ degradeBy (slow 128 $ range 0 0.65 saw)
+  $ sometimesBy "<1!32 0!32>" (chop "<16!8 8!8 4!8 2!8>")
+  $ "rita/<4!8 8!8>"
+  # cut 4
+  # room 0.2 # sz 0.8
+  # pan 0.7
+  # gain (gGlob * (slow 96 $ range 0.25 0.45 sine))
+d5 -- Wahwah
+  $ mask "<f!16 t!48 t!4 f!12 t!48>" -- Pont!
+  $ whenmod 8 6 (juxBy 0.8 (rev . chop 4))
+  $ iter 2
+  $ striate 4
+  $ "rita:2"
+  # gain (gGlob * (slow 4 "<1 0.9 0.8 0.7>") * 0.58)
+  # pan 0.3
+  # cut 5
diff --git a/live/techno/funk/naufrage.tidal b/live/techno/funk/naufrage.tidal
index 530d50a..73b4d7f 100644
--- a/live/techno/funk/naufrage.tidal
+++ b/live/techno/funk/naufrage.tidal
@@ -73,6 +73,8 @@ do
       scale "major" "<0 2 4 12>" + (run 4)
     ) # gain 0.7
 
+once "fpiano"
+
 once $ s "fguitar:36"
   # gain 0.75 # cut 42
 
diff --git a/live/techno/vertige_experienciel.tidal b/live/techno/vertige_experienciel.tidal
index c08a558..480b705 100644
--- a/live/techno/vertige_experienciel.tidal
+++ b/live/techno/vertige_experienciel.tidal
@@ -27,7 +27,7 @@ do
             (slow 16 $ "<20 30 40 50 40 30 20 10>")
       saw
     )
-    # gain 0.35
+    # gain 0.65
     |- note "[<12 ~>,24,<-12 -12?>]"
   d8 -- Lead forks!
     -- $ fast 2
diff --git a/main_fairbanks.scd b/main_fairbanks.scd
new file mode 100644
index 0000000..8bb33c6
--- /dev/null
+++ b/main_fairbanks.scd
@@ -0,0 +1,69 @@
+(
+// ---------------------------- //
+// --- RUN THIS WHOLE BLOCK --- //
+// ---------------------------- //
+
+// configure the sound server: here you could add hardware specific options
+// see http://doc.sccode.org/Classes/ServerOptions.html
+//s.options.outDevice = "Soundflower (64ch)";
+//s.options.inDevice = "Soundflower (64ch)";
+s.options.numBuffers = 1024 * 16; // increase this if you need to load more samples
+s.options.memSize = 8192 * 16; // increase this if you get "alloc failed" messages
+s.options.maxNodes = 1024 * 32; // increase this if you are getting drop outs and the message "too many nodes"
+s.options.numOutputBusChannels = 8; // set this to your hardware output channel size, if necessary
+s.options.numInputBusChannels = 2; // set this to your hardware output channel size, if necessary
+// boot the server and start SuperDirt
+s.waitForBoot {
+	~dirt = SuperDirt(2, s); // two output channels, increase if you want to pan across more channels
+	~dirt.loadSoundFiles;   // load samples (path containing a wildcard can be passed in)
+	// for example: ~dirt.loadSoundFiles("/Users/myUserName/Dirt/samples/*");
+	s.sync; // wait for samples to be read
+	~dirt.start(57120, [0,2,4,6,8,10,12,14]);   // start listening on port 57120, create four busses each sending audio to channel 0
+	(
+		SynthDef(\plucklead, {
+			|out, sustain = 1, freq = 440, speed = 1, begin=0, end=1, pan, accelerate, offset|
+			var line = Line.ar(begin, end, sustain, doneAction:2);
+			var env = Env([0, 1, 0.333, 0],[5, 70, 1000]);
+			var envGen = IEnvGen.ar(env, line*env.times.sum*abs(speed));
+			var speedFreq = freq*abs(speed);
+			var pulseLfo = SinOsc.ar(Rand(-1,1));
+			var sound = RLPF.ar(Pulse.ar([speedFreq*Rand(0.99,1.01)*2,speedFreq*Rand(0.99,1.01)*2],pulseLfo)*0.5+Saw.ar(speedFreq), (20000*(envGen**2.8))+DC.ar(10), 0.5);
+			Out.ar(out, DirtPan.ar(sound, ~dirt.numChannels, pan, envGen));
+		}).add;
+	);
+	~modBus.free;
+	~carBus.free;
+	~dirt.orbits[0].outBus = 0;
+	~dirt.orbits[1].outBus = 0;
+	// --- //
+	~modBus = Bus.audio(s, numChannels:2); // assuming stereo, expand if needed
+	~carBus = Bus.audio(s, numChannels:2);
+	~dirt.orbits[0].outBus = ~modBus; // play into that bus.
+	~dirt.orbits[1].outBus = ~carBus;
+	(
+		Ndef(\x, {
+			var modBus = In.ar(~modBus, 2);
+			var carBus = In.ar(~carBus, 2);
+			var out = modBus+carBus;
+			//carBus = FreeVerb.ar(carBus, 0.9, 0.8, 0.8);
+			carBus = carBus+((-7).dbamp*Compander.ar(FreeVerb.ar(carBus, 0.9), carBus, -30.dbamp, 1, 0.01, 0.01, 0.07));
+			carBus = Compander.ar(carBus,carBus,-20.dbamp,1,0.5,0.01,0.35)*(-5).dbamp;
+			out = Compander.ar(carBus, modBus, -30.dbamp, 1, 0.01, 0.01, 0.07)+modBus;
+			out = Compander.ar(out, out, -15.dbamp, 1, 0.2)*4;
+			Out.ar(0, out);
+		});
+	);
+	(
+		MIDIClient.init;
+		MIDIIn.connectAll;
+		~tidalSocket = NetAddr("localhost", 6010);
+		~notes=[];
+		//MIDIFunc.cc( {|val, num, chan, src| ~tidalSocket.sendMsg('/ctrl', num, val/127.0);}, nil, nil, nil);
+		MIDIFunc.noteOn({|veloc, num, chan, src| ~notes=~notes.add(num); ~tidalSocket.sendMsg('/ctrl', "notes", format("%", ~notes)); });
+		MIDIFunc.noteOff({|veloc, num, chan, src| ~notes=~notes.takeThese({|x| x==num}); ~tidalSocket.sendMsg('/ctrl', "notes", format("%", ~notes)); });
+	);
+};
+);
+
+// check me out for the current notes being played
+~notes.postln;
diff --git a/output/Falaise.jpg b/output/Falaise.jpg
new file mode 100644
index 0000000..b4f5388
Binary files /dev/null and b/output/Falaise.jpg differ
diff --git a/output/Falaise2 b/output/Falaise2
new file mode 100644
index 0000000..955a673
Binary files /dev/null and b/output/Falaise2 differ
diff --git a/output/FalaiseNoise.jpg b/output/FalaiseNoise.jpg
new file mode 100644
index 0000000..41bf3a1
Binary files /dev/null and b/output/FalaiseNoise.jpg differ
diff --git a/output/FalaiseSable.jpg b/output/FalaiseSable.jpg
new file mode 100644
index 0000000..44408de
Binary files /dev/null and b/output/FalaiseSable.jpg differ