Strudelify

Why Goodbye

Rene Froger

KeyB♭ majorTempo125 bpm
0:00/0:00
// Why Goodbye — Rene Froger
// 125 bpm, 4/4, key A# 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 137 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/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 · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@13 A@2 B C@2 D@2 E F G@2 H I J@2 K L M@2 N@2 O@2 P@6 Q@2 R@2 S@6 T@5 U@5 V@2 W X@3 Y@8 Z@2 Q@2 R@2 AA@6 AB@8 AC@2
  AD@6 AE@6 AF@2 AG@2 AH@3 AI AJ@4 AK@8 AL@7
>`.pickRestart({
  A: "[~ f3@23, [d3,bb3]@23 ~]/2", B: "[c3,eb3,g3,bb3]@11 ~",
  C: "[~ bb4, [f3,bb3,c4], ~@11 [f5,bb5]@13, ~@23 eb5@25]/2", // Fsus4 Bb5
  D: "[[c4,d4,f4]@12 ~@33 f4 ~@2, bb2@47 ~, ~@2 [c4,d4,f4]@2 d4@3 c4, ~@9 bb3@6 ~@3 f3@5 ~, ~@24 c4@15 bb3@7 ~@2]/2", // Dm7
  E: "~@6 eb4@6 [g3,bb3,eb4]@11 ~, [c3,f4]@23 ~, [g3,bb3] ~", F: "c3@2 ~ f4, [f3,c4], ~ c3, ~@5 a3@3",
  G: "[~@7 f4, bb2@12 c4 bb3@3, [c4,d4] d4, ~ f3@2 ~ c4 f3@3, ~ bb4@3]/2", // Csus2
  H: "~@7 [bb2,bb4], [c3,bb3,eb4,f4], ~ g3@3, ~@3 a4", I: "[a2,eb4,g4,c5] [gb2,gb4,a4,c5,eb5]",
  J: "[d4@15 ~@9 g4@11 ~@10 a4@3, g2@35 ~ [f2,bb3,d4,f4]@12, g4@21 bb4@14 ~@13, bb4@18 [a4,d5]@17 ~@7 g4@6, d5@15 d4@20 ~@13]/2", // Bb D5
  K: "g4@5 ~ g5@2, [eb2,d4,bb4,d5], eb3@4 ~ g4@3", L: "a4@6 [c4,f4,a4]@17 ~, [eb2,eb3,c5,f5]@23 ~",
  M: "[f3@3 ~@3 [a3,a4]@2, [d2,f4], c4@7 c4@9, ~@3 f3@5, ~ [bb3,bb4]]/2", // A Dm Bb
  N: "[ab2 ~@32 eb5@14 ~, ab1@27 g4@3 bb4@17 ~, eb4@9 bb3@12 bb3@26 ~, bb3@6 g3@6 eb4@12 eb4@23 ~, g3@3 ab2@44 ~]/2",
  O: "[~@4 [f4,f5] ~@3, [f2,bb3,eb4]@6 [f4,f5] [g4,g5]@4 ~@5, f4!2 eb5@6, ~ f3@15, ~@3 bb4@13]/2", // F Ebsus2 F G
  P: "[~@10 eb5@2 [eb3,c4,g4,bb4,c5]@8 [bb2,bb3,d4,f4,c5]@8 [bb3,d4,f4,bb4]@4 ~ [g3,eb4] [bb3,f4]@2 [bb3,eb4]@6 [bb3,eb4]@2 [c3,g3,c4,eb4]@4, ~ [eb3,d4,g4,bb4,d5]@2 ~@4 bb2@2 [c3,g3]@2 ~, ~@96 [f3,d4]@7 ~@41]/6", // Cm7 Bb Cm Bb5 Eb5 Cm Ebmaj7 C5 …
  Q: "[[f2,g3,bb3,eb4] [c4,d4,f4] [c4,d4,f4] [bb2,c4,eb4,ab4], ~ bb2@2 ~]/2", // Eb Dm7 Ab
  R: "[[bb2,bb3,d4,f4]@3 ~@8 bb3 [a2,eb3,g3,c4]@4, ~@12 [eb2,eb3,d4,g4,bb4]@23 ~@13, ~@30 a3@5 ~@13]/2", // Bb Am7b5 Ebmaj7
  S: "[[gb2,a3,c4,eb4]@2 [c4,a4] [bb3,g4] a3 [bb3,g4] [bb3,d4] [c4,eb4] [d4,f4] [bb3,d4] [bb3,g4]@2 bb3!2 [bb3,eb4,f4]@2 [eb4,f4]@2 f3@2 [bb3,eb4,f4]@2 [bb2,f3,d4,f4]@2, ~@12 [g2,g3]@24 f2@23 ~ d4 ~@11 [d4,g4]@12 ~@12 bb3@6 ~@18 f3@6 ~@18, ~@24 gb4@13 ~@11 f3@11 ~ eb3@21 ~@3 f2@24 bb2@24 ~@12]/6", // Gbdim F Eb Bb Cm Dm Bb Eb …
  T: "[[bb3,d4,f4]@12 ~@12 [a3,d4]@12 ~@24 [c4,d4,f4]@12 ~@30 c4@3 f4 ~@8 eb4@6, f3@6 ~@6 f2@36 [c4,f4]@6 f3@30 d4@15 bb3@7 ~@14, ~@12 [g3,bb3,eb4]@24 [g3,eb4]@36 [c4,d4,f4]@6 bb3@12 [c5,f5]@17 ~@13, ~@24 f3@9 ~@3 c4@9 f3@3 a3@36 c4@12 f3@10 ~@14, ~@36 f3@6 bb3@18 bb2@47 ~ [c3,g3,bb3,f4]@12]/5", // Bb D5 Dm7 F5 Eb Cm Dm7 F5 …
  U: "[[g3,bb3,eb4]@11 ~ c3@12 ~@6 f4@6 ~@45 a4@3 bb4 ~@20 [bb2,bb4]@3 [a2,eb4,g4,c5]@12, ~@4 [f3,c4]@8 ~@2 f3@4 ~ bb4@7 g4@2 ~@6 a4@2 ~@4, ~@2 c3 bb2@4 [c3,bb3,eb4,f4]@2 ~, ~@9 a3@3 [c4,d4]@8 [c4,d4,c5,f5]@8 ~@12, ~@8 c5@2 ~ f3@3 ~ g3@3 ~@2]/5", // Eb Bb Am7b5 F5 Cm7 Csus2 Dm7
  V: "[[gb2,gb4,a4,c5,eb5]@2 d4@2 ~@3 f3, ~ g2@2 [f2,a3,d4], ~@4 g4@6 bb4@3 bb3@3, ~@12 bb4@15 [a4,d5]@20 ~, ~@12 d5@12 d4@9 g4@14 ~]/2", // Gbdim Dm D5
  W: "~@3 a4 [eb2,eb3,d4,g4,bb4,d5]@4, [a3,bb3,d4]@13 ~@11, ~ g4 ~@2", // Ebmaj7 Bbmaj7
  X: "[~@6 g5@6 a4@6 [c4,f4,a4]@17 ~ f3@18 ~@6 [bb3,bb4]@12, ~@3 g4@9 [eb2,eb3,c5,f5]@23 ~ [d2,f4]@36, ~@12 c4@7 c4@5, ~@3 f3]/3", // F Bb F7 Dm
  Y: "[[a3,a4]@12 ab2 ~@32 eb5@14 ~@25 [f4,f5]@12 ~@30 eb5@6 [eb3,c4,g4,bb4,c5]@24 [bb2,bb3,d4,f4,c5]@24 [bb2,bb3,d4,f4,bb4]@12, ~@12 ab1@27 g4@3 bb4@17 ~@10 bb4@9 [f4,f5]@3 [g4,g5]@15 [f4,f5]@4 g5@32 ~@60, ~@12 eb4@9 bb3@12 bb3@26 ~@4 f3@45 [eb3,d4,g4,bb4,d5]@24 ~@60, ~@12 bb3@6 g3@6 eb4@12 eb4@23 ~ f4@6 f4@6 eb5@48 ~@72, ~@12 g3@3 ab2@44 ~ [f2,bb3,eb4]@40 g4@4 [f4,f5]@28 ~@60]/8", // A F Cm7 Bb F G F Ebmaj7 …
  Z: "[~ [g3,eb4] [bb3,f4]@2 [bb3,eb4]@6 [bb3,eb4]@2 [c3,g3,c4,eb4]@4, [f3,d4]@7 ~@5 [c3,g3]@24 ~@12]/2", // Cm Bb5 Eb5 Cm Dm C5
  AA: "[[gb2,a3,c4,eb4]@2 [c4,a4] [bb3,g4] a3 [bb3,g4] [bb3,d4] [c4,eb4] [d4,f4] [bb3,d4] [bb3,g4]@2 bb3!2 [bb3,eb4,f4]@2 [eb4,f4]@2 [f3,bb3,f4]@2 [f3,bb3,d4,f4]@2 [bb2,ab3,c4,eb4]@2, ~@12 [g2,g3]@24 f2@23 ~ d4 ~@11 [d4,g4]@12 ~@12 bb3@6 ~@42, ~@24 gb4@13 ~@11 f3@11 ~ eb3@21 ~@3 f2@24 [bb2,eb4]@24 ~@12]/6", // Gbdim F Eb Bb Cm Dm Bb Eb …
  AB: "[[bb2,bb3,d4,f4]@11 ~@43 bb3@6 ~@42 bb3@6 ~@6 c4@3 ~@12 bb2@3 ~@18 bb3@6 [ab3,c4]@12 [ab3,c4]@12 f3@6 f3@6, ~@12 eb2@18 bb3@3 eb3@24 ~@3 g3@9 d4@9 bb3@3 eb3@18 g3@8 ~ bb2@21 ~@3 bb2@21 ~@3 bb2@21 ~@3 bb2@9 ~@3, ~@12 eb3@15 g3@9 eb2@24 eb2@24 eb2@25 ~@8 d4@15 ~@6 c4@18 ~@36, ~@12 g3@6 c4@18 g3@6 c4@18 ~@3 bb3@12 g3@9 g3@6 c4@17 ~ f3@15 f3@9 f3@9 d4@15 ~@36, ~@15 bb3@6 d4@16 ~@2 bb3@6 d4@18 ~@3 c4@18 ~@3 bb3@6 d4@14 ~@4 bb3@15 bb3@6 ~@3 bb3@12 f3@9 f3@6 ~@6 f3@6 ~@6 [ab3,eb4]@12]/8", // Bb Ab Ab5
  AC: "[f3@2 ~ bb2 ~@2 c4 ~@5 g3@2 g3@2, [bb3,d4]@11 ~ g3@9 d4@12 eb3@12 ~@3, bb2@3 ~ eb2@8 [eb2,bb3,c4]@4, ~@6 f3@5 ~ eb3@18 bb3@6 ~@12, ~@5 bb3@4 g3@3 ~@4]/2", // Bb Cm7
  AD: "[f3@2 f3@2 bb3@3 bb3@3 g3@2 eb3@4 ~@3 c3 [g3,bb3,eb4]@4 g3@2 ~ f3 ~@4 g3@2 ~ c3 ~@4 a3@2 ~ d3 [g2,b3,d4,g4]@4, [a3,c4]@2 g3@3 ~ bb3@3 bb3 ~@2 [bb3,eb4]@2 [bb3,eb4]@2 [bb3,eb4]@2 [a3,c4,f4]@2 [c4,f4]@2 ~@2, g2@9 ~@3 c2@24 c2@25 ~@29 f3@18 ~@18 a3@6 ~@12, ~@12 c3@12 ~@24 eb3@13 ~@17 g3@6 g3@9 ~@9 g3@6 ~@6 g3@18 ~@12, ~@4 eb3@2 ~@6 g3@5 g3@3 f2@8 f2@8 g2@8 ~@4]/6", // Eb G Am Eb5 F F5
  AE: "[[g3,b3,d4,g4]@10 ~@20 f5@6 [f3,d4,a4,c5,d5]@24 [c3,c4,e4,g4,d5]@24 [c4,e4,g4,c5]@12 ~@3 [a3,f4]@3 [c4,g4]@6 [c4,f4]@18 [c4,f4]@6 [d3,a3,d4,f4]@12, ~ [f3,e4,a4,c5,e5]@2 ~@4 c3@2 [d3,a3]@2 ~, ~@96 [g3,e4]@7 ~@41]/6", // G Dm7 C Dm C5 F5 Dm Fmaj7 …
  AF: "[[g2,a3,c4,f4] [d4,e4,g4] [d4,e4,g4] [c3,d4,f4,bb4], ~ c3@2 ~]/2", // F Em7 Bb
  AG: "[[c3,c4,e4,g4]@3 ~@8 c4 [b2,f3,a3,d4]@4, ~@12 [f2,f3,e4,a4,c5]@23 ~@13, ~@30 b3@5 ~@13]/2", // C Bm7b5 Fmaj7
  AH: "[[ab2,b3,d4,f4]@2 [d4,b4] [c4,a4] b3 [c4,a4] [c4,e4] [d4,f4] [e4,g4] [c4,e4] [f3,c4,a4]@2, ~@12 [a2,a3]@24 g2@23 ~@13, ~@24 ab4@13 ~@11 g3@11 ~ e4 ~@11]/3", // Abdim G F C Dm Em C F …
  AI: "c4!2 [g2,c4,f4,g4]@2, [e4,a4] ~", // Csus4 A5
  AJ: "[[f4,g4]@4 [a3,c4,e4]@6 ~ f2 ~@7 b2 ~@7 bb2 [bb1,bb3,d4,f4]@4, c4 ~ f1@4 [b1,d4]@4 [bb1,c4,eb4]@4 ~@2, ~@4 f2@7 ~ g3@5 g3@3 ab3@6 ab3@2 ~@4, ~@5 [a3,c4,e4] b3@3 b3 ~@6, ~@16 b2@3 ~@5 bb2@3 ~@5]/4", // Fsus2 Am Bb Bm Cm7 Am
  AK: "[~@9 bb2@3 [g3,c4,e4]@23 ~ [g2,g3,b3,d4]@71 ~@7 c4@5 ~ [d4,e4,g4]@12 [d4,e4,g4]@12 [d4,e4,g4]@12 ~@12 [c4,f4,g4]@12 [c4,f4,g4]@12, f4@3 ~@24 [d4,e4,g4]@2 ~@10 [c4,f4,g4]@3 ~@6, ~ d4@3 ~@32 c3@16 c3@12, ~@6 bb3@6 g1@95 ~@55 a3@12 ~@18]/8", // C G Em7 Csus4 Em7 Csus4
  AL: "[[c4,f4]@12 ~@12 [d4,e4]@12 [d4,e4]@12 ~@6 c4@6 ~@42 a3@6 ~ g4@47 ~@12, ~@12 c3@48 c3@47 ~@61, ~@12 [d4,e4,g4]@12 ~@24 [d4,e4,g4]@13 ~@5 a3@12 a3@12 a3@12 ~@66, ~@18 c4@12 ~@30 [c4,f4,g4]@12 [c4,f4,g4]@12 [c4,f4,g4]@12 [f4,g4]@13 ~@59, ~@96 c4@11 ~ [d4,e4]@48 ~@12]/7", // F5 Dsus2 Em7 Csus4 Fsus2 Dsus2
})).s("gm_epiano2").gain(0.11).pan(0.6)

// chords · epiano2 · "E.PIANO 2" · soft notes
const epiano2_soft = note(`<
  ~@18 A B ~ C D@2 ~@4 E ~ F@2 G@2 ~ H I ~@5 J@2 ~@5 K@2 L M N O@3 P@2 Q ~@5 R ~ S@2 T@2 ~@7 J@2 ~@5 U@2 ~@3 V W X ~ Y Z
  ~ AA AB@4 ~@8 AC@2 ~@5 AD@2 ~@2 AE@2 ~@4 AF@2 AG@2 AH@2 ~ AI@3
