Strudelify

Ti Avro

Celentano

KeyB♭ majorTempo73 bpm
0:00/0:00
// Ti Avro — Celentano
// 73 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 84 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(73/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(`<
  ~@2 A B@6 ~@5 C D E F G H I J K L M N O P Q R S T U V W X Y Z S T U V AA AB AC@2 AD@2 C D E F G H I J K L M N O P Q R
  S T U V AE X Y Z S T U V AA AB AF AG AH@4
>`.pickRestart({
  A: "c3@2 bb2@2 f2 ~ f3@6 c3 d3 c3 bb2", B: "[c3@2 bb2@2 f2 ~ f3@89 ~]/6", C: "bb1@13 ~@3 bb1 ~@3 bb1@9 ~@3",
  D: "d2@2 ~ d1 d2@4", E: "c2@14 ~@2 g2 ~@3 g2@5 ~@3 g2 ~@3", F: "c2@5 ~@3 f2@2 c2@2 f1@2 g1@2",
  G: "c2@11 ~ c2@2 ~@2 c2 ~@3 g2 ~@3 c3@2 g2 ~ c2 ~@3", H: "f2@8 f1@7 ~@17", I: "bb1@14 ~@2 bb2 ~@3 bb2@8 ~@4",
  J: "bb1@16 f2@8 c2@4 f1@3 ~", K: "bb1@14 ~@2 bb2 ~@3 bb2@6 ~@2 f2@2 c2@2", L: "d2@8 ~@4 g2 ~ a2 ~ d3@9 ~@7",
  M: "c2@12 ~@4 g2 ~@3 g2@5 ~@3 g1 ~@3", N: "c2@13 ~@3 f2@4 eb2@2 ~@2 c2@4 f1@3 ~", O: "c2@12 ~@4 c3 ~@3 c3@9 ~@3",
  P: "f2@7 ~ f1@23 ~", Q: "bb1@11 ~ f1@2 g1@2 bb1@2 ~@2 bb1@9 f1 g1 ~",
  R: "bb1@4 bb2@3 ~ bb2@4 bb1@3 ~ c2@4 c3@4 d2@4 d3@3 ~", S: "eb2@10 ~@2 bb1@2 c2 ~ eb2@2 ~@2 eb2@4 bb1@2 c2@2 eb2@4",
  T: "e2@11 ~ g1@2 bb1@2 c2@2 ~@2 c2@4 e2@4 g2@2 bb2@2", U: "bb1@8 bb2 ~@3 a2@8 bb2 ~@3 g2@8",
  V: "bb2 ~@3 f2@8 bb2 ~@3 bb1@5 d2@5 ~ f2@5", W: "c2@11 ~@3 g2@2 c3 ~ c3 ~ c3@2 c3 ~ c3@4 g2@2 c2@2",
  X: "f1@12 ~@2 f1@2 f2 ~@3 f1@4 f2@2 c2@2 f1@4", Y: "bb1@10 ~@2 d2@2 ~@2 f2@8 ~@2 g2 ~ bb2 ~ g2 ~",
  Z: "bb2@8 bb1@3 ~ bb1@4 c2@8 d2@4 bb1@4", AA: "c2@8 c3 ~ c3 ~ g2 eb2@3", AB: "f2 f1 f2@2", AC: "bb1/2",
  AD: "[bb2@57 ~@7]/2", AE: "c2@11 ~@3 g2@2 c3 ~@3 c3@2 ~@2 g2@4 eb2@2 c2@2", AF: "bb1", AG: "bb2@15 ~ f1@16",
  AH: "[c3@3 ~ bb2@4 f2@2 ~@2 f3@12 c3@2 ~ d3@2 c3@2 bb2@2 c3@4 bb2@4 f2@2 ~@3 f3@22 ~ bb1@40 ~@19]/4",
})).s("gm_fretless_bass").gain(0.49)

// other · electric guitar jazz
const electric_guitar_jazz = note("<~@4 A@3 B C@3 D E@2 ~@30 A@3 B ~@32 F@2 ~@2>".pickRestart({
  A: "[~@16 [d4,d5]@4 [eb4,eb5] ~@3 [f4,f5]@3 ~ [eb4,eb5]@8 [d4,d5] ~@3 [bb3,bb4]@4 [g3,g4] ~@3 [bb3,bb4] ~@3 [c4,c5]@3 ~@5 [d4,d5]@15 ~@4 [d4,d5]@5 [eb4,eb5]@2 ~@2 [f4,f5] ~@3 [g4,g5]@4]/3", // D Eb F Eb D Bb G Bb …
  B: "~ [bb4,bb5]@7", // Bb
  C: "[~@16 [d4,d5]@4 [eb4,eb5] ~@3 [f4,f5]@3 ~ [eb4,eb5]@8 [d4,d5] ~@3 [bb3,bb4]@4 [g3,g4] ~@3 [bb3,bb4] ~@3 [c4,c5]@3 ~@5 [d4,d5]@15 ~@5 [d4,d5]@4 [eb4,eb5]@2 ~@2 [f4,f5]@2 ~@2 [g4,g5]@4]/3", // D Eb F Eb D Bb G Bb …
  D: "~@5 bb4@27, ~@5 bb5@19 ~@8", E: "[~@8 [bb3,d4,f5]@16 ~@4 [d4,f4,bb5]@35 ~, ~@7 [bb4,d5]@15 ~@5 [d5,f5]@35 ~@2]/2",
  F: "[c4@4 bb3@4 f3 ~@3 f4@12 c4@2 ~ d4@2 c4@2 bb3@2 c4@4 ~ bb3@4 f3 ~@3 f4@18]/2",
})).s("gm_electric_guitar_jazz").gain(0.35)

// other · vibraphone
const vibraphone = note(`<
  ~@14 A B C ~ D E F ~ A G C ~ D H I J K L M N O P Q R S T U N V W X ~@3 A B C ~ D Y F ~ A G C ~ D Z AA J K L M N O P AB
  R S T AC N V W AD ~@5
