Strudelify

Futuro come te

Amedeo Minghi

KeyG majorTempo118 bpm
0:00/0:00
// Futuro come te — Amedeo Minghi
// 118 bpm, 4/4, key G major. 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: Full arrangement: all 125 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(118/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 · fretless bass
const bass = note(`<
  ~ A B C D B A E@2 F B A G F B H@2 G I J K I G L@2 F B A G F B H@2 G I J K I M N@2 O P Q R S T Q R S T Q U V W X Y W V
  Z AA ~@8 AB J AC AD J AB AE@2 AF AG AH AI V AG AH AJ AK AL AM AN AO AP AM AN AO AP AM AQ AH AR V AS AR AH AT AU AH AR
  V AS AR AV AT AU AH AR V AS AH AR G AW@5
>`.pickRestart({
  A: "c2 c2@7", B: "b1 b1@7", C: "a1 a1@7", D: "d2 d2@3 c2@4", E: "[d2 ~@7 d1@8, ~ d2@15]/2", F: "e2 e2@7", G: "c2",
  H: "[c2 c2@15]/2", I: "b1", J: "a1", K: "d2 c2", L: "d2/2", M: "c2 e2", N: "[~@7 d1@2 d1!5 d1@2, d2]/2",
  O: "g1 g1@2 g1@2 g1@2 g1", P: "d1 d1@2 d1 c1 c1@2 c1", Q: "b0 b0@2 b0@2 b0@2 b0", R: "e1 e1@2 e1@2 d1@3",
  S: "c1 c1@2 c1@2 c1@2 c1", T: "c1 c1@2 c1!2 c1@2 c1", U: "e1@2 e1@4 e1@2 d1@7 ~", V: "c2@3 c2@2 c2@2 c2",
  W: "b1@3 b1@2 b1@2 b1", X: "a1@3 a1@2 a1@2 a1", Y: "d2@3 d2 c2@3 c2", Z: "d2@3 d2@2 d2@3", AA: "d1@15 ~", AB: "a#1",
  AC: "g1", AD: "c2 a#1", AE: "[c2@7 c2@2 c2!5 c2@2]/2", AF: "g#1@3 g#1@2 g#1@2 g#1", AG: "c#2@3 c#2@2 c#2@2 c#2",
  AH: "d#2@3 d#2@2 d#2@2 d#2", AI: "d#2@3 d#2 c#2 c#2@2 c#2", AJ: "f2!8", AK: "a#1 a#1@2 a#1@2 a#1@2 a#1",
  AL: "f1 f1@2 f1 d#1 d#1@2 d#1", AM: "d1 d1@2 d1@2 d1@2 d1", AN: "g1 g1@2 g1@2 f1@3", AO: "d#1 d#1@2 d#1@2 d#1@2 d#1",
  AP: "d#1 d#1@2 d#1!2 d#1@2 d#1", AQ: "g1@2 g1@4 g1@2 f1@7 ~", AR: "d2@3 d2@2 d2@2 d2", AS: "f2@3 f2 d#2@3 d#2",
  AT: "f2@3 f2@2 f2@3", AU: "f1@15 ~", AV: "d#2@3 d#2 g2@4", AW: "[~ f1@17 a#1@51 ~@11]/5",
})).s("gm_fretless_bass").gain(0.8)

// other · french horn
const french_horn = note("<A@7 B@2 ~@116>".pickRestart({
  A: "[~@5 e4 d4 d4@3 g3 g3@2 e4 d4 d4@3 g3 g3@2 e4 d4 d4@3 a3 a3@10 e4 d4 d4@3 g3 g3@2 e4 d4 d4@3 g3 g3@2 e4 d4!2]/7",
  B: "[~@2 a3 a3@12 ~]/2",
})).s("gm_french_horn").gain(0.64)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@4 A@5 ~@7 B@5 C@4 D E D F G H D I@2 J@2 K L@4 M@4 N@4 O E P Q R S T U V W X@2 ~@3 Y Z AA AB@2 AC AD@2 AE AF@4 AG AH
  AI@2 AG AH AJ AK@5 AL@4 AM AN AO AP AQ AR AS AT AU AV AW@2 AQ AR AS AT AU AV AX@2 AY AZ BA BB BC@3 ~@5
