Strudelify
Cosi celeste cover art

La Sesión Cubana

Cosi celeste

Zucchero

KeyA♭ majorTempo80 bpm
0:00/0:00
// Cosi celeste — Zucchero
// 80 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 95 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30, guitar program 27.
setcpm(80/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 C D A E F D A G H I J K L M N O P Q R S T U A V W D A X Y Z AA AB AC AD AA AB AE AF AG AH AI AJ AK AL AM AN AO
  AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF AE BG BH BI BJ BK AU BL BM BN BO BP BQ BR BS BL BT BU BV ~@6
>`.pickRestart({
  A: "ab1@2 ~ ab1 ~@2 ab1@2 ab1@6 ~@2", B: "bb1@3 bb1 ~@2 bb1@2 bb1@6 ~@2", C: "eb1@3 eb1 ~@2 eb1@2 eb1@5 ~ eb1 f1",
  D: "ab1@3 ab1 ~@2 ab1@2 ab1@4 eb1@3 ~", E: "bb1@3 bb1 ~@2 bb1@2 bb1@4 ~@2 db2 bb1",
  F: "eb1@3 eb1 ~@2 eb1@2 eb1@4 eb1 f1 bb1 eb1", G: "bb1@3 bb1 ~@2 bb1 ~ bb1@4 ~@2 f1@2",
  H: "eb1@3 eb1 ~@2 eb1@2 eb1@4 ~@2 bb1@2", I: "ab1@3 ab1 ~@2 ab1@2 ab1@3 ~ eb1@3 ~",
  J: "ab1@2 ~ ab1 ~@2 ab1@2 ab1@4 ~@2 ab1 f1", K: "bb1@3 bb1 ~@2 bb1 ~ bb1@5 ~ bb1 db2",
  L: "eb1@2 ~ eb1 ~@2 eb1 ~ eb1@4 ~@2 eb1 f1", M: "ab1@3 ab1 ~@2 ab1 ~ ab1@2 ~@2 eb1@4",
  N: "ab1@3 ab1 ~@2 ab1@2 ab1@3 ~@3 bb1@2", O: "db2@3 db2@2 ~ db2@2 db2@6 ~@2",
  P: "eb2@2 ~ eb2 ~@2 eb2@2 eb2@4 eb1 f1 bb1 f1", Q: "ab1@2 ~ ab1 ~@2 ab1 ~ ab1@4 eb1 f1 ab1 bb1",
  R: "ab1@3 ab1 ~@2 ab1@2 ab1@6 eb1 ab1", S: "db2@3 db2 ~@2 db2 ~ db2@5 ~ db2 bb1",
  T: "eb2@3 eb2 ~@2 eb2@2 eb2@4 eb1@2 f1@2", U: "ab1@3 ab1 ~@2 ab1 ~ ab1@3 ~ eb1@2 f1@2",
  V: "bb1@3 bb1 ~@2 bb1@2 bb1@5 ~ bb1@2", W: "eb1@2 ~ eb1 ~@2 eb1@2 eb1@4 ~ eb1 f1 bb1",
  X: "bb1@2 ~ bb1 ~@2 bb1@2 bb1@5 ~ db2 bb1", Y: "eb1@2 ~ eb1 ~@2 eb1@2 eb1@3 ~ eb1@2 f1@2",
  Z: "ab1@3 ab1 ~@2 ab1 ~ ab1@3 ~ eb1@3 ~", AA: "ab1@3 ab1 ~@2 ab1@2 ab1@6 ~@2",
  AB: "db2@3 db2 ~@2 db2@2 db2@5 ~ db2 bb1", AC: "eb2@2 ~ eb2 ~@2 eb2@2 eb2@6 eb1 f1",
  AD: "ab1@3 ab1 ~@2 ab1@2 ab1@4 eb1@2 f1@2", AE: "eb2@3 eb2 ~@2 eb2@2 eb2@3 ~ eb1@2 f1@2",
  AF: "ab1@3 ab1@2 ~ ab1@2 ab1@6 ab1@2", AG: "eb1@2 ~ eb1@2 ~ eb1 ~ eb1@4 ab1 bb1 eb1 g1",
  AH: "db2@2 ~ db2 ~@2 db2@2 db2@5 ~ db2@2", AI: "ab1@8 db2@5 ~ db2@2", AJ: "eb2@3 ab1 ab1@3 ab1",
  AK: "c2@3 c2 ~@2 c2@2 eb2@6 db2 eb2", AL: "bb1@2 bb1 bb1@3 bb1@2 db2@5 ~ db2@2",
  AM: "ab1@2 ab1 ab1@3 ab1@2 eb2@6 eb2@2", AN: "db2@3 db2@12 ~", AO: "eb2@3 eb2@9 eb0@4",
  AP: "ab1@3 ab1 ~@2 ab1@2 ab1@5 ~ f1@2", AQ: "bb1@3 bb1 ~@2 bb1@2 bb1@4 ~@2 db2@2",
  AR: "eb1@2 ~ eb1 ~@2 eb1@2 eb1@4 ~@2 ab1@2", AS: "db2@3 db2@2 ~ db2@2 db2@3 ~ db2@2 c2@2",
  AT: "bb1@3 bb1 ~@2 bb1@2 bb1@5 ~ f1 bb1", AU: "ab1@3 ab1 ~@2 ab1@2 ab1@5 ~ f1 ab1",
  AV: "eb1@3 eb1 ~@2 eb1@2 eb1@6 ~@2", AW: "ab1@3 ab1 ~@2 ab1@2 ab1@4 eb1@2 eb1@2",
  AX: "ab1@3 ab1 ~@2 ab1@2 eb1@3 ~ eb1@2 eb1@2", AY: "ab1@3 ab1 ~@2 ab1@2 ab1@3 ~ eb1@2 eb1@2",
  AZ: "ab1@3 ab1 ~@2 ab1@2 ab1@3 ~ eb1@4", BA: "ab1@2 ~ ab1 ~@2 ab1@2 ab1@5 ~ ab1@2",
  BB: "db2@3 db2 ~@2 db2@2 db2@4 ab1@2 db2@2", BC: "eb2@3 eb2@2 ~ eb2@2 eb2@3 ~ eb1@2 f1@2",
  BD: "ab1@3 ab1 ~@2 ab1@2 ab1@3 ~ eb1 f1 bb1 f1", BE: "ab1@3 ab1 ~@2 ab1@2 ab1@5 ~@3",
  BF: "db2@3 db2 ~@2 db2@2 db2@4 ~@2 db2@2", BG: "ab1@3 ab1 ~ f1 ab1@2 ab1@4 eb1 f1 ab1 bb1",
  BH: "ab1@2 ~ ab1 ~ eb1 ab1@2 ab1@4 ~@2 ab1@2", BI: "db2@3 db2 ~ ab1 db2@2 db2@4 ~@2 db2 ab1",
  BJ: "eb2@2 ~ eb2 ~@2 eb2@2 eb2@4 ~@2 eb1 f1", BK: "ab1@3 ab1 ~@2 ab1@2 ab1@4 ~@2 eb1 f1",
  BL: "db2@3 db2 ~@2 db2@2 db2@4 ~@2 db2 bb1", BM: "eb2@3 eb2 ~@2 eb2@2 eb2@3 ~ eb1@2 bb1 eb1",
  BN: "ab1@2 ~ ab1 ~@2 ab2@2 ab2 ~ eb2@2 eb2 ~ eb1@2", BO: "ab1@2 ~ ab1 ~@2 ab1@2 ab1@4 ~@2 ab1@2",
  BP: "db2@3 db2 ~ ab1 db2@2 db2@4 ~@2 db2 bb1", BQ: "eb2@3 eb2 ~ bb1 db2 bb1 eb2@4 eb1 f1 bb1@2",
  BR: "ab1@2 ~ ab1 ~@2 ab1@2 ab1@3 ~ eb1 f1 bb1 f1", BS: "ab1@2 ~ ab1 ~@2 ab1@2 ab1@5 ~ f1 ab1",
  BT: "eb2@2 ~ eb2 ~@2 eb2 ~ eb2@4 eb1@2 f1 bb1", BU: "ab1@2 ~ ab1@2 ~@3 eb3@4 bb2@2 ab2 ~", BV: "ab1",
})).s("gm_fretless_bass").gain(0.55)

// chords · pad warm
const pad_warm = note("<A@4 ~@7 B@6 C@3 ~@7 D@4 E@5 ~@16 F@2 G@2 H@8 ~@24 I J K L@4>".pickRestart({
  A: "[[eb4,bb4]@32 [f4,c5]@31 ~, [eb5,eb6]]/4", // Eb5 F5 Eb
  B: "[~@15 [ab2,c4,eb4]@16 [bb2,db4,f4]@16 [eb3,g3,eb4]@16 [ab2,ab3,eb4]@16 [ab2,c4,eb4]@16 [bb2,db4,f4], ~@15 ab3@14 ~@18 c4@32 ab3@14 ~@3]/6", // Ab Bbm Eb Ab5 Ab Bbm
  C: "[~@15 [eb3,g3,eb4]@16 eb4@12 [db4,f4]@4 ~, ~@14 c4@29 ~@5, ~@31 [ab2,ab3]@16 ~]/3", // Eb Db Ab
  D: "[~@15 [ab2,c4,eb4]@16 [bb2,db4,f4]@16 [eb3,g3,c4,eb4]@16 [ab2,ab3,c4,eb4], ~@15 ab3@14 ~@35]/4", // Ab Bbm Cm Ab
  E: "[~@3 db4@4 c4@4 bb3@4 [ab2,c4,eb4]@16 [bb2,db4,f4]@15 ~ [eb3,g3,eb4]@16 eb4@12 [db4,f4]@4 ~, ~@15 ab3@14 ~@17 c4@29 ~@5, ~@63 [ab2,ab3]@16 ~]/5", // Ab Bbm Eb Db Ab
  F: "[~@15 ab3@16 [bb3,f4], ~@15 eb4@14 ~@3, ~@15 c4@9 ~@8]/2", G: "[~@15 [g3,bb3,eb4]@16 [ab3,db4,f4]]/2",
  H: "[~@13 [c4,eb4]@2 [f3,bb3,d4]@16 [ab3,db4,f4]@16 [g3,bb3,eb4]@16 [ab3,c4]@60 [g3,bb3]@4 ~, ~@63 eb4@64 ~]/8", // Cm Bb Db Eb Ab Gm
  I: "c4", J: "[bb3,db4]@7 ~", K: "c4@9 ~@3 bb3@4", L: "[ab2@51 ~@13]/4",
})).s("gm_pad_warm").gain(0.24).pan(0.7)

// chords · pad warm · soft notes
const pad_warm_soft = note("<~@12 A@2 ~@2 A@2 ~@10 A@2 ~@2 A@2 ~@19 B@2 ~@33 C ~ D E@4>".pickRestart({
  A: "[~@15 bb3@13 ~@4]/2", B: "[~@9 c4@6 db4@16 ~]/2", C: "eb4, ab3@7 ~", D: "[g3,eb4]",
  E: "[c4@3 ~@5 c4@13 ~@43, [ab3,ab4]@51 ~@13, ~@6 eb4@45 ~@13]/4", // Ab
})).s("gm_pad_warm").gain(0.12).pan(0.7)

// chords · piano
const piano = note(`<
  ~@4 A B C D E B F G H I J K L M J K N O P Q R S T U V W C X Y Z AA AB N O P Q R S T U ~@7 AC AD H I AE AF AG AH AI@2
  AJ AK AL N O P Q R S T U N O P Q R S AM AN N O P Q R S AO U AP AQ AR AS@3 ~
>`.pickRestart({
  A: "[ab3,ab4,c5]@6 bb4 c5, bb4 ~@15", B: "[f4,bb4,db5]@5 eb4 ab4 bb4", C: "[g4,c5]@3 bb4, eb4@7 ~",
  D: "[c4,eb4,ab4]@12 ~@2 ab4 bb4", E: "[eb4,ab4,c5]@6 bb4 c5", F: "[eb4,g4,c5]@3 bb4",
  G: "[c4,eb4,ab4]@6 ~@2 db5 bb4 c5 ab4 bb4@2 db4@2", H: "[ab3,c4]@6 eb4@2 eb4@3 ~ c4@2 c4@2, ~@3 [ab3,eb4]",
  I: "[bb3,f4]@5 eb4 ab4 bb4, db4@9 ~@7", J: "[eb4,g4,c5]@6 eb4!2", K: "[ab3,c4,eb4,ab4]@3 [ab3,db4,eb4]",
  L: "[ab3,c4,eb4,ab4]@6 c4 eb4", M: "[bb3,db4,f4,bb4]@9 ~ eb4@2 ab4@2 bb4@2",
  N: "eb4@6 eb4@2 c4@2 c4 ~ c4@4, [ab3,ab4], c4@8 eb4@5 ~@3", O: "[db4,f4]@3 db4 [db4,f4]@3 ~, db5, ab4@11 ~@5",
  P: "[eb4,bb4]@15 ~, g4@5 ~@11", // Eb5
  Q: "[c4,eb4]@5 ~ c4@2 ~@5 ab4 bb4@2, ab3@15 ~, ab4@6 bb4 ~, ~@6 eb4@5 ~@5, ~@8 c4@7 ~", // Cm
  R: "[c4,eb4]@5 ~ c4@7 ~ [eb4,ab4] ~, ab3, ab4@13 ~@3", S: "[f4,bb4]@3 [f4,bb4]@4 [f4,bb4]",
  T: "bb4 [g4,c5]@5 [eb3,eb4,bb4]@2, eb4@9 ~@7, g4 ~@11 g4@2 ~@2", U: "[ab3,c4,eb4,ab4]@3 [db4,ab4,db5]",
  V: "[eb4,ab4]@10 c4@2 ~@2 eb4 ~, c5, ~@3 ab4", W: "db4 [f4,db5]@4 eb4 ab4 bb4, bb4@5 ~@3, f4 ~@15",
  X: "[c4,eb4,ab4]@6 bb4 c5", Y: "[c4,eb4]@4 c4 ~ bb4 c5, ab4@5 eb4@2 ~", Z: "[bb4,db5]@5 eb4 ab4 bb4, f4 ~",
  AA: "[eb4,g4]@12 eb4@3 ~, c5", AB: "[c4,eb4,ab4]@12 bb4 c5 bb4@2", AC: "~@14 ab4 bb4",
  AD: "c5@3 bb4@4 ~, [eb4,g4]@7 ~", AE: "[eb4,g4,c5]@12 ~@2 [db4,f4,ab4,eb5] ~",
  AF: "[db4,f4,ab4,eb5]@6 [db4,f4,ab4,db5]@6 [f4,ab4,db5] ~ [eb4,c5]@2", // Db Cm
  AG: "[f4,bb4]@5 ~ [f4,bb4]@4 bb4@4 c5@2, d4@3 ~", AH: "ab4@12 ~@2 eb5!2",
  AI: "[[eb4,eb5]@6 c5@8 [eb4,eb5]@7 ~ [eb4,eb5]!2 [eb4,eb5]@5 ~ [eb4,eb5]!2]/2", AJ: "[eb4,eb5] db5 c5 bb4 ab4@4",
  AK: "[eb4,eb5]@4 ~@2 [eb4,eb5]!2 [eb4,eb5]@5 ~ [eb4,eb5]!2", // Eb
  AL: "[eb4,eb5] [db4,db5] [c4,c5] [bb3,bb4] [ab3,ab4]@2 [g3,g4]@2", AM: "[eb4,eb5]@5 ~ [eb4,eb5]@10",
  AN: "[ab3,eb4,c5]@5 ~@7 [db4,ab4,db5]@4, c4@3 ~, ab4 ~@15", AO: "[g4,c5]@3 ~@3 [eb3,eb4,bb4]@2, eb4@9 ~@3 g4@2 ~@2",
  AP: "[ab2,ab3,eb4,ab4,c5]@6 bb4 c5", AQ: "[bb4,db5]@5 ~ ab4 bb4, [bb2,bb3], f4@4 ~ eb4@2 ~",
  AR: "c5 bb4, [eb3,g4]@3 ~", // Eb
  AS: "[c4@8 c4@6 ~@2 [f4,f5]@5 [c5,eb5]@3 ~ [c5,ab5]@12 ~@11, [ab3,ab4]@5 db3@3 ~@8, ~@16 ab4 ~@31]/3", // F Cm Fm Ab
})).s("gm_piano").gain(0.34)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@4 A ~@15 B ~@3 C D ~@10 B ~@3 C D ~@16 E ~@5 B ~@3 C D ~@2 B ~@3 C D ~ F B ~@3 C D ~@4 G@2 H@2 ~
>`.pickRestart({
  A: "eb4@7 ~", B: "~@14 eb4 ~", C: "~@6 eb4@7 ~ c4@2", D: "[bb3,db4]", E: "db4@13 ~@3", F: "~ ab4@3 ~@12",
  G: "[eb4@13 ~@3 eb4@15 ab3, ~@15 ab2@17]/2",
  H: "[db5@4 ~ ab4@2 ~@2 [ab3,eb4,eb5]@12 ~@11, eb4 ~@3 eb4@3 ~ ab4@12 ~@12]/2", // Ab5
})).s("gm_piano").gain(0.14)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A@4 B C D E F G H@2 ~@8 I J K L M N O P ~@8 I J K L M N O Q R S T U V W X Y Z ~@11 I J K L M N O P I J K L M N O P I J
  K L M N O P ~@7
