Strudelify

Io vivo come te

Daniele

KeyD majorTempo60 bpm
0:00/0:00
// Io vivo come te — Daniele
// 60 bpm, 4/4, key D major. 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 67 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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 · epiano1
const epiano1 = note(`<
  A@2 B C D E F G H I J K L M N C O ~@3 P@2 Q R J K L M N C S T U V W@2 X@2 Y Z@3 AA@4 AB@2 ~@3 AC AD AE AF@2 AG@5 AH@6
>`.pickRestart({
  A: "[~@16 d4@12 ~ [d4,g4,a4,b4] ~@2, ~@15 [b4,d5]@13 ~@4]/2", B: "[d4,a4]@11 ~@2 d4@3, f#4, a3@9 ~@2 a4@5",
  C: "[g3,c4,d4,e4,g4] [d#4,f#4,a4,d5]", D: "[a3,d4,f#4]@3 [f4,b4,e5]", E: "[b3,e4,a4]",
  F: "a3@5 ~@8 d4@3, [f#4,a4]@9 [f#4,a4]@7, d4@7 d4@6 ~@3, ~@5 a3@11", G: "[g3,c4,e4,g4] [d#4,f#4,a4,d5]",
  H: "[a3,d4,f#4]@12 [f3,b3,e4]@3 d4", // D E
  I: "[d4,g4,b4]@9 g4@2 ~@2 [b4,e5]@2 ~, b3@15 ~, e4@11 [e4,g4,c5]@4 ~, ~@9 b4@4 ~@3", // G E5 C
  J: "[f#4,a4]@11 [f#4,a4,d5]@5, [a3,d4]", K: "[g3,c4,e4] [d#4,f#4,a4,d5]", L: "[a3,d4,f#4]@8 ~@2 [f3,b3,d4,f4]@5 ~",
  M: "~@9 b4@2 ~@2 [b3,d4,e4,g4]@3, [g3,c4], [b3,e4]@13 ~@3, ~@9 g4@4 ~@3, ~@11 [b4,c5]@5", N: "a4@9 d5@7, [a3,d4,f#4]",
  O: "a3@5 [a3,c4,f4,g4]@3, [d4,f#4]", P: "[~@10 [a3,d4,f#4] ~ [g#3,c#4,f4] ~ [g3,c4,e4]@10 [a3,d4,f#4]@8]/2",
  Q: "[a3,d4,f#4]@7 [a3,d4,f#4] ~@2 [f3,b3,d4,e4]@6", // D Bdim
  R: "[b3,d4] ~@8 g4@2 ~@2 [b4,e5]@2 ~, e4@11 [e4,g4,c5]@4 ~, g4@9 b4@4 ~@3", // Bm E5 C
  S: "a3@10 [a3,c4,f4,g4]@5 [f#5,g#5], [d4,f#4]", T: "~ f#5@2 ~@2 d#5@9 ~@2, [b3,d#4,f#4,a#4]@15 ~, a#5@2 ~ g#5@11 ~@2",
  U: "~@3 g#5@2 ~@2 g#6@9, [g#3,a#3,c#4,f4]@3 c#6@5, ~ c5@15, ~ c#5@7, ~@5 c6@11", // A#m7
  V: "~@11 c#7@5, [b3,d#4,f#4,a#4], ~ a#5@3, ~@5 f#5@11, ~@7 g#5@9", // Bmaj7
  W: "[~@10 [g#3,c#4,f4,c#5] ~ [g3,c4,e4,c5] ~ [f#3,b3,d#4,b4]@9 ~ [g#3,c#4,f4]@8, [g#3,a#3,c#4,f4,c#5]@9 ~@23, ~@7 c#6@7 ~@18]/2", // C# C B C# A#m7
  X: "[[b3,c#4,d#4,f#4]@3 ~@9 [g3,b3,d4]@4, ~@7 [a3,c#4,e4]@17 ~@8, ~@15 [c#6,e6]@14 ~@3, ~@8 a5@7 ~, ~@4 f#5@3 ~]/2", // B G A C#m
  Y: "[a3,c#4,d#4,f#4]@8 [b3,d4,e4,g4]@7 [b3,d4,e4]", // D#m7b5 Em7 E7
  Z: "[~@2 [a3,c4,f4,g4]@6 [d4,g4]@9 g4@2 [g4,c5]@2 [g4,e5]@3 a4@7 ~@2 a4 [a4,a5] [a4,d5,a5]@5 [g3,c4,d4,e4,g4]@8, ~ b3@2 [a3,d4,f#4]@2 ~, ~@8 e4@11 e4@5 ~@9 f#5@7 ~@8, ~@17 d4@7 ~@24, ~@17 b4@4 ~@10 e5@9 ~@8]/3", // F G5 C5 C A D5 C D
  AA: "[[d#4,f#4,a4,d5]@8 [a3,d4,f#4,a4]@11 ~ [a3,c4,f4,g4]@4 [d4,g4]@9 g4@2 [g4,c5]@2 [g4,e5]@3 a4@7 ~@2 a4 [a4,a5] [a4,d5,a5]@5 [g3,c4,d4,e4,g4]@8, c5 ~@23 b3@16 [a3,d4,f#4]@16 ~@8, ~@24 e4@11 e4@5 ~@9 f#5@7 ~@8, ~@33 d4@7 ~@24, ~@33 b4@4 ~@10 e5@9 ~@8]/4", // D F G5 C5 C A D5 C …
  AB: "[[d#4,f#4,a4,d5]@8 [a3,d4,f#4,a4]@11 ~ [a3,c4,f4,g4]@4 ~@8, c5 ~@31]/2", // D F
  AC: "~@2 [a3,d4,f#4] ~ [g#3,c#4,f4] ~ [g3,c4,e4]@10", AD: "[a3,d4,f#4]@8 [a3,d4,f#4]@7 [a3,d4,f#4]",
  AE: "~ [f3,b3,d4,e4]@3 d4@4", // Bdim
  AF: "[~@5 [d4,g4,a4,b4] g4@2 a3@9 ~@4 [d4,a5]@2 ~ [g3,c4,d4,e4,g4]@8, ~@4 g5@4 [f#4,d5]@15 g5@9, ~@8 [d4,a4]@11 [a4,d6]@5 ~@8, ~@17 b5@7 ~@8]/2", // G D5 C D D5
  AG: "[~@20 [f4,b4,e5]@4 ~@16 a3@5 ~@4 a4 ~@4 b5@2 [g3,c4,e4,g4]@8 [d#4,f#4,a4,d5]@8 [a3,d4,f#4]@8, [d#4,f#4]@7 b4@13 ~@17 b4@2 d5@10 [f#4,f#5]@2 d5 a5 d4@3 ~@24, [a4,d5]@5 d5@3 ~@6 e5@6 ~@18 c5@2 b4@16 [e5,g5]@16 ~@8, ~@4 f#5@4 ~@7 g4@25 [f#4,a4]@7 d4@3 a4@6 ~@24, ~@6 a4@2 [a3,d4,f#4]@12 ~@4 [b3,e4,a4]@16 d4@5 a3@11 ~@24]/5", // E C D D#m F# D5 Em F#m …
  AH: "[~@5 b5@2 d4 [b3,d4,e4,g4]@6 ~@7 [d4,g4,a4,b4] ~@2 [d4,a4]@2 ~ d4@7 ~@3 d4@3 g4 ~@15 [b3,d4,e4]!2 [b3,d4,e4,g4]@32 ~@6, ~ g6@6 ~@8 e5@8 d5@17 ~@3 b4@32 ~@21, ~@3 e6@4 g5@16 ~ a3@9 ~@7 [g3,c4,d4,e4]@8 ~@48, ~@4 [f3,b3,e4]@4 b4@9 ~@7 f#4@16 ~ g4@7 [d#4,f#4,a4,d5]@32 ~@16, ~@26 a4@9 a4@5 ~@2 a4@6 ~@48]/6", // Em7 G D5 E7 Em7 C E D
})).s("gm_epiano1").gain(0.22)

