Strudelify

Gelosia

Celentano

KeyG♯ minorTempo95 bpm
0:00/0:00
// Gelosia — Celentano
// 95 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(95/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(`<
  ~@4 A B A C A B A D A B A E F G ~ H ~ I ~ H ~ J K L M N O P Q R S P Q T U V W X Y Z AA X AB AC A B A D A B A AD AE AF
  AG AH AI@2 AJ AK AL AM AJ AN AO AP AQ AR AS AT AU AR AS AT AV ~ H ~ AW ~ H ~ I ~ H ~ I ~ AX
>`.pickRestart({
  A: "g#1 ~@3", B: "~@2 e2 d#2", C: "~@2 f#1 g#1", D: "~@2 e1 f#1", E: "f1@8 e1@7 ~", F: "c#2@7 ~ d#1@4 ~@2 d#1@2",
  G: "~@2 d#2@3 b1 a#1@2 g#1@4 ~@4", H: "e2 d#2 g#1 ~", I: "d#1 f#1 g#1 ~", J: "d#1 f#1 g#1@2",
  K: "f#1@4 ~ f1 f#1@2 f1@7 ~", L: "e1 g#1", M: "f#1@4 ~ f#1 f#1@2 f1@8", N: "e1@8 c#2@7 ~",
  O: "d#1@4 ~@2 d#1@3 ~ d#2@3 b1 a#1@2", P: "e2@4 ~@2 e2@2 f#2@5 ~ f#2@2", Q: "d#2 g2 g#2@2", R: "f#1 f#2 c#2 d#2",
  S: "g#1@5 ~ g#1@2 f#1@4 ~@2 f#1@2", T: "f#1@2 ~ f#1 f1@2 ~ f1", U: "e1@2 ~ e1 d#1@2 ~ d#1",
  V: "c#1@2 ~ c#1 f#1@2 e2@2", W: "b1@4 ~@2 b1@2 ~@4 f#2@3 ~, ~ f#1", X: "f1@2 ~ f1 e1@2 g#1@2",
  Y: "b1@4 ~@2 b1@2 f#1@3 ~ f#1@3 ~", Z: "f1@2 ~ f1 e1@3 a#1", AA: "b1@2 ~ b1 ~@2 f#2@2, ~ f#1",
  AB: "b1@4 ~@2 b1@2 f#1@3 ~ f#1@4", AC: "f1@2 ~ f1 e1@3 e1", AD: "~@2 d#1 f#1", AE: "g#1@8 f#1@4 ~ f1 f#1@2",
  AF: "f1@7 ~ e1@8", AG: "g#1@8 f#1@4 ~ f#1 f#1@2", AH: "f1 e1",
  AI: "[c#2@8 d#1@6 d#1@4 d#2@3 b1 a#1@2 e2@4 ~@2 e2@2]/2", AJ: "f#2@5 ~ f#2@2 d#2@4 g2@4", AK: "g#2@2 f#1 f#2",
  AL: "c#2@4 d#2@4 g#1@5 ~ g#1@2", AM: "f#1@2 ~ f#1 e2@2 ~ e2", AN: "g#2@4 f#1@2 ~ f#1", AO: "f1@2 ~ f1 e1@2 ~ e1",
  AP: "d#1@2 ~ d#1 c#1@2 ~ c#1", AQ: "f#1@4 e2@4 b1@5 ~ b1@2", AR: "~@2 f#2@2 f1@2 ~ f1, f#1 ~",
  AS: "e1@2 g#1@2 b1@2 ~ b1", AT: "f#1@3 ~ f#1@4 f1@4 ~@2 f1@2", AU: "e1@3 a#1 b1@2 ~ b1", AV: "e1@3 a#1 g#1@2 ~@2",
  AW: "e1 f#1 g#1 ~", AX: "d#1@4 f#1@4 g#1@3 ~@5",
})).s("gm_fretless_bass").gain(0.55)

// other · string ensemble 2
const string_ensemble_2 = note("<~@3 A ~@27 B C D E B C ~@24 F@2 G H@3 I ~@25>".pickRestart({
  A: "~ b5", B: "g#4", C: "g4 g#4", D: "f#3@2 e3 g3", E: "b3@5 d#4@3", F: "[~ g#4@2 g4]/2", G: "g#4 f#3",
  H: "[e3@2 g3@2 b3@5 d#4@3 g#4@8 g4@4]/3", I: "g#4 ~",
})).s("gm_string_ensemble_2").gain(0.25).pan(0.4)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@40 A B C B C B C B D ~@2 E ~@3 F ~@14 G H I J I J I J K ~@3 L@2 M@2 N O P Q R S@2
>`.pickRestart({
  A: "~ [b2,f#3] [f#2,c#3]@2", B: "[f2,f3]@2 [e2,e3] g#2", C: "[b2,f#3] [f#2,c#3]", D: "g#2@3 ~@13",
  E: "~@5 f#3 g#3 f#3 c#4 g#3 c#4 b3@3 g#3 ~", F: "~@2 f#3 [g#3,b3] c#4@9 ~@3", G: "~@2 b2 [f#2,b2]", H: "f#2 [f2,f3]",
  I: "[e2,e3] g#2 [b2,f#3]@2", J: "[f#2,c#3] [f2,f3]", K: "[e2,e3] g#2!2 ~", L: "[~@4 f#4@3 ~, ~@7 c#4@7 ~@2]/2",
  M: "[~@14 [d#4,f#4]@7 ~ b3 c#4!2 ~ b3 g#3@5]/2", N: "~@3 b2!2 c#3 d#3@6 ~ g#3 f#3 g#3",
  O: "b3 g#3 ~ g#3@3 b3 g#3@5 ~@4", P: "~@7 d#4", Q: "b4@6 g#4 b4 g#4@8",
  R: "~@6 d#4@2 f#4 d#4 f#4 d#4 f#4 d#4 f#4 d#4",
  S: "[f#4@2 c#4@2 b3 ~@5 d#4@2 g#4 f#4 d#4 c#4@2 b3 g#3 f#3 d#3 f#3 g#3@2 b3@2 ~@6]/2",
})).s("gm_distortion_guitar").gain(0.34).pan(0.6)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@4 A@2 B C D E B C D E B ~@2 F@2 G ~ H ~ I ~ I ~@4 J K@2 L M N@2 O@3 P Q P R P Q P S T@2 U C D E B E B ~@4 V W X Y@2
  W Z@4 AA@2 AB@2 AA@2 AC@3 G ~ H ~ G ~ AD ~ AE ~ AD ~@2
