Strudelify

Il sospetto

Celentano

KeyF minorTempo93 bpm
0:00/0:00
// Il sospetto — Celentano
// 93 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(93/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 D ~@37 E F G H ~@2 I J ~@23 A K@2 L@2 M@4 ~@15 N ~@9>".pickRestart({
  A: "~@11 c5 f5 g5 ab5 bb5", B: "f5@3 c6@5", C: "~@14 bb5 ab5", D: "g5@6 bb5@7 ~@3", E: "~@14 [c4,f4] ~",
  F: "[c4,f4] ~ f3 ~@3 ab3 ~ ab3 [c4,eb4] ~ ab3 ~ f3 [ab3,eb4,f4] ~, ~@4 f3@7 ~ [c4,f4]@2 c4@2", // F5 Cm Fm7 F5
  G: "~@2 ab3@2 [c4,f4] ~ ab3 ~@2 [c4,f4] ~ ab3 [c4,eb4]@2 [ab3,c4,f4] ~, f3@5 ~@3 f3@7 ~", // F5 Cm Fm
  H: "~@2 ab3@2 [c4,f4] ~ [f3,ab3] [c4,eb4] [f3,ab3] [c4,f4] ~ [f3,ab3] [c4,f4] [f3,ab3] [c4,f4] ~, f3 ~@3, ~@2 c4 ~@13", // F5 Fm Cm Fm F5 Fm F5 Fm …
  I: "~@4 f4 ~@2 f4@3 g4 ~ g4@4", J: "~@4 f4!2 ~ f4 ~ g4 ~@6",
  K: "[[ab3,c4,db4,f4]@7 ~@2 [ab3,c4,db4,f4] ~@3 eb6@3 ~@6 f5 ab5 ~ bb5 ~ bb5@2 ab5 ~@2, c6@11 [c4,db4,f4]@8 ~ [ab3,c4,db4,f4]@4 ~@8, ~@11 ab3@5 ab5@6 ~@5 ab5 ~@4]/2", // Dbmaj7
  L: "[~@3 c5 eb5 g5 ~ g5 ~ f5 ~ f5@2 eb5 ~@2 [c4,eb4,g4] ~ [ab3,c4,eb4,g4] ~ g4@2 ~@5 c5 f5 g5 ab5 bb5, [ab3,c4,eb4,g4]@14 f5@5 ~ [ab3,c4,eb4]@10 ~@2, ~@12 g4@3 ~]/2", // Cm Abmaj7 Ab
  M: "[~@4 c6 ~ bb5 c6 ~ bb5 ~@3 [ab3,c4,db4,f4] ~@2 [ab3,c4,db4,f4] ~@3 f4@2 ~ f4 ~@4 c5 g5 f4 ~@7 [c4,eb4] ~@2 [f3,ab3,c4,eb4] ~@3 c5 ~ eb5 g5 ~ [a5,bb5] bb5 ~ bb5 g5 bb5 g5@3 ~@4 bb5, ~@2 [ab3,c4,db4,f4]@6 ~@3 ab5@11 ~@5 f4@2 ~@2 [bb4,g5]@12 [f3,ab3,c4,eb4]@8 ~@13, ~@10 [ab3,c4,db4]@4 ab5 ~@17]/4", // Dbmaj7 Cm Fm7 Bbmaj7 Dbmaj7 Eb Fm7 Dbmaj7
  N: "~@11 c4 f4 g4 ab4 bb4",
})).s("gm_piano").gain(0.36)