>`.pickRestart({
  A: "f4@8 g4@7 ~ a4@8 bb4@8", B: "c5@7 ~ bb4@7 ~ a4@6 ~@6 f4@4", C: "g4@9 ~@7", D: "g4@8 a4@7 ~ bb4@7 ~ c5@7 ~",
  E: "d5@7 ~ c5@3 ~ a4@15 ~ g4@3 ~", F: "f4@15 ~@17", G: "c5@7 ~ bb4@7 ~ a4@4 f4@4 ~@4 f4@4",
  H: "d5@8 c5@7 ~@4 f4@4 eb5@3 ~ d5@4 ~", I: "f4@27 ~@5", J: "~@16 d5@4 ~ d5@5 ~ c5@4 ~", K: "bb4@20 ~@8 g4@3 ~",
  L: "d5@7 ~ c5@3 ~ c5@3 ~ c5@7 ~ bb4@4 c5@4", M: "d5@7 ~ eb5@3 ~ d5@7 ~ eb5@3 ~ d5@6 ~@2", N: "~@16 f4@5 bb4@5 ~ d5@5",
  O: "c5", P: "~@16 f4@6 ~@4 a4@3 ~ c5@2", Q: "d5@13 ~ c5@2 d5@2 c5@2 bb4@12", R: "~@8 d5@7 ~ d5@10 c5@5 ~",
  S: "bb4@3 ~ bb4@9 ~@11 g4@3 ~ bb4@3 ~", T: "d5@7 ~ c5@3 ~ c5@11 ~ bb4@3 ~ c5@4", U: "d5@8 eb5@4 d5@8 bb4@5 ~@7",
  V: "c5 ~", W: "~@16 f4@5 a4@5 c5@5 ~", X: "bb4@17 ~@15", Y: "d5@7 ~ c5@10 ~@2 a4@6 g4@4 ~@2",
  Z: "d5@8 c5@7 ~@5 f4@4 eb5@3 ~ d5@4", AA: "f4@3 f4@21 ~@8", AB: "d5@7 c5 d5 c5 bb4@6",
  AC: "d5@8 eb5@4 d5@8 eb5@4 d5@5 ~@3", AD: "bb4@15 ~@17",
})).s("gm_vibraphone").gain(0.32)

// other · oboe
const oboe = note(`<
  A B A B ~@10 C D ~@4 A B ~@6 E F G H I J ~@4 K L M N O ~@11 A B ~@6 E F G H I J ~@4 K L M N O ~ A B P@2 ~@2
