Strudelify
In amore cover art

Morandi

In amore

Morandi

KeyD majorTempo71 bpm
0:00/0:00
// In amore — Morandi
// 71 bpm, 4/4, key D 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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 68 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(71/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger
const bass = note(`<
  ~@3 A B C D E F C D G@4 H I J@2 H K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AB AF AG AH AI AJ AK AL@2 AM AK AN AO
  AP AQ@2 AR AS@2 AT AJ AK AU@2 AV@3
>`.pickRestart({
  A: "~ d1", B: "g1", C: "f#1@2 g1 f#1", D: "e1 b1", E: "c2@2 b1 a1", F: "g1@7 e1",
  G: "[c2@4 d2@4 g1@4 g1@7 d2 g2@8 g1@8 g2@4 g1@14 e1@2 f#1@8]/4", H: "g1 f#1 e1@2", I: "b1 c2",
  J: "[b1@2 a1@2 g1@7 e1 f#1@4]/2", K: "b1@2 c2 d2", L: "g1@11 ~ g1@4 e1@16", M: "d#1@2 d#2@2 d2@3 d1",
  N: "e1@12 g1@4 a1@15 ~", O: "d2 g1", P: "f#1 f#2 e2@2", Q: "d#2@12 b1@4 d2@11 ~ d2@3 ~", R: "c#2@13 ~@3 d2@14 ~@2",
  S: "d2@8 a1@7 ~ g1@11 ~ g1@2 ~@2", T: "g1@5 ~ g1@2 g2@8 f#1@11 ~ f#1@2 ~@2", U: "g1@4 f#1@4 e1@5 ~ e1 ~",
  V: "b1@7 ~ c2@4 d2@4", W: "g1@12 d2@4 g2@12 d2 ~ b1 ~", X: "g1@12 d2@4 f#2@8 f#1@7 ~", Y: "e2@4 d#2@3 b1",
  Z: "d2@11 ~ d2@3 ~ c#2@13 ~@3", AA: "d2@6 a1@2 d2@7 ~", AB: "g1@12 d2@4 g2@15 ~", AC: "c2@5 ~ c2 ~ c2@7 g1",
  AD: "b1@12 c#2@4 e2@12 e2 ~@3", AE: "a1 d2", AF: "d#2@3 a#1 d#2@3 a#1", AG: "d2@3 b2 g1@4 g1@3 d2 g2@2 g1@2",
  AH: "c2@3 c2 c2@3 e2", AI: "e2@6 e2 ~ e2@4 e3@4 e2@8 e2@8", AJ: "~ a1@8 a2@3 e2 a2@3", AK: "~ g#1@8 a1@4 g#1@3",
  AL: "[~ f#1@6 b1@2 c#2@6 c#2@2 d2@6 a1@2 c#2@4 b1@3]/2", AM: "~ a1@6 e2@2 a2@7", AN: "~ f#1@6 b1@2 c#2@7",
  AO: "~ d2@4 e1@4 a1@7", AP: "~ f#1@8 f1@4 f2@3", AQ: "[~@2 e2@12 e1@4 f#1@12 a1@4 b1@15 ~ e2@14]/2",
  AR: "~ a1@8 g#1@4 g#2@3", AS: "[~@2 f#2@16 f2@12 c#2@4 e2@11 ~ e2@3 ~ d#2@13 ~]/2", AT: "~ e2@7 ~ e2@4 b1@3",
  AU: "[~@3 f#1@17 g#2@5 e2@5 c#2@5 g#1@5 d1@12 ~ e1@6 a1@5]/2", AV: "[~@2 a1@79 ~@15]/3",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A B A B C ~@16 D E F G H@2 I@2 ~@5 J@2 K L M N O@2 P Q R S T U V W T X Y Z AA@8 U AB@2 AC@3
>`.pickRestart({
  A: "[b2,d4] [a2,c4]", B: "[g2,b3] [a2,c4]", C: "[g2,b3]@13 ~@3", D: "~@8 d5@2 c5@5 ~",
  E: "d5@4 c5@10 ~@2 c5@4 b4@9 ~@3", F: "c5@2 b4@5 ~ b4@2 a4@6", G: "d5 b4", H: "[d5@7 f#5 g5@20 a5@4]/2",
  I: "[b5@15 ~ d6@28 ~@20]/2", J: "[d5 c5@3 d5 c5@4 b4@3 e5@4]/2", K: "g5 [e5,a5]", L: "[g5,b5]@31 ~",
  M: "[g3,c4,e4,c5,e5]", N: "[d4,f#4,d5,f#5]@4 [e5,g5]@2 [f#5,a5] [g5,b5], b3, ~ [e4,g4]",
  O: "[[c4,e4,a5,c6]@2 [f#4,a5,d6]@2 b5 g6 f#6 d6, a3 [b3,g4,g5], ~ d4@3]/2", P: "[a#3,d#4,g4,a#5,d#6]",
  Q: "[f4,a4,a5,d6]@8 [g5,a#5]@3 [a5,c6]@3 [a#5,d6]@2, d4, ~ [g4,a#4]", R: "[c6,d#6] [d#6,g6], [c4,d#4,g4]",
  S: "[d6,f#6] [a5,e6] [a5,d6] [f#5,a5], [a3,d4,f#4]", T: "~ [c#4,e4,c#6]@8 [d4,f#4,d6]@7, ~ [a3,a5]@15",
  U: "~ [g#3,b3,b5,e6]@8 [a3,c#4,a5,c#6]@4 [g#3,b3,g#5,b5]@3, ~ e4@15", // E A G#m
  V: "~ [f#5,a5]@4 f#6@4 [c#4,e4,g#4,e6]@7, ~ [f#3,a3,c#4]@8 ~@7, ~@5 c#6@11", // F#m C#m F#m
  W: "~ [a3,d4,f#4,d6,f#6]@8 [g#3,b3,e4,c#6,e6]@4 [f#3,a3,d4,b5,d6]@3", // D C#m7 Bm7
  X: "~ [g#5,b5]@4 [d6,f#6]@4 [a3,c#4,e4,c#6,e6]@4 [g#3,b3,e4,b5,d6]@3, ~ [g#3,b3,e4]@8 ~@7", // G#m D A E7 E
  Y: "~ [f#3,a3,c#4,a5]@8 [c#4,e4,g#4,g#5]@7, ~ c#6@15", // F#m C#m
  Z: "~ [a3,d4,f#4,f#5,a5]@4 [b3,e4,g#4,g#5,b5]@4 [c#4,e4,a4,e5,a5]@7, ~ b5 ~@14", // D E A
  AA: "[~ f#3@8 f3@8 e3@8 d#3@8 [a4,a5]@8 [b4,b5]@4 [a4,a5]@2 [b4,b5]@2 [e4,c#5,c#6]@2 e5@2 [a4,a5]@2 [c#5,c#6]@2 [b4,b5]@3 [e5,e6]@3 [c#5,c#6]@2 [f#3,d5,d6]@8 [f3,f5,f6]@8 [e5,e6]@4 [a5,a6]@2 [b5,b6]@2 [d#3,c#6,c#7]@8 [d4,e4,b5,b6]@16 [c#4,e4,c#6]@8 [d4,f#4,d6]@7, ~ a3@48 [a3,c#4]@8 [g#3,b3]@8 a3@48 [a3,a5]@15, ~ [d4,d5]@16 [c#4,c#5]@16 [d4,f#4]@16 ~@2 e4@14 d4@16 c#4@16 ~@31, ~@81 e3@8 ~@39]/8", // A B A B C#m A C# B …
  AB: "[~@2 [f#3,a3,c#4]@17 ~ [c#4,e4,g#4]@20 [f#3,a3,d4]@12 [g#3,b3,e4]@12, ~@2 [e5,f#5,a5]@9 ~@53]/2", // F#m C#m D E F#m7
  AC: "[~ [a3,c#4,e4]@79 ~@16]/3", // A
})).s("gm_string_ensemble_2").gain(0.12)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@13 A B C@4 D@3 E F ~ G H I ~@5 J K L@3 ~@3 M N O@2 P Q R S T U V W X Y Z ~ AA AB@2 AC AD AE AF@2 AG@2 ~
>`.pickRestart({
  A: "~@8 b3@2 d4 g4@2 b4 c5@2", B: "~@16 d4@4 f#4@2 c5@3 ~ c5@6",
  C: "[b4@5 ~@15 g4 ~ a4 ~ b4@2 c5@2 ~@2 b4@4 a4@2 g4@3 ~ f#4@4 ~@8 e4@2 f#4 ~ g4@2 ~ a4@2 ~ d4@6 ~@12 b3@4 d4@4 g4@2 b4@4 c5@6 ~@12 d4@4 f#4@4 c5@4 d5@4]/4",
  D: "[b4@8 a4@5 ~@7 g4@2 a4@2 b4@4 c5@2 b4@6 a4@2 ~ g4@4 f#4@4 ~@5 e4@2 f#4@2 g4@3 a4@2 ~ g4@6 ~@28]/3",
  E: "d5@2 c5@3 ~@11", F: "c5@2 b4@3 ~@11", G: "~@6 g4 ~ g4 ~ g4@2 a4@2 b4@2 d5@4 c5@7 ~@5",
  H: "~@10 g4@3 a4@3 c5@4 b4@6 ~@6", I: "~@16 b4@6 a4@5 ~@5", J: "~@24 g4 ~ g4@2 a4@2 b4@2",
  K: "d5@4 c5@9 ~@13 g4@3 a4@3", L: "[c5@4 b4@6 ~@20 b4@8 a4@10 ~@6 d4@2 b4@2 a4@2 g4 ~ g4@26 ~@8]/3",
  M: "~@28 g4 ~ g4 ~", N: "g4 ~ g4 ~ g4@2 a4@2 a#4@21 ~ a#4@2",
  O: "[c5@4 a#4@2 a4@4 c5@4 a#4@8 ~@2 a#4@2 c5@2 d5@2 d#5@6 d5@2 d#5@6 d5@2 a#4@4 g4@7 ~@7]/2",
  P: "d5@4 c#5@2 d5@6 c#5@2 d5@6 c#5@2 d5@4 ~ e5@5", Q: "~ e5@13 d5 c#5", R: "d5@18 c#5@6 d5 c#5 b4@6",
  S: "~@14 c#5 b4", T: "c#5 b4 a4@4 ~@26", U: "~@2 c#4@4 e4@4 a4@4 c#5 ~ d5@8 ~@8",
  V: "~@2 e4@4 g#4@3 d5@3 ~@2 d5@4 c#5@6 d5 c#5 b4@6", W: "~@6 a4@2 b4@2 c#5@2 ~ d5@2 ~ c#5@5 b4@2 ~ a4@3 ~ g#4@4",
  X: "~@6 f#4@2 g#4@2 a4@2 ~ a4@19", Y: "~@9 e5@2 d5@3 ~@2", Z: "~@9 d5@2 c#5@3 ~@2", AA: "~@24 a4 ~ a4 ~ a4@2 b4@2",
  AB: "[c#5@2 e5@4 d5@7 ~@15 a4@3 b4@2 d5@4 ~ c#5@6 ~@20]/2", AC: "~@2 c#5@6 b4@5 ~@19",
  AD: "~ c#4@2 e4@2 a4@2 c#5 d5@3 ~@5", AE: "~@2 e4@4 g#4@4 d5@4 e5@4 c#5@6 d5 c#5 b4@6",
  AF: "[~@7 a4@2 b4@2 c#5@4 d5@2 ~ c#5@9 b4@2 ~ a4@5 g#4@7 ~@5 f#4@2 g#4@3 ~ a4@5 b4@5 ~]/2", AG: "[~@2 a4@53 ~@9]/2",
})).s("gm_distortion_guitar").gain(0.44)

// chords · epiano1
const epiano1 = note("<~@2 A B C ~@23 D E F G H@2 I J K L ~@30>".pickRestart({
  A: "a5@4 g5@3 ~ g5@4 f#5@3 ~, d6@7 ~ c6@7 ~", B: "f#5@4 e5@3 ~ g5@4 f#5@4, b5@7 ~ c6@8", C: "[g5,b5]@23 ~@9",
  D: "~@8 g3 b3 d4 g4 b4 d5 g5 d6", E: "[e4,g4,c5] [d4,f#4,a4]", F: "[g4,b4,d5] [d5,f#5,a5] [g4,b4,d5,f#5]@2",
  G: "[b4,d5,f#5,a5]@2 [c5,e5,g5] [d5,f#5,a5]", // Bm7 C D
  H: "[[b4,d5,g5]@16 c5@4 ~@6 e5@6 [b4,d5]@6 [a4,c5]@6 [g4,b4]@3 ~@7 d5@6 [g4,c5]@2 [f#4,b4]@2, ~@8 g4@14 ~@2 [f#4,a4]@7 ~, ~@8 e4 ~@2 c5@5 ~@16]/2", // G Bm Am G C5 B5 F#m
  I: "[e4,g4,c5]@15 ~ [c4,d#4,g4]@13 ~@3", J: "[d4,g4,b4]@12 ~@4 [c#4,e4,g4,b4]@13 ~@3",
  K: "~@6 e4@4 ~@4 c5@6 e4@2 g4@4 e4@2 c4@3 ~, ~ g3@12 ~@3, ~ c4@5 ~@2, ~@5 g4@5 ~@6, ~@6 e4@3 ~@7",
  L: "~@6 g4@2 ~@3 g4@2 d4 ~@2, g3@29 ~@3, d4@7 ~ d4@4 ~@4, ~@3 b3@11 ~@2, ~@9 b4@4 ~@3",
})).s("gm_epiano1").gain(0.2).pan(0.2)

// chords · synth strings 1
const synth_strings_1 = note("<~@7 A B ~@2 C@2 D ~@54>".pickRestart({
  A: "~@16 d4@8 c4@7 ~, ~ a3", B: "[g3,b3] ~", C: "[~ b3 c4 [b3,d4], ~@16 g3@31 ~@17]/2", D: "c4@16 b3@15 ~, g3@31 ~",
})).s("gm_synth_strings_1").gain(0.21)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@7 A@2 ~@2 B@2 ~@8 C D E ~@3 F ~@2 G ~@10 H ~@22 I J@3>".pickRestart({
  A: "[~@28 g3@17 ~@19, ~@5 a3@3 ~@8, ~@6 d4@3 ~@7]/2", B: "[~@8 [b2,d3,g3]@13 ~@11]/2", C: "~@10 c5@3 c5@3",
  D: "c5@3 ~@13", E: "~@5 a4@3, ~@16 b4@15 ~", F: "~ d4, ~@7 d3@6 ~@3, ~@15 [g3,a3]@14 ~@3",
  G: "~@8 g4@2 ~@4 g4@15 ~@3, ~@10 d4@19 ~@3, ~@12 a3@15 ~@5", H: "~@2 g4@2 d4 g3 g4 d4",
  I: "~@8 [f#3,a3]@11 ~@2 b3@11, ~@7 d3@12 e3@13, ~@5 g#3@3", J: "[~ b3 ~ e3@79 ~@14, e4@79 ~@17, ~@2 a3@79 ~@15]/3",
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.1)

// chords · distortion guitar
const distortion_guitar_2 = note(`<
  ~@12 A B ~@8 C ~@10 D ~@3 E F G H I J K L M N O P Q N O P R ~@7 N O ~@5
>`.pickRestart({
  A: "~@6 d4 ~@5 d4 ~@9 d4 ~@5 d4 ~@3", B: "~@6 d4 ~@5 d4 ~@19", C: "~@20 c5 ~ b4 ~@9", D: "~@4 b3@11 ~",
  E: "~@4 [g2,d3]@3 ~ [d3,g3]@8, ~@7 g2@9", F: "[g2,c3]@12 [g3,d4]@4 [g3,d4]@15 ~, ~@12 c3@19 ~",
  G: "[d3,a3]@16 [e3,b3]@15 ~", H: "[e3,a3,c4]@15 ~ [d3,a3,d4]@15 ~", I: "[g2,d3,g3]@31 ~",
  J: "[a#2,d#3]@13 ~ [a#2,d#3]@17 ~", K: "[d3,a3]@13 ~@3 g3@16, ~@14 d3@15 ~@3", L: "[c3,g3,c4]@15 ~", M: "[a2,e3,a3]",
  N: "~ e3@7, ~ a2@15", O: "~@2 [g#2,e3]@16 a2@7 ~ g#2@6, ~@18 e3@13 ~", P: "~@2 [f#2,c#3]@15 ~ [g#2,e3]@14",
  Q: "~@2 [d3,f#3]@15 ~ [g#2,e3]@8 [f#2,d3]@6", R: "~ [d3,f#3]@4 [e3,g#3]@4 [a2,e3]@7",
})).s("gm_distortion_guitar").gain(0.32)

// chords · distortion guitar · soft notes
const distortion_guitar_soft = note(`<
  ~@12
  [~@4 d4 ~@5 d4 ~@9 d4 ~@5 d4 ~@5]
  [~@4 d4 ~@5 d4 ~@21]
  ~@8
  [~@26 c5 ~ b4 ~@3]
  ~@45
>`).s("gm_distortion_guitar").gain(0.14)

// chords · pizzicato strings
const pizzicato_strings = note("<~@13 A B C D E B C F G ~@46>".pickRestart({
  A: "~@16 b4@2 ~@2 d4 ~@3 g4@2 ~@2 d4 ~@3, ~@16 g4 ~@7 b4 ~@7",
  B: "c5@2 ~@2 e4 ~@3 c5@2 ~@2 e4 ~@3 [f#4,a4] ~@3 d4 ~@3 a4@2 ~@2 d4 ~@3, g4 ~@7 g4 ~@15 f#4 ~@7", // F#m
  C: "[g4,b4]@2 ~@2 d4 ~@3 [f#4,a4] ~@3 d4 ~@3 b4@2 ~@2 e4 ~@3 b4@2 ~@2 e4 ~@3, ~@16 g4 ~@7 g4 ~@7", // G F#m
  D: "[f#4,b4]@2 ~@2 d4 ~@3 [f#4,b4] ~@3 d4 ~@3 [g4,c5] ~@3 e4 ~@3 c5@2 ~@2 e4 ~@3, ~@24 g4 ~@7", // B5 C5
  E: "b4@2 ~@2 f#4 ~@3 [g4,c5]@2 ~@2 e4 ~@3 b4@2 ~@2 d4 ~@3 g4@2 ~@2 d4 ~@3, d5 ~@15 g4 ~@7 b4 ~@7", // C5
  F: "[f#4,b4]@2 ~@2 d4 ~@3 [f#4,b4] ~@3 d4 ~@3 [g4,c5]@2 ~@2 e4 ~@3 [a4,d5] ~@3 f#4 ~@3", // B5 C5 D5
  G: "[g4,b4] ~@3 d4 ~@3 [g4,b4]@2 ~@2 d4 ~@19", // G
})).s("gm_pizzicato_strings").gain(0.24).pan(0.4)

// other · string ensemble 2 · A G F# E G F#
const string_ensemble_2_2 = note(`<
  [[a3,a4]@8 [g3,g4]@7 ~ [g3,g4]@8 [f#3,f#4]@7 ~]
  [[f#3,f#4]@8 [e3,e4]@7 ~ [g3,g4]@8 [f#3,f#4]@7 ~]
  [a4@8 g4@7 ~ g4@8 f#4@7 ~]
  [f#4@8 e4@7 ~ g4@8 f#4@7 ~]
  [g4@13 ~@3]
  ~@63
>`).s("gm_string_ensemble_2").gain(0.21).pan(0.7)

// other · string ensemble 2
const string_ensemble_2_3 = note("<[d5 c5] [b4 c5] [d5 c5] [b4 c5] [b4 d5] ~@63>")
  .s("gm_string_ensemble_2").gain(0.18).pan(0.2)

// chords · piano
const piano = note(`<
  ~@3 A B C D E F G H I@3 J K L M J N O P Q R S T Q R U J N O V W X Y Z AA AB AC AD AE AF AG AH AI@3 AJ@2 AK@2 AL@2 AM@7
  AN@2 AO@2 AP@3
>`.pickRestart({
  A: "~@15 f#4, ~@8 d2@4 c4 d4 a4@2, ~@9 d3@7, ~@5 f#3@3, ~@11 a3@5", B: "[g3,b3,d4]!2 [g3,c4,e4]!2, g2, g4 ~",
  C: "[f#3,a3,d4]!2 [g2,g3,b3,d4] [f#2,f#3,a3,d4], f#2 ~", // D G D
  D: "[e3,g3,b3]@8 [e3,g3,b3]@6 d4 e4 [f#3,b3,d4]@8 ~@4 b2@4, e2@4 b2@3 ~, ~@24 [f#3,b3,d4]@7 ~", // Em Bm
  E: "[g3,c4,e4]!2 [b2,f#3,a3,d4] [a2,e3,g3,c4], c3 ~", // C Bm7 Am7
  F: "[b3,d4]@2 ~ g3 [g3,c4,e4]@2 [g3,c4,e4]@2, g2, g3@3 ~@5, ~ [a3,b3,d4] ~@2", // Bm C Bm7
  G: "[f#3,a3,d4]@2 ~ f#2 [g2,g3,b3,d4]@2 [f#2,f#3,a3,d4]@2, f#2@3 ~@5, ~ [f#3,a3,d4] ~@2", // D G D
  H: "[e3,g3,b3,d4]@8 [e3,g3,b3,d4]@4 ~@2 d4 e4 [f#3,b3,d4]@8 f#3@4 [b2,f#3]@4, e2@3 e2 b2@3 ~, ~@3 [b3,d4]", // Em7 Bm B5 Bm
  I: "[[c3,g3,c4,e4]@4 [a3,d4,f#4]@4 ~@4 g3 ~@2 d4 ~@16 e4@2 ~@4 g2@2 [g3,b3,d4]@4 [g3,b3,d4]@4, ~@2 d3@6 ~@9 [e4,g4,c5]@3 g4@4, ~@8 [g3,b3,d4]@4 [b3,d4]@2 g2@4 g2@4 g2@4 g2@4 g2@4 g2@3 [c4,a4]@3 ~@8, ~@10 g2@3 g3@3 [g3,c4,e4]@4 [g3,c4,e4]@4 [g3,b3,d4,f#4]@4 [g3,b3,d4,f#4]@4 g3@8 ~@8, ~@14 b3@2 ~@16 c4@3 [d4,b4]@5 ~@8]/3", // C D G C G Bm F C …
  J: "[g3,c4,e4]!2 [f#3,a3,d4]!2", K: "[g3,b3,d4]@8 [f#3,a3,d4]@8 [e3,g3,b3]@8 [e3,g3,b3]@6 d4 e4",
  L: "[f#3,b3,d4]@8 [f#3,b3,d4]@7 ~ [g3,c4,e4]@8 [g3,c4,e4]@8", // Bm C
  M: "[f#3,a3,d4]@4 ~@3 g4 [b3,d4]@4 ~@2 g3@2, ~@2 [e3,g3,c4]@2 g3@3 ~, ~@3 d4 ~@2 [a3,b3,d4]@2", // D Bm C Bm7
  N: "[g3,b3,d4]@8 [f#3,a3,d4]@8 [e3,g3,b3,d4]@8 [e3,g3,b3,d4]@6 d4 e4", // G D Em7
  O: "[f#3,b3,d4]@2 f#3!2 [g3,c4,e4]@2 [a3,d4,f#4]@2, ~ [b3,d4] ~@2", P: "[g3,b3,d4]!2 [g3,c4,e4]!2",
  Q: "[g3,c4,d#4]@4 ~@3 a4 [d4,g4,b4]@4 [d4,g4,b4]@4, ~ [g3,c4,d#4] ~@2, ~@3 g4 ~@4", // Cm G Cm
  R: "[e4,g4,b4]@2 e4!2 [g3,c4,e4]@2 g3!2, ~ [g4,b4] ~ [c4,e4]", // Em C G C
  S: "[g3,c4,e4]@2 g3!4 [g3,b3,d4]@2, ~ [c4,e4] [b3,d4] ~", T: "[f#3,a3,d4]!2 [g3,c4,e4]!2",
  U: "[d3,d4] ~ [d3,d4] ~ [d3,d4] ~ [d3,d4]@2 [g3,b3,d4]@4 g3@2 g3@2, ~ [g3,g4]@2 [a3,a4]@2 [c4,c5]@2 ~@5 [b3,d4]@4", // D G A C Bm
  V: "g3@3 g3@2 g3@3 g3@3 g3@2 g3@3, [b3,d4] [c4,e4]", W: "[g3,b3,d4,f#4] [a3,d4,f#4,a4]",
  X: "[g3,c4,e4]@4 [g3,c4,e4]@4 [g3,c4,d#4]@4 ~@3 a4, ~@3 [g3,c4,d#4], ~@7 g4", // C Cm
  Y: "[d4,g4,b4]@2 [d4,g4,b4]@2 [e4,g4,b4]@2 e4!2, ~@3 [g4,b4]", // G Em G
  Z: "[g3,c4,e4]@3 g3 g3@2 ~@2 [g3,c4,e4]@4 g3@2 g3@2, ~@3 g4@4 [a3,a4]@9, ~ [c4,e4] ~ [c4,e4], ~@3 g3 ~@4", // C A C
  AA: "[g3,d4] ~@2 g3 ~@3 g3, g1, b3@3 a3@5 g3@6 ~@2, ~@2 g3@3 b3@3 ~@3 [a3,d4]@5, ~@3 d4@8 ~@2 b3@3", // G5 D5
  AB: "[d4,g4]@2 ~@5 d4@2 d4@2 c2@2 ~@2 d4, [c2,c3]@5 a4@2 c3@4 [c3,d4,a4]@4 ~, ~@2 d4@3 c3@2 g4@6 ~ [c3,a4]@2, ~@3 d5@10 ~@3, ~@3 g4@3 c2@5 ~@2 [c2,g4,d5]@3", // G5 C D7 F Csus2
  AC: "[f#4,a4]@4 f#4@2 ~@4 f#4@2 f#4@2 ~@4 b4 ~@3 [e3,b4,d5,f#5]@4 [e2,e3,d4,g4,b4]@6, [b1,b2,d5]@4 b1@3 [d4,g4,b4]@2 [d5,g5]@2 ~@5, ~@6 [f#4,a4]@4 [b2,a4,d5]@5 ~ [e2,e3]@4 e2@6 ~@6", // F#m Bm Em7 Bm G G5 F#m Bm7 …
  AD: "[e4,g4]@2 e4 ~@2 [e4,g4] ~ d2 [d2,f#4,a4]@2 f#4 [f#4,a4]@2 f#4 f#4@2, [a1,a2,c5]@4 a1@4 ~@3 d2@5, ~@3 [e4,g4]@2 [a2,c5]@3 [d3,d5]@5 [d3,a4,d5]@3, ~@3 [e4,g4] ~@4", // Em D F#m Am Em Am D D5 …
  AE: "[g1,g2,d4,g4]@2 ~ [g2,g4]@2 ~ g2 ~@4 g2@2 ~ g2@2, b4@10 ~@4 c5@8 d4@3 ~ d4@6, ~ g1@4 g1@3, ~@2 d4@3 [d4,g4,b4]@2 [d4,g4]@2 [d4,g4,b4]@3 ~@4, ~@8 g2@3 g4@5", // G5 G G5 G
  AF: "a#3@2 ~@2 a#3@2 ~@2 d4@2 d4 [d4,f4] a#3@2 ~ d#3, [d#2,d#3,d4,f4]@3 d#2@3 a#3@2 [d#3,a#3,f4]@3 a#4@5, ~@2 a#3@2 [d#3,d4,f4]@3 d#2@9, ~@3 [d#3,d4,f4], ~@7 a#3", // Dm D#sus2 Dm
  AG: "[a3,c4]@4 a3@2 ~@4 a3@2 ~@2 d3@2 [d4,g4,a#4]@2 [d4,g4,a#4,c5]@4 ~@4 d4@5 ~, d2@16 g2@15 ~, [d3,f4]@4 d3@2 a3@2 g3@3 d4@2 ~@3, ~@6 [a3,c4]@4 [c4,f4]@6 ~@6 [g4,a#4,d5]@9 ~, ~@24 g3@7 ~", // Am Gm Dm Am F5 Gm
  AH: "g4@2 ~@2 g4@2 ~@2 [g4,a#4]@2 ~@3 g4 ~ e2, c3@7 c2@4 a#4@2 ~ g4@2, [c2,a#4,d#5]@3 c2@3 g4@2 [c3,d#5]@4 c2@4, ~@2 g4@2 [a#4,d#5]@4 ~@2 g4@3 [c3,a#4,d#5]@3", // Gm Cm7 Cm D#5 Cm7
  AI: "[f#4@4 ~@2 e2@2 f#4@4 f#4@4 f#4@4 ~@4 f#4@4 ~ f#4@5 [c#4,e4,a4]@8 c#4@4 ~@4 [d4,f#4,a4]@4 d4@2 d4@4 ~@4 a4@2 b3@4 b3@4 b3@4 b3@4 [a3,c#4]@2 [b3,d4]@2 [c#4,e4]@2 [d4,f#4]@2 [c#4,e4]@2 [d4,f#4]@2 [e4,g#4]@2, [e2,e3,a4,d5]@4 [e2,e3,a4,d5]@4 [e2,e3,a4,d5]@3 e2@6 [a2,a3]@7 a2@9 [g#2,g#3]@8 a2@4 [g#2,g#3]@3, ~@2 f#4@2 ~@6 f#4@2 [e3,a4,d5]@5 ~@4 [e4,a4]@4 ~@3 [f#4,a4]@3 f#4@2 [e4,g#4]@4 [e4,g#4]@4 ~@7, ~@23 c#4@2 a3@8 ~@15, ~@10 d4 ~@5]/3", // A D A Bm C#m D C#m D …
  AJ: "[[f#4,a4]@2 [e4,g#4]@2 ~@4 [a4,c#5]@2 [f#4,a4,c#5]@8 [g#4,b4]@4 g#4@2 [g#4,b4,e5]@4 ~@2 [c#4,g#4]@4 d5@6 ~@4 a4@2 ~@2 d4@2 g#4@4 g#4@4 [b2,b3,f#4,a4,d5]@5 ~, ~@2 [f#2,f#3]@16 [c#3,c#4,e4]@12 ~@4 d3@16 [c#3,c#4,b4,e5]@9 ~@5, ~@2 [f#4,a4]@3 ~@9 c#3@3 ~@3 d5@2 [d5,f#5]@3 ~@7, ~@3 [g#4,b4]@6 ~@8 [d4,a4,f#5]@4 d4@2 a4@2 ~@7]/2", // F#m E A F#m G#m E C#5 Bm7 …
  AK: "[~ e4@2 ~@2 e4@2 ~ a2 f#4@2 ~@4 [c#5,c#6]@2 [e4,g#4]@2 e4 ~@2 e4 ~ g#3 e4@2 ~ a2 [g#2,g#3,e4,g#4,b4]@3, ~ [a2,a3,a4,c#5]@3 a2@3 e4@2 [a3,a4]@3 [a4,a5]@2 [b4,b5]@3 ~@4 g#3@3 ~@8, ~@3 e4@2 [a3,a4,c#5]@4 [a2,d5]@8 [g#2,b5]@8 [a2,a3,a4,c#5]@4 ~@3, ~@11 [f#4,f#5]@6 ~@3 [e4,g#4]@2 [g#4,b4]@3 ~@7, ~@13 a3@4 [g#3,b4]@5 ~ e4@2 ~@2 e4@2 ~@3]/2", // C# E A B A D5 G#m A …
  AL: "[~ [f#4,a4]@2 f#4 ~@2 f#4 ~ f#3 [e4,g#4]@2 e4 ~@2 e4 ~ c#4 [d3,d4,f#4,a4]@4 [e3,e4,g#4,b4]@4 a4@3 ~@2 e4!2, ~ f#2@8 c#3@8 ~@8 a2@7, ~ [f#3,c#5]@4 f#3@2 f#4@2 [c#4,c#5]@4 c#4@2 e4@2 ~@8 [a3,e4,c#5]@4 a3@3, ~@4 [f#4,a4]@2 [a4,c#5]@3 ~@3 [e4,g#4]@2 [g#4,c#5]@3 ~@11 a4@2 [a4,c#5]@2]/2", // F#m E D E F#5 C# A F#m …
  AM: "[a2@2 [f#2,f#3,a3,d4,f#4]@6 ~@2 [f#3,a3,d4,f#4]@8 [f2,f3,a3,d4,f4]@6 ~@7 b4@3 e2@6 ~@4 e3@6 [f#2,f#3,f#4,a4,c#5]@6 f#2@2 f#4@4 f#4@4 [a3,d4,f#4]@8 a3@4 a3@4 [a3,d4,f#4]@8 a3@4 a3@4 ~@14 c#5@2 ~@4 g#4@2 [e4,g#4]@4 ~@2 [e4,g#4,b4]@4 [f#2,f#3,a3,d4,f#4]@6 ~@2 [f#3,a3,d4,f#4]@8 [a3,d4,f4]@8 ~@6 b4@2 [e2,e3,e4,a4,c#5]@8 ~@2 e3@6 [f#2,f#4,a4,c#5]@8 f#4@4 [f#3,f#4]@4 [e2,d4]@4 ~@6 e3@4 ~@10 b6@6, ~@8 f#2@10 ~@6 f2@10 ~@6 e2@10 ~@8 [f#2,f#3,a4,c#5]@8 [b1,b2]@16 [e2,e3]@16 [a1,a2]@4 a1@6 e4@7 ~ e4@4 ~@4 g#2@6 ~@6 f#2@10 [f2,f3]@16 ~@8 [e2,e4,a4,c#5]@8 ~@8 [f#2,a4,c#5]@8 ~@6 e2@8 e2@16, ~@26 [f3,a3,d4,f4]@8 [e3,e4,a4,c#5]@10 ~@54 [e3,b3]@12 a4@4 ~@6 e5@10 ~@28 a4@4 ~@36 d4@11 ~@15, ~@14 a4@3 ~@4 [e4,a4,c#5]@4 ~@12 [d4,f#4]@4 ~@4 [d4,f#4]@4 ~ c#4@7 [g#2,b4]@6 ~@14 [a3,d4,f4]@4 ~@8 f#3@6 ~@2 [e3,f#4,a4]@5 ~@3 [e3,a4,d5,f#5]@7, ~@104 [a2,a3]@10 g#1@16 ~@72 [f#4,a4,d5]@7 ~@8 [e6,a6]@7]/7", // D Dm F#m D E D Dm A …
  AN: "[~ [c#4,e4,a4]@4 c#4@2 ~@2 [d4,f#4,a4]@2 d4 d4@2 ~@2 a4 b3@2 b3@2 b3@2 b3@2 [a3,c#4] [b3,d4] [c#4,e4] [d4,f#4] [c#4,e4] [d4,f#4] [e4,g#4], ~ [a2,a3]@7 a2@9 [g#2,g#3]@8 a2@4 [g#2,g#3]@3, ~@5 [e4,a4]@4 ~@3 [f#4,a4]@3 f#4@2 [e4,g#4]@4 [e4,g#4]@4 ~@7, ~@7 c#4@2 a3@8 ~@15, ~@14 d4@3 ~@15]/2", // A D A Bm C#m D C#m D …
  AO: "[~ [f#4,a4]@2 [f#2,f#3,c#4]@17 [g#2,g#3,c#4,e4,g#4]@5 [e2,e3,g#3,c#4,e4]@5 [c#2,c#3,e3,g#3,b3]@5 [g#1,g#2,c#3,e3,g#3]@5 [d1,d2,d3,f#3,a3,d4]@12 ~ [e1,e2,e3,g#3,b3,e4]@11, ~@3 [f#4,a4] ~@60]/2", // F#m F#5 C#m C#m7 C#m D E F#m
  AP: "[~@2 [a3,e4]@13 ~@4 e5@2 ~@4 b6@2 ~ a6@46 ~@22, ~@2 [a1,a2]@79 ~@15, ~ [e3,c#4]@38 ~@9, ~@15 a3@2 a4@2 ~@3 c#6@2 a6@2 ~@2 e6@2 ~@66, ~@16 e4@2 c#5@2 ~ a5@2 e6@2 ~@2 c#6@2 ~@67]/3", // A5 A C#m
})).s("gm_piano").gain(0.33).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@11 A B C D@3 E D@3 E D@6 E D@2 F G H I@4 J@8 K@11 L K@2 M K L N ~@4>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x!2 ~", D: "x ~@3 x ~@2 x", E: "x!2", F: "x ~@7 x ~@2 x ~@4", G: "x ~@10 x ~@2 x ~",
  H: "~@11 x ~@2 x ~", I: "x ~@2 x!2 ~@3", J: "x ~@5 x ~ x ~@2 x ~@4", K: "~ x ~@5 x ~ x ~@2 x ~@3",
  L: "~ x ~@5 x ~ x ~@6", M: "~ x ~@2 x ~@2 x ~ x ~@6", N: "~@3 x ~@28",
})).gain(0.4)

// drums · rim
const rim = s("rim").struct("<~@13 [~@3 x] [~ x ~ x]!23 [~ x ~@2] ~@30>").gain(0.57)

// … 65 more lines

More by Morandi