// chords · epiano1 · soft notes
const epiano1_soft = note(`<
  ~ A B ~@5 C D E ~@2 F G ~@8 H E ~@2 F G ~@4 I@2 ~@5 J@2 ~@2 J@2 ~@8 K L ~@4 M@2 N L ~@3
>`.pickRestart({
  A: "[g4,a4]@13 d5 ~@2", B: "~@10 d4@3 a3@3, ~@9 a3@4 ~@3", C: "~@6 e3 e3@2 e3@3 ~@3 b3", D: "~@9 d4@6 ~, [c2,c3]",
  E: "~@10 [a4,d5] ~@5, ~@5 f#5@3", F: "~@9 e5@7", G: "~@9 [a4,a5]@7", H: "~@9 d4@6 ~",
  I: "[~@8 c#7@7 ~, ~@9 d#5@7 ~@16, ~@7 g#6@8 ~]/2", J: "[~@5 [b4,c5]@3 ~@7 a4@2 ~@15]/2",
  K: "~@5 d5 [c5,d5]@2 ~@8, ~@5 e5@2 ~@9", L: "~@2 d4@3 a3@3 ~@8, ~ a3@4 ~@11",
  M: "[~@14 e3 e3@2 e3@3 ~@3 b3 [c2,c3]@5 ~@3]/2", N: "~@5 d5 ~@10",
})).s("gm_epiano1").gain(0.13)