>`.pickRestart({
  A: "c5@2 bb4@2 f4@2 f5@6 c5 d5 c5 bb4", B: "c5@2 bb4@2 f4@2 f5@9 ~", C: "~@14 bb4 c5", D: "f4 ~",
  E: "~ d4 f4@2 bb4@2 d5@2", F: "eb5 d5!2 bb4 bb4@2 ab4@2", G: "g4", H: "c5@6 bb4 g4",
  I: "d4@7 ~ bb4 ~@3 a4@8 bb4 ~@2 g4@8 bb4", J: "~@4 f4@19 ~@9", K: "~ g4 bb4 c5 eb5 g5 f5 eb5", L: "e5@7 ~",
  M: "f5@8 bb5 ~@3 a5@7 f5 ~@4 d5@8", N: "a4 ~@3 bb4@12 f4@5 bb4@5 ~ a4@5", O: "bb4@27 ~@5",
  P: "[c5@4 bb4@4 f4@4 f5@13 c5@2 d5@2 c5@2 bb4@2 c5@4 bb4@4 ~ f4@4 f5@18]/2",
})).s("gm_oboe").gain(0.3)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@12 A@3 B C D E F G H I J C D E K L M N O P@2 Q R S T N O P@2 Q U ~@4 V B C D E F G H I J C D E K L M N O P@2 Q ~ S T
  N O P@2 Q ~@2 W X Y@2 ~
>`.pickRestart({
  A: "[f3@9 g3 a3 bb3]/3", B: "c4@2 bb3@2 a3 ~@2 f3", C: "g3 b3", D: "bb3 c4 bb3 g3 a3@4", E: "g3 a3 bb3 c4",
  F: "d4@4 c4@3 ~@9", G: "d3 f3", H: "~ [f3,a3]", I: "f3 g3 a3 bb3, bb2", J: "c4@8 bb3@8 a3@3 ~@13, d3@19 ~@13",
  K: "d4@2 c4 ~@5", L: "~@3 [d5,f5] [c5,eb5] d5 bb4 [d4,g4], ~@5 f4@2 ~", M: "[c4,ab4]@2 [g4,c5] [ab4,d5]", N: "eb5",
  O: "e5", P: "[d5@46 ~@2 d5@5 c5@5 ~ bb4@4 ~]/2", Q: "[bb3,eb4]@11 ~@5 [bb3,eb4]@2 ~@2 [bb3,eb4]@4 ~@4 [bb3,eb4]@3 ~",
  R: "[c4,f4]@31 ~", S: "~@2 bb4 d5", T: "eb5@2 d5@2 bb4@11 ~", U: "c4", V: "f3 g3 a3 bb3", W: "[g3,eb4] [a3,f4]",
  X: "f3", Y: "[~ [g3,eb4]@17 [a3,f4]@18 ~@28]/2",
})).s("gm_string_ensemble_2").gain(0.3).pan(0.3)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@20 A@2 ~@21 B C ~@9 A@2 ~@13 D ~@7 E F ~ G ~ H@2>".pickRestart({
  A: "[bb3@47 ~@17]/2", B: "f4", C: "[bb3,d4]@3 ~", D: "[c4,f4]@31 ~", E: "[c4,f4]@3 ~", F: "[f3,d4]", G: "d4",
  H: "[~@4 [f3,d4]@39 ~@21]/2", // Dm
})).s("gm_string_ensemble_2").gain(0.2).pan(0.3)

// chords · string ensemble 2
const string_ensemble_2_2 = note(`<
  ~@4 A@8 ~@10 B C D@2 E F G H I@2 J@2 K L M@2 I@2 J@2 K L N@4 O P Q@2 ~ R S T O P Q@2 ~ F G H I@2 J@2 K L M@2 I@2 J@2 K
  L ~@6
>`.pickRestart({
  A: "bb5/8", B: "f4 g4 a4 bb4, d4", C: "c5@8 bb4@8 a4@3 ~@13, f4@19 ~@13", D: "[eb4 d4 eb4 [a3,f4], g4@3 ~]/2",
  E: "[eb4,g4]@15 ~", F: "[g4,bb4]@8 [f4,a4]@3 ~@21", G: "f5 bb5", H: "~@2 eb5 f5", I: "g5/2", J: "[f5@47 ~ f5@15 ~]/2",
  K: "g4@7 ~ g4 ~ g4@2 ~@2 g4 ~", L: "a4@23 ~@9", M: "[[bb3,d4]@48 [c4,eb4]@8 [d4,f4]@7 ~]/2", N: "[bb1@15 ~]/4",
  O: "~@4 [bb4,d5,f5] ~@7 [bb4,d5] ~@7 [bb4,d5,f5] ~@7 [bb4,d5,f5] ~@3, ~@6 f5 ~@9", // Bb
  P: "~@4 [a4,d5,f5] ~@7 [a4,d5,f5] ~@7 [a4,d5,f5]@12", Q: "[c5 b4 bb4 a4, eb5@63 ~]/2",
  R: "[g4,bb4]@7 ~ [f4,a4]@3 ~@21", S: "d4 c4 bb3@2, f4", T: "[eb4,g4] [f4,a4]",
})).s("gm_string_ensemble_2").gain(0.2)