>`.pickRestart({
  A: "[~@64 f#4@13 ~@3, g4@4 ~, ~@8 d5@11 ~]/5", B: "[c4@31 ~ b3@15 ~ a3@15 ~ d4@8 [c4,f#4]@7 ~, g4@71 ~@9]/5",
  C: "[a4@7 ~@9 c4@16 ~@16 f#4@15 ~, b3@16 ~@16 [d4,d5]@31 ~, ~ g4@5 ~@2]/4", D: "[e4,g4]", E: "[d4,f#4]",
  F: "c4 b3, e4@15 ~", G: "[g4,b4]", H: "[f#4,a4]", I: "[c4@7 ~ d4@7 ~ e4@15 ~, g4@31 ~]/2",
  J: "[a4@7 ~@9 c4@8 e4@8, b3@15 ~ a3@15 ~, ~@8 g4@23 ~]/2", K: "[d4,g4]@8 [c4,f#4]@7 ~",
  L: "[a4@7 ~@9 d5@8 g5@8 ~@16 f#4@15 ~, b3@16 [c4,e4]@16 [d4,d5,a5]@31 ~, ~ g4@5 ~@2]/4", // C D5
  M: "[g4@12 a4@4 f#4@4 [a4,a5]@3 [g4,g5]@5 ~@4, d5@5 d4@2 ~]/4", // A G
  N: "[g4@8 a4@8 f#4@4 [a4,a5]@3 [b4,b5]@8 ~, d5@20 d4@11 ~]/4", O: "[c4,e4]", P: "f#4 a4, [a3,d4]",
  Q: "e4 g4 b4 e5 b4 g5 f#5 e5, [g3,b3]", R: "[c4,e4,g5]", S: "[d4,g4,d6]", T: "[c4,g4,c6]",
  U: "[e4,g4,e6] [d4,f#4,d6]", V: "[a4,a5] [g4,g5], b3", W: "[e4,g4,d5]", X: "[[d4,a4]@15 ~]/2", Y: "[a#3,a#4] [a3,a4]",
  Z: "[d3,a3,f4]", AA: "[a3,c4,g4]", AB: "[a4@2 [a#4,a#5] [c5,c6], [a#3,d4]]/2", AC: "[d4,f4,d5,d6]@15 ~",
  AD: "[g4@7 ~@9 a#3@8 d4@8, [a3,c5,c6] [g3,a#4,a#5], ~@8 f4@23 ~]/2", AE: "[c4,f4]@8 [a#3,e4]@7 ~",
  AF: "[g4@7 ~@9 [a#3,d4]@16 ~@16 e4@15 ~, a3@15 ~@17 c4@31 ~, ~ f4@5 ~@2]/4", AG: "[c4,d#4]", AH: "[c#4,f4]",
  AI: "[[a#4,g#5] ~ [a#4,g#5] ~ [a#4,g#5] ~ [a#4,g#5] ~ [a#4,g5] ~ [a#4,g5] ~ [c#4,a#4,g#5]@4, d#4@3 ~, ~ d#6]/2", // A#7 D# A#m7
  AJ: "[a#4,g#5] ~ [a#4,g#5] ~ [a#4,g#5] ~ [a#4,g#5] ~, d#4", // A#7
  AK: "[f5@7 ~ f5@2 g5@2 a#5@2 ~@2 a#4@24 c5@8 a4@8 [c5,c6]@6 [a#4,a#5]@10 ~@8, [f4,c5]@2 f5@5 f4@2 ~, ~@7 a#5@9 ~@24]/5", // C A# F5
  AL: "[a#4@8 c5@8 a4@4 [c5,c6]@3 [d5,d6]@8 ~, f5@20 f4@11 ~]/4", AM: "[d#4,g4]", AN: "[f4,a4]", AO: "a4 c5, [c4,f4]",
  AP: "a#4@4 g4 a4 a#4 d5, [a#3,d4]", AQ: "[d#4,g4,g5,g6]", AR: "[f4,a#4,f5,f6]", AS: "d#6 g6, [d#4,a#4,d#5]",
  AT: "[g4,a#4,a#5,a#6] [f4,a4,a5,a6]", AU: "[c5,c6,c7] [a#4,a#5,a#6], d4", AV: "[g4,a#4,f5,g6]",
  AW: "[f6@27 ~ c6 d6 d#6 f6, [f4,c5,f5]]/2", AX: "[[f4,c5,f5,f6]@15 ~]/2", AY: "a#3@15 ~", AZ: "c4 d4",
  BA: "a#3 c4, d#4", BB: "[d4,f4]@8 [c4,d#4]@7 ~", BC: "a#3/3",
})).s("gm_string_ensemble_1").gain(0.56)

// other · overdriven guitar
const overdriven_guitar = note("<~@113 A@2 B@2 C@4 ~@4>".pickRestart({
  A: "[~@6 g5@3 ~ g5@4 f5@10 ~@8]/2", B: "[~@6 g5@3 ~ g5@4 f5@8 a#5@10]/2", C: "[~@6 g5@3 ~ g5@4 f5@8 a#5@28 ~@14]/4",
})).s("gm_overdriven_guitar").gain(0.48)

// chords · piano
const piano = note(`<
  ~ A@3 B C@4 D E F@2 D E G@2 H@3 B C@4 D E F@2 D E G@2 H@3 B C@4 I J K L M N O P M N O Q R S T U V W X@2 Y Z AA@2 AB AC
  AD@2 AE@3 AF AG@4 AH AI AJ AK AL AI AJ AM AN AO AP AQ AR AS AT AU AR AS AT AV AW AX AY AZ BA AW BB@2 AW AX AY AZ BA BC
  BB@2 AW AX AY AZ AW AX BD BE@5