// bass · fretless bass
const bass = note(`<
  ~ A B C D A E F G A B C D A E F H I J I K@2 L A B C D A E F H M N M O@2 P Q R S T U V W T U V X@5 Y Z AA AB AC Z AD AE
  AF AG AA AB AH ~@2
>`.pickRestart({
  A: "c2@7 c2 ~@2 c2@6", B: "b1@7 b1 ~@2 b1@6", C: "a1@7 ~ b1@7 ~", D: "e1@5 ~@2 e1 ~@2 g1@5 ~",
  E: "b1@6 ~ b1 ~@2 b1@6", F: "a1@7 b1 ~@2 b1@6", G: "e2!3 ~@3 e2!2 e2@4 g2@4", H: "e1@6 ~ e1 ~@2 g1@6",
  I: "c2@4 ~ c2 ~ c2@7 g1 a1", J: "b1@5 b1 ~ b1@9", K: "[b1@4 ~ b1 ~ b1@2 ~ b1 ~ a#1 ~ a1@7 ~@2 f#1 b1@7 ~]/2",
  L: "e1@6 ~ e1 ~@2 g1@5 ~", M: "b1@4 ~ b1 ~ b1@7 f#1 g#1", N: "a#1@5 a#1 ~ a#1@9",
  O: "[a#1@4 ~ a#1 ~ a#1@2 ~ a#1 ~ a1 ~ g#1@7 ~@2 f1 a#1@7 ~]/2", P: "b1@5 b1 ~ b1@6 ~@2 b1", Q: "b1 ~@6 a1!2 ~@6 b1",
  R: "b1 ~@6 b1 e1!3 ~@4 e1", S: "~@2 g1@5 ~ c2 ~@6 c2", T: "c2@2 ~@5 c2 b1@2 ~@5 b1", U: "b1 ~@6 b1 a1@2 ~@5 a1",
  V: "b1 ~@6 b1 e1!3 ~@3 e1!2", W: "e1 ~@3 g1@4 c2 ~@6 c2",
  X: "[e1 ~@3 g1@4 c2@4 ~ c2 ~ c2@7 g1 a1 b1@5 b1 ~ b1@9 c2@4 ~ c2 ~ c2@7 g1 a1 b1@4 ~ b1 ~ b1@2 ~ b1 ~ a#1 ~ a1@7 ~@2 f#1]/5",
  Y: "b1@7 ~ e1@6 ~ e1", Z: "~@2 g1@5 ~ c2@7 c2", AA: "~@2 c2@6 b1@7 b1", AB: "~@2 b1@6 a1@7 ~",
  AC: "b1@7 ~ e1@5 ~@2 e1", AD: "~@2 c2@6 b1@6 ~ b1", AE: "~@2 b1@6 a1@7 b1", AF: "~@2 b1@6 e2!3 ~@3 e2!2",
  AG: "e2@4 g2@4 c2@7 c2", AH: "b1@7 ~ e1!3 ~@5",
})).s("gm_fretless_bass").gain(0.4)

