Strudelify

Sicily

Daniele

KeyC minorTempo103 bpm
0:00/0:00
// Sicily — Daniele
// 103 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 110 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(103/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · electric bass finger
const bass = note(`<
  ~@8 A B C D E F G H I J K L M N O P Q R C S E F G H I T U V W N O N Q X Y Z AA AB AC AD AE R C D E F G H I T U V W N
  AF P Q AG Y Z AA AB AC AH AI R C D E F G AJ I T U V W N AK P AL@3 ~@5 AM AN@3 AO@2 AP AQ A AR@5
>`.pickRestart({
  A: "ab1@15 ~ g1@16", B: "ab1@3 ~@9 ab1@2 ~@2 ab1@3 ~@9 ab1 ~@3", C: "ab1@2 ~@10 ab1@2 ~@2 ab1@3 ~@9 ab1@2 ~@2",
  D: "gb1@4 ~@8 gb1@3 ~ gb1@3 ~@9 gb1@3 ~", E: "gb1@2 ~@10 gb1@2 ~@2 gb1@3 ~@9 gb1@2 ~@2",
  F: "f1@3 ~@9 f1@2 ~@2 f1@2 ~@10 f1@2 ~@2", G: "f1 ~@5 f1 ~ f1 ~@5 f1 ~", H: "e1@3 ~@9 e1@3 ~ e1@3 ~@9 e1@2 ~@2",
  I: "e1 ~@5 e1 ~ e1 ~@5 e1@2", J: "eb1@3 ~@9 eb1@2 ~@2 eb1@2 ~@10 eb1@2 ~@2",
  K: "eb1@2 ~@10 eb1 ~@3 eb1@2 ~@10 eb1@2 ~@2", L: "d1@3 ~@9 d1@2 ~@2 d1@2 ~@10 d1@2 ~@2",
  M: "d1@2 ~@10 d1 ~@3 d1@2 ~@10 d1@2 ~@2", N: "ab1 ~@5 ab1 ~ ab1 ~@5 ab1 ~",
  O: "ab1@2 ~@10 ab1@2 ~@2 ab1@2 ~@10 ab1 ~@3", P: "ab1@2 ~@10 ab1@2 ~@2 ab1@2 ~@10 ab1@3 ~",
  Q: "g1@2 ~@10 g1@3 ~ g1@2 ~@2 g1@2 ~@6 g1@2 ~@2", R: "ab1@3 ~@9 ab1@2 ~@2 ab1@3 ~@9 ab1@2 ~@2",
  S: "gb1@3 ~@9 gb1@3 ~ gb1@3 ~@9 gb1@3 ~", T: "bb1@3 ~@9 bb1@2 ~@2 bb1@2 ~@10 bb1@2 ~@2",
  U: "bb1@2 ~@10 bb1 ~@3 bb1@2 ~@10 bb1@2 ~@2", V: "a1@3 ~@9 a1@2 ~@2 a1@2 ~@10 a1@2 ~@2",
  W: "a1@2 ~@10 a1 ~@3 a1@2 ~@10 a1@2 ~@2", X: "c2@5 ~@7 c2@6 ~@10 c2@4", Y: "~@8 c2@9 ~@11 g1@2 c2@2",
  Z: "f1@18 ~@2 f1 ~@7 c2@4", AA: "f1@17 ~@4 bb1@5 ~ a1@5", AB: "ab1@10 ~@2 ab1@3 ~@13 ab1@2 a1@2",
  AC: "bb1@10 ~@2 bb1@14 ~@2 bb1 ~@3", AD: "eb1@13 ~@3 eb1@11 ~ eb1@2 f1@2", AE: "g1@19 ~ g1@2 ~@10",
  AF: "ab1@2 ~@10 ab1 ~@3 ab1@2 ~@10 ab1 ~@3", AG: "c2@2 ~@4 c2@3 ~@5 c2@2", AH: "eb1@12 ~@4 eb1@13 ~ ab1@2",
  AI: "g1@29 ~@3", AJ: "e1@3 ~@9 e1@3 ~ e1@2 ~@10 e1@2 ~@2", AK: "ab1@2 ~@10 ab1@2 ~@2 ab1 ~@11 ab1 ~@3",
  AL: "[g1@2 ~@2 g1@8 g1@4 g1@4 g1 ~@7 c2@56 ~@12]/3", AM: "c2@15 ~ c2@16",
  AN: "[c2@24 ~@3 g1@3 ~ c2@26 ~@2 c2 ~@3 c2@31 ~@2]/3", AO: "[c2@21 ~@6 f1 g1@2 ~ c2@27 ~ c2 ~@4]/2", AP: "c2@15 ~",
  AQ: "c2@27 ~@5", AR: "[~ f1@17 e1@17 ~ d1@17 db2@18 c2@84 ~@5]/5",
})).s("gm_electric_bass_finger").gain(0.43)