// bass · electric bass finger
const bass = note(`<
  ~@5 A B A B A B A B A C D E A B A B F G H I J K L M J K L M N O P Q R S T U A B A B F G H I J K L M J K L M N O V Q R
  S T U W X N Y Z AA AB@2 AC AD AE AF AC AD AE AF N O V AG R S T U J K L M J K L M J K L M J K AH@2 ~
>`.pickRestart({
  A: "f2@6 ~ f1!2 ~ f1@2 f2@2 ~@2", B: "f1@4 c2@3 f2@2 ~ f2@4 f1 ~", C: "eb2@7 ~ eb2!2 ~@2 eb3@2 eb2 ~, ~@11 eb2@2 ~@3",
  D: "db2@6 ~ db2!2 ~ db2@2 db3@2 db2@2", E: "c2@6 ~ c2!2 ~ c2@2 bb1@2 c2@2", F: "g1@8 g2!2 g2@2 g1@2 g2 ~",
  G: "ab1@4 ab2@3 ab1!2 ~ ab1@2 eb2@2 ab1 ~", H: "eb2@6 ~ eb2!2 ~ eb2@4 bb2@2", I: "eb2@6 ~ eb2!2 ~@7",
  J: "bb1@4 bb2@2 ~ bb1!2 ~ bb1@4 f1@2", K: "bb1@6 ~@2 bb1!2 bb1@2 f2@2 ~@2", L: "f1@5 ~@2 f1@2 ~ f1@2 f2@4",
  M: "f1@4 f2@2 ~ f1!2 ~ f1@2 c2@2 bb1 ~", N: "bb1@6 ~ bb1!2 ~ bb1@2 f2@2 bb1 ~", O: "c2@6 ~ c2!2 ~ c2@2 g1@2 c2 ~",
  P: "f2@6 f1 ~ f1@6 f2@2", Q: "eb2@6 eb2 ~ eb2@4 eb3@2 eb2 ~", R: "db2@5 ~ db2 ~ db2@6 ab2 db2",
  S: "c2@6 g1 b1 ~ c2@5 g1 ~", T: "f1@4 f2@3 f1!2 ~ f1@2 c2@4", U: "f1@4 f2@3 f1 f1@4 f2@2 ~@2",
  V: "f2@5 ~ f1 ~ f1@6 f2@2", W: "db2@5 ~ db2 ~ db2 ~ db2@2 ab2@2 db2@2", X: "c2@6 ~ c2!2 ~ c2@2 c3@2 c2 ~",
  Y: "f1@4 f2@3 c2 f2 ~ f2@2 c2@2 f2 ~", Z: "g1@4 g2@2 ~ g1!2 ~ g1@2 g2@2 eb2 ~",
  AA: "ab1@4 ab2@2 ~ ab1!2 ~ ab1@2 ab2@2 [f2,gb2] e2", AB: "eb2@6 ~@2 eb2!2 eb2@2 bb2@2 ~@2",
  AC: "bb1@6 ~ bb1!2 ~ bb1 ~@3 f2@2", AD: "bb1@7 f1 bb1 ~ bb1@3 ~@3", AE: "f1@4 f2@3 f1!2 ~ f1@5 bb1",
  AF: "c2@4 f1@3 f2!2 ~ f2@2 f1@2 ~@2", AG: "d2@6 ~ d2!2 ~ d2@3 ~ d2 ~", AH: "f1/2",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@5 A B A B A B A B A B C D A B A B E F G H I J K L I J K L M N O P Q R S T A B A B E F G H I J K L I J K L M N O P Q
  R S T U V W X Y Z AA@2 AB AC AD AE AB AC AD AE M N O AF Q R S T I J K L I J K L I J K L I J ~@3
>`.pickRestart({
  A: "~@2 [f3,c4] ~@3 [f3,c4] ~ [g3,c4]!2 ~ [f3,c4] ~ [g3,c4] ~ [f3,c4]", // F5 C5 F5 C5 F5
  B: "[ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~@3 [ab3,c4]!2 ~ [g3,c4] ~ [ab3,c4] ~@2", // Ab C5 Ab
  C: "[db4,f4] ~ [db4,f4] ~ ab3 ~ db4 [ab3,db4] ~ [ab3,db4] ~ [ab3,db4] ~ [ab3,c4] [ab3,db4] ~", // Db Db5 Ab Db5
  D: "[ab3,c4] ~ [ab3,c4] ~ eb4 ~ c4 [eb4,ab4] ~ [eb4,ab4] ~ c4 [eb4,ab4] ~ [c4,ab4] ~", // Ab Ab5 Fm
  E: "[bb3,eb4] ~ [bb3,eb4]@2 f3 [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] [bb3,eb4]@2 [bb3,c4] ~", // Eb5 Bbsus2
  F: "~ ab3 ~ [bb3,c4] ~ [bb3,c4] ~ [bb3,c4] ~ [bb3,c4] ~ [ab3,c4]!2 ~ [ab3,c4] ~, [ab3,c4] ~@7", // Bbsus2 Ab
  G: "[bb3,eb4] ~ [bb3,eb4] ~@3 [bb3,eb4]!2 ~ [bb3,eb4] ~ [g3,eb4] ~ [bb3,eb4] ~ [bb3,eb4]", // Eb5 Cm Eb5
  H: "[bb3,eb4] ~ [bb3,eb4] ~@2 [bb3,eb4] ~ [bb3,eb4] ~@8, ~@2 g3 ~@5", // Eb5
  I: "~@2 db4 ~ [ab3,db4] ~@2 [ab3,db4] ~ [ab3,db4] ~ f3 [bb3,db4] ~ [ab3,db4] ~", // Db5 Bbm Db5
  J: "[bb3,db4] ~ ab3 ~ [bb3,db4] ~ ab3 [bb3,db4] ~ [bb3,db4] ~ [ab3,db4] [ab3,bb3,db4]@2 [ab3,db4] ~", // Bbm Db5 Bbm7 Db5
  K: "[f3,ab3] ~ ab3 ~ [ab3,bb3] ~ ab3 [ab3,c4] ~ [ab3,c4] ~ [g3,bb3] [ab3,c4] ~ [g3,bb3] ~", // Fm Absus2 Ab Gm Ab Gm
  L: "[ab3,c4] ~ [ab3,c4] ~ [g3,bb3] [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [g3,bb3] [g3,ab3,c4] ~ [g3,bb3] ~", // Ab Gm Ab Gm Abmaj7 Gm
  M: "db4 ~ [bb3,db4] ~ [ab3,db4] ~ bb3 [bb3,db4] ~ [bb3,db4] ~ [ab3,db4]!2 ~ [bb3,db4] ~", // Bbm Db5 Bbm Db5 Bbm
  N: "[bb3,e4] ~ c4 ~ [bb3,e4] ~ c4 [bb3,e4] ~ [bb3,e4] ~ [c4,e4] [bb3,e4]@2 c4 ~", // Bbdim C Bbdim
  O: "[ab3,c4]@2 f3 ~ [ab3,c4] ~ f3 [ab3,c4] ~ [ab3,c4] ~ [g3,bb3] [ab3,c4]@2 [ab3,c4] ~", // Ab Gm Ab
  P: "[ab3,c4] ~ [ab3,c4] ~ [g3,bb3] ~ [ab3,c4]!2 ~ [ab3,c4] ~ [g3,bb3] [ab3,c4] ~ [g3,bb3] ~", // Ab Gm Ab Gm Ab Gm
  Q: "ab4 ~ [db4,ab4] ~ [db4,ab4] ~ db4 [eb4,ab4] ~ [eb4,ab4] ~ [db4,ab4] [db4,eb4,ab4] ~ [db4,ab4] ~", // Db5 Ab5 Db5 Dbsus2 Db5
  R: "[c4,g4] ~ [c4,g4] ~ [bb3,c4,g4] ~ [c4,g4]!2 ~ [c4,g4] ~ [bb3,c4,g4] [c4,g4] ~ [bb3,c4,g4] ~", // C5 C7 C5 C7 C5 C7
  S: "[ab3,c4] ~ [ab3,c4] ~ [g3,bb3] ~@2 [g3,bb3] ~ [g3,bb3] ~ [g3,bb3]!2 ~ [ab3,c4]@2", // Ab Gm Ab
  T: "~@2 [ab3,c4] ~@3 [g3,bb3] ~@2 [g3,bb3] ~ [g3,bb3] ~ [g3,bb3] [f3,ab3] ~", // Ab Gm Fm
  U: "~@4 [ab3,db4] ~ f3 [ab3,db4] ~ [ab3,db4] ~ f3 [ab3,db4] ~@3", // Db5
  V: "[ab3,c4] ~ [ab3,c4] ~@3 [c4,eb4]!2 ~ [c4,ab4] ~ [c4,eb4] [c4,ab4] ~ [c4,eb4] ~", // Ab Cm Fm Cm Fm Cm
  W: "[bb3,f4] ~ [bb3,f4] ~ [ab3,db4] ~ [bb3,f4]!2 ~ [bb3,f4] ~ [ab3,db4] [ab3,db4,f4] ~ db4 ~", // Bb5 Db5 Bb5 Db5 Db
  X: "~@2 [ab3,c4]!2 ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ bb3 [bb3,c4] ~ [ab3,c4] ~", // Ab Bbsus2 Ab
  Y: "[eb4,g4] ~ [eb4,g4] ~ [eb4,g4]@2 [eb4,g4] bb3 ~ bb3 ~ bb3 [bb3,eb4]@2 [eb4,g4] ~", // Eb Eb5 Eb
  Z: "[ab3,c4]@4 ab3@3 ~ [ab3,c4]!2 ~@3 [ab3,c4] ab3 ~, ~@4 c4 ~@11", // Ab
  AA: "[bb3,eb4] ~ [bb3,eb4] ~ [g3,eb4] ~ [bb3,eb4]!2 ~ [bb3,eb4] ~ g3 [bb3,eb4] ~ [g3,eb4] ~", // Eb5 Cm Eb5 Cm
  AB: "[bb3,f4] ~ [bb3,f4] ~ [ab3,f4] [bb3,f4] ~ [bb3,f4] ~ [bb3,f4] ~ [ab3,f4] [ab3,bb3,f4] ~ [bb3,f4] ~", // Bb5 Db Bb5 Db Bb7 Bb5
  AC: "[bb3,f4] ~ [bb3,f4] ~ [ab3,f4] [bb3,f4] ~ [bb3,f4] ~ [bb3,f4] ~@2 [bb3,f4] ~ [bb3,f4] ~, ~@11 ab3@2 ~@3", // Bb5 Db Bb5
  AD: "[ab3,c4] ~ [ab3,c4] ~ [ab3,c4]@2 bb3 c4 ~ [bb3,c4] ~ [bb3,c4]!2 ~ [ab3,c4] ~", // Ab Bbsus2 Ab
  AE: "[ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [g3,bb3]!2 ~ [ab3,c4] ~ [g3,bb3]!2 ~ [ab3,c4] ~", // Ab Gm Ab Gm Ab
  AF: "ab3 ~ f3 ab3 ~ ab3 ~ f3 [ab3,c4] ~ f3 [ab3,c4] ~ [ab3,c4] ~ [f3,c4]", // Ab F5
})).s("gm_electric_guitar_muted").gain(0.28).pan(0.7)

// chords · epiano1
const epiano1 = note(`<
  ~@4 A B C B C B C B C B C D E B C B C F G H@2 ~@8 I J K L M N O P B C B C F G H@2 ~@8 I J K L M N O P Q R S T U V W@2
  ~@8 I J K X M N O P ~@17
>`.pickRestart({
  A: "f2!2 ~ f3@2 ~ c4@2 eb4@4 [ab3,c4,f4]@2 f3 ~, ~@5 ab3@2 ~ ab3@2 ~@6, ~@8 c4 ~@3 eb4 ~@3", // Fm
  B: "[g3,ab3]@3 ~@4 f3, [f2,bb3,c4], eb4@11 g3@5, ~@3 g3 f3@2 eb4@2, ~@7 ab3@9", // Abmaj7 Fsus4
  C: "~@10 [ab3,c4,eb4]@2 ~ [ab3,c4,eb4,ab4]@3, [f2,bb3], [ab3,c4,eb4]@5 g4@3, ~@2 f3!2", // Ab Bb5 Ab
  D: "f4@6 f4@2 f4@4 ~ db4@3, [db3,ab3,eb4], ab4@3 [f4,ab4], ~ db5", // Dbsus2 Fm
  E: "~@3 eb4@2 ab3@2 ab3, [c3,c5], eb4@3 [ab4,eb5]@5, ~@2 ab3@2 ~ [eb4,bb4]@3", // C Ab5 Eb5
  F: "f4@4 ~@8 [eb4,f4,bb4]@2 [bb3,f4] ~, eb5@15 ~, [f3,bb3]@10 [f3,bb3]@5 ~, eb4@3 eb4@3 ~@2, bb4 ~@3 [f4,bb4]@4 [f4,bb4]@4 ~@4", // Ebsus2 Bb5
  G: "[eb4,ab4]@4 [eb4,ab4]@3 eb4 ~@3 eb4 [eb4,ab4]@2 ab3 ~, ab3@7 ~, c5@8 [c5,eb5]@7 ~, ~@4 bb4@11 ~, ~@8 [eb4,ab4]@2 ab2@5 ~", // Ab5 Cm Ab5
  H: "[~@2 bb3@2 eb4@4 ~@14 bb3@2 [eb3,eb4,g4,bb4] ~@7, [eb3,bb4] f4@2 ~, eb4@2 bb3@2 [eb4,bb4] bb3 [eb4,bb4] bb3@4 ~@5, ~@4 eb3@5 eb3@3 ~@4, ~@2 g4@2 [eb4,g4,bb4]!2 ~@2]/2", // Eb Eb5 Eb
  I: "c4@2 ~ db4@2 ~@2 db4, [bb2,f4], ab3@5 db4 ab3@2, db4@3 ~@2 ab4@3, e4 ~@3 c4@12", // Bb5
  J: "[c4,g4]@4 ~@2 bb3@4 e4 ~@3 d4@2, c3, e4@9 ~ g4@6, bb3@3 ~@3 bb3@2, ~@4 [c4,d4,g4]@5 ~ c4@4 ~@2", // C5 Csus2
  K: "~@6 c5@3 ~ c5@2 ~ eb4@3, [f3,ab3], eb4@9 eb4@4 ~@3, [ab4,c5]@3 ab4@3 [ab4,c5]@2, ~@2 f4@3 f4@3", // Fm Ab
  L: "~@5 f4 ~ eb4, eb3, [ab4,c5]@3 ab4@5, f4@2 f4 c5@2 eb4 [f4,c5]@2, ~ eb4@3 c4@4", // Ab F5
  M: "b3@3 ~@2 b3@2 b3@3 b3@2 ~@2 ab3@2, db3@5 db3@3, [db4,f4,ab4]@6 ~ [db4,f4,ab4]@5 [b3,db4,f4,ab4]@4, ~@3 ab3@7 ab3@4 ~@2", // Db Db7
  N: "d4@4 d4@2 ~@6 [d4,g4]@2 bb3 ~, bb3@5 bb3@2 ~, c3@8 c3@7 ~, [e4,g4]@6 e4@9 ~, ~@3 [d4,g4]@3 ~@2", // G5 Em G5
  O: "[f4,ab4,c5]@3 f4 [f4,ab4,c5]@5 [eb4,ab4] c5 ~@3 eb4@2, [f3,ab3], eb4@9 ~@2 eb4@3 ~@2, ~@3 [ab4,bb4,c5]", // Fm Ab5 Fm Ab
  P: "~@4 c5@2 ~ f4@2 ~@3 g4@2 eb4 ~, f3@15 ~, [g4,c5]@4 g4@2 [eb4,c5]@3 eb4 [f4,c5]@4 ~@2, ~ ab3@6 ~, ~ eb4@2 ab4@4 ~", // C5 Cm F5
  Q: "~@7 db5, db3, [eb4,f4,ab4]@7 ~@3 f4@6, ~ ab3@3, ~@3 ab4", // Fm7
  R: "~@6 [eb4,c5] ~, c3@7 ~, c5@5 ab3@2 ~, ~ eb4@2 ~, ~@3 ab4@4 ~", // Cm
  S: "~@12 [db4,ab4]@3 ~, ab4@10 ab3@5 ~, db4@4 c4@11 ~, ~@2 bb2@13 ~, ~ ab3@2 db4@3 ~@2", // Db5
  T: "~@12 ab3@2 f4 ~, [f3,f4]@10 ab4@5 ~, c5@4 c5@11 ~, ~@2 c4@13 ~, ~@4 ab4@2 g4@9 ~", // F
  U: "bb4@2 ~@5 eb4, eb4@5 eb3@3, ~@2 bb4@3 eb4@2 ~, ~@3 eb5@5, ~@3 g4@3 [g4,bb4]@2", // Gm
  V: "~@7 eb4, [ab3,c5], bb4@5 eb4@2 ~, [ab4,eb5]@3 eb5@5, ~@2 eb4 ab4@3 [ab4,bb4]@2", // Ab Ab5 Absus2
  W: "[g4,bb4]@3 ~@9 [bb4,eb5]@2 eb4 ~, eb3@15 ~, eb5@3 eb4 eb5 eb4@2 ~, ~@3 eb4 g4@4 g4@7 ~, ~ bb4@2 ~", // Gm Eb5
  X: "[c4,f4]@6 ~@6 f4@2 ab4 ~, ~@6 f3@9 ~, ~@8 ab3@7 ~, ~@10 c4@5 ~", // F5
})).s("gm_epiano1").gain(0.38).pan(0.3)

// chords · marimba · Cm F5 Cm F5 Cm F5
const marimba = note(`<
  ~@6
  [~@10 [c5,eb5] ~ [c5,eb5]!2 ~ [c5,f5]]
  ~@11
  [~@10 [c5,eb5] ~ [c5,eb5]!2 ~ [c5,f5]]
  ~@23
  [~@10 [c5,eb5] ~ [c5,eb5]!2 ~ [c5,f5]]
  ~@63
>`).s("gm_marimba").gain(0.35)

// chords · pad new age
const pad_new_age = note(`<
  ~@27 A@2 B@2 A@2 ~@4 C D E@2 ~@6 F@2 ~@2 A@2 B@2 A@2 ~@4 C D E@2 G H I J K L@3 M@2 N@2 M@2 N@2 ~@3 O P D E@2 ~@2 A@2
  B@2 A@2 ~@2 A@2 B@2 A@2 ~
>`.pickRestart({
  A: "[~ f4, [f3,eb4,g4]]/2", B: "[bb3@3 ab3@5 ~@3 ab4@5, f4, db4@7 ~ [bb3,db4]@8]/2",
  C: "[db3,ab3,b3,db4,f4,ab4]@15 ~", D: "[c3,bb3,c4,e4,ab4]",
  E: "[g4@6 ~@2 ab4@4 ~@7 ab3@13, f3@19 ~@13, c4@15 ~ [c4,eb4]@15 ~, eb4@3 g4@5]/2", F: "[~@7 eb4@25, [g4,bb4,eb5]]/2",
  G: "[db3,ab3,db4,eb4,f4,ab4]", H: "[c3,ab3,c4,eb4,ab4]", I: "[db4,eb4,f4]@9 ~@3 f4@3 ~, ab4@13 ~@3, ~@9 db4@7",
  J: "g4@3 ab4, [c4,eb4]", K: "[g3,bb3,eb4,g4]",
  L: "[c5@7 ~@5 c4@3 ~ eb3@8 bb3@8 eb3@8 bb3@8, eb4@11 ~@5, [ab3,ab4] g4 g4]/3", M: "[ab3,c4,db4,f4]/2",
  N: "[ab3,c4,eb4,g4]/2", O: "[c4,d4,f4,ab4]", P: "[ab3,b3,db4,f4,ab4]@15 ~",
})).s("gm_pad_new_age").gain(0.3).pan(0.3)

// chords · pad new age · soft notes
const pad_new_age_soft = note(`<
  ~@27 A@2 ~@2 A@2 ~@18 A@2 ~@2 A@2 ~@10 B ~@23 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~
>`.pickRestart({
  A: "[~@3 bb4, ~@3 c4@29]/2", B: "~@7 ab4",
})).s("gm_pad_new_age").gain(0.12).pan(0.3)

// chords · rock organ
const rock_organ = note(`<
  ~@4 A ~@15 B ~@4 C@2 D@4 E@3 ~@10 B ~@4 C@2 D@4 E@3 ~@7 F G ~@3 H I ~@17 C@2 D@12 ~@3
>`.pickRestart({
  A: "~@2 [ab5,bb5] [bb5,c6] [f5,ab5] ab5 bb5 [bb5,c6] [f5,ab5] [ab5,bb5] c6 [ab5,bb5] [f5,ab5] [bb5,c6] [ab5,bb5] f5", // Absus2 Bbsus2 Fm Bbsus2 Fm Absus2 Fm Bbsus2 …
  B: "~@6 eb5 f5 eb5 c5 eb5 f5 eb5 c5 eb5 c5", C: "[db6@25 bb5 gb5 ~@5, [f5,ab5]@27 ~@5]/2",
  D: "[~@4 ab5@4 ~ eb5@23 db6@25 bb5 gb5 ~@5, ~@9 g5@16 ~@7 [f5,ab5]@27 ~@5]/4", // Fm
  E: "[~@4 ab5@4 ~ eb5@24 ~@15, ~@9 g5@16 ~@23]/3",
  F: "[ab4,db5]@7 ~ [ab4,db5] ~ ab4 ~ [ab4,db5] ~ [ab4,eb5] ~, f5@3 ~, eb5 ~@7", // Db5 Ab5
  G: "~@2 [ab4,c5,eb5] ~@3 [c5,eb5,ab5]@3 ~ [c5,eb5,ab5] ~@3 [c5,eb5] ~", // Ab Cm
  H: "[c5,eb5]@2 ~@2 [c5,eb5]@3 ~ [eb5,ab5]@2 c5 ~ [eb5,ab5]@2 c5 ~, ~@8 c5 ~@7", // Cm Ab5
  I: "[bb4,g5]@2 ~@2 [eb5,g5]@2 bb4@2 [eb5,g5]@2 bb4@2 [eb5,g5]@2 [bb4,g5] ~, eb5 ~@3 bb4 ~@11", // Eb
})).s("gm_rock_organ").gain(0.25).pan(0.7)

// chords · rock organ · soft notes
const rock_organ_soft = note(`<
  ~@20 A ~@6 B C ~@2 B C ~@11 A ~@6 B C ~@2 B C ~@34 B C ~@2 B C ~@2 B C ~@5
>`.pickRestart({
  A: "~@6 c5 ~@9", B: "~@4 f5@5 ~@7", C: "~ c5",
})).s("gm_rock_organ").gain(0.15).pan(0.7)

// chords · string ensemble 1
const string_ensemble_1 = note("<~ A@2 B@2 ~@101>".pickRestart({
  A: "[~@19 eb5@8 ~@5, [bb2,f3,f4,ab4,c5]]/2", B: "[f3,ab3,c4,eb4,g4]/2",
})).s("gm_string_ensemble_1").gain(0.11).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@5
  [x ~@6 x!2 ~ x ~@5]!19
  [x ~@6 x!2 ~@7]
  [x ~@6 x!2 ~ x ~@5]!23
  [x ~@6 x!2 ~@7]
  [x ~@6 x!2 ~ x ~@5]!54
  ~@3
>`).gain(0.57)

// drums · snare
const snare = s("sd").struct("<~@5 [~ x ~ x]!19 [~ x ~@2] [~ x ~ x]!23 [~ x ~@2] [~ x ~ x]!54 ~@3>").gain(0.57)

// drums · hihat
const hihat = s("hh").struct("<~@5 [x!8]!19 [x!5 ~@3] [x!8]!23 [x!5 ~@3] [x!8]!54 ~@3>").gain(0.29)

// drums · mid tom
const mid_tom = s("mt").struct("<~@102 [~@11 x!2 ~@3] ~@3>").gain(0.5)

// drums · high tom
const high_tom = s("ht").struct("<~@102 [~@7 x!2 ~@5 x ~] ~@3>").gain(0.43)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@35 B ~@23 B ~@3 C ~@2 D ~@16 B ~@14 C ~@2>".pickRestart({
  A: "~@10 x!5 ~", B: "~@12 x!4", C: "x", D: "~@3 x!2 ~@3",
})).gain(0.29)

// drums · ride
const ride = s("rd").struct(`<
// … 17 more lines

More by Celentano