>`.pickRestart({
  A: "[[eb3,bb3,eb4,db5]@31 ~ [f3,c4,f4,c5]@31 ~, ab4]/4", B: "[ab2,eb3,ab3,c4,eb4]", C: "[f3,bb3,db4,f4]",
  D: "[eb3,g3,c4,eb4]", E: "[c4,eb4]@3 [db4,f4], [ab2,eb3,ab3]@15 ~", F: "[ab2,eb3,c4,eb4], ab3@7 ~",
  G: "[bb2,f3,db4,f4]", H: "[[eb3,g3,eb4]@4 eb4@3 [db4,f4], c4@7 ~, ~@16 [ab2,eb3,ab3]@15 ~]/2",
  I: "[ab2,c4,eb4], ab3@7 ~", J: "[bb2,db4]", K: "[g3,c4,eb4]@7 ~, eb3", L: "c4@3 [db4,f4], ab3@15 ~",
  M: "[ab2,ab3,c4,eb4]", N: "[bb2,bb3,f4], db4@7 ~", O: "[eb3,c4,eb4], g3@7 ~", P: "[ab2,c4,eb4]@3 [db4,f4], ab3@15 ~",
  Q: "[ab2,ab3,c4,eb4]@15 ~", R: "[bb3,eb4], g3@7 ~", S: "[db4,f4], ab3@7 ~", T: "[ab3,c4,eb4] [ab3,db4,f4]",
  U: "[g3,bb3,eb4]@7 ~@5 eb4@2 f4@2, ~@7 c4@7 ~@2", V: "c4@3 bb3@5, eb4, g4@11 ~@5", W: "bb3@3 ab3@4 ~, [db4,f4]@15 ~",
  X: "c4 [bb3,g4], eb4, ab3@3 ~@5", Y: "f4", Z: "[eb3,g3,eb4]",
})).s("gm_synth_strings_1").gain(0.28)

// chords · synth strings 1 · soft notes
const synth_strings_1_soft = note(`<
  ~@5 A ~@3 B ~@11 C ~ D ~@13 C ~ D ~@7 E ~@3 F ~@13 C ~ D ~@5 C ~ D ~@5 C ~ D ~@11