>`.pickRestart({
  A: "~ bb3@2 ~", B: "~@2 bb3@3 ~@3, f4@7 ~", C: "a3@5 ~@3", D: "[~@3 f3@2 ~@3]/2", E: "~ eb3", F: "[~@7 d3@17]/2",
  G: "[~@18 g3@29 ~, ~@15 eb3@32 ~]/2", H: "~@4 [f4,f5]@2 ~ [g4,g5], ~ [f4,f5] ~ [f4,f5], ~@3 [g4,g5]@4 ~",
  I: "f5 ~@11, f4 ~@23", J: "[~@18 bb3@12 bb3@7 ~@11]/2",
  K: "[~@3 eb3 ~@7 f3 [bb3,eb4,f4]@4, ~@6 f3@5 ~@5, ~@5 bb3 ~@2]/2", L: "~ f3 bb3@2", M: "~@3 bb2 ~@2 f3@2, ~ f3 ~@2",
  N: "~@3 f3 ~@4", O: "[~@6 bb3@4 ~@2 f4@7 ~@5]/3", P: "[~@4 a3@5 ~@7]/2", Q: "~ f3@2 ~", R: "eb3 ~",
  S: "[~ d3@17 ~@6]/2", T: "[~@6 g3@29 ~@13, ~@3 eb3@32 ~@13]/2",
  U: "[~@3 eb3 ~@7 f3 ~@4, ~@6 f3@5 ~@5, ~@5 bb3 ~@2]/2", V: "~@3 eb3@5, ~ g3@3 ~@4", W: "eb3@3 ~@5", X: "~@3 eb3 ~@4",
  Y: "~@3 bb2 ~@2 f3@2", Z: "~@3 bb2 ~@3 bb2, ~ f3 ~@2", AA: "~@7 eb3",
  AB: "[~@9 g2@4 ~@20 c3@9 c3@15 ~@12 eb3@16 ~@8 g3@3, ~@6 eb3@3 eb3@3 ~@20, ~@8 c3@3 ~@21, ~@5 bb3 ~@10]/4",
  AC: "[~@18 c4@12 c4@7 ~@11]/2", AD: "[~@3 f3 ~@7 g3 ~@4, ~@6 g3@5 ~@5, ~@5 c4 ~@2]/2", AE: "[~@6 bb2@5 ~@5]/2",
  AF: "[~ c4@2 c4@2 c4 ~@2]/2", AG: "[~ a3@2 ~@2 a3 ~@2, ~@3 a3@2 ~@3, ~@2 g4 ~]/2",
  AH: "[~@3 c4@2 ~@3, g4!2 ~@2, ~ c4@2 ~@5]/2", AI: "[~@11 [c3,c4]@49 ~@12]/3",
})).s("gm_epiano2").gain(0.06).pan(0.6)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@13 A@2 B C@2 D@2 E@2 D@2 F G H@2 I J K L M@2 N@8 O@2 P@2 Q@8 R@6 S@2 T@2 U@8 V@6 O@2 W@2 X@7 Y@7 Z@2 AA@6 AB@6 AC@2
  AD@2 AE@8 AF@8 AG@4 AH@3
>`.pickRestart({
  A: "[bb1@47 ~]/2", B: "c2", C: "f1/2", D: "bb1/2", E: "c2/2", F: "~@6 bb1 ~, c2@7 ~", G: "a1 gb1",
  H: "[g1@36 f1@11 ~]/2", I: "eb1@23 ~", J: "ab1", K: "d1", L: "d2", M: "[ab1@47 ~]/2",
  N: "[f1@60 eb1@17 ~ eb1@3 ~@3 eb1@24 bb1@16 ~@2 bb1@3 ~@3 bb1@23 ~ c2@16 ~@2 c2@3 ~@3 c2@12]/8",
  O: "[f1@6 bb1@8 ~ bb1@3 eb2@6]/2", P: "[bb1@11 ~ eb1@16 ~@2 eb1@5 ~ a1@12]/2",
  Q: "[gb1@12 g1@16 ~@2 g1@6 f1@24 eb2@16 ~@2 eb2@3 ~@3 f2@24 bb1@48 f1@24 f2@12]/8",
  R: "[f1@11 ~ bb1@15 ~@3 bb1@4 ~@2 bb1@24 c2@16 ~@2 c2@6 a1@21 bb1 ~@2 bb1@15 bb1 ~@2 bb1@3 ~@3 bb1@12]/6",
  S: "[c2@3 d2@3 f2@6 c2@18 c2@2 ~ bb1@3 a1@12]/2", T: "[gb1@12 g1@17 ~ d2@3 g2@3 f2@11 ~]/2",
  U: "[f2@9 d2@3 eb1@14 ~ eb1 ~@2 eb1@4 ~@2 eb1@21 d1 ~@2 d1@15 d1 ~@2 d1@3 ~@3 d1@21 g1@3 ab1@16 ~@2 ab1@3 ~@3 ab1@18 c2@3 eb2@2 ~ f2@23 ~ f1@12]/8",
  V: "[f2@4 f1@4 f2@3 ~ eb1@17 ~ eb1@3 ~@3 eb1@24 bb1@16 ~@2 bb1@3 ~@3 bb1@23 ~ c2@16 ~@2 c2@3 ~@3 c2@12]/6",
  W: "[~@2 bb1@11 ~ eb1@16 eb1@5 ~ a1@12]/2",
  X: "[gb1@12 g1@16 ~@2 g1@6 f1@24 eb2@16 ~@2 eb2@3 ~@3 f2@24 bb1@48 eb1@12]/7",
  Y: "[~@3 eb1 ~@2 eb1@3 ~@3 eb1@23 ~ eb1@15 ~@3 eb1@3 ~@3 eb1@18 f1@6 bb1@15 ~@3 bb1@4 ~@2 bb1@17 ~ f1@6 bb1@15 f2@3 bb2@3 f2@3 bb2@3 c3@3 bb2@3 g2@3]/7",
  Z: "[f2@3 g2@3 f2@3 bb1@3 eb1@18 eb1@4 ~@2 eb1@11 ~]/2",
  AA: "[g1@12 c1@15 ~@3 c1@3 ~@3 c1@19 ~@2 c1@3 f1@16 ~@2 f1 ~@2 f1@3 f2@18 f1@3 gb1@3 g1@16 ~@2 g1@6 c2@10 ~@2]/6",
  AB: "[c2@12 f1@17 ~ f1@3 ~@3 f1@24 c2@16 ~@2 c2@3 ~@3 c2@23 ~ d2@16 ~@2 d2@3 ~@3 d2@12]/6",
  AC: "[g1@6 c2@8 ~ c2@3 f2@6]/2", AD: "[c2@11 ~ f1@16 ~@2 f1@5 ~ b1@12]/2",
  AE: "[ab1@12 a1@16 ~@2 a1@6 g1@24 f2@16 ~@2 f2@3 ~@3 g2@24 f1@16 ~@2 f1@6 b1@16 ~@2 b1@6 bb1@16 ~@2 bb1@6 eb2@12]/8",
  AF: "[bb1@12 ~@26 b1 ~@69 c2@48 f2@36, ~@6 g1@47 ~@43, ~@12 g2@23 ~@29]/8", AG: "[~@6 f2@31 ~@11]/4",
  AH: "[c1 c1@4 ~]/3",
})).s("gm_electric_bass_finger").gain(0.35).pan(0.4)

