Strudelify

Giovane amante mia

Morandi

KeyC majorTempo100 bpm
0:00/0:00
// Giovane amante mia — Morandi
// 100 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 125 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · electric bass finger
const bass = note(`<
  ~@5 A@2 B@2 C D E F C G E F C D E H C D E I J K L M N O P Q R S T U R S T V W G E X C D E Y C D E I Z K AA M AB AC AD
  Q AE AF T U R S T AG R S T AH R S T AI AJ AK AL AM AN AO AP K AA AQ AR AC AS AT AU AV AW AX AY AZ AW BA BB AV AW AX BC
  BD AW BE BB AV AW BF BG BH AW BI BB AV AW BF BG BH AW BI BJ@2
>`.pickRestart({
  A: "[g1@39 ~@3 g1@5 ~]/2", B: "[f1@40 ~@2 d1@3 f1@3]/2", C: "g1@8 ~@3 d1 g1@2 d1 g1@3 ~@6",
  D: "g1@8 ~@3 g1 ~@3 g1@3 d1@3 g1@3", E: "f1@6 ~@5 c1 f1@2 c1 f1@5 ~@4", F: "f1@6 ~@5 f1 ~@2 f1 f1@3 c2@6",
  G: "g1@8 ~@3 g1 ~@3 g1@3 a#1@3 g1@3", H: "f1@6 ~@5 f1 ~@2 f1 f1@3 c2@3 f1@3", I: "f1@9 ~@2 f1 f1@3 f1@3 a#1@6",
  J: "c2@11 ~ c2@6 c1@6", K: "d1@11 ~ d1@6 f#1@6", L: "g1@6 ~@5 d1 g1 ~ d1 g1@4 ~@2 g1 ~@2", M: "c2@5 ~ c2@3 g1@3",
  N: "c1@6 ~@5 c1!2 ~@2 c1@5 d#1 c1@3", O: "d1@7 ~@4 d1!2 ~@2 d1@3 f#1@5 ~", P: "g1@7 ~@4 g1!2 ~@2 g1@4 ~ f1 g1@3",
  Q: "c2@2 ~@3 c2@2 ~@2 c1@9 d1@6", R: "g1@5 ~@6 d1 g1 ~@2 g1@3 ~@2 d1 g1@2 ~",
  S: "f#1@6 ~@5 d1 f#1 ~@2 f#1@4 ~ e1 f#1@2 ~", T: "e1@6 ~@5 d1 e1 ~@2 e1@3 ~@2 e1 d1@3",
  U: "d#1@6 ~@5 c1 d#1 ~@2 d#1@4 ~ d#1 f1@3", V: "d#1@6 ~@5 c1 d#1 ~@2 c2@3 d#2@2 ~ a#1@3, ~@10 c2 ~",
  W: "g1@2 ~ g1@4 ~@4 d1 g1@2 d1 g1@3 ~@6", X: "f1@6 ~@5 f1@3 c2@4 f2 ~ c2 f1@3", Y: "f1@6 ~@5 f1 ~@2 f1 f1@3 a#1@6",
  Z: "c2@8 g1 g1@3 c1@6 d#1@6", AA: "g1@6 ~@5 d1 g1 ~ f1 g1@4 ~ f1 g1@2 ~", AB: "c1@7 ~@4 c1!2 ~@2 c1@3 d#1@6",
  AC: "d1@7 ~@4 d1 d1@2 ~ d1@3 f#1@5 ~", AD: "g1@7 ~@4 f1 g1 ~@2 g1@4 ~@2 g1@3",
  AE: "g1@6 ~@5 d1 g1 ~ f1 g1@3 ~@2 d1 g1@2 e1", AF: "f#1@6 ~@5 e1 f#1 ~@2 f#1@4 ~ e1 f#1@2 ~",
  AG: "d#1@6 ~@5 c1 d#1 ~@2 d#1@3 ~@2 d#1 f1@3", AH: "d#1@6 ~@5 c1 d#1 ~@2 d#1@4 ~ d#1@3 ~",
  AI: "d#1 c2 d#2 c2 a#1 d#1 a#1 d#1", AJ: "a#1@6 ~@5 f1 a#1 ~@2 a#1@3 ~@2 f1 a#1@2 ~",
  AK: "a1@6 ~@5 f1 a1 ~@2 a1@4 ~ g1 a1@2 ~", AL: "g1@6 ~@5 f1 g1 ~@2 g1@3 ~@2 f1 g1@2 ~",
  AM: "f#1@6 ~@5 d#1 f#1@2 ~ f#1@4 ~ d#1 f#1 ~@2", AN: "d1@5 ~@6 d1!2 ~@2 d1@3 ~@2 d1 d1@2 ~",
  AO: "g1@6 ~@5 f1 g1 ~@2 g1@4 ~ f1 g1@2 ~", AP: "c2@8 ~@3 g1 c2@3 g1@3 c1@6", AQ: "c2@3 g1 c2@2 g1@2",
  AR: "c1@6 ~@5 c1 c1@3 d1@3 d#1@6", AS: "g1@7 ~@4 d1 g1@2 f1 g1@4 ~ f1 g1@3", AT: "c2@2 ~@3 c2@2 ~@2 c1@3 ~@6 g1@6",
  AU: "c2@6 ~@5 g1 c2 ~@2 c2@3 ~@2 g1 c2@2 a1", AV: "b1@6 ~@5 a1 b1 ~@2 b1@4 ~ b1 g1@2 ~",
  AW: "a1@6 ~@5 e1 a1 ~@2 a1@3 ~@2 a1 g1@3", AX: "g#1@6 ~@5 f1 g#1 ~@2 g#1@4 ~ g#1 a#1@3",
  AY: "c2@5 ~@6 g1 c2 ~@2 c2@3 ~@2 g1 c2@2 ~", AZ: "b1@6 ~@5 g1 b1 ~@2 b1@4 ~ b1 g1@2 ~",
  BA: "g#1@5 d#2 f2@2 g#2 f2@2 ~ d#2@2 ~ c2@2 ~ d#2@6", BB: "c2@6 ~@5 g1 c2 ~@2 c2@3 ~@3 c2@3",
  BC: "c2@5 ~@6 g1 c2 ~@2 c2@3 ~@2 c2 a#1@3", BD: "b1@9 ~@2 g1 b1 ~@2 b1@4 ~ b1 g1@2 ~", BE: "g#1@2 c2@2 d#2@2 g#2 g#1",
  BF: "g#1@6 ~@5 f1 g#1 ~@2 g#1@4 ~ f1 a#1@3", BG: "c2@5 ~@6 g1 c2 ~@2 c2@5 ~ c2@3",
  BH: "b1@9 ~@2 a1 b1 ~@2 b1@4 ~ b1 g1@2 ~", BI: "g#1@6 ~@5 d#1 g#1 ~@2 g#1@3 a#1@6", BJ: "[c2@7 ~]/2",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@7 A@2 ~@20 B ~@3 C D E F C D E F ~@16 B ~@3 C D E F C D E F C D E F C D E F ~@6 G ~@3 B ~@3 H I J K H I J K H I J K
  H I J K H I J K H I J K H I J K H I J K ~@2
>`.pickRestart({
  A: "[~@9 f4@17 ~@22, a3@25 ~@23, ~@5 c4@21 ~@22]/2", B: "~@9 a#4@13 ~@2, c4@11 ~, ~@5 d#4@18 ~", C: "g3@17 ~@7",
  D: "~@9 a3@13 ~@2, f#3@11 ~, ~@5 d4@17 ~@2", E: "~@3 d4@4 ~, ~ e3@6 ~, ~@2 g3@5 ~", F: "~@3 d4@6 c4@11 ~@4, a#3@5 ~",
  G: "d4@5 d#4@10 ~@9", H: "c4@17 ~@7", I: "~@9 d4@13 ~@2, b3@11 ~, ~@5 g4@17 ~@2",
  J: "~@3 g4@4 ~, ~ a3@6 ~, ~@2 c4@5 ~", K: "~@3 g4@6 f4@11 ~@4, d#4@5 ~",
})).s("gm_electric_guitar_clean").gain(0.4).pan(0.3)

// other · overdriven guitar
const overdriven_guitar = note("<~@106 A B@8 C@6 ~@4>".pickRestart({
  A: "~@9 f5@2 ~ f5@2 ~ f5@9",
  B: "[~@3 e5@6 g5@24 ~@3 d5@3 e5@3 f5@12 e5@3 e5@6 d5@6 c5@11 ~ f5@3 f5@3 f5@2 ~ f5@3 f5@6 e5@6 g5@24 ~@3 d5@3 e5@3 f5@12 e5@3 e5@6 d5@6 c5@11 ~ f5@3 f5@2 ~ f5@2 ~ f5@3 f5@3]/8",
  C: "[~@3 e5@6 g5@24 ~@3 d5@3 e5@3 f5@12 e5@3 e5@6 d5@6 c5@11 ~ f5@3 f5@2 ~ f5@2 ~ f5@3 f5@6 e5@6 f5@24 ~@15]/6",
})).s("gm_overdriven_guitar").gain(0.29).pan(0.4)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@5 A@3 B C@4 D@4 ~@20 E@4 F@4 ~@10 G@6 ~@22 H@8 I@4 J@4 ~@8 J@4 I@4 J@4 K@6
>`.pickRestart({
  A: "[d5@23 a5@24 c5@25]/3", B: "f5", C: "[c5@8 a#4@15 c5@9 a#4@9 d5@6 c5@23 ~@10 g5@3 a5@13, ~@35 f4@13]/4",
  D: "[c5@8 a#4@15 ~ c6@8 [a#4,a#5]@9 [d5,d6]@6 c5@23 f4@21 ~@5, ~@23 c5@9 ~@64]/4", // A# D
  E: "[d6@35 a5@5 b5@4 c6@9 b5@10 a5@5 g5@28]/4", F: "[c6@9 a#5@14 c6@9 a#5@9 d6@5 c6@50]/4",
  G: "[a4@17 a#4@6 g4@12 c5@6 d5@6 d#5@23 d5@13 f#5@12 a5@24 g5@22 ~@3]/6",
  H: "[[d#4,d#6]@22 ~ d4@24 [a#3,a#5]@18 ~@6 [c4,c6]@18 d4@6 [d#4,d#6]@24 [g4,g6]@12 [f#4,f#6]@12 [a4,a6]@26 ~@23, ~@22 d6@25 ~@18 [d4,d6]@8 ~@16 d6@9 ~@94]/8", // D# A# C D# G F# A D
  I: "[[g4,g6]@35 [d4,d6]@3 [e4,e6]@3 ~ f6@2 [g4,g6]@3 [f4,f6]@6 [e4,e6]@9 [d4,d6]@6 [c4,c6]@28, ~@41 f4@3 ~@52]/4", // G D E G F E D C
  J: "[[g4,g6]@35 [d4,d6]@3 [e4,e6]@3 [f4,f6]@3 [g4,g6]@3 [f4,f6]@6 [e4,e6]@9 [d4,d6]@6 [c4,c6]@28]/4", // G D E F G F E D …
  K: "[[g4,g6]@35 [d4,d6]@3 [e4,e6]@3 ~ f6@2 [g4,g6]@3 [f4,f6]@6 [e4,e6]@9 [d4,d6]@6 [c4,c6]@73 ~@3, ~@41 f4@3 ~@100]/6", // G D E G F E D C
})).s("gm_string_ensemble_1").gain(0.16).pan(0.3)

// chords · pad choir
const pad_choir = note("<~@9 A@2 B@2 A@2 B@2 C@2 D@4 E@2 ~@16 A@2 B@2 F@2 E@2 F@2 E@2 ~@36 G@2 ~@34>".pickRestart({
  A: "g4/2", B: "[a4@3 f4@5]/2", C: "[g3,a#3,d4,f4]/2", D: "[[a3,c4] [g3,a#3,d4]]/4", E: "[a3,c4]/2",
  F: "[g3,a#3,d4]/2", G: "[d5@13 ~@11]/2",
})).s("gm_pad_choir").gain(0.24)

// chords · piano
const piano = note(`<
  A B@2 C@2 D@2 E@2 F G H@2 F G I J ~@7 K L ~@2 K L ~@2 M N O P Q R S P T F G U V W ~@6 K L ~@2 K L ~@2 X N O P Q R S P
  Y N O P Q R S P Z AA AB@5 AC ~@2 K L ~@2 AD AE AF AG AH AI AJ AK AL AM AJ AN AO AP AJ AQ AO AR AF AN AL AI AJ AN AS AT
  AU AN AS AM AJ AV AL AW@2
>`.pickRestart({
  A: "~@3 [d2,d3]", B: "[~@20 [f4,f6]@2 [a3,a5]@2 [a#3,a#5]@18 [g1,g2]@4 a#5 ~, [g1,g2]@13 ~@3]/2",
  C: "[g#5 a5@2 c6@2 f5@13 ~@11 a3 d5@2 c5 a4 ~@2 f4@3 g4@3 ~@2 f4@2 g4@2, [f1,f2]@38 ~@4 [f1,f2]@5 ~]/2", // F
  D: "[~@2 c5@2 g4@2 a#4@15 ~ [c5,d5] ~@2 c5@2 a#4@3 ~@2 c5@2 g4@2 a#4@5 ~ [g1,g2]@6, [g1,g2]@5 ~, d4@7 ~@41]/2", // Csus2 G
  E: "[~@3 c5@2 f4@7 ~@11 f4 ~ c4 d4@2 c4@2 ~@12 [f1,f2]@6, [f1,f2]@41 ~@7]/2", // F
  F: "[a#3,d4,f4,c5]@9 [a#3,d4,f4,a#4]@13 ~@2, [g1,g2]@19 ~@5", // A# G
  G: "[a#3,d4,f4,c5]@9 a#4@8 ~ [g3,d5]@6, [g1,g2]@7 ~, ~@3 [a#3,d4,f4]@4 ~", // A# G5 G A#
  H: "[[f2,c5]@8 ~@11 [g#3,g#5] ~@5 [c4,c6]@2 [a3,a5]@2 ~@13 [f2,c4]@6, f3@14 ~ f3@7 ~ c6@2 ~@4 f5@6 ~@13, [a3,c4,f4]@12 ~@8 [a3,a5]@2 c4@2 f3@5 f3@8 ~@2 f3@9, ~@9 f2@10 ~@2 f2@2 ~ f2@7 ~@2 f2@8 ~@7]/2", // F5 G# C A F5 F A
  I: "[f2,c5]@8 ~@7 f3@6 f2@2 ~, f3@7 ~@5, [a3,c4,f4] ~, ~@9 f2@10 ~@5", // F5 F
  J: "f3@5 ~@13 [f2,c4]@6, f2@7 ~@2 f2@8 ~@7, ~@5 f3@8 ~@2 f3@9", K: "~@2 c4 d4", L: "[g3,a#3]@11 ~@13, d#4@13 ~@11",
  M: "[c3,g3,c4,f4] ~@2 c3@2 [g3,c4,f4] ~@3 [g3,c4,e4]@15, c2, ~@7 c3@16 ~", // Csus4 C
  N: "[g2,g3,b3,d4]@16 ~@2 [g2,g3,b3,d4]@5 ~", O: "d4@9 e4@8 ~@7, [f#2,a3]@2 ~",
  P: "[g3,d4]@2 ~ [g3,d4]@4 ~, e2@5 ~ e2@14 ~@4", Q: "d4@7 ~@2 c4@15, [d#2,g3]",
  R: "[g3,b3,d4]@8 ~ [g3,b3,d4]@14 ~, g2@2 ~", S: "e4@8 ~ e4@8 ~@7, [f#2,a3]@2 ~",
  T: "[g3,d4]@3 ~ [g3,d4] d#3 ~@3 c4@9 ~@3 c4@3, d#2", // G5
  U: "[f3,a#3,c4]@3 ~@2 [f3,a#3,c4]@2 ~@2 [f3,a#3,c4]@3 ~@2 [f3,a#3,c4]@2 ~@2 [f3,a3,c4]@3 f2@2 ~, [f2,c5]@8 ~ f2@10 ~@5", // Fsus4 F F5
  V: "[f3,a3,c4]@3 g3 ~ [f3,f4,f5]@3 [a#3,a5] [a3,c4,c6]@2 f6 [d4,g4]@2 ~ d6@2 ~@2 a5@2 ~@2 c6, f2@7 ~ d4@2 ~@4 [c4,f4]@2 ~ c6@2 ~@5, ~@9 f2@8 ~ f2@6", // F A#maj7 Am G5 F5
  W: "[g3,a#3,a#5]@3 g5@2 [f3,g3,a#3,a#5]@2 ~@17, ~@3 f3 ~@20", // Gm Gm7
  X: "[c3,g3,c4,f4] ~@2 c3@2 [g3,c4,f4] ~@3 [g3,c4,e4]@6 [g3,c4]@3 [g3,c4,d4]@6, c2, ~@7 c3@16 ~, ~@5 e4@3", // Csus4 C C5 Gsus4
  Y: "[g3,d4]@3 ~ [d#3,g3] d4 ~@12 a#3@3 a3@3, d#2, ~@3 c4@5", // G5 D#
  Z: "[g3,d4]@3 ~ [d#3,g3] d4 ~@12 [a#3,d5]@2 f5 a3@3, d#2, ~@3 c4@5, ~@21 a5 ~@2", // G5 D# A#
  AA: "[a#4,a#5]@5 [a#4,a#5]@3 ~ a#4@2 [a#4,a#5]@3 [a#4,a#5]@3 ~@4 [f3,a#3,d4]@3, [f3,a#3,d4]@8 [f3,a#3,d4]@7 ~@2 [f3,a#3,d4]@4 ~@3, ~@9 a#5 ~@8 [a#4,a#5]@5 ~", // A#
  AB: "[[a4,a5]@3 [c5,c6] ~@3 [f4,f5] ~ [f3,a3,c4]@2 ~@2 f4 ~ a4 ~ d5@2 ~ c5 a4 ~ a#4@2 ~@2 g4@3 ~@8 g4 a#4 ~ c5 d5 ~ f5 g5 ~ a#5@4 g#5@2 f5 c6@2 a#5 g#5@2 f5 d#5@2 g#5 d#5@2 c5 f5@2 [f3,a#3,d#4]@2 ~@4 [d5,d6]@2 ~ [d5,d6]@3 f5 d5 ~@2 [a5,c6]@2 ~ [g#5,c6] ~@2 f5@2 d5 [c4,f5]@2 ~ [f4,a4]@2 [d4,f4,a4,d5]@3 [e4,g4,b4,e5] [e4,g4,b4,e5]@3 [f4,a4,c5,f5] ~@3 g4 [d5,g5] [g4,b4,d5,g5]@3 [a4,c5,e5,a5] ~ [c5,e5]@2 [b4,d5,f5,b5]@2, [g#4,g#5] ~@3 [f4,f5]@3 ~@2 [f4,f5]@5 ~@40 a#5 ~@28 c4@10 ~@3 g2@24, ~@5 [f3,a3,c4]@4 ~@2 [f3,a3,c4]@6 ~@6 [f3,a#3,d4]@8 ~@2 [f3,g3,a#3,d4]@10 ~@4 [f3,g#3,a#3,d#4]@18 ~@3 g#3 ~@2 [d3,g3,c4,f4]@11 ~ [d3,g3,f4]@12 f3@2 ~@23, ~@83 c5@2 ~@11 [d4,d5] ~@10 [f4,a4,c5,f5]@4 ~@9, ~@84 g#5 ~@4 [g5,d6]@2 ~@18 b4@2 ~@4 [a4,a5]@3 ~@2]/5", // A C F D#sus2 D Am G# F5 …
  AC: "[c5,d#5,g5,c6] ~@11", // Cm
  AD: "[c3,g3,c4,f4] ~@2 c3@2 [g3,c4,f4] ~@3 [g3,c4]@6 [g3,c4]@3 [g3,c4]@6, c2, ~@7 c3@16 ~, ~@3 f4@5", // Csus4 C5
  AE: "c3 ~@8 [g3,c4,e4]@3, c2, [g3,c4,e4]@4 [g3,e4]@5 [g3,c4,e4]@9 ~@6, ~@3 c3@2 c4@4 ~@15, ~@2 c3@3 c3@3", // C
  AF: "b2@2 ~ b2@2 ~ b2@3 g3@3 ~@9 f2@3, b1, [d4,a4]@3 [d4,g4]@5, a3@5 a3@5 ~@2 b2@6 b2@6, ~@5 g3@3", // D5 G5
  AG: "[a2,g3,c4,e4]@3 ~ [g3,c4,e4]@2 ~@12 a2@5 ~, a1@23 ~, ~ a2 a2@2 a2@2 ~@2, ~@9 [c4,e4]@14 ~, ~@9 g3@6 g3@8 ~", // Am7 C
  AH: "g#2@3 g#2@2 ~@13 [g3,c4,f4]@6, g#1, [g3,c4,g4]@5 [g3,c4,g4]@4 [g3,c4,f4]@8 ~@7, ~@2 g#2@2 ~ g#2@3", // Csus4 C5 Csus4
  AI: "c3 ~@8 [g3,c4,e4]@3, c2, [g3,c4,e4]@4 g3@5 [g3,c4,e4]@9 ~@6, ~@3 c3@2 [c4,e4]@4 ~@15, ~@2 c3@3 c3@3", // C
  AJ: "a3 ~ b2 g3 ~@3 f2, b1, [d4,a4]@10 ~@5 g3@9, b2@2 ~ b2@3 ~@6 b2@6 b2@6, ~@4 a3@5 [d4,g4]@15", // D5 G5
  AK: "[a2,g3,c4,e4]@3 ~@15 a2@5 ~, a1@23 ~, ~@3 a2@2 g3@2 ~@2 [c4,e4]@14 ~, ~@2 [c4,e4] a2@3 a2@3 ~@3, ~@9 g3@6 g3@8 ~", // Am7 C
  AL: "g#2 ~@5 [g3,c4,f4]@2, g#1, [g3,c4,g4]@4 [c4,g4]@5 ~@15, ~@3 g#2@2 g3@4 [g3,c4,f4]@8 ~@7, ~@2 g#2@2 ~ g#2@3", // Csus4 C5 Csus4
  AM: "c3 ~@8 [g3,c4,e4]@3, c2, [g3,c4,e4]@4 c4@5 ~@15, ~@3 c3@2 [g3,e4]@4 [g3,c4,e4]@9 ~@6, ~@2 c3@3 c3@3", // C
  AN: "[a2,g3,c4,e4]@3 ~@15 a2@5 ~, a1@23 ~, ~@3 a2@2 [g3,e4]@2 ~@2 [c4,e4]@14 ~, ~@2 c4 a2@3 a2@3 ~@3, ~@9 g3@6 g3@8 ~", // Am7 C
  AO: "g#2 ~@5 [g3,c4,f4]@2, g#1, [g3,c4,g4]@4 [g3,g4]@5 [g3,c4,f4]@8 ~@7, ~@3 g#2@2 c4@4 ~@15, ~@2 g#2@2 ~ g#2@3", // Csus4 C5 G Csus4
  AP: "c3 ~@8 [g3,c4,e4]@3, c2, [g3,c4,e4]@4 [c4,e4]@5 ~@15, ~@3 c3@2 g3@4 [g3,c4,e4]@9 ~@6, ~@2 c3@3 c3@3", // C
  AQ: "[a2,g3,c4,e4]@3 ~@15 a2@5 ~, a1@23 ~, ~@3 a2@2 c4@2 ~@2 [c4,e4]@14 ~, ~@2 [g3,e4] a2@3 a2@3 ~@3, ~@9 g3@6 g3@8 ~", // Am7 C
  AR: "c3@2 ~ c3@2 ~@13 [g3,c4,e4]@6, c2, [g3,c4,e4]@5 [g3,c4,e4]@4 [g3,c4,e4]@9 ~@6, ~@2 c3@3 c3@3", // C
  AS: "[g#2,g3,c4,g4] ~@5 [g3,c4,f4]@2, g#1, ~ g#2 g#2@2 ~ g#2@3, ~@4 [g3,c4,g4]@5 [g3,c4,f4]@8 ~@7", // G#maj7 Csus4 C5 Csus4
  AT: "c3 ~@8 [g3,c4,e4]@3, c2, [g3,c4,e4]@4 e4@5 ~@15, ~@3 c3@2 [g3,c4]@4 [g3,c4,e4]@9 ~@6, ~@2 c3@3 c3@3", // C C5 C
  AU: "a3@3 b2@2 ~ b2@3 g3@3 ~@9 f2@3, b1, [d4,a4]@3 [d4,g4]@5, b2@2 ~@3 a3@5 ~@2 b2@6 b2@6, ~@5 g3@3", // D5 G5
  AV: "[a2,g3,c4,e4]@3 a2@2 ~@13 a2@5 ~, a1@23 ~, ~@5 [g3,c4,e4]@2 ~@2 [c4,e4]@14 ~, ~ a2!2 ~, ~@9 g3@6 g3@8 ~", // Am7 C
  AW: "[[c3,g3,c4,e4]@23 ~, c2]/2", // C
})).s("gm_piano").gain(0.48).pan(0.6)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~ A@16 B@2 A@2 B@2 A@3 C D A@2 C D A ~@8 A@4 B@2 A@2 B@2 A@3 C D A@2 C D A ~@22 A C D A@2 C D ~@35
>`.pickRestart({
  A: "c4 ~@4 c4 ~@2 f3 c4 ~ c4 ~@2 c4 ~@2 c4!2 ~@2 c4 ~@2",
  B: "a#3 ~@4 a#3 ~@2 f3 a#3 ~ a#3 ~@2 a#3 ~@2 a#3!2 ~@2 a#3 ~@2",
  C: "d4 ~@4 d4 ~@2 f#3 d4 ~ d4 ~@2 d4 ~@2 d4!2 ~@2 d4 ~@2", D: "d4 ~@4 d4 ~@2 f3 d4 ~ d4 ~@2 d4 ~@2 d4!2 ~@2 d4 ~@2",
})).s("gm_electric_guitar_muted").gain(0.32).pan(1)

// other · electric guitar muted
const electric_guitar_muted_2 = note(`<
  ~ A B C B A B C B A B C B A B C D A B C B A B C B E F C G E F C G ~@8 A B C B A B C B A B C B E F C G E F C G ~@22 E F
  C G E F C ~@35
>`.pickRestart({
  A: "g3 ~@2 f3 ~ a#3 ~@8 g3 f3@3 g3@2 ~ f3 ~@2", B: "g3@2 ~ f3 ~ g3 ~@8 g3 f3@3 g3@2 ~ f3 ~@2",
  C: "g3 ~@2 f3 ~ g3 ~@8 g3 f3@3 g3@2 ~ f3 ~@2", D: "g3@2 ~ f3 ~ g3 ~@6 d4@3 c4@2 a#3 c4@4 ~@2",
  E: "g3 ~@2 f3 ~ c4 ~@8 g3 f3@3 g3@2 ~ f3 ~@2", F: "a3@2 ~ f#3 ~ a3 ~@8 a3 f#3@3 a3@2 ~ f#3 ~@2",
  G: "g3@2 ~ f3 ~ g3 ~@8 g3 e3@3 g3@2 ~ e3 ~@2",
})).s("gm_electric_guitar_muted").gain(0.32).pan(0)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~ A@8 B@8 C@4 D@4 E@4 F@4 G@8 H@4 C@4 D@4 I@4 J@4 K@8 L@8 M@6 N@4 O@4 P@8 Q@8 R@8 S@8 T@2
>`.pickRestart({
  A: "[[g1,a#3]@47 ~@24 a3@24 [g1,g2,a#3]@48 ~@24 a3@25, c4, g3@71 ~@24 g3@72 ~@25, g2@46 ~ [f1,f2,f3]@49 ~@47 [f1,f3]@49, ~@3 f2]/8", // Gm F
  B: "[[g2,a#3,d4]@47 ~ a4@17 a3@31 [g2,a#3,d4]@48 a4@18 a3@26 ~@4, f4@187 ~@5, ~@47 f2@48 ~@49 [f2,c4]@44 ~@4, ~@48 c4@49 ~@95]/8", // Gm F5
  C: "[g2@47 f2@49]/4", D: "[g2@47 ~@37 c4@5 d4@7, ~@47 f2@49]/4",
  E: "[~@3 f#3 ~@3 e3, g3@24 d2@24 [g2,a3,a#3]@25 ~@23, [c2,c3,a#3,d#4]@23 a3@23 ~@2 f3@36 ~@12, ~@23 d4@49 [c2,c3,g3]@24, ~@23 c4@25 ~@23 c4@25]/4", // Gm Cm7 C5
  F: "[[c2,c3,a#3,d#4]@23 ~@13 f#3@12 ~@36 e4@12, g3@24 d2@24 [g2,a3,a#3]@25 ~@23, ~@23 d4@49 [c2,c3,g4]@24, ~@23 c4@25 f4@37 ~@11, ~@23 a3@23 ~@25 c4@25]/4", // Cm7 Gm C5
  G: "[a4@10 g4@13 ~ [f#2,e3]@24 ~@4 c5@5 ~ b4@6 ~@8 [a#3,d5]@8 ~ c4@14 ~ b4@4 ~@20 [f#2,a4]@24 ~@4 c5@5 b4@6 a4@6 ~@3 a#3@9 c4@15, d4@191 ~, a3@12 g4@4 a4@4 g4@5 d5@11 e2@6 d#2@6, [g2,b3,b4]@23 d5@25 e2@24 d#2@8 c5@15 b3 g2@23 e3@24 ~ [g3,g4]@48, ~@23 a4@25 g3@47 a3@72 ~@25]/8", // F#7 A# F#m G
  H: "[[g1,g2,a#3,d4]@47 [f1,f2,a3,c4]@49, f4]/4", // Gm F
  I: "[~@3 f#3 ~@3 e3, g3@24 d2@24 [g2,a3,a#3]@25 ~@23, [c2,c3,a#3,d#4]@23 a3@23 ~@2 f3@37 ~@11, ~@23 d4@49 [c2,c3,g3]@24, ~@23 c4@25 ~@23 c4@25]/4", // Gm Cm7 C5
  J: "[[c2,c3,a#3,d#4]@23 ~@13 f#3@12 ~@36 e4@12, g3@24 d2@24 [g2,a3,a#3]@25 ~@23, ~@23 d4@49 [c2,c3,g4]@24, ~@23 c4@25 f4@36 ~@12, ~@23 a3@23 ~@25 c4@25]/4", // Cm7 Gm C5
  K: "[a4@10 g4@13 ~ [f#2,e3]@24 ~@4 c5@5 ~ b4@6 ~@8 [a#3,d5]@8 ~ c4@14 ~ b4@4 ~@20 [f#2,a4]@24 ~@4 c5@5 b4@5 a4@6 ~@4 a#3@9 c4@15, d4@191 ~, a3@12 g4@4 a4@4 g4@5 d5@11 e2@6 d#2@6, [g2,b3,b4]@23 d5@25 e2@24 d#2@8 c5@15 b3 g2@23 e3@24 ~ [g3,g4]@48, ~@23 a4@25 g3@47 a3@72 ~@25]/8", // F#7 A# F#m G
  L: "[a4@10 g4@13 ~ [f#2,e3]@24 ~@4 c5@5 ~ b4@6 ~@8 a#3@8 ~ c4@14 ~ b4@4 ~@20 [f#2,a4]@24 ~@4 c5@5 b4@5 a4@6 ~@4 a#3@9 c4@15, d4@191 ~, a3@48 g4@16 a4@16 g4@39 e3@24 ~ [g3,g4]@48, [g2,b3,b4]@23 d5@25 e2@23 d5 d#2@8 c5@15 a3@73 ~@24, ~@23 a4@25 g3@47 [g2,b3]@5 d5@44 e2@24 d#2@24]/8", // F#7 F#m G
  M: "[~@24 c4@23 [g2,g3,d4]@24 [f#2,c#4]@24 ~ d2@24 [g2,d4]@24, f3@48 ~@23 f3@73, [a#2,a#3,d4]@25 ~@22 a#3@49 c4@48, ~@23 a2@24 ~@48 a3@49]/6", // G5 F#5 G5 A#
  N: "[[c2,c3,a#3,d#4]@23 ~@13 f#3@12 ~@36 e3@12, g3@24 d2@24 [g2,a3,a#3]@25 ~@23, ~@23 d4@49 [c2,c3,g3]@24, ~@23 c4@25 ~@23 c4@25, ~@23 a3@23 ~@2 f3@36 ~@12]/4", // Cm7 Gm C5
  O: "[[c2,c3,a#3,d#4,a#4]@23 ~@13 f#3@12 ~@24 [c2,c3,g4]@4 ~@20, g3 a4@2 ~, ~@23 d4@49 ~@24, ~@23 c4@25 ~@23 c4@4 ~@21, ~@23 a3 d2@24 [g2,a3,a#3,f4]@25 ~@23]/4", // Cm7 C5 Gm7
  P: "[[c2,c4,e4]@24 a4@17 ~@7 a1@23 ~@9 f4@10 d#4@6 [c2,e4]@23 a4@18 ~@7 a1@23 ~@9 d#4@16, g3@191 ~, ~@24 [b1,d4]@23 c4@70 ~@27 c4@47 ~, ~@41 g4@40 ~@56 g4@39 ~@16, ~@71 g#1@25 ~@23 [b1,d4]@25 ~@23 g#1@25]/8", // C Bm
  Q: "[[c2,c3,c4,e4]@24 a4@17 ~@7 a1@23 ~@9 f4@10 d#4@6 [c2,e4]@23 a4@18 ~@7 a1@23 ~@9 d#4@16, g3@191 ~, ~@24 [b1,d4]@24 a2@22 ~ g#1@25 c3@22 ~ b2@23 ~@2 c4@47 ~, ~@24 b2@22 ~ c4@70 ~@20 g4@31 g#2@24, ~@41 g4@31 g#2@25 ~@22 [b1,d4]@25 a2@22 ~ g#1@25]/8", // C Bm
  R: "[[c2,c3,c4,e4]@24 a4@17 ~@7 [a1,a2]@23 ~@9 f4@10 d#4@6 [c2,c3,e4]@23 a4@18 ~@7 [a1,a2]@23 ~@9 d#4@16, g3@191 ~, ~@24 [b1,d4]@24 ~@23 g#1@25 ~@23 [b1,b2,d4]@25 ~@23 g#1@25, ~@24 b2@22 ~ c4@72 ~@18 g4@31 g#2@24, ~@41 g4@31 g#2@25 ~@47 c4@47 ~]/8", // C A C A Bm
  S: "[[c2,c3,c4,e4]@24 a4@17 ~@7 a1@23 ~@9 f4@10 d#4@6 [c2,e4]@23 a4@18 ~@7 a1@23 ~@9 d#4@16, g3@191 ~, ~@24 [b1,d4]@24 a2@22 ~ [g#1,g#2]@25 c3@22 ~ [b1,d4]@25 a2@22 ~ g#1@25, ~@24 b2@22 ~ c4@72 b2@23 ~@2 c4@47 ~, ~@41 g4@40 ~@56 g4@31 g#2@24]/8", // C Bm G# Bm
  T: "[[c2,c3,g3,c4,e4]@11 ~]/2", // C
})).s("gm_synth_strings_1").gain(0.32)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@13 A B C D ~@24 E F G H ~@16 I J K L I J K L I J K L I J K L ~@13 M@2 N O P Q N O P Q N O P Q N O P Q N O P Q N O P
  Q N O P Q N O P R@2
>`.pickRestart({
  A: "g2@4 ~ g2 ~@2 g2 g2@13 ~@2", B: "g2@4 ~ g2 ~@2 g2 g2@11 ~ g2 ~@2", C: "f2@4 f2 ~@3 f2 f2@10 ~@2 f2 ~@2",
  D: "f2@4 ~ f2 ~@2 f2 f2@15", E: "g2@23 ~", F: "g2@5 g2@3", G: "f2@14 ~ f2@8 ~", H: "f2", I: "g3", J: "f#3", K: "e3",
  L: "d#3", M: "[~@3 c3@5 c3@8, ~@9 c4@38 ~]/2", N: "b2", O: "a2", P: "g#2", Q: "c3", R: "[c3@15 ~]/2",
})).s("gm_distortion_guitar").gain(0.48).pan(1)

// other · distortion guitar · soft notes
const distortion_guitar_soft = note("<~@17 A ~@3 B ~@23 A ~@3 B ~@75>".pickRestart({
  A: "[d4,g4]@4 ~ [d4,g4] ~@3 [d4,g4]@6 ~@9", B: "[d4,g4]@23 ~",
})).s("gm_distortion_guitar").gain(0.32).pan(1)

// drums · kick
const kick = s("bd").struct(`<
  ~@9 A@23 B A@3 C A@3 D A@3 E A@15 B A@3 C A@3 D A@3 C A@3 F A@3 G A H A@3 C A@3 I A@3 C A@3 D A@3 C A@3 D A@3 C A@3 D
  A@3 C A@3 D J ~
>`.pickRestart({
  A: "x ~@2 x ~@7 x!2 ~ x!2 ~@8", B: "x ~@4 x ~@5 x!2 ~ x!2 ~@8", C: "x ~@2 x ~@7 x!2 ~@2 x ~ x ~@6",
  D: "x ~@10 x!2 ~@11", E: "x ~@10 x ~@5 x ~@6", F: "x ~@10 x ~@2 x ~@9", G: "x ~@10 x ~@3 x ~ x ~@6",
// … 100 more lines

More by Morandi