// chords · pad warm
const pad_warm = note("<~ A@5 B@3 C@7 D@5 E@4 C@7 D@5 E@4 F@8 C@7 D@5 E@4 F@8 C@7 D@5 E@4 G@8 H@8 ~ I@4>".pickRestart({
  A: "[~ [g3,eb4]@62 ~ [c4,d4]@63 [f3,ab3,d4]@33, c2, ~ c4@59 ~@4 gb3@60 ~@36]/5", // Cm Csus2 Ddim
  B: "[b3@31 [g3,c4]@31 ~ eb4@16 [g2,f3,b3,d4]@16 ~, ~@31 c2@65, ~@31 eb4@29 ~@2 c4@17 ~@17, ~@31 c3@26 ~@6 gb3@14 ~@19]/3", // C5 G7
  C: "[[ab2,g3,eb4]@63 [c4,d4]@64 [f2,f3,ab3]@60 ~@3 [e2,g3,c4]@34, c4@61 ~@2 [gb2,gb3]@61 ~@3 d4@97]/7", // Abmaj7 Csus2 Fm C Gb
  D: "[~@32 [bb3,db4]@60 ~@35 d2@29 ~@4, ~@31 f4@65 [c4,eb4]@63 ~, ~@31 eb2@58 ~@6 a3@64 ~, ~@16 gb3@63 ~]/5", // Bbm Cm
  E: "[[g3,c4,eb4]@63 [gb3,c4]@31 ~ [f3,b3]@29 ~@4, ab2@46 ~@17 d4@61 ~@4]/4", // Cm Gbdim Fdim
  F: "[~ [c5,db5]@25 ~ c5@2 bb4@3 ~@11 db5@20 ab4@17 bb4@15 ab4@15 ~@6 [db5,f5]@6 [c5,e5]@5 ~@32 d5@16 ~ f4@15 eb4@16 [d4,bb4]@16 ~@17 d4@15 ~, ~ g5@61 ~ eb5@46 ~@18 eb5@32 ~@48 g4@10 ~@6 [b3,g4]@32 ~, ~@32 c5@78 ~@17 gb4@28 ~@4 ab4@49 ~@22 f4@25 ~, ~@8 b4@5 ~@3]/8", // Dbmaj7 Db C Gm Em
  G: "[~ [g3,eb4]@62 ~ [c4,d4]@63 ~@33 b3@31 [g3,c4]@31 ~ eb4@16 [g2,f3,b3,d4]@16 ~, c2@63 c2@126 ~@2 [c2,eb4]@29 ~@36, ~ c4@59 ~@4 gb3@60 ~@3 d4@63 ~@32 c4@17 ~@17, ~@127 ab3@49 ~@15 c3@26 ~@6 gb3@14 ~@19]/8", // Cm Csus2 C5 G7 Cm
  H: "[~@64 [c4,d4]@63 ~@33 b3@31 [g3,c4]@31 ~ eb4@16 [g2,f3,b3,d4]@16 ~, c2@57 ~@6 c2@126 ~@2 [c2,eb4]@29 ~@36, ~ [g3,eb4]@62 ~ gb3@60 ~@3 [f3,d4]@63 ~@33 gb3@14 ~@19, ~ c4@59 ~@67 ab3@49 ~@46 c4@17 ~@17, ~@47 c3@142 ~@2 c3@26 ~@39]/8", // Csus2 C5 G7 Cm Dm
  I: "[~@3 [bb3,f4,bb4]@16 ~@5 eb4@11 ~@3 [f4,g4,c5]@88 ~@2, ~@19 [ab3,db4,ab4]@19 ~@90]/4", // Bb5 Fsus2 Db5
})).s("gm_pad_warm").gain(0.18).pan(0.8)