// chords · glockenspiel · "GLOCKENSPL"
const glockenspiel = note("<~@11 A B@2 ~@119 C@2 ~@2>".pickRestart({
  A: "~@21 c9 [bb8,b8]@2", // Bmaj7
  B: "[a8 [ab8,a8] ~ gb8 ~@4 a8 [g8,ab8]@2 gb8 [f8,gb8] ~ gb8 a8 ~ g8 ~ e8@2 [eb8,e8] ~ e8 ~@2 a8 ~ [f7,gb7,eb8] [eb7,e7] [c8,db8]@2 ~ a7 ~@14, ~@2 g8@2 [e8,f8]@2 d8@2 ~@5 e8@2 ~ [c8,ab8]@2 [a7,bb7,f8]@2 ~@3 c8@2 bb7@2 [g7,ab7,gb8]@2 [d8,eb8]@2 ~@17, ~@5 eb8@2 [db8,bb8]@2 ~@6 [db8,d8]@2 [b7,gb8]@2 ~@3 d8@2 b7@2 [a7,ab8]@2 f8@3 ~@17]/2", // Amaj7 Abmaj7 Gbmaj7 Emaj7 Ebm Emaj7 Dbmaj7 Fmaj7 …
  C: "[~@12 c9 ~ a8!2 ab8 ~ gb8 ~@4 a8 ~ gb8!2 f8 ~ gb8 a8 ~ g8 ~ e8!2 eb8 e8 ~@3 a8 gb7 [e7,f7] eb7 c8@2 a7, ~@12 b8@2 ~@4 f8@2 eb8@2 bb8@2 g8@2 ~@2 e8@2 db8@2 [bb7,b7,gb8]@2 ~@3 d8@2 b7@2 [ab7,a7,gb8,ab8]@2 eb8@2 ~@3, ~@13 bb8@2 ~@2 g8@2 e8@2 [db8,d8]@2 ab8@2 ~@4 d8@2 [c8,ab8]@2 [a7,f8]@2 ~@3 c8@2 bb7@2 [g7,f8]@2 [db8,d8]@2 ~@2]/2", // Fmaj7 Bmaj7 D Dmaj7 Fm Dm G7 Dmaj7
})).s("gm_glockenspiel").gain(0.1)