// chords · epiano2
const epiano2 = note(`<
  A B C@2 D@2 E F G H I J K@2 L M N O P Q R@3 S@3 T U V@2 ~@14 W@4 L M N O P Q R@3 S@3 T U V@2 ~@14 X@6
>`.pickRestart({
  A: "~@4 f4@2 f5@6 c5 d5 c5 bb4, c5 ~@3, ~ bb4@5 ~@2", B: "c5 ~ f4 f5@5, ~ bb4@7",
  C: "[c5@4 ~@8 f5@12 c5@2 ~@2 c5@2 bb4@2 ~@4 bb4@4 f4@2 ~@3 f5@19, bb3@11 [f4,a4]@5, ~@2 bb4@11 d5@2 ~ c5@4 ~@12, ~@8 f4@23 ~@12 f3@21]/2", // F
  D: "[[bb3,d4]@15 ~@11 bb4@6, bb2@63 ~, ~ [bb3,eb4]]/2", E: "[bb2,bb3,d4,f4]@31 ~", F: "[bb2,bb3,eb4,g4]",
  G: "[d4,f4]@2 ~ f5, [bb2,bb3], ~@16 bb4@15 ~, ~@9 f4@7, ~@5 d5@3", // Dm Bb
  H: "[eb4,g4]@11 ~@2 [g4,bb4,eb5]@3, [bb1,bb2,eb3,bb3]", I: "[d5,f5]@2 ~ f5, [bb2,f3,bb4], ~ d5, ~@5 eb5@3",
  J: "[eb3,bb3,eb4,g4]@12 ~ [bb3,eb4,g4]@3, ~@3 eb2", K: "[[f3,bb3,d4,f4]@15 ~ [f3,bb3,d4,f4]@16, bb2]/2",
  L: "f3@21 ~@3 f3@8, [bb2,bb3,d4]", M: "~@3 d2@5, [d3,a3,f4]@31 ~, ~@8 f3@7 ~@17", N: "~@4 [eb5,eb6]@7 ~ [d5,d6]@4",
  O: "~@7 eb4, c3@21 ~@11, [eb5,eb6]@3 c4@2 ~ c4@2, ~@2 g3@3 ~@3, ~ a4", // Eb
  P: "~ g3 c4 bb3 ~@2 [c5,c6]@2, c3, [eb5,eb6]@5 ~@3, ~ c4", Q: "bb5 c4 [eb4,c5,a5]@6, f3, d5 ~@3",
  R: "[~@24 c5@2 ~@2 c5@2 bb4@2 eb4@4 bb4@4 ~@16 a4@6 ~@22 bb3@11 ~, bb2@61 ~ bb2@34, c5@3 f5@2 bb3@3 [eb3,c5]@3 ~@13, ~@4 bb4@22 d5@4 ~@14 f5@19 ~ f5@27 ~@5, ~@8 f4@22 ~@10 f4@21 ~@2 [f4,bb4]@30 ~@3]/3", // Cm Bb5
  S: "[~@8 bb4@8 a4@13 ~@3 [eb6,g6]@13 ~@3 g6@11 ~@3 c4@16 f3@16 ~@2, d3@29 ~@17 g3@12 ~@38, [f4,c5]@18 ~@13 c6@13 ~@52, ~@4 c4@11 ~@33]/3", // Eb F5
  T: "~ g6@12 ~@3 c5@16, eb6@3 ~@5", U: "[d4,bb4]@8 [c4,a4]@11 ~@13, f2@23 ~@9",
  V: "[~@6 f4@3 ~@5 bb4@2, bb3 ~, bb4@25 ~@19 ab4@12 ~@8, ~@8 f4@12 d4@13 ~@3 d4@15 ~@13, ~@12 d5@20 ~@16 c5@15 ~]/2",
  W: "[[bb3,d4]@30 ~@22 bb4@9 ~@4 d5@29 ~@3 eb5@30 ~, bb2@59 ~@2 bb2@30 ~@3 bb2@31 ~@3, ~@32 [bb3,eb4]@30 d4@30 ~@3 [eb4,g4]@32 ~, ~@63 [f4,bb4]@31 ~@2 bb4@30 ~@2]/4", // Bb Eb5 Eb Bb5
  X: "[~@24 c5@2 ~@2 c5@2 bb4@2 eb4@4 bb4@4 ~@16 a4@6 ~@27 c5@2 ~@2 c5@2 bb4@2 eb4@4 bb4@5 ~@17 a4@7 ~@2 [bb4,d5]@34 ~@26, bb2@61 ~ bb2@2 bb2@65 ~ bb2@42 ~@20, c5@12 f5@8 bb3@12 [eb3,c5]@12 ~@20 c5@12 f5@8 bb3@12 ~ [eb3,c5]@14 ~@81, ~@4 bb4@22 d5@4 ~@14 f5@19 bb4@5 bb4@23 d5@4 ~@15 f5@21 ~@61, ~@8 f4@22 ~@10 f4@21 ~@2 f4@9 f4@23 ~@11 f4@23 ~@2 f4@37 ~@24]/6", // Bb Cm
})).s("gm_epiano2").gain(0.3)