>`.pickRestart({
  A: "[~@10 g3@6 ~@10 g3@6 ~@10 a3@5 ~, c2@14 ~@2 b1@14 ~@2 a1@15 ~, ~@2 g2@14 ~@2 g2@13 ~@7 d4@10, ~@4 g3@6 ~@10 g3@5 ~@9 g3@13 ~, ~@6 d4@12 ~@4 d4@12 ~@2 a3@5 ~@7]/3",
  B: "[d2,g3,a3,d4] [c2,f#3,a3,d4]", // Dsus4 D7
  C: "[~@5 g3@3 ~@5 g3@3 ~@5 a3@2 ~ [a4,d5]@8, b1@7 ~ c2@7 ~ d2@16, ~@2 g2@14 ~@2 g2@13 ~@7 d4@8 d4@16 ~@2, ~@4 g3@6 ~@10 g3@5 ~@9 g3@6 ~@24, ~@6 d4@12 ~@4 d4@12 ~@2 a3@5 ~@6 g4@16 ~]/4", // D5
  D: "[e2,b3], g3@7 ~", E: "[b1,a3,d4]@7 ~",
  F: "[~@10 g3@6 c4@8 b3@7 ~, c2, ~@2 g3@7 ~@23, ~ a3@2 ~@5, ~@6 d4@9 ~@17]/2",
  G: "[[g3,d4]@16 [c4,c5]@8 [d4,d5]@7 ~, c2]/2", // G5 C D
  H: "[~@10 g3@6 ~@10 g3@6 ~@10 a3@5 ~, c2@14 ~@2 b1@14 ~@2 a1@15 ~, [e4,e5]@6 d4@12 ~@4 d4@12 ~@2 a3@5 ~@7, ~@2 g2@14 ~@2 g2@13 ~@7 d4@10, ~@4 g3@6 ~@10 g3@5 ~@9 g3@13 ~]/3", // E
  I: "[g3,d4]@2 ~@3 g3@3, b3@15 ~, g2@3 d4@5, ~@4 g3@4 g2@7 ~", J: "[d2,c4,e4,g4] [c2,a3,d4,f#4]",
  K: "a3@4 ~ a4@3, [d4,f#4], b1@7 ~ b1@8", L: "[g3,b3,e4]@4 e2 [d2,g3,b3,d4]@3, e2@3 ~@5",
  M: "[c4,g4]@2 c3 g4 ~ g4@3, [c2,e4], ~@3 c4@5, ~@8 c3@7 ~", // C5 C
  N: "d4@3 ~@7 [d4,f#4]@6, a3, f#4 c2, c2@3 a4@5, ~@2 d4@3 ~@3", // D
  O: "d4@2 ~@3 f#4@3, [b1,f#4]@8 b1@7 ~, a3@3 ~ a3@12, ~@6 d4@9 ~", // B5
  P: "[e2,b3]@6 b3@2 e2@2 [d2,b3,d4,g4]@5 ~, [e4,g4]@9 ~@7", // E5 G Em
  Q: "~@3 e4 ~ e4 ~ [e4,g4], e2 d2, [e4,g4]@2 b3@3 e3@3, ~ e3@3 g4@2 b3@2", // Em
  R: "[c4,e4,g4]@3 c2 ~ c2@3, c2@5 ~@3 [c4,e4,g4]@7 ~", // C
  S: "[b1,b3]@6 ~@6 b1@2 b3 ~, [d4,g4]@8 b3@5 ~@3, ~@6 b1@4 g4@5 ~", // B G5
  T: "[c4,g4]@6 ~@2 g4 ~ g4@5 ~, e4@8 c4@7 ~, a1@5 ~ a1@10", U: "[d2,e4,g4]@6 d2@2 [c2,c4,d4,f#4]@7 ~, c4 ~",
  V: "[b3,d4,g4]@3 b1 ~ b1@2 b1, b1@5 ~@3 [b3,d4,g4]@8", W: "[c4,e4,g4]@3 c2 ~ c2@3, c2@5 ~@11, d4 ~@7 [c4,e4,g4]@7 ~",
  X: "[[c4,e4,g4]@5 ~ [c4,g4]@2 ~@4 d2@3 ~ [d2,d4,f#4]@16, d2@6 e4@9 ~@17, ~@2 d2 ~@5, ~@5 c4@11, ~@5 g4@2 ~@9]/2", // C C5 D
  Y: "~@10 f4@5 ~, d2@13 ~@3, ~@2 a3@13 ~, ~@4 c4@11 ~, ~@6 d4@9 ~",
  Z: "~@5 c4@3, [g3,e4], a2@13 ~@3, c4@5 ~@3, ~@6 g4@9 ~", AA: "[~@16 a#4@8 a4@7 ~, [a#2,a3,d4,f4]@31 ~]/2",
  AB: "[d3,c4,f4], a3@7 ~", AC: "~@9 g4@7, [a2,g3,c4,e4]", AD: "[~@16 a#4@8 c5@7 ~, [a#2,a3,d4,f4]@31 ~]/2",
  AE: "[~@10 f3@6 ~@10 f3@6 ~@10 g3@5 ~, a#1@14 ~@2 a1@14 ~@2 g1@15 ~, [d4,d5]@6 c4@12 ~@4 c4@12 ~@2 g3@5 ~@7, ~@2 f2@14 ~@2 f2@13 ~@7 c4@10, ~@4 f3@6 ~@10 f3@5 ~@9 f3@13 ~]/3", // D
  AF: "[c2,f3,g3,c4] [a#1,e3,g3,c4]", // Csus4 C7
  AG: "[~@5 f3@3 ~@5 f3@3 ~@5 g3@2 ~ [g4,c5]@8, a1@7 ~ a#1@7 ~ c2@16, ~@2 f2@14 ~@2 f2@13 ~@7 c4@8 c4@16 ~@2, ~@4 f3@6 ~@10 f3@5 ~@9 f3@6 ~@24, ~@6 c4@12 ~@4 c4@12 ~@2 g3@5 ~@6 f4@16 ~]/4", // C5
  AH: "[c4,d#4,g#4]@3 g#2 ~ g#2@2 g#2, g#2@5 ~@3 [c4,d#4,g#4]@8", // G#
  AI: "[c#4,f4,g#4]@3 c#2 ~ c#2@3, c#2@5 ~@3 [c#4,f4,g#4]@7 ~", // C#
  AJ: "[a#3,d#4,g#4]@5 ~ [a#3,g#4]@2 ~@4 d#2@3 ~, d#2@6 d#4@9 ~, ~@2 d#2 ~, ~@5 [a#3,g#4]@3", // D#sus4 A#7
  AK: "[a#3,d#4,g4]@5 ~ [a#3,d#4,g4]@2 ~@2 a#3@6, d#2@3 ~ [c#2,c#4,g#4]@4", // D# C#5
  AL: "[c4,d#4,g#4]@3 c2 ~ c2@2 c2, c2@5 ~@3 [c4,d#4,g#4]@8", // G#
  AM: "[c4,f4,a#4]@5 ~ [c4,f4,a#4]@2 ~@2 c4@6, f2@3 ~ [f2,f4,a#4]@4", // Fsus4 A#5
  AN: "[a#3,f4]@2 ~@3 a#3@3, d4@15 ~, a#2@3 f4@5, ~@4 a#3@4 a#2@7 ~", AO: "[f2,d#4,g4,a#4] [d#2,c4,f4,a4]",
  AP: "c4@4 ~ c5@3, [f4,a4], d2@7 ~ d2@8", AQ: "[a#3,d4,g4]@4 g2 [f2,a#3,d4,f4]@3, g2@3 ~@5",
  AR: "[d#4,a#4]@2 d#3 a#4 ~ a#4@3, [d#2,g4], ~@3 d#4@5, ~@8 d#3@7 ~", // D#5 D#
  AS: "f4@3 ~@7 [f4,a4]@6, c4, a4 d#2, d#2@3 c5@5, ~@2 f4@3 ~@3", // F
  AT: "f4@2 ~@3 a4@3, [d2,a4]@8 d2@7 ~, c4@3 ~ c4@12, ~@6 f4@9 ~", // D5
  AU: "[g2,d4]@6 d4@2 g2@2 [f2,d4,f4,a#4]@5 ~, [g4,a#4]@9 ~@7", // G5 A# Gm
  AV: "~@3 g4 ~ g4 ~ [g4,a#4], g2 f2, [g4,a#4]@2 d4@3 g3@3, ~ g3@3 a#4@2 d4@2", // Gm
  AW: "[d#4,g4,a#4]@3 d#2 ~ d#2@3, d#2@5 ~@3 [d#4,g4,a#4]@7 ~", // D#
  AX: "[d2,d4]@6 ~@6 d2@2 d4 ~, [f4,a#4]@8 d4@5 ~@3, ~@6 d2@4 a#4@5 ~", // D A#5
  AY: "[d#4,a#4]@6 ~@2 a#4 ~ a#4@5 ~, g4@8 d#4@7 ~, c2@5 ~ c2@10", AZ: "[f2,g4,a#4]@6 f2@2 [d#2,d#4,f4,a4]@7 ~, d#4 ~",
  BA: "[d4,f4,a4]@3 d2 ~ d2@2 d2, d2@5 ~@3 [d4,f4,a#4]@8", // Dm A#
  BB: "[[d#4,g4,a#4]@5 ~ [d#4,a#4]@2 ~@4 f2@3 ~ [f2,f4,a4]@16, f2@6 g4@9 ~@17, ~@2 f2 ~@5, ~@5 d#4@11, ~@5 a#4@2 ~@9]/2", // D# D#5 F
  BC: "[d#4,g4,a#4]@3 d#2 [g2,d#4,g4,a#4]@4, d#2@5 ~@11", BD: "[c2,g3,a#3,d#4]",
  BE: "[~ [f2,f3,a#3,d#4]@16 ~@2 d4@51 ~@10, ~@17 f3@51 ~@12, ~@18 [a#1,a#3]@51 ~@11]/5", // D#sus2 A#
})).s("gm_piano").gain(0.64)

// other · tinkle bell · Fsus2 Csus2 Gsus2 Fmaj7 Csus2 Gsus2 Fmaj7 Cmaj7 …
const tinkle_bell = note(`<
  ~@9
  [[f8,g8] e8 [c8,d8] b7 [g7,a7] [e8,f8] d8 c8 ~@8]
  ~@30
  [~@8 f8 e8 [c8,d8] b7 [g7,a7] [e8,f8] d8 [b7,c8]]
  ~@35
  [~@8 d#8 d8 [a#7,c8] a7 [f7,g7] [d8,d#8] c8 [a7,a#7]]
  ~@48
>`).s("gm_tinkle_bell").gain(0.24)

// other · tinkle bell · soft notes · E C#sus2 Bmaj7
const tinkle_bell_soft = note("<~@9 [~@7 b7 a7 g7 f7 [e7,e8] [c#8,d#8] [a#7,b7] g#7 f#7] [e7 d#7 ~@14] ~@114>")
  .s("gm_tinkle_bell").gain(0.08)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~ A@4 B@4 C D E F C D G@3 H E I J E K@2 C D E F C D G@3 H E I J E K@2 H L@2 M E D N M E D N O P@2 Q R H E@2 S T U V@2
  T U W@2 X Y X Z AA X AB@2 AC AD AE@2 AF AD AG AH AI AJ@2 AK AL AM AN AK AL AM AN AO AP@2 AQ AR AS AL@2 AT AP@2 AQ AR
  AS AL@2 AU AP@2 AQ AR AP@2 AV AW AX@4
>`.pickRestart({
  A: "[g3@53 ~@3 f#3@7 ~, d4]/4", B: "[g3@11 ~ f#3@2 ~@2, d4@7 ~]/4", C: "[b3,e4,g4]@15 ~", D: "[a3,d4,f#4]@15 ~",
  E: "[c4,e4,g4]@15 ~", F: "[g3,c4,e4]@15 ~", G: "[[c4,e4,g4]@23 ~]/3", H: "[b3,d4,g4]@15 ~",
  I: "g4@7 ~ f#4@7 ~, [a3,c4]@15 ~", J: "a4@7 ~ g4@7 ~, [g3,d4]@15 ~", K: "[g4@7 ~ f#4@7 ~, [a3,c4]@15 ~]/2",
  L: "[[c4,e4,g4]@7 ~ [a3,d4,f#4]@23 ~]/2", M: "e4@8 ~@2 d4@5 ~, [b3,g4]@15 ~", N: "[b3,d4,a4]@15 ~",
  O: "e4@7 ~ d4@7 ~, [b3,g4]@15 ~", P: "[[c4,e4]@15 ~ [b3,d4]@15 ~, g4@31 ~]/2", Q: "[a3,c4,g4]@15 ~",
  R: "~ [c4,e4]@7 [a3,d4,f#4]@7 ~, g4@7 ~@9", S: "[a3,d4,f#4]@3 ~", T: "[d2,a3,c4,f4]@15 ~", U: "[a2,g3,c4,e4]@15 ~",
  V: "[[a#2,a3,d4,f4]@31 ~]/2", W: "[[a#2,a3,d4,f4]@29 ~@3]/2", X: "[a#3,d4,f4]@15 ~", Y: "[a3,c4,f4]@15 ~",
  Z: "f4@7 ~ e4@7 ~, [g3,a#3]@15 ~", AA: "g4@7 ~ f4@7 ~, [f3,c4]@15 ~", AB: "[f4@7 ~ e4@7 ~, [g3,a#3]@15 ~]/2",
  AC: "[g#2,c4,d#4]@15 ~", AD: "[c#2,g#3,f4]@15 ~", AE: "[g#4@15 ~ g4@7 ~ [c#2,c#4,g#4]@7 ~, [d#2,a#3]@23 ~@9]/2",
  AF: "[c2,d#4,g#4]@15 ~", AG: "[d#2,a#3,g#4]@15 ~", AH: "[f2,c4,a#4]@15 ~", AI: "[d4,f4,a#4]@15 ~",
  AJ: "[[d#4,g4,a#4]@7 ~ [c4,f4,a4]@23 ~]/2", AK: "g4@8 ~@2 f4@5 ~, [d4,a#4]@15 ~", AL: "[d#4,g4,a#4]@15 ~",
  AM: "[c4,f4,a4]@15 ~", AN: "[d4,f4,c5]@15 ~", AO: "g4@7 ~ f4@7 ~, [d4,a#4]@15 ~",
  AP: "[[d#4,g4]@15 ~ [d4,f4]@15 ~, a#4@31 ~]/2", AQ: "[c4,d#4,a#4]@15 ~", AR: "~ [d#4,g4]@7 [c4,f4,a4]@7 ~, a#4@7 ~@9",
  AS: "c5@7 ~ a#4@7 ~, [d4,f4]@15 ~", AT: "[c4,f4,a4]@3 ~", AU: "[c4,f4,a4]@7 ~", AV: "[c4,d#4,a#4]",
  AW: "~ [a#3,d#4,a#4]@15", AX: "[~ [a#3,d4,f4]@26 ~@5]/4",
})).s("gm_synth_strings_1").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~ A@39 B C@19 A ~@8 A@6 D B C@7 E C@19 A C@7 A C@6 F ~@5>".pickRestart({
  A: "x!2 ~ x ~ x ~@2", B: "x!2 ~ x ~ x!2 ~", C: "x!2 ~ x ~ x ~ x", D: "~ x ~ x ~ x ~@2",
  E: "x ~ x ~@3 x ~@4 x ~@2 x ~", F: "x",
})).gain(0.72)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~ A@8 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@29 A ~ A ~ A ~ A ~@48
>`.pickRestart({
  A: "~@15 x",
})).gain(0.4)

// drums · rim
const rim = s("rim").struct("<~ [~ x!3]!40 [~ x ~ x]!28 [~ x!3]!8 [~ x ~ x]!36 ~@12>").gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@41 A@20 ~@14 B ~ A@27 C A@7 D A@6 ~@6>".pickRestart({
  A: "~ x", B: "x!2 ~@2", C: "~@7 x!2 ~@7", D: "~@8 x ~@5 x!2",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@40 A ~@11 B ~@7 C ~@14 D A ~@7 E ~@11 B ~@7 F ~ G ~ H I ~@2 J ~@12>".pickRestart({
  A: "~@3 x!4 ~", B: "~@6 x!2", C: "~@5 x!2 ~", D: "~@2 x ~@3 x ~@6 x!2 ~", E: "~@3 x!2 ~@4 x!2 ~ x!3 ~", F: "~@7 x",
  G: "~@3 x", H: "~ x ~@6", I: "~@5 x ~@2", J: "~@11 x!3 ~@2",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@40 B A@7 B A@3 B A@2 C B A@2 D A@8 B A@7 B A@2 E B A E A B A@7 B A@3 B A@2 C B A@2 D F E A C G A@2 D F E H C F E
  ~@6
>`.pickRestart({
  A: "x!8", B: "~ x!7", C: "x!6 ~@2", D: "x!3 ~ x!3 ~", E: "x!4 ~ x!3", F: "~ x!3 ~ x!3", G: "~ x!4 ~ x!2",
  H: "x!2 ~@2 x!4",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@39 A B ~@7 C ~@3 D ~@22 E B ~@6 F ~@8 C ~@3 D ~@6 G H ~@3 I ~@2 J K ~@12
>`.pickRestart({
  A: "~@5 x ~@2", B: "~ x!4 ~@3", C: "~@14 x!2", D: "~ x!2 ~@2 x ~@2", E: "~@5 x!2 ~", F: "x ~ x ~@10 x!2 ~",
  G: "~@7 x", H: "~ x ~@3 x!2 ~", I: "~@11 x ~@4", J: "~@3 x!2 ~@11", K: "~@3 x!2 ~@2 x!2 ~@7",
// … 80 more lines

More by Amedeo Minghi