Strudelify

Ready to Die

The Notorious B.I.G.

KeyC minorTempo137 bpm
0:00/0:00
// Ready to Die — The Notorious B.I.G.
// 137 bpm, 4/4, key C minor. 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 185 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(137/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(`<
  A@2 B@2 C@2 D@2 A@2 B@2 E@2 F@2 A@2 B@2 E@2 F@2 A@2 B@2 E@2 F@2 A@2 B@2 E@2 F@2 G H I J K L@3 M N B@2 E@2 F@2 A@2 B@2
  E@2 F@2 A@2 B@2 E@2 F@2 A@2 B@2 E@2 O@2 A@2 B@2 E@2 F@2 A@2 B@2 E@2 F@2 A@2 B@2 E@2 P@2 Q R S T@5 U@2 V@6 W X@2 Y@2 Z
  AA AB AC ~ AD AE AF AG@2 AH AI AJ@2 AK AL AM AN AO AP@2 AQ AR AS AT@3 AU ~@32
>`.pickRestart({
  A: "[c2@37 ~@5 g1@6]/2", B: "[c2@41 ~ g1@6]/2", C: "[ab1@40 ~ d2@7]/2", D: "[ab1@7 g1]/2", E: "[c2@40 ~ d2@7]/2",
  F: "[c2@7 g1]/2", G: "eb1@5 ~", H: "~@5 g1@6 f1@7 eb1@6", I: "c1@7 ~@5", J: "~@6 f1@6 g1@5 bb1@7", K: "ab1@5 ~@3",
  L: "[~@15 g1@2 ab1@6 g1@18 bb1@6 d2@13 eb2@12]/3", M: "c2 ~@5", N: "~@3 g1", O: "[c2@7 ~]/2", P: "[c2@42 g1 g1@5]/2",
  Q: "c2@18 g1@3 c2@2 ~", R: "~@8 g1 c2@2 g1", S: "c2@18 g1@4 c1 ~",
  T: "[~@18 bb1@3 ab1@19 f1@2 ab1@4 bb1@18 g1@2 bb1@4 ab1@24 g1@20 eb2@6]/5",
  U: "[c2@21 g1@2 c2@12 g1@5 c2@2 g1@4 eb1@2]/2",
  V: "[c1@17 ~ g1@3 c2@19 d2@2 eb2@4 ~ ab1@18 bb1@30 f1@4 ab1@15 g1@4 bb1@18 b1@8, ~@23 c2 ~@48]/6",
  W: "c2@5 ~@4 g1@2 eb1", X: "[~@18 g1@12 f1@4 g1@2 f1@3 eb1@2 c1@4 ~@3]/2",
  Y: "[~@12 f1@4 ~ bb1@4 ~ ab1@19 b1 c2@4 bb1@2, ~@8 g1 ~@15]/2", Z: "~@18 eb2@3 ~ g2@2, ~@17 c2@2 ~@5",
  AA: "f2@18 eb2@3 ~ d2@2", AB: "~@6 eb2@2 b1 ~@3", AC: "d2@4 c2@2 bb1@3 ~ g1@2 eb1@3 ~@2 bb1@4 g1@2 ~, ~@8 d1 ~@3",
  AD: "~@2 f2 d2 bb1 g1 eb2@3 bb1@2 c2", AE: "d2@2 g1 bb1@2 c2@4 bb1@2 ab1", AF: "~@9 g2@2 f2, ~@17 gb2@2 ~@5",
  AG: "[~@12 d2@9 c2@2 b1, ~@21 eb2@2 eb2@2 ~@23, ~@11 f2 ~@12]/2", AH: "~@12 g1@4 bb1@2 g1@3 ~ f1@2",
  AI: "eb1@2 ~@2 c1@3 ~@15 c1 ~", AJ: "[c1@2 ~@4 c1@3 ~@13 c1@4 ~@5 c2@2 ~@7 c2@2 ~@6]/2",
  AK: "~@6 c1@3 ~ c2@2 ~@4 c1@2 c2@4 ab1@2", AL: "~@8 f1 c2@2 ab1", AM: "g1@4 bb1@2 ~@12 d2@3 c2@3",
  AN: "ab1@4 f1@2 ~@10 c2@2 ab1@3 ~@3", AO: "~@2 bb1 g1@2 ~ g1@5 bb1",
  AP: "[c2@3 c1@2 ~ c2@3 ~@8 c2@2 ~@5 c2@2 ~@8 c2@2 ~@6 g1@4 c2@2, ~@23 c1@2 ~@16 c1@2 ~@5]/2",
  AQ: "~@12 c2@2 ~@3 g1@5 c2@2, ~@8 c1 ~@3", AR: "~@8 c2 g1@2 ab1", AS: "c1 ~@4 f1 ~@3 ab1 ~@2",
  AT: "[~@4 g1@2 ~@6 bb1@2 ~@4 c2@3 ab1@2 [f1,g1]@2 ~@15 f1@2 ab1@3 bb1@2 g1@2 ~@9 bb1@2 ~@10 c2@2, ~@11 g1@2 ~@59]/3", // Fsus2
  AU: "~@5 c1@3 ~@16",
})).s("gm_fretless_bass").gain(0.64).pan(0.4)

// bass · fretless bass · soft notes
const bass_soft = note(`<
  ~@5 A ~@7 A ~@7 A ~@7 A ~@7 A ~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@25 B ~@13 A C D ~@41