// chords · synth brass 2
const synth_brass_2 = note("<~ A B C D E@2 F G H ~@7 I J K L@2 ~@25 M@5 ~ N O@2 P@2 Q@2 R@2 ~@5>".pickRestart({
  A: "~@4 [a#3,b3] c4 e4 g4 [c#5,d5] d5@7, ~@9 c#5 ~@6", B: "~@2 [d#5,e5] ~ d5 ~ [a#4,b4] f#4@8 f4",
  C: "~@4 [a#3,b3] c4 e4 g4 [a#4,b4] b4@6 a4, ~@9 a#4 ~@6", D: "[f#4,g4] g4 f#4 [f#4,g4] g4 f#4@9 ~@2",
  E: "[~@4 [a#3,b3] c4 e4 g4 [c#5,d5] e5 d5@8 [d#5,e5] ~ d5 ~ b4 f#4@4 [g4,a4] f#4 [f#4,g4]!2 [e4,f#4,g4]]/2", // Bmaj7 Dmaj7 Emaj7 Gsus2 Gmaj7 Em
  F: "e4@3 ~ [a#3,b3] c4 e4 g4 [a#4,b4] c5 b4@5 f#4, f#4 ~@9 d5 ~@5", // Bmaj7
  G: "a4@2 f#4 a4 f#4 [d4,f#4] d4@6 g3 [f3,g3] b3 d4", H: "e4@5 ~@3, d#4 ~@15",
  I: "~@5 [b4,d5,e5,g5] ~ [b4,d5,e5,g5]@8 ~, [b3,d4,e4,g4]@15 ~", // Em7
  J: "~@5 [a4,d5,f#5] ~ [a4,d5,f#5]@8 ~, [a3,d4,f#4]@15 ~", K: "g4@4 ~ [g4,b4,d5] ~ [g4,b4,d5]@8 ~, [b3,d4,e4]@7 ~",
  L: "[~@5 [a4,d5,f#5] ~ [a4,d5,f#5]@2 ~ [a3,d4,f#4] ~ [g#3,c#4,f4] ~ [g3,c4,e4]@10 ~@8, [a3,d4,f#4]@9 ~@23]/2", // D C# C D
  M: "[~@13 [b4,d5,e5,g5] ~ [b4,d5,e5,g5]@8 ~@6 [a4,d5,f#5] ~ [a4,d5,f#5]@8 ~ g4@4 ~ [g4,b4,d5] ~ [g4,b4,d5]@8 ~@6 [a4,d5,f#5] ~ [a4,d5,f#5]@2 ~ [a3,d4,f#4] ~ [g#3,c#4,f4] ~ [g3,c4,e4]@10, ~@8 [b3,d4,e4,g4]@15 ~ [a3,d4,f#4]@15 ~ [b3,d4,e4]@14 ~@2 [a3,d4,f#4]@9 ~@15]/5", // Em7 D G D C# C Em7 D …
  N: "~@12 [a#3,b3] c4 e4 g4", // Bmaj7
  O: "[[c#5,d5] d5@7 ~@2 [d#5,e5] ~ d5 ~ [a#4,b4] f#4@8 f4 ~@4 [a#3,b3] c4 e4 g4, ~ c#5 ~@30]/2", // Dmaj7 Emaj7 Bmaj7
  P: "[[a#4,b4] b4@6 a4 [f#4,g4] g4 f#4 [f#4,g4] g4 f#4@9 ~@6 [a#3,b3] c4 e4 g4, ~ a#4 ~@30]/2", // Bmaj7 Gmaj7 Bmaj7
  Q: "[[c#5,d5] e5 d5@8 [d#5,e5] ~ d5 ~ b4 f#4@4 [g4,a4] f#4 [f#4,g4]!2 [e4,f#4,g4] e4@3 ~ [a#3,b3] c4 e4 g4, ~@24 f#4 ~@7]/2", // Dmaj7 Emaj7 Gsus2 Gmaj7 Em Bmaj7
  R: "[[a#4,b4] c5 b4@5 f#4 a4@2 f#4 a4 f#4 [d4,f#4] d4@7 ~@11, ~@2 d5 ~@29]/2", // Bmaj7 D
})).s("gm_synth_brass_2").gain(0.18)