// chords · piano
const piano = note(`<
  ~ A@2 B@2 C@2 D E F@2 G@2 H@2 I@2 J@2 K L@3 M@2 N@2 O@2 P@2 Q@2 R@2 S@2 T@2 U@2 V@2 W@2 X Y Z AA AB@2 AC@2 AD@2 AE@2
  AF AG AH AI AJ AK AL@2 AM@2 AN@2 X Y Z AO@3 AP AQ AR@2 AS@2 AT@2 AU@5 AV@3 AW@5 AX AY@2 AZ@6 BA BB@4
>`.pickRestart({
  A: "[~@11 d5 eb5@4 d5@11 ~ c5@9 g4@5 ~ d5 eb5@5 d5@10 c5@5]/2",
  B: "[~ gb4@10 d5 eb5@6 d5@10 c5@8 eb5 f5@5 eb5@3 ~@2 d5@10 ~ c5 d5@4 c5, ~@45 f5@2 ~@17, ~@23 eb5 ~@8]/2",
  C: "[d5@11 c5 d5@4 ~@6 d5@2 ~ b4@15 ~ f5@4 eb5@4 d5@8 ~ b4@3 ab4@3, ~@17 c5@8 ~@16 eb5 ~@22]/2",
  D: "~ g4@2 ~@2 f4@2 g4 ~ g4@11 ~ f4@5 e4@6, ~@3 ab4@2 ~@3 ab4@2 ~@22, ~@2 g4 ~@13",
  E: "[c4,eb4]@15 ~ [f3,b3,d4]@14 ~@2, gb3@3 ~@5", // Cm Bdim
  F: "[~@2 eb4@18 eb4@12 [eb4,f4]@31 ~, ~ g3@62 ~, ~ c4@31, ~@20 f4 ~@43]/2", // Ebsus2
  G: "[~@19 eb5 ~@13 c5@4 ~@2 a4@13 ~@12, ~@20 d5@17 d5@16 ~@11, ~@38 c5@15 ~@11]/2",
  H: "[~@19 b4@2 g4@3 ~ c5@3 f4@2 g4 f4@32 ~]/2", I: "[~@19 db5@7 ~ g5@8 c5@12 ~@17, ~@19 c5 ~@44]/2",
  J: "[~@44 bb4@19 ~, ~@27 bb4@13 bb4@4 ~@20, ~@33 [e5,f5]@30 ~, ~@42 ab4@21 ~]/2", // Fmaj7
  K: "~@20 gb4@2 c5@2 d5 ~ eb5@2 ~ gb5@3, ~@14 f5 ~",
  L: "[~@5 eb5@2 ~@4 d5@40 ~ d5@7 ~@5 [g3,ab3,c4,eb4,g4]@24 ~@8, a5@51 c5 eb5@37 ~@7, ~ gb5@60 c5@28 ~@7, ~@3 f5@59 bb4 ab4@25 ~@8, ~@7 d5 eb5 d5 c5@41 [g3,ab3,c4,eb4]@8 d5@29 ~@8]/3", // Abmaj7
  M: "[~@8 [g3,b3,g4]@5 ~@3, ~@8 eb3@16 eb4@3 f4@24 ~@13, ~@3 gb3@10 ~@3, ~@16 ab3@35 ~@13, ~@5 c4@8 ~@3]/2", // G
  N: "[~@37 c5@27, ~@25 d5@6 d5@32 ~, ~@13 eb5@19, ~@34 b4@29 ~]/2",
  O: "[~@16 [gb3,a3,c4,eb4]@13 ~@3, ~@20 [e5,f5]@37 ~@7, ~@5 [gb3,a3,c4,eb4]@3 ~@8, ~@24 eb5@33 ~@7, ~@28 d5@29 ~@7]/2", // Gbdim Fmaj7 Gbdim
  P: "[~@20 [f3,ab3,c4,b4]@7 [f3,ab3,c4,d4]@6 ~@4 g4@24 ~@3, ~@20 [eb4,c5]@41 ~@3, ~@27 b4@34 ~@3, ~@33 g4@2 ab4@26 ~@3, ~@34 [f3,ab3,c4,d4]@27 ~@3]/2", // Fm Dm7b5 Cm Dm7b5
  Q: "[~@10 [g3,c4,db4,c5]@2 ~@6 db5@2 ~@2 bb4@9 ~, ~@12 db5@6 ~@3 c5@10 ~, ~@14 [gb5,g5]@17 ~, ~@14 [g3,c4,db4]@6 [g3,c4,db4,db5]@11 ~]/2", // C Gmaj7 C
  R: "[~@20 [bb3,db4,f4,gb4]@4 ~@16 bb4@21 ~@3, ~@19 eb5@5 eb5@37 ~@3, ~@20 f5@41 ~@3, ~@24 [bb3,db4,f4,gb4]@11 f4 bb4@2 db5@23 ~@3, ~@32 db5@4 [bb3,db4,gb4]@25 ~@3]/2", // Gbmaj7 Gb
  S: "[~@37 c5@10 ~@17, ~@20 gb5@27 ~@17, ~@27 f4@20 ~@17, ~@30 gb4@17 ~@17, ~@32 eb5@3 d5@12 ~@17]/2",
  T: "[~@29 g4 ~@3 g4@31, ~@19 g5@45, ~@11 eb5@21, ~@3 c5@5, ~@27 ab4@4 g4 ab4@32]/2",
  U: "[~@16 [g3,b3,eb4,g4]@13 ~@3, ~@4 eb3@8 eb4@2 f4@15 ~@3, ~@6 gb3@23 ~@3, ~@8 ab3@21 ~@3, ~@10 c4@19 ~@3]/2", // Gaug
  V: "[[c2,c3,c5,db5]@10 ~@2 [c2,c3,c5,db5,g5]@9 ~@7 [c2,c3,c5,db5,g5]@7 ~@5 c2@19 ~ c2@4, g5 ~@39 [c3,c5,db5,g5]@24]/2", // Dbmaj7 C
  W: "[[eb4,ab4,c5,eb5]@16 ~@4 f5@2 ~@2 c5@2 ab4@2 ~@3 g4@2 ~@2 f4@13 f4@4 ~ [bb2,ab3,db4,f4]@6 [a2,g3,c4,e4]@5, f2@3 ~, ~ ab3@2 ~, ~@22 eb5@4 ~@3 g4@2 ~@2 f4 g4@14 ~@16, ~@30 ab4@17 ~@17]/2", // Ab Bbm7 Am7
  X: "[gb3,b3,eb4]@18 ~@2 [bb3,b3,gb4]@10 eb4 ~, ab2@31 ~", Y: "[ab3,b3,d4]@19 ~ [ab3,bb3,d4]@9 ~@3, bb2@25 ~@7",
  Z: "[eb2,ab3,b3,eb4]@12 ~@4 [eb2,eb3,g3,bb3,d4]@15 ~", AA: "[g2,f3,b3,d4]@31 ~",
  AB: "[~@37 c5@26 ~, ~@25 d5@6 d5@31 ~@2, ~@26 eb5@37 ~, ~@34 b4@29 ~]/2",
  AC: "[~@20 f5@4 eb5@4 ~@4 [gb3,a3,c4,eb4]@13 ~@19, ~@20 [gb3,a3,c4,eb4]@9 ~@35, ~@20 e5 ~@7 d5@19 ~@17]/2", // Gbdim
  AD: "[~@20 [f3,ab3,c4,b4]@7 [f3,ab3,c4,d4]@6 ~@4 g4@13 ~@14, ~@20 [eb4,c5]@29 ~@15, ~@27 b4@22 ~@15, ~@33 g4@2 ab4@14 ~@15, ~@17 [f3,ab3,c4,d4]@8 ~@7]/2", // Fm Dm7b5 Cm Dm7b5
  AE: "[~@5 [g3,c4,db4,c5] ~@3 db5 ~ bb4@4 ~, ~@24 db5@12 ~@6 c5@17 ~@5, ~@28 [gb5,g5]@31 ~@5, ~@28 [g3,c4,db4]@12 [g3,c4,db4,db5]@19 ~@5]/2", // C Gmaj7 C
  AF: "~@19 eb5 [bb3,db4,f4,gb4,f5] ~@3 [bb3,db4,f4,gb4,eb5]@7 ~", // Gbmaj7 Ebm7
  AG: "~@2 bb4@3 ~@3, db5 [bb3,db4,gb4]@4 ~@3, ~@3 f4@16 ~@13, ~ bb4 ~@6, ~@3 db5@7 ~@6", // Gb
  AH: "~@20 gb5 ~@6 f4@2 ~ gb4 ~", AI: "eb5@2 ~ d5 ~ c5 ~@26", AJ: "~@19 g5@3 eb5@2 c5@2 ~ ab4@2 g4 ~ g4",
  AK: "~ g4@6 ~@25, ab4 ~@15",
  AL: "[~@12 gb3@4 ab3@4 c4@3 ~ eb4@3 ~@5 [g3,b3,eb4,g4]@11 ~@21, ~@8 eb3@13 ~@7 f4@15 ~@21]/2", // Gaug
  AM: "[[c2,c3,c5,db5,g5]@8 ~@4 [c2,c3,c5,db5,g5]@9 ~@7 [c2,c3,c5,db5,g5]@7 ~@5 [c2,c3,c5,db5,g5]@19 ~ c2@3 ~]/2", // C
  AN: "[[eb4,ab4,c5,eb5]@16 ~@4 f5@2 ~@2 c5@2 ab4@2 ~@3 g4@2 ~ g4 f4@10 ~@3 f4@4 ~ [bb2,ab3,db4,f4]@6 [a2,g3,c4,e4]@5, f2@11 ~@5, ~@16 ab3@27 ~@21, ~@22 eb5@4 ~@3 g4@2 ~@2 f4@2 ~@29, ~@15 ab4 ~@16]/2", // Ab Bbm7 Am7
  AO: "[g2 ~@13 eb5@5 ~@25 [g3,ab3,c4,eb4]@9 ~@3 [g3,ab3,c4,eb4]@22 ~@3 d5 ~@10 d5@3 ~, [f3,b3,d4]@53 ~@43, ~@14 d5 ~@5 d5@7 d5@26 ~@31 d5@8 ~@4, ~@24 eb5@29 ~@28 eb5@9 eb5@5 ~, ~@29 b4@4 c5@27 ~@27 c5@7 ~@2]/3", // Abmaj7 Bdim
  AP: "~@5 [gb3,c4,d4]@3, c5, [gb3,c4,d4]@15 a4@17, ~@3 b4@5, ~@13 bb4@18 ~", // D7
  AQ: "[gb3,c4,d4]@18 eb5@4 d5@2 ~ eb5@2 d5@2 c5@3, ~@18 d5 ~@13", // D7
  AR: "[~@46 c4 ~@4 d4@7 ~@2 bb4@2 b4@2, b4@43 g4@7 ab4@10 ~@4, ~@5 g4@3 c5@15 ~@9, ~@11 d4@13 f4@2 f4@19 ~@19, ~@12 [f3,ab3]@13 g4@2 [f3,ab3,d4]@19 ~@2 [f3,ab3,b3]@13 ~@3]/2", // Fm Ddim Fdim
  AS: "[~@20 g3@11 ~@13 c5@2 ~@2 db5@2 eb5@2 ~ e5@2 ~ gb5 g5@4 ~ g5@2, [g3,d4]@20 d4@25 ~@19, ~ c5@43 ~@18 gb5 ~, ~@2 [g3,c4,db4] ~]/2", // G5 C
  AT: "[~@20 [bb3,db4,f4]@10 ~@2 [bb3,db4,f4]@16 f5 ~ gb5@3 f5@2 ~ gb5@2 f5@3 d5@3, gb3@25 ~@7, [bb3,db4,f4]@20 ab4@29 ~@15, ~ f5@47 ~@16, ~@30 gb4@19 ~@15]/2", // Bbm
  AU: "[~@28 gb3@8 ~@8 f5@6 ~@4 gb5@3 f5@2 ~@13 [g3,c4,eb4]@4 [g3,c4,eb4]@20 ~@4 eb5@6 d5@6 ~@16 a4@3 ~@25 eb4@4, [a3,c4,eb4]@13 c5@2 gb3@5 [a3,c4,eb4]@16 [gb3,a3,c4,eb4]@8 gb5@6 f5@7 ~@103, gb3@11 db5@47 ~@38 [g3,ab3,c4,eb4]@15 ~@17 [gb3,c4,d4]@32, ~ eb5@58 ~@6 eb5@35 ~@26 bb4@6 ~@16 b3@12, ~@10 d5@48 ~ d5@39 d5@5 ~@9 c5@19 ab4@29]/5", // Cm Adim Gbdim Abmaj7 D7
  AV: "[g4@22 ~@20 d5 eb5@4 d5@7 ~@3 c5@14 ~@3 gb4@2 g4@2 eb5@3 ~@2 eb5 ~@7 c5@5, b3 ~@27 [g3,c4,eb4]@28 d5@2 ~@23 d5@10 ~@5, ~@55 eb5@2 ~@39]/3", // Cm
  AW: "[~@14 eb5@2 ~@2 d5@5 ~@13 [d5,eb5]@4 eb5 d5@3 ~ d5@3 ~@9 c5@3 ~@2 d5@12 ~@5 c5@4 ~@2 b4@20 ~@19 ab4@3 bb4@2 ~@6 g4@23 ~@2, ~ gb4@40 ~@80 b4@7 ~ ab4@2 ab4@27 ~@2, ~@10 eb5@4 ~@2 eb5@6 ~ [d5,eb5]@13 ~@9 eb5@2 ~ eb5@12 ~@16 d5@7 d5@22 ~@2 d5@4 d5@17 ~@32, ~@11 f5@30 ~@68 eb5@19 ~@32, ~@24 c5@16 ~@9 d5@12 c5@2 ~@11 c5@5 ~@5 c5@22 c5@2 ~@10 c5@11 ~ bb4@28 ~@2]/5", // Ebmaj7
  AX: "eb4@12 ~@3 d4@11 ~@6, ~@6 f4@7 ~@3, ~@13 eb4@13 ~@6",
  AY: "[~@12 eb5@2 ~@17 g4@12 ~@4 eb5@12 d5@5, ~@10 g4@17 c5@15 ~ c5@16 ~@5, ~@6 f5@15 ~@11, ~@7 eb5@14 ~@11, ~@17 d5@25 ~@3 d5@14 ~@5]/2",
  AZ: "[gb4@11 ~@2 eb5@3 d5@10 c5@13 ~@2 f4@2 gb4@2 ~ eb5@2 ~ d5 d5@9 ~ c5@2 ~ c5@2 d5@10 ~@2 d5@3 ~@44 gb4@3 ~@20 f4@6 e4@4 ~@2 [gb3,c4,eb4]@14 ~@4 b3@4 b3@7 ~@4, ~@12 d5@2 ~@35 eb5@4 ~@22 c5@5 c5@2 c5@14 ~@22 d5@9 g4@29 ~@20 [f3,d4]@12 ~@4, ~@81 d5@15 ~@19 eb5@13 ~@64, ~@89 b4@31 b4@8 ~@64, ~@61 ab4@3 ~@32]/6", // Cdim Dm
  BA: "~ f2@13 ~@4 [e2,g3,c4,e4,g4]@14, [ab3,c4,d4]@7 ~@9", // C Dm7b5
  BB: "[~@3 [d2,d3,bb3,f4,bb4]@16 ~ [db2,db3,ab3,db4,eb4,ab4]@16 ~@3 [c4,d4,g4]@4 ~@49 [g5,d6]@18 ~@18, ~@39 [c2,c3]@28 f4@2 g4@2 ab4 [bb4,c5]@2 d5 eb5 f5 [g5,ab5] bb5@12 f5 c6@20 ~@17, ~@50 bb4@3 [f4,eb5] bb4 g4 bb4 g4 f4 eb4 bb3@51 ~@17, ~@51 bb5@13 eb4@47 ~@17, ~@52 f5@9 c4@50 ~@17]/4", // Bb Dbsus2 Csus2 G5 C Bbsus2 Abmaj7 F7
})).s("gm_piano").gain(0.31)