>`.pickRestart({
  A: "[d#3@6 e3 d#3]/2", B: "g#2@5 ~@11", C: "~@2 f#3 g#3", D: "b3@5 ~@11", E: "~@2 e3 d#3", F: "[~ d#4@3]/2",
  G: "e4@4 d#4@4 g#3@7 ~", H: "f#3@4 g#3@4 b3@5 ~@3", I: "e3@4 d#3@4 g#2@5 ~@3", J: "~@13 d#5 [f5,f#5,g#5] [a#5,b5]",
  K: "[d#6@2 ~@3 f#6 [g#5,b5] [d#5,g#5], c#6 ~@7 c#6@16 ~@8]/2", L: "b4@3 d#5 e5@2 d#5@2",
  M: "d#5@2 f#5 g#5@2 b5@2 c#6", N: "[d#6@2 ~@3 f#6 [g#5,b5] [d#5,g#5], ~ c#6@2 ~]/2", O: "b5/3",
  P: "~ [d#4,d#5] [c#4,c#5] [b3,b4]", Q: "[g#3,g#4]", R: "[d#4,d#5]", S: "[d#4,d#5]@15 ~", T: "[d#4@6 e4 d#4]/2",
  U: "g#3@7 ~@9", V: "~@5 d#5 [f5,f#5,g#5] [a#5,b5] d#6@8, ~@8 c#6 ~@7", W: "~@3 f#6, c#6",
  X: "[g#5,b5]@2 [d#5,g#5]@2 b4@3 d#5", Y: "[e5@2 d#5@2 d#5@2 f#5 g#5@2 b5@2 c#6 d#6@4]/2",
  Z: "[[g#5,b5]@2 [d#5,g#5]@2 b5@23 ~@3 [d#4,d#5]@2]/4", AA: "[[c#4,c#5] [b3,b4] [g#3,g#4]@4 ~ [d#4,d#5]]/2",
  AB: "[[c#4,c#5] [b3,b4] [d#4,d#5]@4 ~ [d#4,d#5]]/2", AC: "[[c#4,c#5]@4 [b3,b4]@4 [d#4,d#5]@15 ~ d#4@24]/3",
  AD: "f#3@2 g#3@2 b3@3 ~", AE: "e4 d#4 g#3@2",
})).s("gm_string_ensemble_1").gain(0.35).pan(0.8)

// chords · epiano2
const epiano2 = note(`<
  A B A B C D C D C D C E C D C F G@2 H I H I H I H I H I J K L M N O P M N Q R S T U V W X U Y W C D C D C D C D C D C
  Z AA@2 AB AC AD AE AB AF AG AH AI AJ AK AL@2 AM AN AO@2 H I H I H I H I H I H I H AP