// other · synth brass 2
const synth_brass_2_2 = note("<~@9 A B C@2 D@2 E F G@2 H@2 ~@2 A B I@2 D@2 E J K@2 L@2 ~@12 M N O P ~@16>".pickRestart({
  A: "~@3 g4 g5!4 g5@2 ~@6", B: "~ g5!5 f#5 e5 d5 ~@6 e5",
  C: "[e5 d5!2 c5 b4 c5 c5@2 ~ b4!2 ~ b4!2 ~ a4@2 g4@2 ~@12 g4]/2",
  D: "[g5!4 g5@2 ~@3 g5!5 ~ a5@2 f#5@2 ~@10 e5!2 d5]/2", E: "d5 c5 b4 c5 c5@2 ~@7 b4 c5 b4", F: "a4 g4!2 ~@12 b5",
  G: "[~ b5 g5!2 e5 e5@2 ~@2 b5!4 a5 g5 a5@2 f#5@2 ~@12 b5]/2", H: "[b5 ~ g5!2 e5 e5@3 ~ g5!5 ~ a5@2 f#5@3 ~@12]/2",
  I: "[e5 d5!2 c5 b4 c5 c5@2 ~ b4!2 a4 b4!2 ~ a4@2 g4@2 ~@12 g4]/2", J: "a4 g4!2 ~@12 a#5",
  K: "[a#5 f#5!2 d#5 d#5@2 ~@3 a#5!4 g#5 f#5 g#5@2 f5@2 ~@12 a#5]/2",
  L: "[a#5 f#5!2 d#5 d#5@3 ~@2 f#5!5 ~ g#5@2 f5@3 ~@12]/2", M: "~@7 b5!2 g5!2 e5 e5@2 ~@2",
  N: "~ b5!4 a5 g5 a5@2 f#5@2 ~@5", O: "~@7 b5!2 g5!2 e5 e5@3 ~", P: "~ g5!5 ~ a5@2 f#5@3 ~@4",
})).s("gm_synth_brass_2").gain(0.42)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~ A B A C A B A C ~@8 D E F G ~@26 H@4 ~@2 I J K L M J K L M J K N ~@2
>`.pickRestart({
  A: "e3 ~ g3 ~ a3 ~@2 e3 ~ e3 g3 ~ a3!2 g3 ~", B: "e3 ~ g3 ~ a3 ~@2 e3 ~ e3 g3 ~ a3 b3 g3 ~",
  C: "[e3,g3] g3 [e3,g3] ~@3 [e3,g3]!3 ~@7", D: "~@2 g3 e3 g3!2 a3 g3@2 ~ g3 e3 g3!2 a3 ~",
  E: "~@2 f#3 ~ f#3!2 g3 f#3@2 ~ f#3 e3 g3!2 a3 ~", F: "~@2 g3 e3 g3!2 a3 g3@2 ~ g3 ~ g3!2 a3 ~",
  G: "~@2 f#3 d3 f#3 g3 a3 b3 ~@8",
  H: "[~@10 g3 e3 g3!2 a3 g3@2 ~ g3 e3 g3!2 a3 ~@3 f#3 ~ f#3!2 g3 f#3@2 ~ f#3 e3 g3!2 a3 ~@3 g3 e3 g3!2 a3 g3@2 ~ g3 ~ g3!2 a3 ~@3 f#3 d3 f#3 g3 a3 b3]/4",
  I: "~@8 e3 ~ g3 ~ a3 ~@2 e3", J: "~ e3 g3 ~ a3!2 g3 ~ e3 ~ g3 ~ a3 ~@2 e3",
  K: "~ e3 g3 ~ a3 b3 g3 ~ e3 ~ g3 ~ a3 ~@2 e3", L: "~ e3 g3 ~ a3!2 g3 ~ [e3,g3] g3 [e3,g3] ~@3 [e3,g3]!2",
  M: "[e3,g3] ~@7 e3 ~ g3 ~ a3 ~@2 e3", N: "~ e3 g3 ~ a3!2 g3 ~ [e3,g3] g3 [e3,g3] ~@5",
})).s("gm_electric_guitar_muted").gain(0.19).pan(0.1)

// other · electric guitar muted · soft notes
const electric_guitar_muted_2 = note("<~@4 A ~@3 A ~@8 B C D ~@28 E A F ~@5 B ~@3 B ~@3 B ~@2>".pickRestart({
  A: "~ e3 ~@14", B: "~@9 e3 ~@6", C: "~@3 e3 ~@5 e3 ~@6", D: "~@9 e3 ~ e3 ~@4", E: "~ e3 ~@9 e3 ~@4",
  F: "~ e3 ~ e3 ~@12",
})).s("gm_electric_guitar_muted").gain(0.1).pan(0.1)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@4 A ~@3 A B@2 C D E F G H I J K L ~@2 B@2 C D E F G H M N O P ~@12 Q@5 ~@5 R ~@3 R ~@2 S ~@2
>`.pickRestart({
  A: "~@3 [b3,e4], ~@11 d3@5", B: "[~@11 c4@10 ~@4 a4@6 ~, ~@8 b4@13 ~@2 a3@8 ~, ~@10 e4@11 d4@10 ~]/2",
  C: "~@3 g4@5 ~@2 [d#4,f#4,a4,d5]!4 ~@2, g3 ~, ~ d4@3 ~@4", D: "~ [b3,e4,g4] ~ [b3,e4,g4]@2 ~ [b3,g4] [a3,d4,f#4]@9",
  E: "~@7 [e4,b4]@9, ~@3 [g4,d5]@5", F: "~@11 a4@5, ~@5 d4@11, ~@7 c#4@9, ~@9 a3@7",
  G: "~@3 g4@6 ~ [f#4,a4,d5] [d#4,f#4,a4,d5]!3 ~@2, ~ g3@8 ~@7, ~@2 c4@7 ~@7", // D
  H: "~ [a3,d4] ~ [a3,f#4]@2 [b3,g4]@4 ~@2 f3@5, ~@3 d4@6 e4@7, ~@5 b3@3", I: "~@3 b4@12 ~, ~ d4@14 ~, ~@2 e4@13 ~",
  J: "~@3 a3@12 ~, f#4@15 ~, ~ g4@14 ~, ~@2 d4@13 ~", K: "~@3 b4@13, d4, ~ e4@15, ~ g4@7",
  L: "~@10 [f#4,b4,d5]@2 [f4,a#4,c#5] ~ [e4,a4,c5]@2, a4@3 ~, ~ f#4@9 ~@6, ~@3 d4@9 ~@4", // Bm A#m Am
  M: "~@3 a#4@12 ~, ~ c#4@14 ~, ~@2 d#4@13 ~", N: "~@3 g#3@12 ~, f4@15 ~, ~ f#4@14 ~, ~@2 c#4@13 ~",
  O: "~@3 a#4@13, c#4, ~ d#4@15, ~ f#4@7",
  P: "~@10 [f4,a#4,c#5]@2 [e4,a4,c5] ~ [d#4,g#4,b4]@2, g#4@3 ~, ~ f4@9 ~@6, ~@3 c#4@9 ~@4", // A#m Am G#m
  Q: "[~@11 b4@12 ~@4 a3@12 ~@4 b4@13 ~@10 [f#4,b4,d5]@2 [f4,a#4,c#5] ~ [e4,a4,c5]@3 ~@7, ~@9 d4@14 ~@2 g4@14 ~@3 g4@14 a4@12 ~@12, ~@10 e4@13 ~ f#4@15 ~@2 e4@15 ~ f#4@9 ~@14, ~@26 d4@13 ~ d4@16 ~@3 d4@9 ~@12]/5", // Bm A#m Am
  R: "~ [b3,e4] ~@2, ~@3 d3@5 ~@8", S: "~@8 [e3,b3,d4,e4]!2 [e3,b3,d4,e4]@2 ~@4",
})).s("gm_electric_guitar_clean").gain(0.12).pan(0.9)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note("<~@4 A ~@3 A B@2 C D ~@2 E F ~@6 B@2 C D ~@2 E F ~@26 G ~@3 G ~@5>".pickRestart({
  A: "~@11 f3@5", B: "[~@9 g4@12 ~ c#4@9 ~]/2", C: "~ c4@7 ~ [d#4,f#4,a4,d5] ~@6",
  D: "~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] e4 ~@9", E: "~@9 [d#4,f#4,a4,d5] d#4 ~@5", F: "~ f#4 ~@5 e4@2 ~@7",
  G: "~@3 f3@5 ~@8",
})).s("gm_electric_guitar_clean").gain(0.06).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@2 B C A@2 B C A@2 B D A@2 B E F G F H I B A@2 B D A@2 B E F G F H I J K L M K@2 N O K@2 N P Q I Q R K S T@2 U V
  T@2 U W T@2 X ~@2