// chords · glockenspiel · "GLOCKENSPL" · soft notes
const glockenspiel_soft = note("<~@11 A B C ~@119 D E F ~>".pickRestart({
  A: "~@19 [d9,eb9] db9@2 ~@2", B: "~@6 [b8,c9] ~ [bb7,b7] [ab7,a7] ~@5 bb8 ~@3 [g7,ab7] [f7,gb7] ~@3, ~@7 c8@2 ~@15",
  C: "~@4 e8@2 ~@2 bb7 ~@4 f8@3 ~@4 gb8@3 ~, ~@7 b7@2 ~@3 [gb8,ab8,a8]@2 ~@5 ab8@2 ~@3", // Gbm
  D: "~@11 db9@2 ~@7 c9 b8 b7 [a7,bb7], ~@11 c8", E: "ab7 ~@4 bb8 ~@3 ab7 [gb7,g7] f7 ~@7 e8@2 ~@2 bb7, ~@11 b7",
  F: "~@2 [gb8,ab8,a8]@2 f8@3 ~@3 [gb8,ab8]@3 ~@11", // Gbm Gbsus2
})).s("gm_glockenspiel").gain(0.03)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  A@8 B@5 C@3 D@2 E@4 F@4 G@2 H I J@2 K@5 L@7 M@2 N@7 O P@8 Q@2 R S@8 L@7 M@2 T@6 U@8 V@2 W@2 X@5 Y@7 Z@2 AA@8 AB@4 AC@8
  AD@3