// chords · epiano2 · soft notes
const epiano2_soft = note("<~@4 A B ~@10 C D ~@5 E@4 ~ F@2 ~@14 A G ~@4 C D ~@5 H@4 ~ F@2 ~@20>".pickRestart({
  A: "f4@31 ~", B: "g4", C: "~@2 c3@4 ~@4 [g2,f3]@3 ~ f3@2", D: "~@5 f3@3",
  E: "[~@30 g5@15 ~@3 d6@11 ~@5 [c6,eb6,g6]@12 ~@4 [c6,f6]@14 ~@2 c6@13 ~@19, ~@47 [g5,b5]@12 ~@4 g5@13 ~@3 [f5,a5]@15 ~ g5@14 ~@19]/4", // Cm F5 G F
  F: "[~@4 d4@9 ~@39 d4@11 ~, ~@28 bb4@7 ~@5 f4@24, ~ ab3]/2", G: "g4@29 ~@3",
  H: "[~@30 g5@15 ~@3 d6@11 ~@5 [eb6,g6]@11 ~@5 [c6,f6]@14 ~ [g5,c6]@14 ~@19, ~@47 [g5,b5]@12 ~@4 [g5,c6]@13 ~@3 [f5,a5]@15 ~@34]/4", // Eb F5 C5 G C5 F
})).s("gm_epiano2").gain(0.15)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@5 A@2 B@2 ~@2 B@2 ~@5 C@2 ~@3 D@2 ~ E@4 F G H I@2 J K L F G H M@2 N ~ A@2 O@2 ~@2 P Q@2 ~@3 D@2 R S@4 F G H I@2 J K
  T F G H M@2 N ~@6