>`.pickRestart({
  A: "x ~@6 x ~@2 x ~@4 x", B: "x ~@6 x ~@2 x ~@5", C: "x!3 ~@3 x!3 ~@7", D: "x ~@6 x ~@8", E: "x ~@6 x!2 ~@7",
  F: "x ~@6 x ~@6 x!2", G: "x ~@4 x ~ x ~@7 x", H: "x ~@4 x ~ x ~@8", I: "~@7 x!2 ~@6 x",
  J: "x ~ x ~@2 x ~ x ~@2 x ~@4 x", K: "x ~@6 x!2 ~@6 x", L: "x ~@7 x!3 ~@4 x", M: "~@2 x ~@5 x ~ x ~@4 x",
  N: "x ~@7 x!3 ~@3 x!2", O: "x ~@2 x ~@4 x ~ x ~@4 x", P: "x ~@2 x ~@4 x ~@6 x", Q: "~@6 x!3 ~@4 x ~ x", R: "~@15 x",
  S: "~@2 x ~@5 x ~@6 x", T: "~@2 x ~@4 x!2 ~@6 x", U: "~@2 x ~@5 x!3 ~@3 x!2", V: "x ~@7 x ~@6 x",
  W: "x ~@5 x ~ x ~@6 x", X: "~@2 x ~@5 x!3 ~@5",
})).gain(0.29)

// drums · rim
const rim = s("rim").struct("<~ A@16 ~@5 B A@8 ~@20 C A C A@7 B ~@5>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x",
})).gain(0.29)

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

// drums · low tom
const low_tom = s("lt").struct("<~@20 A ~@13 A ~@4 B ~@3 C ~@7 B ~@9 D ~@2 E ~@2>".pickRestart({
  A: "~@7 x", B: "~@3 x ~@4", C: "~@6 x!2 ~@8", D: "~ x ~@2", E: "~@7 x!4 ~@5",
})).gain(0.29)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@8 B@3 C B@3 C ~@4 D E B@3 C B@3 C ~@3 F G H I@10 J ~@3 K D L A@10 M ~@2
>`.pickRestart({
  A: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", B: "x!15 ~", C: "x!12 ~@4", D: "x!7 ~ x!7 ~", E: "x!7 ~ x!2 ~@6", F: "~@15 x",
  G: "x!16", H: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", I: "~ x ~ x ~ x ~@3 x ~ x ~ x ~@2", J: "~ x ~ x ~ x ~@10",
  K: "~@8 x!7 ~", L: "x!2 ~@6 x!2 ~@2 x!2 ~@2", M: "x!2 ~@2 x!2 ~@2 x!2 ~@6",
})).gain(0.24)

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

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

// drums · high tom
const high_tom = s("ht").struct("<~@16 A ~ B ~ C ~@9 A ~ B ~ C ~@4 D ~@7 D ~ E ~ F ~@15>".pickRestart({
// … 63 more lines

More by Daniele