>`.pickRestart({
  A: "[~ [bb1,bb2,f3,bb3,f4]@95]/8", B: "[~@3 f3@2, ~@6 c3@19 ~@15, ~@18 g3@55 ~@47, ~@71 bb2@49]/5",
  C: "[[bb2,f3,bb3]@2 [c3,g3,bb3,eb4,f4], [d4,f4]@47 ~@25]/3", D: "[[f2,f3,g3,eb4,f4]@23 ~, bb3]/2",
  E: "[d4@48 eb4@23 ~ [a3,c4]@24, [bb3,f4]]/4", F: "[d4@48 eb4@23 ~ g3@11 ~ a3@11 ~, bb3@95 ~, f4@71 ~ [c4,eb4]@24]/4",
  G: "[g4@6 g3@5 ~, [bb3,d4]@43 ~@5]/2", H: "[bb3,d4,g4]@23 ~", I: "[a3,c4,f4]",
  J: "[c4@23 ~ bb3@23 ~, [f3,f4]@47 ~]/2", K: "[g3@47 ~ g4@23 ~ [f3,f4]@36 [g3,bb3,d4]@12, [bb3,eb4]@109 ~@11]/5",
  L: "[~@6 eb4@4 ~@2 [bb3,c4]@24 [f3,bb3,c4]@24 [f3,bb3,d4]@24 [g3,bb3,eb4]@47 ~ [f3,bb3,d4]@22 ~@2 [ab3,c4,eb4]@11 ~, ~@6 g3@11 ~@67]/7", // Bbsus2 Fsus4 Bb Eb Bb Ab
  M: "[[f3,bb3,d4]@11 ~ [g3,bb3,d4]@22 ~@2 [g3,c4,eb4]@10 ~@2]/2", // Bb Gm Cm
  N: "[[a3,c4,eb4]@11 ~ [g3,bb3,d4]@22 ~@2 [f3,bb3,d4]@22 ~@2 [g3,bb3,d4]@23 ~ [eb3,g3,c4]@22 ~@2 [f3,bb3,eb4]@23 ~ [f3,bb3,d4]@23 ~ [f3,bb3,c4]@11 ~]/7", // Adim Gm Bb Gm Cm Ebsus2 Bb Fsus4
  O: "[a3,c4,d4,f4]@11 ~ [bb3,d4,g4]@10 ~@2", // Dm7 Gm
  P: "[[c4,eb4,f4,a4]@11 ~ d4@48 eb4@23 ~ [a3,c4]@24 d4@48 eb4@23 ~ [g3,c4,eb4]@12, ~@12 f4@95 ~@85, ~@12 bb3@71 ~@25 [bb3,f4]@71 ~@13]/8", // F7 Am Cm Bb5
  Q: "[a3@11 ~ g4@24 g3@12, ~ [bb3,d4]@3]/2", R: "~ [bb3,d4,g4]",
  S: "[~@12 [a3,c4,f4]@24 c4@23 ~ bb3@23 ~ g3@47 ~ g4@23 ~@25 [g3,bb3,d4]@12, ~@36 [f3,f4]@47 ~ eb4@108, ~@7 bb3@8 ~, ~@13 [f3,f4]@3]/8", // F Gm F
  T: "[[a3,c4,eb4]@11 ~ [g3,bb3,d4]@22 ~@2 [f3,bb3,d4]@22 ~@2 [g3,bb3,d4]@23 ~ [eb3,g3,c4]@22 ~@2 eb4@11 ~ d4@11 ~ [bb2,ab3,c4,eb4]@10 ~@2, ~@108 [f3,bb3]@23 ~@13]/6", // Adim Gm Bb Gm Cm Ab Bb5
  U: "[[bb2,f3,bb3,d4]@12 [eb3,g3,bb3,d4]@96 c4@23 ~ bb3@22 ~@2 [ab3,c4,f4]@23 ~ [ab3,eb4,f4]@10 ~@2, ~@9 bb2@7, ~@54 [f3,d4]@23 ~@19]/8", // Bb Ebmaj7 Fm Fm7 Dm
  V: "[[bb3,d4,f4] [eb2,eb3,g3,bb3,d4]@3]/2", W: "[[g2,f3,a3,c4] [c2,c3,g3,bb3,eb4]@3]/2",
  X: "[~ [a3,c4,f4]@6 [b3,d4,g4]@2 [a3,c4,e4], ~ g2@8 ~]/5", // F G Am
  Y: "[~@6 f4@4 ~@2 [a3,c4,d4]@23 ~ [g3,c4,d4]@23 ~ [g3,c4,e4]@23 ~ [a3,c4,f4]@47 ~ [g3,c4,e4]@22 ~@2 [bb3,d4,f4]@11 ~]/7", // D7 Gsus4 C F C Bb
  Z: "[[g3,c4,e4]@11 ~ [a3,c4,e4]@22 ~@2 [a3,d4,f4]@10 ~@2]/2", // C Am Dm
  AA: "[[b3,d4,f4]@11 ~ [a3,c4,e4]@22 ~@2 [g3,c4,e4]@22 ~@2 [a3,c4,e4]@23 ~ [f3,a3,d4]@22 ~@2 [a3,c4,e4]@23 ~ [g3,b3,d4]@22 ~@2 [ab3,c4,eb4]@23 ~ [bb3,d4,f4]@12]/8", // Bdim Am C Am Dm Am G Ab …
  AB: "[~@12 [g3,c4,e4]@23 ~ [g3,b3,d4]@60]/4", // C G
  AC: "[~@12 [e3,g3]@47 [f3,a3]@49 [e3,g3]@47 ~ a3@36, ~ c3@15, ~@155 f3@37]/8", AD: "[~@6 [e3,g3]@23 ~@7]/3",
})).s("gm_synth_strings_1").gain(0.07).pan(0.3)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~ A@7 ~@28 B@3 C@6 D@8 E@8 ~@3 F@2 G@8 H@6 I@8 J ~@15 K@3 L@6 M@7 ~@6 N@4 O@7
>`.pickRestart({
  A: "[~@23 f3@24 bb3@36 d4@30 c4@6 eb4@6 d4@6 a3@12 bb3@6 c4@6 d4@13]/7", B: "[~@12 d6@17 eb6@6 c6@21 ~@3 c6@13]/3",
  C: "[~@11 f5@22 ~@2 eb6@24 d6@12 eb6@12 f5@24 eb6@12 d6@11 ~ d6@13, ~@5 d6@8 ~@131]/6",
  D: "[~@5 a5@2 ~ bb5@3 c6@22 ~@2 c6@6 bb5@5 ~ a5@6 bb5@6 d6@35 ~ d6@5 ~ eb6@3 c6@20 ~ d6@3 eb6@3 f6@27 d6@2 ~ c6@2 ~ bb5@2 ~ f5@3 g5@3 d5@3 eb5@16]/8",
  E: "[~@2 d5@2 ~ bb4@2 ~ g4@2 ~ c5@2 ~ bb4@2 ~ g4@2 ~ eb4@2 ~ g4@2 ~ f4@2 ~ d4@2 ~ c4@2 ~@2 bb3@71 c4@18 eb4@6 d4@11 ~ c4@6 bb3@6 f4@24 ~@13]/8",
  F: "[~@11 d4@23 ~ c4@13, ~@11 [eb3,g3,g4]@37]/2", // Eb
  G: "[~@35 bb3@12 a3@10 ~@2 [ab2,g3]@48 ~ [f3,g3,eb4]@48 d6@11 g5@22 ~@2 a5, ~@5 d3@24 ~@67, ~@10 c4@24 ~@24 [bb3,eb4]@48 ~ bb3@48 ~@37, ~@11 f4@48 ~@133, ~@11 f3@46 ~@135]/8", // Abmaj7 Cm Eb5
  H: "[~@11 f5@48 ~@24 g5@12 a5@11 ~ c6@24 eb6@11 ~@2, ~@59 f5@48 ~@37]/6",
  I: "[~@11 d6@17 ~ a5@2 ~ bb5@3 c6@29 ~ c6@6 bb5@5 ~ a5@6 bb5@19 a5@5 g5@36 a5@12 bb5@16 d5@2 ~ f5@2 ~ bb5@2 ~ ab5@2 ~ c5@2 ~ eb5@2 ~ ab5@2 ~]/8",
  J: "bb5@2 ~ d5@2 ~ f5@2 ~ bb5@2 ~@13", K: "[~@12 e6@17 f6@6 d6@21 ~@3 d6@13]/3",
  L: "[~@11 g5@22 ~@2 f6@24 e6@12 f6@12 g5@24 f6@12 e6@11 ~ e6@13, ~@5 e6@8 ~@131]/6",
  M: "[~@5 b5@2 ~ c6@3 d6@22 ~@2 d6@6 c6@5 ~ b5@6 c6@6 e6@35 ~ e6@5 ~ f6@3 d6@20 ~@2 c6@3 b5@3 c6@28 ~@8]/7",
  N: "[~@12 g5@38 a5@3 e5@3 f5@39 c6]/4",
  O: "[~@3 a5@2 g5@3 ~ f5@3 e5@22 ~ g5@48 ~@12 a5@12 g5@49 ~@12, ~@83 c6@73 ~@12]/7",
})).s("gm_string_ensemble_2").gain(0.2)