>`.pickRestart({
  A: "[~@26 [bb4,d5,f5]@5 ~ bb4@13 ~@19, ~@31 f4@14 ~@19]/2", // Bb
  B: "[~@24 [f4,bb4,d5] ~ [bb4,d5,f5]@5 ~ bb4@13 ~@19, ~@31 f4@14 ~@19]/2", // Bb
  C: "[~@32 bb4@4 ~@4 a4@23 ~, ~@31 [c4,f4]@6 ~@2 eb4@25]/2", // F5
  D: "[~@24 [f4,a4,d5] ~ [a4,d5,f5]@5 ~ bb4@13 ~@19, ~@31 f4@14 ~@19]/2", // Dm
  E: "[~@16 bb4@3 ~ a4@11 ~ bb4@13 ~@16 d4@3, ~@30 f3@8 f3@24 bb3@27 ~@5 ab3@15 ~@5 ab3@10 ~@4, ~@31 [c4,f4]@8 [c4,eb4]@24 [d4,f4]@28 ~@4 d4@19 ~@2 d4@4 bb4@8, ~@96 [f4,bb4]@22 f4@5 ~@5]/4", // F5 Cm Dm Bb5
  F: "[eb4,g4]@5 ~ [eb4,g4] ~@5 [eb4,g4]@5 ~ [eb4,g4] ~@7 [eb4,g4] ~@5", // Eb
  G: "[e4,g4]@4 ~@2 [e4,g4] ~@7 [e4,g4]@3 ~ [e4,g4] ~@5 [e4,g4]@8, ~@23 [bb3,c4]@8 ~", // Em Bbsus2
  H: "bb2@7 ~ bb3 ~@3 a3@8 bb3 ~@3 g3@8",
  I: "[bb3 ~@3 f3@8 bb3 ~@3 bb2@5 d3@5 ~ f3@4 ~ c5@20 ~@4 eb5@2 c5@2 g4@2 ~@2, ~@31 g4@21 ~@12, ~@32 eb5@17 ~@15]/2",
  J: "[a3,f4]@27 ~@5", K: "bb2@8 c3@4 d3@4 f3@4 g3@5 ~ g3 ~ bb3 ~ g3 ~",
  L: "d4@4 bb4@4 d4@2 bb3 ~ c4 ~ g3 ~ bb3@12 ~@4",
  M: "[bb3 ~@3 f3@8 bb3 ~@3 bb2@5 f3@5 ~ d4@4 ~ eb5@16 eb5@2 c5@2 g4@2 bb4@2 c5@2 f4@5 ~, ~@31 [g4,c5]@16 ~@17]/2", // C5
  N: "[c4,f4]@15 ~", O: "[~@24 [f4,bb4,d5] ~ [bb4,d5,f5]@5 f4@14 ~@19]/2",
  P: "~@16 [d4,a4,d5]@4 [g4,c5] ~@3 [f3,c4] ~@3 [f3,c4,f4]@4", // D5 C5 F5
  Q: "[~@32 bb4@4 ~@4 a4@23 ~, ~@30 f3@8 f3@25 ~, ~@31 [c4,f4]@6 ~@2 [c4,eb4]@25]/2", // F5 Cm
  R: "~@16 d4@3 ~ [c4,c5] ~@3 a3 ~@3 [f3,f4]@2 ~@2, ~@15 d5@4 ~@13", // C F
  S: "[~@16 bb4@3 ~ a4@11 ~ bb4@13 ~@16 d4@3, ~@30 f3@8 f3@24 [bb3,d4]@28 ~@4 ab3@15 ~@5 ab3@10 ~@4, ~@31 [c4,f4]@8 [c4,eb4]@24 f4@27 ~@5 d4@19 ~@6 bb4@8, ~@96 [f4,bb4]@22 f4@5 ~@5]/4", // Bb F5 Cm Bb5
  T: "d4@4 bb4@4 d4@2 bb3 ~@3 g3 ~ bb3@12 ~@4",
})).s("gm_electric_guitar_clean").gain(0.25)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@5 A@2 B@2 ~@2 B@2 ~@5 C@2 ~@3 B@2 ~@4 D ~@15 A@2 B@2 ~@8 B@2 E ~@3 F ~@7 G ~@12
>`.pickRestart({
  A: "[~@24 [f4,bb4,d5] ~@5 d4@14 ~@20]/2", B: "[~@15 d4@7 ~@10]/2", C: "[~@30 f3@8 ~ c4@25, ~@38 f3@25 ~]/2",
  D: "~@7 f4", E: "~@24 a4 ~@7", F: "~@20 d4@5 ~@3 f4@4", G: "~@12 c4 ~@19",
})).s("gm_electric_guitar_clean").gain(0.16)