// chords · synth strings 2
const synth_strings_2 = note(`<
  A@3 B@5 C@6 D@2 E@8 F@2 G@6 H@6 I@3 J@4 K@4 L M@6 H@6 I@3 J@4 K@4 ~ G@6 H@6 I@3 ~ N@6 O@8 P Q@5
>`.pickRestart({
  A: "[~@32 eb4@63 ~, ~@31 [g3,c4]@63 ~@2]/3", // C5
  B: "[c4@63 [c2,f3]@64 ~ eb4@30 ~ [ab2,gb3,c4,eb4], d4@129 ~@31, ~@63 ab3@62 ~@2 [c2,c4]@32 ~]/5", // F5 Ab7 C
  C: "[~@15 [g2,f3,b3,d4]@16 ~@5 eb4@59 [gb3,c4,d4]@64 [f3,d4]@32 ab3, ~@31 [g3,c4]@64 ~@64 ab3@29 ~@4, ~@31 ab2@24 ~@137]/6", // G7 D7 Dm C5
  D: "[~@15 b3@15 ~ c4@32 e3, ~@15 g3@17]/2",
  E: "[~@162 g3@61 [ab3,c4,d4]@32 [g3,b3], ~@31 [bb3,db4,f4]@63 a3@64 ~@98, ~@63 gb3@95 ~@98, ~@95 [c4,eb4]@129 ~@32]/8", // Dm7b5 G Bbm Cm
  F: "[~@31 [g3,c4,eb4]@33]/2", G: "[~@31 c4@64 ab3@63 ~ [e3,c4]@33, ~@31 d4@161, ~@31 gb3@61 ~@3 f3@61 ~@2 g4@34]/6",
  H: "[g3@27 ~@4 [db4,f4]@63 ~@65 g3@33, ~@30 gb3@125 ~@37, ~@30 bb3@64 a3@63 ~@35, ~@95 [c4,eb4]@97]/6", // Db Cm
  I: "[~@31 ab3@24 gb3@8 [g3,b3]@33, ~@31 d4@65, ~@31 c4@33 ~@32]/3", // G
  J: "[[db4,g4]@62 ~ [c4,eb4,ab4]@50 ~@3 [ab3,db4,db5]@6 ~ [c4,g4,c5]@5, c5@7 ~, c4@59 ~@57 [f4,ab4]@4 ~@2 a3@5 ~]/4", // Dbdim Ab Db5 C5 Fm
  K: "[~@64 [ab3,b3,eb4]@15 d4@17 [g3,b3,f4]@32, ab3@61 ~@18 bb3@14 ~@35, [gb4,b4]@34 ~@13 ab4@32 g4@49, b3@31 d4@29 ~@68, ~@15 eb4@33 ~@80]/4", // Abm G7 B5
  L: "[g3,c4,eb4]", M: "[[c4,eb4]@30 ~ c4@64 ab3@63 ~ [e3,c4]@33, g3 ~@30 d4@161, ~@31 gb3@61 ~@3 f3@61 ~@2 g4@34]/6",
  N: "[~@31 [gb3,c4]@63 ~ [c2,ab3]@63 ~@2 eb4@30 ~ [ab2,gb3,c4,eb4], ~@31 d4@128 [c2,g3,c4]@32 ~]/6", // Gbdim Fm Ab7 C5
  O: "[~@15 [g2,f3,b3,d4]@16 ~@64 [c4,d4]@63 ~ [f3,ab3,d4]@64 [g3,c4,eb4]@29 ~@2 [ab2,gb3,c4,eb4]@2, ~@31 [g3,eb4]@64 gb3@60 ~@101, ~@31 c4@61 ~@164, ~@63 c2@185 ~@8]/8", // G7 Csus2 Ddim Cm Ab7 Cm
  P: "~@16 [g2,f3,b3,d4]@15 ~, ~@7 e4@9", // G7
  Q: "[[ab3,c4]@17 [g3,c4,g4]@18 [bb3,f4,bb4]@17 [ab3,ab4]@19 [g3,c4,d4,g4]@87 ~@2, ~@17 e4@14 ~@21 [db4,eb4]@16 ~@92]/5", // Ab C5 Bb5 Ab Gsus4 Dbsus2
})).s("gm_synth_strings_2").gain(0.11).pan(0.2)