>`.pickRestart({
  A: "bb2", B: "bb3@7 ~", C: "f4, bb3@13 ~@3", D: "ab2@7 ~, eb4@11 ~@5", E: "~@7 ab3@7 ~@2, ~@7 eb4@5 ~@4",
  F: "ab3@3 db4, db4@5 ~@3",
})).s("gm_synth_strings_1").gain(0.17)

// other · lead 1 square
const lead_1_square = note("<~@52 A@2 B@2 C D@2 E ~@35>".pickRestart({
  A: "[~@12 eb3 ~@2 eb5@2 c5 db5 bb4 c5 ab4 bb4 g4 ab4 f4 g4 eb4 f4 db4 eb4 c4]/2",
  B: "[db4 bb3 c4 ab3 bb3 g3 ab3 f3 g3 eb3 f3 db3 eb3@15 g4@2 ab4 bb4 [c5,db5]]/2", C: "eb5@4 f5@2 ab4@7 ~ bb4 c5",
  D: "[d5 eb5 f5 bb5@6 c6 ab5@5 ~]/2", E: "eb5 bb4 c5@2 eb5@2 c5@8 ~@2",
})).s("gm_lead_1_square").gain(0.52).pan(0.4)

// other · tubular bells
const tubular_bells = note(`<
  A B@2 C ~@16 D E F G H I J C ~@8 D E F G H I J C F K ~@2 L M N O P ~@9 Q R D E F G H I J C D E F G H I J C D E F G H I
  S C G ~@2 T ~@3