>`.pickRestart({
  A: "[d#5,g#5,b5] ~ [d#5,g#5,b5] ~ [d#5,g#5,b5] ~ [d#5,g#5,b5] ~ [d#5,f#5,b5] ~ [d#5,f#5,b5] ~ [d#5,f#5,b5] ~ [d#5,f#5,b5] ~", // G#m B
  B: "[d#5,f5,b5] ~ [d#5,f5,b5] ~ [d#5,f5,b5] ~ [d#5,f5,b5] ~ [d#5,e5,g#5,b5] ~ [d#5,e5,g#5,b5] ~ [d#5,g#5,b5] ~ [d#5,g#5,b5] ~", // Fm7b5 Emaj7 G#m
  C: "[b3,d#4,g#4,b4] ~ [b3,d#4,g#4,b4] ~ [b3,d#4,g#4,b4] ~ [b3,d#4,g#4,b4] ~ [b3,d#4,f#4,b4] ~ [b3,d#4,f#4,b4] ~ [b3,d#4,f#4,b4] ~ [b3,d#4,f#4,b4] ~", // G#m B
  D: "[b3,d#4,f4,g#4,b4] ~ [b3,d#4,f4,g#4,b4] ~ [b3,d#4,f4,g#4,b4] ~ [b3,d#4,f4,g#4,b4] ~ [b3,d#4,e4,g#4,b4] ~ [b3,d#4,e4,g#4,b4] ~ [b3,d#4,e4,g#4,b4] ~ [b3,d#4,g#4,b4] ~", // Fm7b5 Emaj7 G#m
  E: "[b3,d#4,f4,g#4,b4] ~ [b3,d#4,f4,g#4,b4] ~ [b3,d#4,f4,g#4,b4] ~ [b3,d#4,f4,g#4,b4] ~ [b3,d#4,e4,b4] ~ [b3,d#4,e4,b4] ~ [b3,d#4,e4,b4] ~ [b3,d#4,b4] ~", // Fm7b5 Emaj7 B
  F: "[d#4,f4,g#4,b4] ~ [d#4,f4,g#4,b4] ~ [d#4,f4,g#4,b4] ~ [d#4,f4,g#4,b4] ~ [d#4,e4,g#4,b4] ~ [d#4,e4,g#4,b4] ~ [d#4,e4,g#4,b4] ~ [d#4,e4,g#4,b4] ~, [f1,f2] [e1,e2]", // Fm7b5 Emaj7 F E
  G: "[[c#4,e4,g#4,b4] ~ [c#4,e4,g#4,b4] ~ [c#4,e4,g#4,b4] ~ [c#4,e4,g#4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [b3,d#4,g#4,b4] ~ [b3,d#4,g#4,b4] ~ [b3,d#4,g#4,b4] ~ [b3,d#4,g#4,b4] ~, c#2@8 d#2@15 ~@9]/2", // C#m7 D#aug G#m
  H: "[b3,d#4,f#4,b4] ~ [b3,d#4,f#4,b4] ~ [b3,d#4,f#4,b4] ~ [b3,d#4,f#4,b4] ~ [b3,d#4,f4,g#4,b4] ~ [b3,d#4,f4,g#4,b4] ~ [b3,d#4,f4,g#4,b4] ~ [b3,d#4,f4,g#4,b4] ~", // B Fm7b5
  I: "[b3,d#4,e4,g#4,b4] ~ [b3,d#4,e4,g#4,b4] ~ [b3,d#4,e4,g#4,b4] ~ [b3,d#4,g#4,b4] ~ [b3,d#4,g#4,b4] ~ [b3,d#4,g#4,b4] ~ [b3,d#4,g#4,b4] ~ [b3,d#4,g#4,b4] ~", // Emaj7 G#m
  J: "[b3,d#4,f#4,b4] ~ [b3,d#4,f#4,b4] ~ [b3,d#4,f#4,b4] ~ [b3,d#4,f#4,b4] ~ [d#4,f4,g#4,b4] ~ [d#4,f4,g#4,b4] ~ [d#4,f4,g#4,b4] ~ [d#4,f4,g#4,b4] ~, ~ [f1,f2]", // B Fm7b5 F
  K: "[d#4,e4,g#4,b4] ~ [d#4,e4,g#4,b4] ~ [d#4,e4,g#4,b4] ~ [d#4,e4,g#4,b4] ~ [c#4,e4,g#4,b4] ~ [c#4,e4,g#4,b4] ~ [c#4,e4,g#4,b4] ~ [c#4,e4,g#4,b4] ~, [e1,e2] c#2", // Emaj7 C#m7 E
  L: "[d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~, d#2@15 ~", // D#aug
  M: "[e2,b3,d#4,g#4] [f#2,a#3,d#4,g#4]", N: "d#2 g2 [g#2,b3,d#4,g#4]@2, [g3,c#4,f#4] ~",
  O: "[f#2,b3,d#4,g#4]@2 [c#2,b3,d#4,e4,g#4] [d#2,g3,c#4,f#4]", // G#m7 C#m7 D#7
  P: "[b3,d#4,g#4] ~ [d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [f#2,g#4]@2 [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~, g#2@2 b3@2 g#2@4 [b3,d#4] ~@3 f#2@2 ~@2", // G#m G#5 G#m F#sus2 G#m B
  Q: "[b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~, f#2@7 ~ f2@7 ~", // G#m
  R: "[b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~, e2@7 ~ d#2@7 ~", // G#m B
  S: "[b3,d#4,e4,g#4] ~ [b3,d#4,e4,g#4] ~ [b3,d#4,e4,g#4] ~ [b3,d#4,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~, c#2 f#2", // Emaj7 E
  T: "[b2,f#3,b3,d#4] [f#2,f#3,c#4,f#4]", // B F#5
  U: "~@2 b3 ~ [d#4,g#4]@2 [b3,g#4] ~@3 b3 ~ [d#4,g#4]@2 b3 ~, [f2,f3]@6 ~@2 [e2,e3]@7 ~, ~@4 b3 ~@7 b3 ~@3", // G#5 E G#5 F E
  V: "[b2,f#3,b3,d#4]@4 [f#2,f#3,c#4]@3 ~", // B F#5
  W: "~@2 b3@2 b3 ~ b3@2 ~@2 b3 ~ [b3,d#4,g#4]@2 e2 ~, f2@2 e2 ~, ~@4 [d#4,g#4]@7 ~@5", // G#m G#5
  X: "[b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~, b2@7 ~ f#2@7 ~", // B
  Y: "[b2,d#4,b4]@2 f#4 ~ [b2,d#4,f#4]@4 [c#4,e4]@3 ~ [b3,d#4]@3 ~, ~@8 f#2@7 ~", // B C#m B
  Z: "[d#4,f4,g#4,b4] ~ [d#4,f4,g#4,b4] ~ [d#4,f4,g#4,b4] ~ [d#4,f4,g#4,b4] ~ [d#4,e4,g#4,b4] ~ [d#4,e4,g#4,b4] ~ [d#4,e4,g#4,b4] ~ [d#4,e4,g#4,b4] ~, [f1,f2]@8 [e1,e2]@7 ~", // Fm7b5 Emaj7 F E
  AA: "[[c#4,e4,g#4,b4] ~ [c#4,e4,g#4,b4] ~ [c#4,e4,g#4,b4] ~ [c#4,e4,g#4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [d#4,g4,b4] ~ [e2,b3,d#4,g#4]@8, ~@8 d#2@15 ~@9]/2", // C#m7 D#aug Emaj7
  AB: "[f#2,a#3,d#4,g#4]@2 d#2 g2, ~ [g3,c#4,f#4]", AC: "[g#2,b3,d#4,g#4] [f#2,b3,d#4,g#4]",
  AD: "[c#2,b3,d#4,e4,g#4]@4 [d#2,g3,c#4,f#4]@4 [b3,d#4,g#4] ~ [d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~, ~@4 g#2 b3 g#2@2", // C#m7 D#7 G#m G#5 G#m
  AE: "[f#2,g#4]@2 [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [e2,b3,d#4,g#4]@8, [b3,d#4] ~@3 f#2@2 ~@10", // F#sus2 G#m Emaj7 B
  AF: "[g#2,b3,d#4,g#4]@8 [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~, ~@8 f#2@7 ~", // G#m
  AG: "[b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~, f2@7 ~ e2@7 ~", // G#m
  AH: "[b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,e4,g#4] ~ [b3,d#4,e4,g#4] ~ [b3,d#4,e4,g#4] ~ [b3,d#4,e4,g#4] ~, d#2@7 ~ c#2@8", // B Emaj7
  AI: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b2,f#3,b3,d#4]@8, f#2@7 ~@9", // E B
  AJ: "[f#2,f#3,c#4,f#4]@8 ~@2 b3 ~ [d#4,g#4]@2 [b3,g#4] ~, ~@4 [f2,f3]@3 ~, ~@12 b3 ~@3", // F#5 G#5 E F
  AK: "~@2 b3 ~ [d#4,g#4]@2 b3 ~ [b2,f#3,b3,d#4]@8, [e2,e3]@7 ~@9, ~@4 b3 ~@11", // G#5 B E
  AL: "[[f#2,f#3,c#4]@8 ~@2 b3@2 b3 ~ b3@2 ~@2 b3 ~@3 e2 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~, ~@8 f2@8 e2@4 ~@4 b2@7 ~, ~@12 [d#4,g#4]@7 ~ [b3,d#4,g#4]@4 ~@8]/2", // F#5 B G#5 G#m
  AM: "[b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~@3 b3 ~ [d#4,g#4]@2 [b3,g#4] ~, f#2@7 ~ [f2,f3]@6 ~@2, ~@12 b3 ~@3", // B G#5 E F
  AN: "~@2 b3 ~ [d#4,g#4]@2 b3 ~ [b2,d#4,b4]@2 f#4 ~ [b2,d#4,f#4]@4, [e2,e3]@7 ~@9, ~@4 b3 ~@11", // G#5 B E
  AO: "[[c#4,e4]@3 ~ [b3,d#4]@4 ~@2 b3@2 b3 ~ b3@2 ~@2 b3 ~@3 e2 ~ [b3,d#4,g#4,b4] ~ [b3,d#4,g#4,b4] ~ [b3,d#4,g#4,b4] ~ [b3,d#4,g#4,b4] ~, f#2@7 ~ f2@8 e2@4 ~@12, ~@12 [d#4,g#4]@7 ~ [b3,d#4,g#4]@4 ~@8]/2", // C#m B G#m G#5 G#m
  AP: "[d#2,g3,c#4,f#4]@4 [g#3,b3,c#4,d#4,f#4] ~@3", // D#7 G#m7
})).s("gm_epiano2").gain(0.34).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@16 A B ~@3 C@2 ~@7 D ~@29 A E ~@18 F G ~@11>".pickRestart({
  A: "~@8 [g4,b4,d#5]@4 [g4,b4,d#5]@3 ~", B: "[g4,b4,d#5]!2 ~@2",
  C: "[~@4 [g#3,b3,d#4,g#4] ~ [b3,d#4,g#4]@5 ~@5, ~@5 [b3,d#4,g#4] ~@10, ~@11 g#3@11 ~@10]/2", // G#m
  D: "[g4,b4,d#5]@4 [g4,b4,d#5]@3 ~ [g4,b4,d#5]@4 [g4,b4,d#5]@4", E: "[g4,b4,d#5]@4 [g4,b4,d#5]@3 ~@9",
  F: "~@13 g#2 g#2@2", G: "b2@2 b2@2 g#2 f#2 g#2@7 ~@3",
})).s("gm_electric_guitar_clean").gain(0.28).pan(0.7)

// other · epiano1
const epiano1 = note("<~@15 A B@2 ~@7 C D E D F G ~@25 H I H I J@2 ~@31>".pickRestart({
  A: "f2 e2", B: "[c#2 d#2@2 ~]/2", C: "~ [g#2,g#3]", D: "[f#2,f#3] [f2,f3]", E: "[e2,e3] [g#2,g#3]", F: "[e2,e3] c#2",
  G: "d#2", H: "[g#2,g#3] [f#2,f#3]", I: "[f2,f3] [e2,e3]", J: "[c#2@8 d#2@15 ~@9]/2",
})).s("gm_epiano1").gain(0.39).pan(0.6)

// other · electric guitar muted
const electric_guitar_muted = note("<~@41 A B ~@2 A B ~@24 C D E ~ C D E ~@4 F G H G F G F G F G ~>".pickRestart({
  A: "[f2,f3] ~ f3 ~ [f2,f3] ~ f3 ~ [e2,e3] ~ e3 ~ [e2,e3] ~ e3 ~", // F E
  B: "[b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~", // B5
  C: "~@8 [f2,f3] ~ f3 ~ [f2,f3] ~ f3 ~", // F
  D: "[e2,e3] ~ e3 ~ [e2,e3] ~ e3 ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~", // E B5
  E: "[b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~@9", F: "~@10 f#2 g#2 b2!2 g#2 ~", G: "b2 ~@9 f#2 g#2 b2!2 g#2 ~",
  H: "g#2 ~@9 f#2 g#2 b2!2 g#2 ~",
})).s("gm_electric_guitar_muted").gain(0.38).pan(0.2)

// chords · piano
const piano = note("<~@36 A B@2 C@2 D E F E D E F ~@19 G@4 H@2 I@2 H@2 J ~@15>".pickRestart({
  A: "~@14 b3 c#4", B: "d#4@14 b3 c#4", C: "[d#4@10 f#4@2 b3@2 c#4 d#4@5 [d#4,f#4]@4 [c#4,e4]@4 [b3,d#4]@4]/2",
  D: "[g#3,b3,d#4]", E: "~ [d#4,f#4] [c#4,e4] [b3,d#4]", F: "[b3,d#4,g#4]",
  G: "[~@6 b3 c#4 d#4@14 b3 c#4 d#4@14 b3 c#4 d#4@10 f#4@2 b3@2 c#4 d#4@5 [d#4,f#4]@4]/4", // D#m
  H: "[[c#4,e4] [b3,d#4] [g#3,b3,d#4]@4 ~ [d#4,f#4]]/2", I: "[[c#4,e4] [b3,d#4] [b3,d#4,g#4]@4 ~ [d#4,f#4]]/2",
  J: "[c#4,e4]@2 [b3,d#4]@2 [d#4,g#4] ~@3, ~@8 b3 ~@7", // C#m B G#5
})).s("gm_piano").gain(0.05)

// drums · kick
const kick = s("bd").struct("<~@4 A@12 B C@13 D A@9 E A@19 F G C@9 H C@14 I C@5 J>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x!2 ~@2 x", C: "x ~@3 x ~@2 x", D: "x ~@5 x!3 ~ x ~@5", E: "x ~@5 x ~ x ~@2 x!2 ~@2 x",
  F: "x ~@5 x ~ x ~@5 x!2", G: "~ x ~@2 x ~@2 x", H: "x ~@5 x!3 ~@5 x ~", I: "x!2 ~@2 x ~@2 x", J: "x!2 ~ x!2 ~@3",
})).gain(0.65)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@4 A ~ A ~ A ~ A ~ A ~ A ~@3 B ~ B ~ B ~ B ~ B ~ B ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@2 ~ A ~ A ~ A ~ A ~ A ~@3 B
  ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B@2 ~ B ~ B ~ B ~ B ~ B ~ B ~
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@4",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct("<~@4 A@26 B A@9 C A@20 D A@9 E A@14 F A@5 G>".pickRestart({
  A: "~ x ~ x", B: "~ x!3", C: "~@4 x ~@7 x!2 ~@2", D: "x ~@3 x ~ x!2 ~@4 x ~@3", E: "~ x!2 ~@3 x ~", F: "x!2 ~ x",
  G: "x!2 ~@2 x!2 ~@10",
})).gain(0.65)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@30 [~@13 x ~@2] ~@55 [~@5 x ~@10] ~@5 [~@3 x ~@4]>").gain(0.58)

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

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

stack(
  bass, string_ensemble_2, distortion_guitar, string_ensemble_1, epiano2, electric_guitar_clean, epiano1,
// … 2 more lines

More by Celentano