// other · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft = note("<~@8 A@3 B@7 ~@10 C D@3 E@5 ~@23 F@2 ~@17 G@2 ~@56>".pickRestart({
  A: "[~@19 eb4@53]/3",
  B: "[~@48 bb4@10 ~ a4@11 ~@2 bb4@11 ~@4 g4@2 ~ d4@2 ~ eb4@2 ~@12 a4@11 ~ bb4@47 ~@2, f4 f4, ~@4 eb4@3]/7", C: "d5",
  D: "[c5@4 bb4 a4]/3", E: "[~@45 f5@61 ~@14, bb4@107 ~@13]/5", F: "[~@11 f4@24 ~@13]/2", G: "[~@23 d6@11 ~@14]/2",
})).s("gm_string_ensemble_2").gain(0.15)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2_2 = note(`<
  ~@7 A@6 ~@15 B C@3 ~@4 D@3 E@6 ~@9 F ~@6 G@5 H@2 I@2 J@3 K L@7 ~@5 M@2 N@2 O@5 P Q@2 R@7 S@8 T@5 U@6 ~@13
>`.pickRestart({
  A: "[~@12 d5@11 eb5@6 [g3,d5]@5 ~ [c3,f4]@6 g4@31 bb4@24 ~@23 d3@24 ~, ~@12 f3@17 ~@12 eb3@78 ~@25, ~@96 f5@47 ~]/6", // G5 F5
  B: "d4", C: "[c4@4 bb3 a3]/3", D: "[~@12 d5@17 eb5@6 c5@21 ~@3 c5@13]/3",
  E: "[~@11 f4@22 ~@2 eb5@24 d5@12 eb5@12 f4@24 eb5@12 d5@11 ~@14, ~@5 d5@8 ~@131]/6", F: "~@4 c5 ~@7",
  G: "[~@11 [eb4,g4]@12 [gb4,a4]@13 g4@23 ~@7 [c5,c6]@6 [d5,d6]@5 ~ [f5,f6]@6 [g5,g6]@36, ~@3 bb4@4 ~@3, ~@59 f4@24 ~@37]/5", // Eb Gbm C D F G
  H: "[[a5,a6] [c6,c7]@2 [d6,d7]]/2", I: "[[c6,c7]@12 [bb5,bb6]@18 [g5,g6]@5 ~ [eb5,eb6]@6 [bb5,bb6]@6]/2",
  J: "[[g5,g6]@6 [bb5,bb6]@6 ~@2 bb4 ~ c5 a4 ~ bb4 c5 ~ d5 bb4 ~ c5 d6@2 eb5 c6@2 d5 eb6@2 f5 d6@2 eb5 f6@2 g5 eb6@2 f5 g6@2 a5 f6@2 g5 a6@2 bb5 g6@2 a5 bb5 ~ c7@2 d7@12, ~@12 [f5,f6]@22 ~@4 f5 ~@5 g5 ~@2 f5 ~@2 a5 ~@2 g5 ~@4 c6 ~@13, ~@25 c6@2 ~ eb6@2 ~ d6@2 ~ f6@2 ~ eb6@2 ~ g6@2 ~ f6@2 ~ a6@2 ~ g6@2 ~ bb6@2 ~ a6@2 bb6@2 ~@13, ~@26 d5 ~@2 c5 ~@2 eb5 ~@2 d5 ~@5 eb5 ~@30]/3", // G Bb F
  K: "g5", L: "[~@11 f5@48 eb5@24 d5@12 eb5@12 f4@24 eb5@12 d5@11 ~@14, a5@21 ~@86 d5@26 ~@35]/7",
  M: "[a6@11 bb6@16 d6@2 ~ f6@2 ~ bb6@2 ~ ab6@2 ~ c6@2 ~ eb6@2 ~ ab6@2 ~]/2",
  N: "[bb6@2 ~ d6@2 ~ f6@2 ~ bb6@2 ~ [d6,d7]@36]/2", // D
  O: "[[eb6,eb7]@6 [c6,c7]@6 [d6,d7]@36 [eb6,eb7]@6 [c6,c7]@6 [d6,d7]@49 ~@11]/5", P: "~ [c6,c7] [eb6,eb7]@2",
  Q: "[[d6,d7]@2 [d6,d7]@4 [c6,c7] [bb5,bb6]]/2", // D C Bb
  R: "[[a5,a6] [c6,c7] [bb5,bb6]@8 [g5,g6]@8 [a5,a6]@4 [b5,b6]@4 e5@2]/7", // A C Bb G A B
  S: "[~@5 f5@6 d5@21 ~@3 d5@18 ~@6 g4@22 ~@2 f5@24 e5@12 f5@12 g4@24 f5@12 e5@11 ~ e7@13, ~@53 e5@8 ~@131]/8",
  T: "[~@5 b6@2 ~ c7@3 d7@22 ~@2 d7@6 c7@5 ~ b6@6 c7@6 e7@35 ~ e7@5 ~ f7@3 d7@16]/5",
  U: "[~@5 c7@3 b6@3 ~ c6@24 d6@23 eb6@24 f6@24 ~ g6@23 ~@13, ~@11 c7@28 ~@105]/6",
})).s("gm_string_ensemble_2").gain(0.13).pan(0.9)