>`.pickRestart({
  A: "ab4@3 ~", B: "ab4@13 ~@3", C: "ab4@7 ~", D: "ab4@9 ~@7", E: "db5@9 ~@7", F: "eb5", G: "ab4@15 ~", H: "ab4",
  I: "bb4", J: "c5", K: "db5@15 ~", L: "g4@5 ~ g4@8 ~@2", M: "f4@6 bb4@2 ab4@5 ~@3", N: "~ ab4 g4 c4 g4@3 ~",
  O: "f4@5 ~@9 ab4 ~", P: "eb5@5 ~ eb5@7 ~@3", Q: "eb5@4 ~@2 eb5!2 eb5@4 ~@2 eb5!2", R: "eb5 db5 c5 bb4 ab4@2 g4@2",
  S: "c5@3 bb4", T: "ab5@3 ~",
})).s("gm_tubular_bells").gain(0.39).pan(0.6)

// chords · distortion guitar
const distortion_guitar = note("<~@2 A@2 ~@91>".pickRestart({
  A: "[~ db5@2 ~]/2",
})).s("gm_distortion_guitar").gain(0.24)

// chords · acoustic guitar steel · Ab Bb5 Bbm Ab Eb Ab
const acoustic_guitar_steel = note(`<
  ~@19
  [~@8 [c4,eb4,ab4] f4 [f4,bb4]!2 [db4,f4,bb4] [c4,eb4,ab4] [c4,eb4,ab4]@2, ~ ab3]
  ~@15
  [~@12 bb4 c5 bb4@2, ~@12 [eb4,g4]@3 ~]
  [[ab3,c4,eb4,ab4]@5 ~@11]
  ~@58