// other · flute
const flute = note("<~@41 A@2 ~ B C@3 D ~@16 A@2 ~ B C@3 D ~@37>".pickRestart({
  A: "[~@20 c5@2 bb4@2 c5@21 ~@19, ~@20 db5 ~@43]/2", B: "~@21 f5@5 e5@6",
  C: "[eb5@24 gb5@2 ~ e5@2 eb5@2 d5@25 ~@6 f5 ~ ab5@10 g5 ab5@2 g5@14 bb4@5, ~@26 f5@2 ~@33 eb5@2 g5@2 ~@31]/3",
  D: "b4@27 ~@5",
})).s("gm_flute").gain(0.26).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@9 A B@15 A B@18 C D E F B A B@18 C D E F B A B@14 G ~@14 H I J K L ~@2>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x ~@4", C: "~@4 x ~@16 x ~@5 x ~@4", D: "x", E: "~@3 x!2 ~@3", F: "x!2", G: "~ x ~@5 x",
  H: "~@31 x", I: "~ x", J: "x ~@8 x ~@6", K: "~@4 x ~@16 x ~@10", L: "~@7 x ~@24",
})).gain(0.36)

// drums · rim
const rim = s("rim").struct("<~@9 A B@15 A B@14 ~@9 A B@14 ~@9 A B@14 ~@22>".pickRestart({
  A: "~@7 x", B: "~@4 x!2 ~ x",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct("<~@41 A@2 B C B D ~@18 A@2 B C B D ~@39>".pickRestart({
  A: "~@2 x ~@2 x ~@2", B: "~@4 x ~@2 x", C: "~ x", D: "~@7 x",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A B C D C@2 D C@2 D C@2 D C@2 D C B C D C@2 D C@2 D C@2 D C@2 D C ~@8 B C D C@2 D C@2 D C@2 D C@2 D E ~@8 B C D
  C@2 D C@2 D C@2 D C@2 D ~@8 A ~@13
>`.pickRestart({
  A: "~ x", B: "~@2 x!3 ~ x ~ x ~ x ~ x ~ x ~", C: "x ~ x!3 ~ x ~ x ~ x ~ x ~@3", D: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~",
  E: "x ~ x!3 ~ x ~ x ~ x ~@3 x ~",
})).gain(0.22)

// drums · low tom
const low_tom = s("lt").struct("<~@40 A ~@23 A ~@23 A ~@16 B ~@4>".pickRestart({
  A: "~@3 x", B: "~@29 x ~@2",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@40 A ~@3 B ~@19 C ~@3 B ~@19 D ~@15 E F G H ~@2>".pickRestart({
  A: "~ x ~ x!2 ~@3", B: "~@3 x ~@4", C: "~@2 x ~@3 x ~ x ~ x!2 ~@4", D: "~@3 x ~ x ~@2", E: "~@10 x ~@2 x ~@2",
  F: "~@23 x!2 ~@7", G: "~@29 x ~@2", H: "x",
})).gain(0.36)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A ~ B ~ B@2 ~ B@2 ~ B@2 ~ B@2 ~ C ~ B ~ B@2 ~ B@2 ~ B@2 ~ B@2 ~ B ~@4 B ~@2 D ~ B ~ B@2 ~ B@2 ~ B@2 ~ B@2 ~ E ~@4
  B ~@2 D ~ B ~ B@2 ~ B@2 ~ B@2 ~ B@2 ~@6 A ~@2 A ~@7 A ~@2 F G ~
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@7 x", C: "~@3 x ~@2 x!2", D: "~ x", E: "~@3 x", F: "~@20 x!12",
  G: "x!2 ~@4 x!6 ~@2 x ~@6 x ~@10",
})).gain(0.18)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@108 [~@2 x!4 ~@25 x] ~>").gain(0.09)

// drums · high tom
const high_tom = s("ht").struct("<~@104 [~@21 x ~@10] ~ [~@13 x ~@2] ~@3>").gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@9 A ~@7 A ~@7 A ~@7 A ~@7 A ~@2 B A ~ C A@2 ~@7 A ~@7 A ~@2 B A ~ C A@2 ~@7 A ~@6 D ~@14 E ~ F G H ~@2
>`.pickRestart({
  A: "x", B: "~@21 x ~@5 x ~@4", C: "x!2", D: "~ x ~@5 x", E: "~@31 x", F: "x ~@8 x ~@6", G: "~@4 x ~@16 x ~@10",
  H: "~@7 x ~@24",
})).gain(0.18)

// drums · ride
const ride = s("rd").struct(`<
  A B ~ C D E F ~ G ~@32 H@4 I H@2 J ~@16 H@4 I H@2 K ~@15 L M N O D E F ~ P Q ~ R S E T B G ~@5
>`.pickRestart({
  A: "~@29 x!3", B: "x", C: "~@5 x!3", D: "x ~@26 x ~@2 x ~", E: "x!2 ~@10 x ~ x!2 ~@16", F: "~@3 x!2 ~@3", G: "x!2",
  H: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", I: "~@3 x!2 ~ x ~ x ~ x ~ x ~ x ~", J: "x!7 ~", K: "~ x!6 ~",
  L: "x ~ x ~@3 x!3 ~ x ~ x ~ x ~", M: "x ~@28 x!3", N: "~@5 x!2 ~", O: "~@20 x ~@3 x ~@3 x!4",
  P: "x ~@15 x ~@12 x!2 ~", Q: "x ~@26 x ~@4", R: "~ x ~@18 x ~@3 x ~@3 x ~@3", S: "x ~@13 x ~ x!2 ~@9 x ~@2 x ~",
// … 43 more lines

More by Daniele