// other · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft_2 = note("<~@32 A@5 ~@7 B@8 C@2 D@8 ~@8 E@2 ~@8 F@6 ~@37 G@3 H@8 ~@3>".pickRestart({
  A: "[~@47 f4@61 ~@12, bb3@107 ~@13]/5",
  B: "[~@11 d7@17 ~ a6@2 ~ bb6@3 c7@22 ~@2 c7@6 bb6@5 ~ a6@6 bb6@6 d7@35 ~ d7@5 ~ eb7@3 c7@20 ~ d7@3 eb7@3 f7@27 d7@2 ~ c7@2 ~ bb6@2 ~ f6]/8",
  C: "[~@2 g6@3 d6@3 eb6@18 d6@2 ~ bb5@2 ~ g5@2 ~ c6@2 ~ bb5@2 ~ g5@2 ~ eb5@2 ~ g5]/2",
  D: "[~@2 f5@2 ~ d5@2 ~@5 [c5,f5]@167 ~@13]/8", // F5
  E: "[~@11 g5@2 a4 bb5@2 ~ a5@2 ~ c6@2 ~ bb5@2 ~@23, ~@11 g4 ~ a5@2 ~ c6@2 ~ bb5@2 ~ d6@2 ~@24]/2",
  F: "[~@11 d7@17 ~ a6@2 ~ bb6@3 c7@29 ~ c7@6 bb6@5 ~ a6@6 bb6@19 a6@5 g6@37]/6", G: "[~ [g6,g7]@5]/3",
  H: "[~ [g5,c6]@15]/8", // C5
})).s("gm_string_ensemble_2").gain(0.09).pan(0.9)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@38 A@3 ~@13 B@7 ~@13 A@3 ~@29 C@3 ~@28>".pickRestart({
// … 186 more lines

More by Rene Froger