>`).s("gm_acoustic_guitar_steel").gain(0.16).pan(0.6)

// chords · acoustic guitar steel · soft notes · Gb
const acoustic_guitar_steel_2 = note("<~@19 [~@9 [db4,bb4] db4!2 ~@4] ~@75>")
  .s("gm_acoustic_guitar_steel").gain(0.11).pan(0.6)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@49 [~@3 bb4 ~@4] ~@45>").s("gm_electric_guitar_clean").gain(0.28)

// chords · acoustic guitar steel
const acoustic_guitar_steel_3 = note(`<
  ~@4 A B C A@2 B C A@2 B C A@2 B C D A E C A@2 B C A@2 B C A@2 B C A@2 E C A@2 B C A C E F G H I J K L A B C E M E C
  A@5 E C A@2 B C A@2 E C A@2 B C A@2 E C A@2 B C A N ~@6
>`.pickRestart({
  A: "[c4,eb4,ab4]!16, [eb3,ab3]!4", B: "[db4,f4,bb4]!16, [f3,bb3]!4", C: "[eb4,g4,bb4]!16, [eb3,bb3]!4",
  D: "[c4,eb4,ab4]!8 ~@7 [c4,eb4,ab4], [eb3,ab3]!2 ~@2", E: "[db4,f4,ab4]!16, [f3,ab3]!4",
  F: "[c4,eb4,ab4]!8 [db4,f4,ab4]!8, [eb3,ab3]!2 [f3,ab3]!2", // Ab Db Ab5 Fm
  G: "[eb4,g4,bb4]!4 [eb3,bb3,eb4,g4,bb4] [eb4,g4,bb4] [c4,eb4,ab4]!10, [eb3,bb3] ~ [eb3,ab3]!2", // Eb Ab Eb5 Ab5
  H: "[c4,eb4,g4]!8 [eb4,g4,bb4]!8, [c3,g3]!2 [eb3,bb3]!2", I: "[db4,f4,ab4]!16, [f3,bb3]!2 [f3,ab3]!2",
  J: "[c4,eb4,ab4]!8 [eb4,g4,bb4]!8, [eb3,ab3]!2 [eb3,bb3]!2", // Ab Eb Ab5 Eb5
  K: "[db3,ab3,db4,f4,ab4]@3 [db3,ab3,db4,f4,ab4]@3 [db4,f4,ab4]@7 ~@3, ~@6 [db3,ab3]@9 ~", // Db Db5
  L: "[eb3,g3,c4,eb4,g4]@3 [eb3,g3,c4,eb4,g4]@3 [eb3,g3,bb3,eb4,g4]@3 ~ [eb3,g3,bb3,eb4]@2 [eb3,g3,bb3,eb4]@2 [eb3,g3,bb3,eb4]@2", // Cm Eb
  M: "[d4,f4,bb4]!16, [f3,bb3]!4", N: "[eb3,ab3,c4,eb4,ab4]",
})).s("gm_acoustic_guitar_steel").gain(0.06)

// chords · lead 3 calliope
const lead_3_calliope = note("<A@4 ~@87 B@3 ~>".pickRestart({
  A: "[[eb3,bb3,eb4,db5]@31 ~ [f3,c4,f4,c5]@31 ~, ab4]/4", B: "[ab3,eb4,ab4,bb4,c5]/3",
})).s("gm_lead_3_calliope").gain(0.01).pan(0.4)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x ~@12]!4 [x ~@2 x!2 ~@2 x]!47 x!2 [x ~@2 x!2 ~@2 x]!35 x ~@6>").gain(0.32)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@4 [~@3 x ~@12]!84 ~@7>").gain(0.16)

// … 43 more lines

More by Zucchero