>`.pickRestart({
  A: "~@8 g1 ~@3", B: "~@9 ab1@2 f1", C: "~@11 f1", D: "~@5 f1 ~@6",
})).s("gm_fretless_bass").gain(0.32).pan(0.4)

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A B@2 C@3 D E F B@2 C@3 D E G ~@7 A H@2 C@3 D E F H@2 C@3 D E G ~@14 I@2 H@2 J@3 K E F H@2 J@3 K E G ~@11 L@2 D E F
  H@2 C@3 D E F H@2 C@3 D E G ~@15 A H@2 C@3 D E F H@2 C@3 D E G ~@48
>`.pickRestart({
  A: "[c4,c5]@2 ~ [c4,c5]@9", B: "[~@6 [eb4,eb5] ~@5 c5@6 g4@5 ~ [c4,c5]@3 ~@3 c4@18, ~@23 [bb4,b4]@2 ~@5 c5@11 ~@7]/2",
  C: "[~@6 [eb4,eb5]@2 ~@4 c5@6 ~ g4@4 ~ [c4,c5]@4 ~@20 d5@6 [eb4,eb5] ~@5 c5@6 [g3,g4]@5 ~, ~@19 g3@2 ~@2 [bb4,b4]@2 ~@6 c4@19 ~@22]/3", // Eb C Eb G Bmaj7
  D: "~ c4@2 ~@3 c5@16 ~@2, c5 ~@2 c4@6 ~@3", E: "~@6 [eb4,eb5]@2 ~@5 c4@5 ~@5 b4, ~@12 c5@5 ~ [g3,g4]@4 a4@2, ~@7 ab4",
  F: "[c4,c5] ~@2 [c4,c5]@9", G: "[c4,c5] ~@11",
  H: "[d5@6 [eb4,eb5] ~@5 c5@6 g4@5 ~ [c4,c5]@3 ~@3 c4@18, ~@23 [bb4,b4]@2 ~@5 c5@11 ~@7]/2", // Eb C Bmaj7
  I: "[~@9 g4@5 ~@4 [ab2,ab3,b3,eb4]@3 ~@3 [c4,c5]@4 ~@2 [c4,c5]@18, ~@6 g3@9 ~@9 [bb3,d4]@8 ~@16, ~@7 g2@8 ~@2 [f2,f3]@2 ~@29, ~@8 [bb2,d3,bb3]@8 ~@2 b2@5 [d3,eb3,g3]@8 ~@17, ~@8 d4 f4 ~@14 db4 ~@23]/2", // Abm C Bb F Bb Ebmaj7
  J: "[~@6 [eb4,eb5]@2 ~@4 c5@6 ~ g4@4 ~ [c4,c5]@4 ~@20 d5@6 [eb4,eb5] ~@5 c5@6 [g3,g4]@6, ~@19 g3@2 ~@2 [bb4,b4]@2 ~@6 c4@19 ~@22]/3", // Eb C Eb G Bmaj7
  K: "~ c4 ~@4 c5@16 ~@2, c5 ~@2 c4@6 ~@3", L: "[[c4,c5]@4 ~@20 d5@6 [eb4,eb5] ~@5 c5@6 [g3,g4]@5 ~, ~@7 c4@19 ~@22]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.32).pan(0.6)

// other · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~ A ~ B C D E F ~ A ~ B C D E F ~@11 B C D E F ~@3 B C D E F ~@15 G ~@3 B C D E F ~@3 B C D E F ~@12 C D E F ~@3 B C D
  E H ~@3 B C D E H ~@19 B C D E F ~@3 B C D E F ~@49
>`.pickRestart({
  A: "d5 ~@3", B: "~ d5@5 ~@18", C: "~@6 c5@17 ~", D: "~@23 [bb3,bb4], ~@11 ab4", E: "c4 ~@11",
  F: "d5@5 ~@18 bb3, ~@11 a3", G: "~@2 f2@3 ~@3", H: "d5@6 ~@17 bb3, ~@11 a3",
})).s("gm_acoustic_guitar_nylon").gain(0.14).pan(0.6)

// chords · brass section
const brass_section = note(`<
  ~@24 A@4 B@4 C@8 D ~ E F@2 G@2 H@2 ~@7 A@4 B@4 C@8 D ~@15 A@4 B@4 C@8 D ~@16 I ~ J K@4 L@2 M@2 N@4 O ~@48
>`.pickRestart({
  A: "[~@14 c4 [bb3,bb4], g4@29 ~@3, ~@83 c5@8 ~@5]/4", // Bb
  B: "[[ab3,ab4]@18 bb4@29 ~ [c4,f4]@17 ~ g4@21 ~@8 c5, eb4@15 ~@3 f4@20 ~@9 ab4@17 ~ d4@21 ~@10, ~@18 bb3@16 ~@13 ab3@15 ~@3 bb3@23 ~@8, ~@48 c3@11 ~@6 d3@30 ~]/4", // Ab F5
  C: "[~@48 eb4@44 ~@4 eb4@16 ~@7 [d3,bb3]@18 g4@6 ~ [ab3,c4]@16 ~@2 [bb3,g4,bb4]@21 ~@2 b4@5 ~ c5, g4@86 ~@9 [ab3,ab4]@19 [d4,bb4]@26 ~@3 ab4@19 ~@30, ~@48 f4@6 d4@9 ~, ~@144 c3@13 ~@5 d3@23 ~@7]/8", // Gm Ab Eb Ab Gm
  D: "[c3,eb4] ~@3", E: "[eb4,g4,c5]@7 ~@5", F: "[~@23 [c4,eb4,g4,bb4]@16 ~@9]/2", G: "[~@23 [bb3,d4,g4]@15 ~@10]/2",
  H: "[~@12 [eb4,b4]@10 ~ [eb4,g4]@15 ~@10, ~@11 c5@8 ~@5]/2", I: "~ d5", J: "~@3 [bb3,bb4]",
  K: "[~@12 c4@5 ~@3 g4@23 ~@4 [ab3,eb4,ab4]@19 [g4,bb4]@24 ~@6, [ab3,ab4]@18 [bb3,bb4]@25 ~@53, ~@12 eb4@7 d4@24 ~@23 d4@26 ~@4]/4", // Ab5 Gm Ab Bb
  L: "[~ g4@30 ~@4 c4@7 bb3@6, ~ eb4@20 ~@27, ~ c5@16 ~@31, ~ db5 ~@46]/2",
  M: "[~@5 g4@2 [bb3,bb4], c4@43 ~@5, ~ eb4@7]/2", // Bb
  N: "[~@5 f4@13 ~@6 bb3@23 ~ [ab4,c5]@12 eb5@6 ~@6 f3@11 g3@13, [ab3,ab4]@19 bb4@24 ~@53, ~@5 c4@11 ~@2 d4@20 ~@9 ab3@19 ~@5 bb3@12 ~@13, ~@19 g4@22 ~@6 eb4@14 ~@5 [f4,g4,bb4,d5]@24 ~@6]/4", // Ab Gm7
  O: "[c4,eb4,g4,c5] ~@11", // Cm
})).s("gm_brass_section").gain(0.48).pan(0.4)

// chords · brass section · soft notes
const brass_section_soft = note(`<
  ~@24 A@4 ~@2 B@7 ~@2 C@2 ~@15 A@4 ~@2 B@7 ~@2 C@2 ~@15 A@4 ~@2 B@7 ~@2 C@2 ~@15 D@4 ~ E@3 F G ~@3 H@2 ~@4 I@3 ~@43
>`.pickRestart({
  A: "[~ d4@11 ~@12 d4@13 ~@14 c5@21 ~ d5@12 ~@11, ~ eb4@90 ~@5, ~ c5@40 ~@31 d4@12 ~@12, ~@37 c4@37 ~@22]/4",
  B: "[~@17 bb4@28 ~@38 [d4,d5]@12 ~@37 d5@15 ~@21, ~@46 c4@41 ~@9 c4@30 ~@6 d4@12 ~@24, ~@47 eb4@42 ~@6 c5@26 ~@47, ~@119 [bb3,bb4]@15 ~@34]/7", // D Bb
  C: "[~@23 g4@6 ~@19]/2", D: "[~@48 c5@11 ~@37, ~ g4@29 ~@2]/4", E: "[~@23 c4@16 ~@27 b4@5 ~, ~@41 bb3@27 ~@4]/3",
  F: "c4", G: "~ d4 ~@2", H: "[~@23 c4@19 ~@6]/2", I: "[~@16 d3@11 ~@9, ~@2 [e3,f3]@7 ~@3]/3",
})).s("gm_brass_section").gain(0.24).pan(0.4)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@23 A@5 B@4 C D E F G H I@3 ~@29 J@4 K@7 L M@2 N@4 O P@2 Q R@4 S T U@4 V@3 W@3 X@8 Y Z AA@3 ~@64
>`.pickRestart({
  A: "[~@66 bb4@12 g4@6 ~@18 g4@10 ~ bb4@7, ~@11 g5@21 ~@28, ~@42 eb5@25 ~@17 c5@20 ~@16, ~@27 g4@7 ~@22 bb3@4]/5",
  B: "[~@24 g4@23 [ab3,ab4]@24 [g3,g4]@13 f4@5 ~ eb4@5 ~, [ab3,ab4]@13 ~@29 f3@3 f4 ~@2, ~@89 g4@2 ~@5]/4", // Ab G Ab
  C: "~ c4@17 [d3,d4]@6", D: "[eb3,eb4] f4 [g3,g4] [bb3,bb4]", E: "c5@11 ~",
  F: "[g4,bb4]@2 c5 [bb3,bb4], d5@5 ~@3, eb4@10 ~@2 eb4@9 ~@3", G: "[ab3,eb4,ab4,c5]@23 ~", H: "g4@3 ~",
  I: "[~@45 eb5@2 d5@5 ~@20, ~@17 g3@31 ~@24, ~@18 g4@29 ~@25, ~@35 g5@13 ~@24]/3",
  J: "[~@18 [g3,g4]@11 [ab3,ab4]@7 [bb3,bb4]@4 c5@4 ~ d4@4 [eb4,eb5]@16 f5@12 ~ g5@11 [ab4,ab5]@7, ~@44 d5@5 ~@28 g4@12 ~@7]/4", // G Ab Bb Eb Ab
  K: "[[bb4,bb5]@16 [c5,c6]@12 ~@6 eb6@5 ~@4 g6@4 [ab5,ab6]@18 ~ bb6@23 [f5,f6]@3 [gb5,gb6]@3 [g5,g6]@2 ~ ab6@34 [bb5,bb6]@11 [g5,g6]@25, ~@28 [d5,d6]@7 ~@7 g5@5 ~@18 bb5@23 ~@9 ab5@35 ~@36, ~@33 eb5@6 f6@5 ~@21 ab6@2 ~@101, ~@66 a6 ~@101]/7", // Bb C Ab F Gb G Bb G …
  L: "[f5,f6]@3 [g5,g6]@2 [eb5,eb6]@3 [f5,f6]@3 db5 d5@9 [eb5,eb6]@3, ~@11 d6@11 ~@2", // F G Eb F Eb
  M: "[c6@18 ~@2 d5@15 [bb4,bb5]@4 c6@3 [ab4,ab5]@3 ~ bb4@2, d5@4 ~@14 d6@17 ~@10 bb5@3]/2", // Bb Ab
  N: "[~@26 bb5@20 ~@10 ab5@11 [bb4,bb5]@10 ~@10 eb6@4 [f5,f6]@5, ~ [ab4,ab5]@27 ~@18 f4@2 g5@8 ~@26 d5@5 ~@9, ~@26 bb4@19 ~@2 f5@2 ab4@18 ~@16 d6@5 ~@8, ~@24 g4 ~@18 eb5@2 ~@3]/4", // Bb F Ab
  O: "g6@11 ~, g5@19 ~@5", P: "[~@2 c6 ~@4 bb6, ~@3 bb5@5]/2",
  Q: "[ab5,ab6]@5 [g5,g6]@5 ~ f5@5 ~ eb6@7, ~@5 f6@3 eb5@4", // Ab G
  R: "[~ d6@2 [eb5,eb6]@3 c6@11 [bb4,bb5]@3 [c5,c6]@3 [ab4,ab5]@14 g5@3 ~ ab4@2 f5@30 ~@4 [g4,g5]@2 ~ ab5@2 ~ ab5 ~@2 ab5 ~ ab5 ~@2 g4@3 f5@2, ~@40 ab5@3 ~@36 ab4@3 [g4,g5]@2 ab4@2 g4@3 ab4@2 ~@5, ~@85 g5@2 g5@2 ~ ab5@2 ~@4]/4", // Eb Bb C Ab G
  S: "~ [eb4,eb5]@23", // Eb
  T: "[c4,c5]@2 d5@2 ~ eb4@2 ~@2 [g4,g5]@2 ab5@2 bb4 bb5@2 ~ [c5,c6]@2 d6@2 ~ eb5 ~, ~@4 eb5@2 ~ f5@4 ~@2 ab4@2 ~@6 eb6@2 ~", // C G C
  U: "[f6@4 ~@8 g6@29 f6@3 g6@3 f6@17 eb6@14 d6@11 c6@5 bb5@2, ~@89 d6 ~@6]/4",
  V: "[~ ab5@16 bb5@11 ab5@2 g5@3 f5@3 eb5@2 d5@2 ~@2 f5@17 c5@2 ~@2 eb5@2 f5@2 ~ ab5@2 bb5@2, ~@20 eb5 ~@15, ~@41 e5@3 ~@23 g5@2 ~@3]/3",
  W: "[~ c6@2 d6@2 eb6@2 ~ f6@2 g6@4 ~@4 c7@17 bb6@2 ~@2 g6@2 ~@9 g6@3 ~@2 eb6@2 f6@7 ~ eb6@2 eb6 d6@2 c6@2, ~@37 ab6@14 ~@21]/3",
  X: "[~@2 ab5@29 bb5@3 ab5 bb5@3 c6@2 bb5@3 ab5@23 ~ g4@12 [f4,f5]@5 [eb4,eb5]@5 ~ d5@5 [c4,c5]@12 ~ g3@6 db5 ~@11 [c4,c5]@11 f4@13 g4@11 ~@6 ab3@9 [bb3,bb4]@10 c5@6, ~@66 g5@13 ~@10 d4@6 db5 ~@11 g4@10 ~@44 ab4@15 ~@16, ~@114 [d4,d5]@14 ~@22 g3@17 ~@25]/8", // F Eb C Bb D
  Y: "~ d4@7 eb4@9 ~ c4@6, ~@17 c5@7", Z: "[ab3,ab4]@9 [bb3,bb4]@8 [c4,c5]@7",
  AA: "[[d4,d5]@7 eb4@8 ~ e4@2 ~@17 bb5@6 [b4,b5]@6 c6@3 ~@22, ~@7 eb5@7 ~ [f4,f5]@8 g5@14 ~@35, ~@11 g4@7 ~@18]/3", // D B F
})).s("gm_string_ensemble_1").gain(0.28)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note(`<
  ~@27 A ~ B ~ C D E F@5 ~ G ~@30 H I@2 ~ J ~@6 K L ~@2 M N O@2 ~@2 P Q@4 R S ~@4 T U V ~ W ~@5 X@2 Y Z ~ AA AB@2 ~@64
>`.pickRestart({
  A: "~@7 g3@10 ~@7", B: "~ g3@22 ~", C: "~@11 f3", D: "~@10 c3@9 ~@5", E: "~ f3 ~@2",
  F: "[~@24 d4@12 c4@15 ~@20 d4@22 ~@5 c3@14 ~@8, c4@27 ~@44 bb4@20 ~@4 [ab3,ab4]@18 ~@7, ~@16 [c4,f4]@3 ~]/5", // Ab F5
  G: "~@3 c5@7 ~@14", H: "~@8 c4@3 ~", I: "[~@9 f4@7 ~@8]/2", J: "~@14 f5@5 ~@5", K: "~ c5@23", L: "~@15 c5@4 ~@5",
  M: "~@2 ab5 ~@21", N: "~@5 [c5,c6]@7 ~@12", O: "[~@8 g6@3 ~@5, ~@20 d6@17 ~@11]/2", P: "d5@4 ~@2 c5@11 ~@7",
  Q: "[~@14 [gb4,g4]@3 ~@4 f4@33 ~@11 g5 ~ g5@3 ~ f4@2 ~@23]/4", R: "~@3 d4@3 ~ f4@3 ~@6 bb4@2 ~@4 d5 ~",
  S: "~@2 g6@8 ~@3 eb5@3 ~@8", T: "~@23 d5", U: "~@13 d5@2 ~@9", V: "~@13 ab6@2 bb6@3 ~@6", W: "~@5 f6@3 ~@10 f6 ~@5",
  X: "[~@17 f3@14 ~@17]/2", Y: "~@17 c4@7", Z: "d5@8 eb5@9 ~@7", AA: "~@13 e5@2 ~@9",
  AB: "[~@11 bb4@8 ~@4 c5@2 ~@23]/2",
})).s("gm_string_ensemble_1").gain(0.16)

// chords · tremolo strings
const tremolo_strings = note("<~@60 A@4 ~@4 B@4 ~@113>".pickRestart({
  A: "[~ [f4,c5]@95, ab4@95 ~, f3@15 ~]/4", B: "[[f3,f4,ab4,c5]@47 ~]/4",
})).s("gm_tremolo_strings").gain(0.4).pan(0.7)

// chords · vibraphone
const vibraphone = note(`<
  ~@71 A@6 B@2 ~ C@5 D E F G@3 H@6 I@2 J@2 K L M N O@2 P@2 Q@5 R S T@2 U V@3 W@4 X@2 Y Z AA AB AC@5 AD AE AF@3 AG@2 AH
  AI AJ AK AL@6 ~@31
>`.pickRestart({
  A: "[~@10 g4 g5@4 ~ eb5@2 d5@3 eb5@2 d5@4 c5 [c3,bb3]@4 ~@4 [d4,eb4,g4,bb4,d5]@6 c5@4 ~@12 f4@2 eb4@3 f4@2 eb4 d4@3 ~@15 bb4@4 g4@15 ~@7 eb4 ~@2 c4@4 ab3@5 ~@4 [g3,ab3,c4,eb4,g4]@4 ~@7 [c4,f4]@2 ~@5, ~@21 c4@3 g3@6 ~@5 bb3@9 ~@24 [f3,ab3] ~@3, ~@46 g4@12 ~@8 e4@2 ~ c4@2 c3@37 ~@36, ~@82 eb4@6 ~@23 f4@2 ~@31, ~@83 g4@2 ~@27 eb4@2 ~@30]/6", // C7 Ebmaj7 Abmaj7 F5 Fm
  B: "[~@5 [bb3,d4,g4]@5 f4@2 [bb3,d4,g4]@3 f4@2 g2@4 bb3@2 ~ ab3@8 ~@16, ~@5 g3@12 d4@3 ~@3 f3@11 ~@14, ~@23 [c4,g4]@7 ~@18, ~@24 eb4@5 ~@19]/2", // Gm C5
  C: "[c3@3 ~@2 eb3@2 g3@3 bb3@2 d4@4 bb3@2 ~@3 g3@2 c3@5 ~ c4@4 eb4@2 g4@4 f4@2 eb4@4 ~@2 c4@2 ~@9 db4 [d4,g4,bb4,d5]@6 c5@9 ~ g3@12 ~@2 ab3 [bb3,bb4]@4 ab4@21 ~@2 ab4 bb4 ab4, ~@28 g3@2 ~@29 e4@2 ~@4 eb4@4 ~@6 g4@9 ~@4 g4@2 ~@4 ab3@25 ~, ~@89 [ab4,a4]@2 ~@29]/5", // Gm Bb Amaj7
  D: "[g3,g4]@10 ~@2 [g3,g4]@4 f4@2 ~ eb3@2 ~ c4@2, ~@5 f3 ~@6, ~@11 f4@2 ~@5 eb4@2 ~@4", E: "~@2 ab3@9 ~@13",
  F: "~@4 c3 [c4,eb4] [g3,g4]@4 [f3,f4]@3 ~@7 d4@2 f4@2, ~@3 ab3@2 eb3@2 ~@11 [g2,g3]@2 ~@4, ~@19 [bb2,bb3]@2 ~@3", // Cm G F G Bb
  G: "[[eb3,eb4]@5 [c3,c4]@2 ~@16 eb3 ~ [bb3,bb4]@6 g4@4 [bb3,bb4]@2 g3@5 [f3,f4]@4 ab3 ~@2 eb3@5 ~@3 eb4@2 [eb3,f4]@2 d4@9 c4@2, ~@23 eb4@2 g3 ~@5 g3@2 ~@14 g3@2 ~@5 [d3,d4]@5 ~@13, ~@24 g4@2 ~@20 g4@2 eb4@5 ~@19]/3", // Eb C Bb F Ebsus2 D
  H: "[~@12 [g2,g3]@4 [c3,c4]@2 [bb2,bb3]@4 [ab2,ab3]@8 ~@7 g4@3 [f3,f4]@2 ~ eb3@4 [f3,f4]@7 [d3,d4]@4 [eb3,eb4]@2 [f3,f4]@4 ~@2 g4@3 bb4@18 ~@3 [g3,bb4]@4 [f3,ab4]@13 ~ g4@6 f4@4 ~ c3@5 ~@6 [d4,eb4,g4,bb4,d5]@11 ~@3, ~@35 ab3@2 ~@32 g3@11 ~@64, ~@36 g3@4 ~@25 gb3@4 ~@38 eb3@6 ~@31, ~@36 c4@2 ~@4 eb4@5 ~@17 gb4@2 ~@52 eb4@9 ~@17]/6", // G C Bb Ab F D Eb F …
  I: "[~@4 [f4,g4,bb4,d5,f5]@2 ~@7 [g4,bb4]@2 ~@8 [bb3,c4,d4,f4]@10 ~@8 [g3,bb3,d4,g4]@3 ~@4, ~@6 [d4,eb4,d5] ~@4 bb4@5 ~@8]/2", // Gm7 Gm Bb Gm Ebmaj7
  J: "[~@5 [f3,g3,f4]@3 ~@4 [g3,bb3,eb4]@5 ~@12 c3@11 f2@2 ~@4 c3@2, ~@4 [bb3,d4]@3 ~@5 eb3@9 g4@27, ~@21 [ab3,c4]@23 ~@4, ~@21 eb4@17 ~@10]/2", // Fsus2 Eb Bb Ab
  K: "f3@4 ab3@2 c4@4 g2@5 ~@2 d3@4 f3@3, e3 ~@9 bb3@13 ~", L: "~@2 f2 ab2@2 c3 f3@2 ab3 c4@2 eb4, ~@12 e3 ~@11",
  M: "g4@3 ~ f4@2 [bb2,eb4]@3 ~@3 g3@5 ~ c4@3 ~ bb3@2, ~ g2 ~ d3 ~@4, ~@5 d4@4 ~@3", // Eb5
  N: "c3@8 ~@4 c2@4 g2@2 c3@3 ~ d3 ~, c4@7 ~@5",
  O: "[eb3@2 ~@3 g3@2 ~ c4@2 ~@2 eb4@2 g4@2 ~ f4@2 eb4@2 d4 eb4 d4@2 ~@3 c2@4 g2@3 c3@3 ~ d3 ~@2 eb3@2 ~ g3@2 ~, ~@25 c4@8 ~@2 b2 ~@12, ~@28 d4 ~@19]/2",
  P: "[bb3@2 d4@3 ~@2 bb3@2 ~@2 f3@2 ~ eb3@2 ~ eb3 ~ eb3@2 c3@2 ab2@5 ~@9 eb3@2 g3@2 ab3 ~ eb4@2 g4@2 ~, ~@5 g3 ~@3 f3 ~@11 c4 ~@2]/2",
  Q: "[c4@2 ~@2 eb4@2 ~ bb4@2 ab4@8 g4@3 f4@2 ~ eb4@2 g3@5 ab3@2 ~ c4@2 eb4@4 f4@3 g4@4 f4@6 d4@4 ~@2 bb3@2 g3@5 ab3@3 ~@2 ab3 g3@4 ~ g3@5 f3@2 eb3@2 ~@2 c3@2 eb3@4 f3@5 ~@16 gb3 ~ bb3@2 ~@2, ~@6 g4@2 ~@61 bb3@2 ~@4 c4@2 ~@38 g3@2 ~@3]/5",
  R: "f4@4 d4@2 eb4@4 bb3@2 d4@3 ~ bb3@2 c4@4 g3@2", S: "bb3@3 ~ f3@2 g3@4 f3@2 ~@6 eb3@4 ~ eb3, ~@11 f3",
  T: "[c3@4 ab2@2 ~@3 eb3@2 ~ f3@15 ~@2 g3 ~ ab3@2 ~ eb4@2 g4@2 gb4@3 ~ eb4@2 ~ c4 ~@2, ~@11 g3@2 ~@20 c4@2 ~@6 e4@2 ~@5]/2",
  U: "f4 ~@2 eb4 ~@2 c4@2 ~ eb4 ~@3 eb4 f4 eb4 c4@2 bb3@2 bb3 g3@2 gb3, ~@6 f4 ~@5",
  V: "[~ g3@13 ~@2 g3 ~ f4@3 d4@2 eb4@4 c4@2 ~@4 eb4 g4@2 d5@3 ~ c5@2 bb4@4 g4@18 f4@3 eb4@3 ~@2, ~@8 bb3 ~@6 c4@19 ~@2, ~@17 d4@2 ~@53]/3",
  W: "[eb4 d4@6 ~@5 db4 d4@6 eb4@3 ~ g3@12 ab3 [bb3,bb4]@4 [g3,g4]@2 ab4@4 ~ f3@7 ~ c5@2 [ab4,eb5]@2 c5@2 ab4@2 ~@3 g4@4 [ab4,eb5]@7 ~ ab4@4 f4@7 ~ eb4@4 ~@2, ~ c4 ~@10 [g4,bb4,d5]@7 [c4,c5]@5 ~@22 ab3@2 ~@29 [g4,c5]@2 ~@17, ~@22 g4@13 ab4@2 ~@9 f4@4 ~@4 g5@3 ~@39]/4", // Bb G Ab5 Gm C C5
  X: "[~ d4 ~@2 d4@2 ~ g4@2 ~@3 g4@3 ~@7 [b3,eb4,bb4]@6 ~ bb4@2 f4@2 eb4@2 b3@2 bb3@5 ab3@4 bb3@2, [g4,bb4]@5 ~@6 bb4@2 ~@9 f4@2 ~@24]/2", // Bmaj7 Gm
  Y: "g3@4 d4@2 c4@4 g3@2 c4@6 bb3@3 ~ g3@2", Z: "bb3@4 ~ g3@4 ~ d3@2 f3@4 d3@2 eb3@2 ~@4, ~@2 f3 ~@9",
  AA: "~ eb3 ~ f3@2 gb3 ~ g3 ~ bb3 d4 f4@2 ~ eb4@2 ~@2 d4 eb4 ~ f4@2 gb4, ~@13 d4@2 ~@9",
  AB: "~ g4@2 ~ d5 f5@2 ~@10 eb5@2 ~@3 eb5@2, ~@8 d5 ~@3",
  AC: "[c5 eb5 ~@2 eb5 ~ eb5 ~@2 eb5 ~@2 eb5 ~ eb5 c5 eb5@2 ~ eb5 ~ f5 ~ eb5@3 ~@2 eb5@2 eb5 c5 eb5@2 ~@2 eb5 f5 eb5 ~ eb5@2 ~ eb5@2 g5@2 ~ eb5 d5@2 ~@2 eb5 ~@2 c5 d5 ~ [bb4,c5] ~@2 bb4 ~@2 bb4 g4@3 ~@3 f4 eb4@3 ~ eb4 g4 d4@8 ~ c4 [c4,d4] bb3@4 c4@4 ~@10 [bb3,c4,g4,c5]@2 ~@2 [c3,bb3,c4,g4] ~ [c4,g4]@2 ~@2 [c3,bb3,c4,g4,c5] ~, ~@13 f5@2 ~@7 c5@2 ~@15 c5@2 ~ c5@2 ~@3 f5@2 ~@2 eb5@2 ~@2 d5@2 ~@4 ab4@2 ~ c5@2 ab4 ~@4 g4@2 ~@5 f4@2 ~@32 c5@2 ~@6, ~@52 f5@2 ~@25 eb4 ~@28 [c3,d4] ~@5 bb3 ~@5]/5", // Bbsus2 Csus2 C7 C5 C7 Csus2
  AD: "[g4,c5]@2 ~@2 g4 ~ [d4,g4,d5]@2 ~@2 c5@2 ~ bb3 ~@10, [c3,bb3] ~@9 c4 ~@13", // C5 G5 C7
  AE: "~@4 bb4@3 g4@3 ~@2 [d3,a3,d4,c5]@6 a4@3 ~ g4@2, [c3,bb3] ~@2", // D7 C7
  AF: "[[eb4,d5]@4 bb4@2 g4@3 ~@9 bb4@4 ~@13 c5@2 [ab4,g5]@4 eb5@2 ~@3 ab4@2 db5 c5@4 ~ f5@4 bb4@10 ~@4, eb3@5 ~@13, ~@10 eb4@9 ~@3 ab4@6 ~@25 d5@2 ~@3 d5@8 ~@6, ~@17 g3@3 ~@3 ab3@27 ~@22]/3", // Ebmaj7 Abmaj7
  AG: "[~@12 [eb4,bb4]@4 [c4,g4]@2 eb4 ~@3 ab4@7 ~@2 d4@3 ~@6 [bb3,g4]@8, [eb3,ab3]@27 ~@3 [bb3,g4]@4 f4@2 d4@11 ~, ~@35 g3@8 ~@5]/2", // Eb5 C5 Eb Ab5 Eb
  AH: "~@3 c2@3 g2@3 c3@3 d3@2 ~ eb3@2 ~ g3@4 bb3@2, f4@5 ~@19, ~ c4@5 ~@18",
  AI: "d4@5 ~ bb3@3 g3@2 ~ eb3@3 d3@2 c3@3 ~@4", AJ: "~@2 g2 ~@3 eb2 ~@2 eb3 ~ g3",
  AK: "bb3@4 d4@2 c4@4 bb3@2 g3@4 bb3@2 g3@3 ~ bb3@2, ~@21 ab3@2 ~, ~@22 a3 ~",
  AL: "[ab3@4 eb3@2 ab3 ~@3 eb4 ~@2 f4@2 ~@25 [bb3,c4,f4]@23 ~@6 [f3,eb4]@18 ~@10 bb4@24 ~@23, ~@4 f2 ~@6 g4@21 ~@37 bb4@20 ~@7 g4@24 ~@24, ~@11 ab3@8 ~@21 gb3@26 ~@3 bb3@16 ~@10 c3@28 ~@21, ~@69 f4@13 ~@14 [bb3,eb4]@26 ~@22]/6", // Bbsus2 F7 Eb5
})).s("gm_vibraphone").gain(0.45).pan(0.1)

// chords · vibraphone · soft notes
const vibraphone_soft = note(`<
  ~@74 A ~@5 B C D@2 ~ E@2 F G H I@2 ~@3 J ~@3 K@2 L ~@5 M N O ~@3 P ~@2 Q R S ~@2 T U V ~@2 W ~ X Y Z AA AB AC AD ~ AE
  AF AG AH AI ~@4 AJ ~@2 AK ~@2 AL@2 ~ AM ~@30
>`.pickRestart({
  A: "~@9 c4@6 ~ c4@3 ~@5", B: "~@9 c4@2 ~", C: "~@7 d4", D: "[~@9 eb4@6 ~@3 c4@10 ~@20, ~@9 c4 ~@38]/2",
  E: "[~@17 f3@2 ~@4 c3@2 ~@7 ab2@2 ~@14]/2", F: "~@3 ab2@2 ~@16 d3@2 ~", G: "~@11 c4", H: "~@2 g4 ~",
  I: "[~@10 e4@2 ~ d3@10 c3@11 ~@14]/2", J: "~@18 d3@5 ~", K: "[~@22 d3@8 ~@13 ab2@4 ~]/2", L: "~@5 bb2 ~@2",
  M: "~@5 c4@3 ~@9 f3 ~@6", N: "~@10 ab2@3 ~@11", O: "~@3 c4@2 ~@19", P: "~@11 d4", Q: "~@7 c3@2 ~@15",
  R: "~@15 f4@2 ~@7", S: "~@19 c4@2 ~@3", T: "~@23 f4", U: "~@11 c4 eb4@4 ~@8", V: "~@12 a4 ~@11", W: "~@10 g4 ~@13",
  X: "ab3 ~@23", Y: "~@7 c3", Z: "d3 ~@7 c4 ~@3", AA: "~@7 d5 ~ f5@4 e5@2 eb5 ~@3 f5@2 e5@2 ~, ~@9 e5 ~@2",
  AB: "~@21 eb5 ~@2", AC: "~@5 f5@2 ~@10 f5 ~@2 f5 ~@3", AD: "~@21 f4@2 ~", AE: "~@12 [bb4,b4] ~@5 c5@2 ~@4",
  AF: "c4@2 ~ c5 [bb3,c4] ~@5 g4 ~@2 c3 ~@10", AG: "~@4 c4@3 ~@3 eb4 ~@13", AH: "bb3@15 ~@4 bb3 ~@4, d4@7 ~@17",
  AI: "~@19 c5@3 ~@2", AJ: "~@4 c4@3 ~@17", AK: "~@8 c4 ~@15", AL: "[~@23 d4@25]/2", AM: "~@13 f3@4 ~@7, ~@5 e3@12 ~@7",
})).s("gm_vibraphone").gain(0.22).pan(0.1)

// other · piano
const piano = note(`<
  ~@40 A@4 B@3 C@3 D E F@2 G H I@2 J@2 K L M@2 N@3 O@2 P@7 Q@3 ~ R@2 S@2 T U V W X@2 Y@4 Z AA AB AC@3 AD AE AF@3 ~@80
// … 276 more lines

More by The Notorious B.I.G.