Strudelify

Dolce Barbara

Ramazzotti

KeyA minorTempo62 bpm
0:00/0:00
// Dolce Barbara — Ramazzotti
// 62 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 9 glockenspiel (copy of ch 11 piano)
// note: Full arrangement: all 64 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(62/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.

// chords · piano
const piano = note(`<
  A B C@3 D@2 E F G H@2 I J@2 K L M@2 N O P Q@3 R S T U V@8 W@8 X@2 Y@2 Z I AA AB AC AD AE@2 AF@7
>`.pickRestart({
  A: "~@7 d4, [f2,a3], d4@13 c4@3, f3@11 f3@5, ~@3 c4@3 b3@2", B: "~@6 c4@6 g4 ~ e4@2, [e2,g3,d4]@12 ~ f4@3",
  C: "[[d2,c4,f4]@6 ~@6 a4@2 c4@5 ~@4 c4@4 ~@18 b4@3, ~@6 [e2,d4,g4]@8 [a2,g3]@18 a2@4 e4 c5 e4@10, ~@21 b3@4 ~@2 c4@5 c5@3 e5@5 ~@2 c5@6, ~@30 e4@4 d5@6 b4@3 d5@5, ~@33 a3@7 g2@8]/3", // Dm7 Em7 A7
  D: "[a4@2 ~ a4@2 ~ a4@9 ~@2 e4@2 ~@10 b4@3, [f3,e4]@15 e4@2 ~@2 e5@4 ~@3 c5@6, ~@2 g4@14 a2@7 ~ g2@8, ~@5 c5@11 c5@4 e4@2 e4@10, ~@21 c5@2 ~ b4@3 d5@5]/2", // Fmaj7
  E: "a4@2 ~ a4@2 ~ a4@10, [f3,c4,e4], ~ g4@7, ~@5 c5@11", F: "[a2,e4,a4,c5]@4 ~@3 b4, ~ g4, ~@13 d4@3",
  G: "[f3,c4,e4,a4]", // Fmaj7
  H: "[[a2,e4,a4,c5]@8 [d4,b4]@5 ~@3 [f3,c4,e4,a4]@16, ~@8 g4@7 f2@17, ~@13 d4@3 ~@16, ~@7 b4 ~@8]/2", // Am G Fmaj7
  I: "g4@6 g4@5 ~ [b3,g4]@4, d4, ~@3 c4@5, ~@11 e3@5", // Em
  J: "[f3@9 ~ g3 ~@2 a3@2 ~ g4@6 g4@5 ~ [b3,g4]@4, f2@8 ~@3 c4@5, a3@13 ~@2 e2@17, [g3,c4]@11 [g3,c4]@5 d4@16, ~@9 f3@7 e3@11 e3@5]/2", // Em C5
  K: "[f2,f3,g3,a3,c4]@15 e4", L: "~@13 b4@3, a2@6 e4@5 d5@5, c5@4 e4 c5@2 b4@6 ~@3, ~ e4@2 e5@5 ~@2 c5@6, ~ d5@3 g2@4",
  M: "[~@3 a4@2 ~@24 b4@3, a2@6 a4@13 e5 e4 c5 e4@6 e4@4, a4@2 g4@21 b4@6 ~@3, ~ a3@15 c5 e4 d5@6 ~@3 d5@5, ~@5 c5@10 e4 a2@8 g2@8]/2",
  N: "a4@3 a4@2 ~ a4@10, a2, ~@5 c5@11",
  O: "[a2,a4,c5]@8 [d4,g4,b4]@3 ~@3 [b4,d5]@2, ~ g2, ~@11 d4@5, ~@3 g4, ~@12 b4 [a4,c5]@3", // Am G Bm Am
  P: "~@10 d4 ~@2 e4@3, [f2,a4,c5], ~@9 c4@7, ~@11 d4@5", // F
  Q: "[[a4,c5]@8 ~@5 d4@2 ~ [f3,c4,e4,a4]@15 ~ g4@6 g4@5 ~ [b3,g4]@4, ~@8 [g4,b4]@7 f2@16 e2@17, ~@2 d4, ~@32 e3@11 e3@5, ~@19 c4@5]/3", // Am Fmaj7 Em G
  R: "[f3,g3,c4]@10 ~@3 a3@3, f2, a3@13 ~@3, ~@5 f3 f3@2, ~@11 [g3,c4]@5", // Fsus2 C5
  S: "g4@6 g4@6 [b3,g4]@3 c3, d4, e3@11 ~@5, ~@3 c4@5", T: "[f2,f3,g3,a3,c4]", U: "[g2,g3,b3,d4] [g#2,g#3,b3,d4]",
  V: "[[a2,a3,c4,e4]@8 f3@9 ~@2 c4@4 ~@14 b4@3 a4@3 a4@2 ~@24 b4@2 ~ a4@2 ~ a4@2 ~ a4@9 b3 b3@7 ~@8 b2 [c3,c4,e4]@6 ~ c4@2 ~@4 c4@2 ~ [d4,g4,b4]@5 d4!3, ~@8 f2@16 a2@6 e4@10 a2@15 a3@8 b4@3 c5 d5@4 a2@17 [b2,d#4,f#4]@9 [b3,f#4]@5 f#4@2 a4@15 g2@9, ~@8 [g#3,c4]@11 ~@4 e4@2 e4@2 e5@4 b4@6 ~@9 a4@26 ~@2 g4@14 ~@8 b2@4 b2@3 ~@7 c3@3 c4@2 [d4,g4]@5 g3@8, ~@17 f3@7 c5@4 e4 c5@3 ~@2 c5@6 ~@5 c5@11 a2@4 e4 c5 e4@10 a3@13 ~@10 b3@2 d#4@7 ~@7 e4@9 ~@6 [g4,b4]@2, ~@26 d5@6 ~@3 d5@5 ~@13 a3 e4@2 c5 e4 d5 e5@13 ~@5 c5@11 ~@13 b3@3 ~@7 g4@3 c3 c4 c3@4 ~@8]/8", // Am C G B B5 G# G5 G
  W: "[[f3,d4]@3 ~@4 c4 [d3,c4]@4 ~@10 [e4,c5]@2 f4@5 ~ a4 f4@4 ~@2 d5@3 e4@3 e4@2 e4@2 ~ e4@3 ~@2 e4@2 e2 c4@5 c4@2 ~@2 c4@2 ~@5 [d4,g4]@5 ~@11 [f3,f4]@4 ~ f4@2 f4 f4@3 ~@5 d5@3 ~@5 e4@3 ~@2 [e4,g#4,b4]@2 ~ [a3,a4]@4 ~ a4@3, [f2,f4,b4]@6 f2@2 ~@4 d3@3 d3@2 d3 [g4,e5]@3 d3@3 [f3,d5]@8 ~@3 [f4,c5]@5 ~@8 c5@8 d3@8 d3 c5@2 c4@2 [c4,f4,c5]@2 e2@13 e3 g4 e3@2 ~@4 f3@3 f3@4 f4@2 [f4,c5]@2 g2@8 g#2@9 ~@8, ~@3 d4@2 [d4,f4,b4]@3 f4@11 d3 [f4,d5]@4 ~@5 f4@2 a4@9 d5@16 ~@7 c4@2 g4@7 b4@15 f2@17 ~@4 g3@2 g3@2 [g#3,g#4,b4]@5 ~@2 a2@7 ~@2, ~@4 f3@4 a4@8 [d2,a4,f5]@8 f2@16 ~@11 e4@2 ~@3 f4@12 d3@2 d3@2 e3@7 [a4,d5]@9 [a4,d5]@16 ~@3 [a4,d5]@5 ~@4 g#3@2 ~@6 a3@4, ~@13 c4@11 ~@7 d5@5 f3@4 e3@7 e3@5 e3@4 [d2,a4]@16 ~@5 d4 g4 d4 e3 g4@2 d4@5 ~@8 c5@4 f3@2 f3@2 [g3,g4]@5 g4@3 ~@3 e4@2 ~@3 [c5,e5]@8]/8", // Dm D7 C G5 F E A Fdim …
  X: "[c5@16 ~@13 b4@3, [f3,g#4]@11 e4@5, ~@16 a2@7 b4@4 d5@5, ~@16 c5@4 e4 c5@3 g2@8, ~@19 e5@5 ~@2 c5@6]/2", // Fm
  Y: "[a4@3 a4@2 ~@24 b4@3, ~@5 c5@10 e4@2 e4 d5@2 e4 c5 e4@10, ~@6 a4@17 b4@4 d5@5, ~@2 a2 g2, ~@16 c5@3 e5@5 ~ g3 c5@6]/2",
  Z: "a4@2 ~ a4@2 ~ a4@10, f3, ~ g4@7, ~@5 c5@11",
  AA: "~@13 g3@2 f2, [f2,a3,c4]@3 f3, [f3,g3]@9 [f4,c5]@7, ~@7 g4@9, ~@7 c5 a4@8", // F Fsus2 F5
  AB: "g4@6 g4@5 ~ [b3,g4]@3 c3, [e3,d4], ~@3 c4@5, ~@11 e2@5", // Em E7
  AC: "[f3,c4]@9 c4 c4@2 ~ c4@3, [f2,g3,a3], ~@5 [g4,c5]@3, ~@3 f4", // F5 F C5
  AD: "[g2,g3,b3,d4]@5 ~ g2@2 [g#3,b3,e4]@5 [g#3,b3,e4]@2 g#2, ~@5 [g3,b3,d4]@3 g#2@7 ~", // G E G
  AE: "[[a3,c4,e4]@5 [a3,c4,e4]@3 f3@9 f3@2 f4@5 e4@3 ~@2 e4@3, a2@7 ~ [f2,c4]@16 [a2,a4,c5]@8, ~@8 [g#3,f4]@11 ~@9 a3@4]/2", // Am F5 Am C#
  AF: "[[g4,b4]@3 ~@3 [b4,d5]@2 [a4,c5]@6 ~@23 b4@3 a4@3 a4@3 ~@29 b5@23 ~@14, ~@3 g2@5 a2@13 a3 e4@4 d5@2 e4 c5 e4@10 ~@7 a4@15 d3@6 c5@31 ~@13, ~@4 g4@4 ~@9 b4@6 a3@8 b4@4 d5@5 ~@20 g3 a2@5 a4@7 a5@25 ~@14, ~@4 b4@2 ~@9 c5@9 c5@3 e5@5 ~ g3 c5@6 ~@6 c5@17 g3@6 d5@29 ~@14, ~@5 [a4,c5]@3 ~@6 a4@5 a4@5 a2@8 g2@8 f3@24 b3@7 e5@27 ~@14]/7", // G Bm Am
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@3 A ~ B C ~ D ~ E ~ F ~@3 G ~ H I J K@2 ~@3 L ~@3 M N@3 O ~@2 P ~ Q@2 R S ~ T@3 U@2 ~ V ~@2 W ~ X Y Z AA AB@5
>`.pickRestart({
  A: "~@3 c4@4 ~@2 b3@6 a3", B: "c4 c4@3", C: "~@2 d5@5 ~@2 g3@7", D: "~@4 [d4,b4]@3 ~, ~ g2", E: "~ g2",
  F: "e2, e3@11 ~@5", G: "~@12 e4@3 a3", H: "~@2 a3@2 ~ c5@3, ~@9 g3@7", I: "~ a3 g4@14", J: "e4 ~",
  K: "[~@2 [a2,e4] g2, ~@15 a3@9 d4@5 ~@3]/2", L: "~@11 e3@5, e2", M: "~ g#3@3 ~@4",
  N: "[g2@4 ~ g4@15 ~@4, ~@3 a3@4 ~@9]/3", O: "~@5 a3@3 ~@8", P: "~ d2", Q: "[~@2 c5 ~@4 e2@16 ~@9, f3 ~@7]/2",
  R: "~ d3 ~@6", S: "~ e3 ~@6",
  T: "[~@6 g#3@2 ~@3 a4@2 ~@21 d5@6 ~@8, ~@7 a2 f2@12 ~@4, ~@15 f4@25 ~@8, ~@31 e4@5 ~@12]/3",
  U: "[~ g4@11 ~@2 g3@2, f3@3 ~]/2", V: "e2@15 c3, e3@11 ~@5", W: "~@8 f3@3 f3@4 d3", X: "~@7 a2 ~@8",
  Y: "~@4 f3@4 ~@3 e4@2 ~@2 a2, ~ g#3@3 ~@4", Z: "[g3,d4]@4 ~@3 e4", AA: "e4@3 ~@5",
  AB: "[~@4 g3@4 ~@20 [b3,c4]@4 ~@20 a6@15 ~@13, ~@10 g4@32 ~@4 c6@21 ~@13, ~@33 c4@32 ~@15, ~@49 e6@18 ~@13]/5", // Cmaj7
})).s("gm_piano").gain(0.15)

// chords · piano · A5 Dsus2 D5 Gsus2 G5 Csus2 D5 Am …
const piano_2 = note(`<
  ~@27
  [~@3 c6 g5 [e5,a5] g5 [d5,e5] c5 [a4,d5] c5 [g4,a4] e4 [d4,g4] e4 [c4,d4]]
  ~@25
  [~@2 a5 c6 ~@11 [a3,d4], ~@3 g5@2 g5@4 [a4,c5] g4 [e4,a4] g4 [d4,e4] c4@2, ~ a5@3, ~@5 e5@2 e5@9, ~@6 d5 c5 d5@8]
  ~@10
>`).s("gm_piano").gain(0.18).pan(0.1)

// bass · fretless bass
const bass = note(`<
  A B C@2 D E D E D F D G H I J K L M N O D P Q R S T U V W X@2 Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ
  AR AS AR AT W X@2 AU AV AW@4 ~
>`.pickRestart({
  A: "f2", B: "e2@3 c2", C: "[d2@3 e2@3 a2 a1@9]/2", D: "a1 g1", E: "f1", F: "f1@14 ~ f1", G: "f1@13 f1@3",
  H: "e1@11 [b1,e2] b1 e1@3", I: "f1@13 f2 f1@2", J: "e1@11 [a1,b1] e1 e2@3", K: "f1@13 g1@3", L: "a1@7 a2 g1@8",
  M: "a1@11 [d2,e2] a1 a2@3", N: "a1@5 a2@2 a1 g1@5 e2 g1 d2", O: "a1", P: "f1@13 f2@3", Q: "a1@2 g1 g2",
  R: "f2@11 c2@2 f1@3", S: "e1@9 e2@4 e1@3", T: "f1@12 c2 f2@2 f1", U: "e1@11 e2@2 e1@3", V: "f1@11 f2@2 f1@3",
  W: "g1@6 ~ g1 g#1@2 e1@2 g#1@2 e2@2", X: "[a1@7 a1 f1@7 c2@2 f2@2 f1@2 c2@3 a1@6 ~ a1]/2", Y: "g1@7 g2 a1@7 a1",
  Z: "a1@4 e2 a1 c2@2 a1@6 a2@2", AA: "g2@4 g1@4 a1@7 a1", AB: "a1@6 e2 a1 b1@6 ~ b1", AC: "b1@2 b1@3 f#1@3 c2@6 ~ c2",
  AD: "c2@5 g1@3 g2@6 ~ g2", AE: "f2@5 f1@3 d2@6 ~ d2", AF: "d2@4 ~ d2@3 f2@7 f1", AG: "f1@5 f2@3 e2@7 e1",
  AH: "e1@5 e2@3 d1@6 ~ d1", AI: "d1 d1@4 d2@2 d1 e1@6 ~ e1", AJ: "e1 e2@2 e1@2 e2@2 e1 f1@6 ~ f1",
  AK: "f1 f1@3 c2 f2@2 f1 g1@6 g2 g1", AL: "g#1@2 g#2 g#1 a1@2 a2 a1", AM: "f1@4 f1 g1 g#1 c2 g2 d#2 f2@5 ~",
  AN: "a1@7 a1 g1@4 g2@4", AO: "f1@6 ~ f1 f1@6 c2 f2", AP: "a1@6 ~ a1 g1@6 g2@2", AQ: "f2@7 f1 f1@6 c2@2",
  AR: "e1@6 ~ e1 e1@5 e2@2 e1", AS: "f1@9 c2 f1 f2@2 f1 c2@2", AT: "f1@9 f2@2 f1@2 c2@2 ~", AU: "g1@8 a1@6 ~ a1",
  AV: "a1@3 a2 a1@4", AW: "[g1@8 f1@13 ~@2 f1@5 a1@24 ~@12, ~@11 c2 ~@20]/4",
})).s("gm_fretless_bass").gain(0.24)

// other · acoustic guitar steel
const acoustic_guitar_steel = note("<A B C@2 ~@60>".pickRestart({
  A: "[d4,d5]@6 [c4,c5]@6 [b3,b4] [c4,c5] [d4,d5]@2", B: "[d4,d5]@6 [c4,c5]@6 [g3,g4] [f3,f4] [e3,e4]@2",
  C: "[[f3,f4]@6 [g3,g4]@6 [a3,a4] ~ [c3,c4]@17 ~]/2", // F G A C
})).s("gm_acoustic_guitar_steel").gain(0.11).pan(0.2)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A B C@2 D E F E ~@8 G H@2 I J K@2 I L@3 M N O P Q@2 R@8 S T U V W X Y Z AA ~@4 N O AB ~@2 AC@4 ~
>`.pickRestart({
  A: "d4@3 c4@5, f2, [f3,a3]@7 ~", B: "d4@3 ~@3 [c2,c3] ~, [e3,g3]@7 ~, e2@9 ~@7, ~@3 c4@4 ~",
  C: "[[d2,d3,f3,a3,c4,f4]@2 ~ [e2,e3,g3,b3,d4,g4]@3 ~ [a2,e3,a3,c4]@9]/2", D: "[a2,e3]@3 ~ [g2,d3,b3]@4, c4 ~",
  E: "[f2,c3,a3]", F: "[a2,e3]@7 ~ [g2,d3,b3]@8, c4 ~", G: "[e3,a3] [d3,g3]", H: "[[e3,a3]@3 [d3,g3]]/2", I: "[e3,a3]",
  J: "[a3,c4] [g3,b3]", K: "[e3@2 c4 [g3,b3], a3@3 ~]/2", L: "[d3@3 c3@3 b2@2 c3@8 d3@3 c3@3 b2@2, g3]/3", M: "[c3,f3]",
  N: "~ b3 d4 b3 [g3,b3,d4,g4]@2 ~@3 b3 e4 b3 [g#3,b3,e4,g#4]@3 ~, ~ g2@5 ~@2 g#2@6 ~@2", // G E
  O: "~ c4 e4 c4 [a3,c4,e4,a4]@3 ~ f4@6 c4@2, a2@7 ~@9", P: "g#3@7 ~ [a3,c4]@8",
  Q: "[[g3,b3]@8 [e3,a3]@15 ~ [a3,c4]@8]/2", // G A5 Am
  R: "[[g3,b3]@8 [e3,a3]@16 [b3,d#4,f#4]@14 ~@2 a4@8 g4@7 ~ g4@8 ~@8 a3@14 ~@2 [f3,a3]@14 ~@10 c4@8 ~ g3 c4 ~ [a3,f4]@2 c4 a3, ~@20 [c4,e4]@7 ~ d4@15 ~ d4@12 ~@8, ~@56 b3@15 ~@33 [e3,g3]@16 [d2,d3]@5 ~@3, ~@32 f4@11 ~@21]/8", // G A5 B F Dm C Em D
  S: "~ a3 c4 a3 ~ d3 c4 a3 ~ b3 d4 [e2,e3,b3] [b3,g4]@2 d4 b3, [d2,d3]@3 ~ [a3,f4]@2 ~@2 [e2,e3]@2 ~@6", // E5 Em D Dm E
  T: "[e2,e3] b3 d4 [e2,e3,b3] ~ [e2,e3] d4 b3 ~ c4 e4 [f2,f3,c4] [c4,a4]@2 e4 c4, ~@2 [b3,g4] ~ [f2,f3] ~@3", // E E5 E F5 F Em F
  U: "~ c4 e4 c4 [f2,f3,c4,a4]@2 e4 c4 ~ d4 g4 d4 ~ g3 g4 d4, [f2,f3] ~@3 g2@3 ~, ~@4 g3 ~ [d4,b4] ~", // F G
  V: "~ e4 g#4 e4 ~ g#3 g#4 e4 ~ e4 a4 e4 a3!2 a4 e4, g#2@3 ~ a2@3 ~, g#3@2 ~@2 [e4,b4]@2 ~@2 a3@3 ~ [e4,c5]@2 ~@2", // E5 C
  W: "[f3,f4]", X: "~ [g3,b3]", Y: "[f3,a3]@15 ~", Z: "[a3,c4]@4 [g3,b3]@3 ~", AA: "[f3,a3,c4,e4]", AB: "g#3@7 ~@9",
  AC: "[b3@4 [f3,a3]@10 [a3,c4]@17 ~, g3@3 ~@29]/4", // F Am
})).s("gm_string_ensemble_2").gain(0.14).pan(0.9)

// chords · tremolo strings
const tremolo_strings = note("<~@17 A@2 B@2 ~@9 C D@2 E@3 F@4 G H I J K L ~@2 M N ~@9 O@3 ~@2>".pickRestart({
  A: "[c6@5 c7 b6 g6]/2", B: "[a6@9 ~@7]/2", C: "~ e6", D: "[d6 c6@2 ~]/2", E: "[b6 g6 a6@3 c7 b6@4 a6@2]/3",
  F: "[g6 g6@2 f6@2 d7@3]/4", G: "c7@8 ~ g4 c5 ~ [a4,f5]@2 c5 a4, ~@8 [d3,d4]@5 ~@3",
  H: "~ a4 c5 a4 ~ d4 c5 a4 ~ b4 d5 [e3,e4,b4] [b4,g5]@2 d5 b4, [d3,d4]@3 ~ [a4,f5]@2 ~@2 [e3,e4]@2 ~@6", // E5 Em D Dm E
  I: "[e3,e4] b4 d5 b4 ~ [e3,e4] d5 b4 ~ c5 e5 [f3,f4,c5] [c5,a5]@2 e5 c5, ~@2 [b4,g5] ~ [f3,f4] ~@3", // E F5 F Em F
  J: "~ c5 e5 c5 [f3,f4,c5,a5]@2 e5 c5 ~ d5 g5 d5 ~ g4 g5 d5, [f3,f4] ~@3 g3@3 ~, ~@4 g4 ~ [d5,b5] ~", // F G
  K: "~ e5 g#5 e5 ~ g#4 g#5 e5 ~ e5 a5 e5 a4!2 a5 e5, g#3@3 ~ a3@3 ~, g#4@2 ~@2 [e5,b5]@2 ~@2 a4@3 ~ [e5,c6]@2 ~@2", // E5 C
  L: "[f4,f5]", M: "~ c7 b6 g6", N: "a6", O: "[b6@2 g6@2 a6@19 ~]/3",
})).s("gm_tremolo_strings").gain(0.2).pan(0.3)

// chords · tremolo strings · soft notes
const tremolo_strings_soft = note("<~@16 A ~@25 B ~@3 C D@2 ~@15>".pickRestart({
  A: "~ e6@3 d6@4", B: "~@3 [e3,e4] ~@12", C: "~ d6", D: "[c6@5 ~@3]/2",
})).s("gm_tremolo_strings").gain(0.13).pan(0.3)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A B C@2 D E D E F G F G H@3 I J K@2 L M N M N O@3 P Q@3 R@2 S@4 T@7 U V W X W X Y@3 Z Q@3 AA@2 AB@4 ~
>`.pickRestart({
  A: "d4@3 c4@5, [f3,a3]@15 ~", B: "d4@3 c4@5, [e3,g3]@7 ~", C: "[[f3,a3,c4,f4]@3 [g3,b3,d4,g4]@4 [e3,a3,c4]@9]/2",
  D: "[e3,c4] [d3,b3]", E: "[c3,a3]", F: "[a2,e3,a3,c4] [g2,d3,g3,b3]", G: "[f2,c3,e3,a3]",
  H: "[[b3,d4]@3 c4@3 b3@2 [f3,a3,c4]@8 [b3,d4]@3 c4@3 b3@2, g4@23 ~, e3@14 ~@18 e3@15 ~]/3", I: "[f2,f3,a3,c4]",
  J: "[e4,a4,c5] [d4,g4,b4]", K: "[[e4,a4,c5]@3 [d4,g4,b4]]/2", L: "[e4,a4,c5]", M: "[e4,a4] [d4,g4]", N: "[c4,f4]",
  O: "[[b4,d5]@3 c5@3 b4@2 [a4,c5]@8 [b4,d5]@3 c5@3 b4@2, g5]/3", P: "[f4,a4,c5,f5]",
  Q: "[[g4,d5] g#4 [a4,c5] [f4,g#4,c5]@2 [a4,c5], b4@5 ~@11, ~ e5@2 ~@3]/3", R: "[[g4,b4] [e4,a4]@2 [a4,c5]]/2",
  S: "[[g4,b4] [e4,a4]@2 [b4,d#5,f#5]@2 a5 g5 [b4,d5,g5], ~@20 [c5,e5]@7 ~@5]/4", // G A5 B G C
  T: "[f5 [a4,d5,f5]@2 [f4,a4]@2 ~ c5 [c5,f5,a5]@2 [d5,g5,b5]@2 [e5,a5,c6]@2 [g4,b4,d5], ~@3 d5@3 ~@8, ~@5 [e4,g4]@2 ~@7]/7", // Dm F G Am G Em
  U: "[g#4,b4,e5] [a4,c5,e5]", V: "[f4,g#4,c5,f5]", W: "[a4,c5] [g4,b4]", X: "[f4,a4]",
  Y: "[[b4,d5]@3 c5@3 b4@2 [a4,c5]@8 [b4,d5]@3 c5@3 b4@2, g5@23 ~]/3", Z: "[f4,a4,c5]", AA: "[[g4,b4] [a4,c5]@3]/2",
  AB: "[[g4,b4]@8 ~@20 [b4,c5,e5]@29 ~@7, ~@8 [f4,a4]@27 ~@29]/4", // G Cmaj7 F
})).s("gm_synth_strings_1").gain(0.1).pan(0.1)

// drums · kick
const kick = s("bd").struct("<~@27 A B@2 C D@4 C E D C@2 E D C D C B@2 F B F G H G I B@2 C D J ~@5>".pickRestart({
  A: "~@9 x ~ x ~ x!2 ~", B: "x ~@6 x!2 ~@7", C: "x ~@4 x ~@2 x ~@6 x", D: "x ~@7 x ~@6 x",
  E: "x ~ x ~@2 x ~@2 x ~@6 x", F: "x ~@6 x!2 ~@4 x ~@2", G: "x ~@10 x ~@4", H: "x ~@8 x ~ x ~ x ~@2", I: "x ~@6 x ~@8",
  J: "x!2",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@27 A B@4 C B D B@3 C B@3 C B@2 C@8 ~ B@4 ~@6>".pickRestart({
  A: "~@5 x ~@2", B: "~ x ~ x", C: "~@3 x", D: "~ x ~@10 x ~@3",
})).gain(0.34)

// drums · hihat
const hihat = s("hh").struct("<~@28 A@2 B A@3 C A@3 D A E F G H I ~@9 A@2 B J K ~@5>".pickRestart({
  A: "x!8", B: "x!3 ~ x!4", C: "x!2 ~@2 x!4", D: "x ~ x ~@2 x ~@2 x ~ x ~ x ~ x ~", E: "x ~ x ~ x!2 ~@2 x!2 ~ x!5",
  F: "x!10 ~ x!5", G: "x ~ x ~ x!2 ~@2 x ~ x!4 ~ x", H: "x ~ x!5 ~ x!3 ~ x!2 ~ x", I: "x!3 ~ x!3 ~ x ~ x!3 ~@2 x",
  J: "x!5 ~ x!2", K: "x!2 ~@6",
})).gain(0.2)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@30 A ~@2 B ~ C D E F G H I J K L M N@7 O ~@2 P I Q R S ~@3>".pickRestart({
  A: "~@15 x", B: "~@7 x ~@8", C: "~@3 x ~@3 x ~@7 x", D: "~@5 x ~@5 x ~@3 x", E: "~@11 x ~@3 x",
  F: "~@3 x ~@2 x!2 ~@3 x ~@4", G: "~@3 x ~ x ~ x ~@3 x ~@3 x", H: "~ x ~ x ~@2 x ~@3 x ~@5", I: "~@5 x ~@2",
  J: "~ x ~ x ~@2 x!2 ~ x ~@4 x ~", K: "~ x ~@9 x ~@2 x ~", L: "~@3 x ~@3 x ~ x ~@3 x!2 ~",
  M: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~ x!3", N: "~ x ~ x ~ x ~ x", O: "~ x ~ x ~@4", P: "~@11 x ~@4", Q: "~@10 x!2 ~@2 x!2",
  R: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@3 x", S: "x ~ x!2 ~@4",
})).gain(0.07)

// drums · low tom
const low_tom = s("lt").struct("<~@27 A ~@4 B ~ C ~@7 D ~@10 E ~@4 F ~@5>".pickRestart({
  A: "~@15 x", B: "~@7 x ~@8", C: "~@5 x ~ x ~@8", D: "~@5 x ~@10", E: "~@3 x", F: "~@3 x ~@4",
})).gain(0.3)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@32 A ~ A ~@5 B ~@17 B ~@5>".pickRestart({
  A: "~@3 x ~@4", B: "~@5 x ~@10",
})).gain(0.13)

// drums · mid tom
const mid_tom = s("mt").struct("<~@27 A ~@4 B ~ C ~@3 D ~ E ~ F ~@10 G ~@4 H ~@5>".pickRestart({
  A: "~@13 x ~@2", B: "~@4 x!2 ~@10", C: "x ~@2 x ~@12", D: "~@3 x!3 ~@10", E: "~ x!2 ~@5", F: "~ x ~ x!2 ~@11",
  G: "~@9 x ~ x ~ x ~ x", H: "~ x ~@2",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~@36 A ~@3 A ~@2 A ~ B C D E B@2 F@2 G ~@3 A H B I ~@3>".pickRestart({
  A: "~@7 x ~@8", B: "x!4", C: "x ~@3 x ~@3 x ~@3 x ~@2 x", D: "x ~@2 x!2 ~@3 x ~@3 x ~@3",
  E: "x ~@3 x ~@2 x!2 ~@3 x ~@3", F: "x ~@3 x ~@2 x!2 ~@2 x!2 ~@3", G: "x ~@3 x ~@2 x!2 ~@7", H: "~ x!3",
  I: "~@2 x ~@4 x ~@8",
})).gain(0.17)

// drums · open hat · soft notes
// … 37 more lines

More by Ramazzotti