// chords · french horn
const french_horn = note("<~@2 A@7 ~@45 B C D E F@2 G H I J K L M@2 N O ~ P Q R M@2 N O S ~ T U@3>".pickRestart({
  A: "[bb2@11 c3@5 ~@40, f3]/7", B: "c5@2 bb4@2 f4@2 f5@6 c5 d5 c5 bb4", C: "c5 bb4 f4 f5@5",
  D: "[bb3,d4] ~@3 [bb3,d4]@25 ~@3", E: "[d4,f4]@5 ~@3", F: "[c4@15 ~ b3@16 bb3@16 [a3,f4]@16, eb4@47 ~@17]/2",
  G: "[eb4,g4]@10 ~@6 [eb4,g4] ~ [eb4,g4]@2 ~@12", H: "[c4,f4]@7 ~ [c4,f4]@4 ~@20", I: "f3@16 c4@4 bb3@3 ~ f3@4 g3@4",
  J: "ab3 bb3", K: "g3@12 bb3 ~ c4@2 eb4@4 g4@4 f4@4 eb4@4", L: "e4@5 d4 c4 g3",
  M: "[[f4,bb4]@7 ~ f4@2 bb4@2 ~@2 [f4,bb4]@4 ~@2 [f4,bb4]@12]/2", N: "[eb4,g4]", O: "[a3,f4]@29 ~@3",
  P: "~@5 bb3 ab3 bb3", Q: "g3@2 bb3 c4 eb4 g4 f4 eb4", R: "e4@6 d4 c4", S: "[d3,bb3]@29 ~@3",
  T: "d4@8 c4@8 bb3@8 ~ f3@7", U: "[~ g3@13 a3@21 ~ [d3,bb3]@39 ~@21]/3",
})).s("gm_french_horn").gain(0.21).pan(0.3)

// other · rock organ
const rock_organ = note("<~@30 A@2 B C D E F ~ A@2 B C D G ~@20 A@2 B C D E F ~ A@2 B C D G ~@6>".pickRestart({
  A: "[eb5@32 e5@24 ~@5 [f3,g3,a3,b3] [c4,d4,e4,f4] [g4,a4,b4,c5], g5@7 ~]/2", // G7 Dm7 Cmaj7
  B: "bb4@8 d5 ~@3 a4@8 d5 ~@3 g4@8, d5 ~@31", C: "d5 ~@3 f4@7 ~@5 [f5,d6]@5 ~ [f5,c6]@5 [f5,bb5]@4 ~", D: "g5@31 ~",
  E: "f4@5 ~ bb4 c5", F: "d5", G: "f4 ~",
})).s("gm_rock_organ").gain(0.27)

// other · rock organ · soft notes
const rock_organ_soft = note("<~@31 A ~@2 B C ~@3 A ~@2 B ~@22 A ~@2 B C ~@3 A ~@2 B ~@7>".pickRestart({
  A: "~@28 [d3,e3] ~@3", B: "c6@31 ~", C: "~@5 a4 ~@2",
})).s("gm_rock_organ").gain(0.18)

// chords · muted trumpet
const muted_trumpet = note("<~@56 A B C D E F ~ G ~@2 H I ~@4 J ~@11>".pickRestart({
  A: "[d4,f4]@2 ~@2 [d4,f4]@3 ~@5 [d4,f4]@19 ~", B: "[d4,f4]@3 ~ [d4,f4]@3 ~ [d4,f4]@18 ~@6", C: "[eb4,g4]",
  D: "~ [c4,f4]", E: "[eb4,g4]@8 ~@8 [eb4,g4] ~ [eb4,g4]@2 ~@12", F: "[c4,g4]@2 [c4,f4] ~@5", G: "[bb4,d5]@31 ~",
  H: "~@16 [bb4,d5]@4 ~@8 [bb4,d5]@3 ~", I: "~@8 [bb4,d5]@23 ~", J: "[g4,eb5]!2 ~@14",
})).s("gm_muted_trumpet").gain(0.16).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@14 A B A@3 C A@3 B A@3 D E F A G H I A J A K A G H I A L M@4 A B A@3 D A@3 B A@3 D E F A G H I A J A N H O P Q A R
  M@2 S T ~@2
>`.pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x ~@2 x!2 ~@3", C: "x!2 ~@6", D: "x!2 ~@5 x", E: "x ~@5 x ~@3 x ~@4 x", F: "x ~@10 x ~@4",
  G: "x ~@6 x!2 ~ x ~@5", H: "x ~@7 x ~ x ~@4 x", I: "x ~@2 x ~@4", J: "x ~@6 x!2 ~ x ~@2 x!2 ~", K: "x ~@7 x!2 ~@6",
  L: "x ~@12 x ~@2", M: "x ~@6 x", N: "x ~ x ~@5 x!2 ~@6", O: "x ~@6 x!2 ~ x ~@3 x!2", P: "x ~@2 x ~@2 x ~",
  Q: "~ x ~ x ~@4", R: "x", S: "x ~@28 x ~@2", T: "~ x ~@30",
})).gain(0.64)
// … 82 more lines

More by Celentano