Strudelify

Forever

Kenny Loggins

KeyE♭ majorTempo90 bpm
0:00/0:00
// Forever — Kenny Loggins
// 90 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 89 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): Electric Guitar.
setcpm(90/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 · "Bass"
const bass = note(`<
  ~ A B A C D@2 E F G H I J E F G H I J E K L M N O P M Q R S T S U V W X R S Y E F G H I Z E AA L M N O P M Q R S T S U
  V W X R S U L AB AC AD AC AE AF AG AH Q AI S T S T S T AJ AK AL ~@4
>`.pickRestart({
  A: "eb2@3 g2 c2@2 bb1@2", B: "ab1@3 ab1 bb1@2 bb1@2", C: "ab1@3 g1 ab1@3 g1", D: "[ab1@15 ~]/2",
  E: "eb2@3 eb2 eb2@3 ~", F: "ab2@3 ab2 ab2@3 ~", G: "g2@3 g2 g2@3 ~", H: "c2@3 c2 c2@3 ~", I: "f2@3 f2 f2@3 ~",
  J: "bb1@3 bb1 bb1@3 ~", K: "b2@5 ~ b2@2 b2@6 d3@2", L: "c3@3 c3!2 c3@2 g3", M: "g2@3 g2!2 g2@2 d3",
  N: "bb2@3 bb2!2 bb2@2 f3", O: "f2@3 f2!2 f2@2 c3", P: "c2@3 c2!2 c2@2 g2", Q: "ab2@3 ab2!2 ab2@2 eb3",
  R: "bb2@5 ~ bb2@2 bb2@6 f3@2", S: "eb2@2 g2!2 c3!2 bb2 f3", T: "ab2@3 ab2 bb2!3 f3", U: "ab2@3 ab2 b2 b2@2 d3",
  V: "c3@3 c3 f2!3 c3", W: "g2@3 g2 c3 c3@2 g3", X: "f2@2 g2!2 ab2 ab2@2 eb3", Y: "ab2@2 g2!2 f2 f2@2 c3",
  Z: "bb2@3 bb2 bb2@3 ~", AA: "b2@3 b2 b2@3 ~", AB: "f2@6 f2@2 f2@2 c3 d3 c3@2 c2@2", AC: "bb2@2 bb2!2 bb2@2 bb2 ~",
  AD: "bb2@3 bb2 bb2@2 bb2 ~", AE: "bb2@3 bb2 bb2@2 b2 ~", AF: "c3@2 c2!4 g2 d3", AG: "f2@3 f2 g2 g2@2 d3",
  AH: "ab2@4 g2 ~ g2@2 ab2@4 g2@2 bb2@2", AI: "ab2@5 ~ ab2@2 ab2@6 eb3@2", AJ: "eb2@2 c2!2 bb1!2 g1 d2",
  AK: "f1@2 ~ g2 ab2@2 bb2@2", AL: "eb2",
})).s("gm_electric_bass_finger").gain(0.32)

// chords · acoustic guitar steel · "Guitar1"
const acoustic_guitar_steel = note(`<
  ~ A B A C D@2 E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD 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 BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT@2 BU BV BW BX BY BZ CA CB CC CD@3 ~
>`.pickRestart({
  A: "[g3,bb3,eb4]@3 [bb3,d4,g4] [eb4,g4,c5]@2 [d4,f4,bb4]@2", // Eb Gm Cm Bb
  B: "~ f4 [bb3,eb4] [c4,f4] [bb3,eb4] [bb3,d4] [ab3,c4] [f3,bb3], [bb3,eb4,g4] ~@3", // Eb5 F5 Eb5 Bb Ab Bb5 Eb
  C: "~ f4 [bb3,eb4] [c4,f4] [c4,eb4] [bb3,d4] [ab3,c4] [g3,bb3], [bb3,eb4,g4] ~@3", // Eb5 F5 Cm Bb Ab Gm Eb
  D: "[~@6 bb2 g2, [eb3,c4]@7 ~, ~ eb4@28 ~@3, ~ bb4@14 ~]/2", E: "f2@3 f2",
  F: "~@4 g4 [eb4,f4] eb4 [ab3,f4], eb3@3 [c3,c4], ab3@3 ab3@4 ~, ~ eb4@4 ~@3, ~ c4@2 ~", // Ebsus2 Db C
  G: "~@7 d4, f4, g4@5 bb3@3, d3@2 g2 f2, ~@3 g3@5",
  H: "~ bb3 [f4,g4] ~ bb3!2 ~ f4, g2@2 e4 ~, f4 c4@2 [a2,bb3,c4,e4], ~@2 bb3 ab4@3 ~@2, ~@3 f4@4 ~", // Fsus2 Am
  I: "eb4@3 ~@4 c4, [f3,ab3,bb3], c3@2 bb2 g2, ~@3 eb4@5, ~@5 f4@3", // Bb7
  J: "eb4 ~@7 ab3@2 ~@4 eb4@2, f2, bb2@3 eb4@3 bb3@2, ab3 ab3@3 [bb2,d4]@4, ~ eb4@3 bb3@6 ab3@6", // Bb
  K: "bb3@3 bb3 ~@3 eb4, f2@3 c3, [eb3,eb4,f4] [eb3,bb3], ~@9 eb4@5 ~@2, ~@5 g3@3", // Ebsus2 Eb5
  L: "ab3 ~@6 eb4, bb3@15 ~, eb3@5 ab3@3, eb4 c4@2 [c3,c4], ~ ab3@2 eb4@4 ~", // C
  M: "f4 ~@13 d4@2, d3@5 g3@3, g3@3 bb3@3 [d3,bb3]@2, bb3 f4@12 ~@3, ~ bb4@14 ~", // Gm
  N: "bb3 ~@3 bb3 ~@2 f4, g2, c3@3 f4@3 c4@2, f4@2 c4@3 bb3@3, ~ bb3@3 [c3,e4]@4", // C
  O: "eb4 ~@13 eb4@2, f3@3 c3, c3@3 ab3@5, ab3 eb4@9 c4@6, ~ bb3@15",
  P: "~@3 [ab3,bb3] ~@3 ab3, [f2,bb2] [bb2,d4], ab3@3 ~ ab3@3 ~, eb4 eb4@2 [c3,eb4], ~ bb3@2 ~@2 bb3@3", // Absus2 Bb5 Bb Cm
  Q: "f4@3 f4 bb2@2 ~ bb3, [eb3,b3] [eb3,eb4,g4], ~@4 bb3@3 ~, ~@3 f2", // Abm Eb
  R: "g3 ~@5 g3@2 g3 b2@2 ~@2 b4 ~ g4, [g2,g4]@2 [f2,d4,f4] ~, d4@2 d4@6 ~@3 b3@2 ~ [b3,b4]@2, ~ b2@8 ~@3 [b2,d4,f4]@4, ~ g3@3 b3@4 ~ g3@7", // G Dm B Bdim
  S: "~@3 [c4,eb4,f4] g4 ~@2 [eb3,c4,eb4], c3, [c4,eb4,c5]@3 ~ eb4@2 [f2,g3]@2, ~@2 eb3@6 ~@2 g3 f4@3 ~@2, ~@2 g3@2 ~ c4@2 ~", // F7 Cm Fsus2
  T: "~@4 d4@2 [f4,g4]@2 ~@3 db4 [bb3,d4]@2 [bb3,d4]@2, g2@4 [bb2,c4] g4@3, [g3,d4]@3 eb4@3 d4@4 bb3@2 c4 ~@3, ~ bb3@3 bb4@3 ~, ~ g3@2 [g2,g3]", // Fsus2 Bb Bbsus2 G5 G
  U: "db4@2 db4 ~@3 [eb4,bb4]@2 f4@2 ~@4 [bb3,db4]@2, bb2, bb3@5 bb4@3, ~@3 db4@3 db4@4 f4 eb4 [ab2,f4]@4, ~@2 f4@2 db5@3 ~", // Eb5 Bbm Db
  V: "db4 ~ f4 [f4,bb4] f4 ~ a3 [a3,f4,g4], f2@2 [f2,c4] [a2,c4], [bb2,bb3,f4]@2 [ab2,bb3]@2 a4@3 ~, ~ db4@3 f3@4, ~@5 f4@2 ~", // Bb5 Dm F5 Am Bb5 Absus2
  W: "~@3 [c4,eb4,ab4] g4 ~ g3 [eb3,g3,eb4], c3@3 c3, [g3,eb4]@3 eb4@3 ~@2 eb4@6 ~@2, ~@2 eb3@6 ~@3 f4@3 ~@2, ~@2 g3@2 ~ c4@3", // Ab Eb Cm
  X: "g3 bb3 d4 [d4,g4] d4 ~ [bb3,d4] [bb3,d4,f4], g2@11 eb4@3 ~@2, d4 bb3@2 g2, ~ g3@4 [g3,g4]@3, ~@4 bb4@3 ~", // G5 Bb G
  Y: "~@2 f4 [f4,bb4] ab4 ~@2 c4, [ab2,bb3,c4]@2 ab2 [c3,eb4], bb4@3 ~ c5@3 ~, [bb2,f4]@2 bb2@2 ~ ab4@3, ~ d4@3 [ab3,bb4]@4", // Bb5 Ab Cm Bb5 Absus2
  Z: "f4 ~@9 eb4@2 ~@2 g3@2, bb1, bb2@2 eb3 [bb2,eb4], bb3 eb4 d3 f4@3 ~@2, eb4 f4@3 bb3@8 ~@4", // Eb5
  AA: "eb3@2 eb3 [g1,bb2,bb3,d4,g4] [c2,eb3,g3,eb4,g4,c5]@2 [bb1,d3,d4,f4,bb4]@2, [eb2,eb4,g4,bb4]@3 ~@5", // Gm Cm Bb Eb
  AB: "c4!2 ~@4 g4 [ab3,c5], [ab1,ab4] bb1, [c3,eb4]@2 [c3,c4]@3 eb4@3, ~ eb4 [f4,bb4,eb5] [c3,c4,d4,f4], ~@3 ab3@4 ~", // Ab Cm C Ebsus2 Dm7
  AC: "bb2@2 eb3 [g1,bb2,bb3,d4,g4] [c2,eb3,c4,eb4,g4,c5]@2 [bb1,d3,d4,f4,bb4]@2, [eb2,g3,bb3,eb4,g4,bb4]@3 ~@5", // Gm Cm Bb Eb
  AD: "eb4@2 eb4@2 ~@4 [g4,d5] ~@5 ab3@2, [ab1,ab4] b1, [c3,ab3,c4]@4 [c3,c4]@7 [g4,d5,g5] [c3,c4]@4, ~@2 eb4@2 ~ eb4@3, ~@3 ab3@4 ~", // G5 Ab Fm C G5 C
  AE: "~@2 g2 [c2,bb2,bb3,eb4,g4] [ab2,ab3,c4,eb4,ab4]@2 [ab2,ab3,c4,eb4,g4]@2, [c2,bb3,g4,bb4]@3 ~ f1@4, eb3 ~@3, ~ eb5@5 ~@10", // Cm7 Ab Abmaj7 C7
  AF: "f4@2 f4@2 bb3@2 bb3@2 ~@7 eb5, g1 [c2,eb3,bb3,g4,bb4,eb5], [bb2,bb3,d4] [bb2,d4] ~ eb4, ~@7 g3", // Cm7 Bb
  AG: "eb3@2 eb3 [g1,bb2,bb3,eb4,f4] [ab1,ab2,ab3,c4,eb4,f4]@2 [ab1,ab2,ab3,c4,eb4,f4]@2, [f1,ab3,ab4,bb4,eb5]@3 ~@5", // Eb Fm7
  AH: "~@7 bb3, bb1, bb2@2 f4@2 f2 eb4@3, bb3 f4 eb4@4 bb3@8 ~@2, eb4 bb4@11 [bb2,f4]@4", // Bb5
  AI: "eb3@2 eb3 [g1,bb2,bb3,d4,g4] [c2,eb3,c4,eb4,g4,c5]@2 [bb1,d3,bb3,d4,f4,bb4]@2, [eb2,eb4,g4,bb4]@3 ~@5", // Gm Cm Bb Eb
  AJ: "[ab1,c3,c4,eb4,ab4] ~ [c3,c4] eb4@2 ~@2 ab3, ~ ab3@2 ab3@4 ~, ~@3 [g1,bb3,eb4,f4]@3 [f1,ab2]@10, ~@3 c4@3 c4@2, ~@5 eb4@3", // Ab C Eb Fm
  AK: "f4 ~@5 bb3@2 ~@6 f4@2, eb3 [eb3,bb3], bb3@3 ~ c3 eb4@3, ~ [f4,bb4]@7 ~ bb4@7, ~@9 f4@3 bb2@4", // Eb5 Bb5
  AL: "~@7 bb3, ab2, bb3@3 bb3@4 ~, ab3 ab3@4 ab3@3, ~ eb4@3 eb4@8 eb4@4",
  AM: "bb3@3 bb3 f4 ~@2 [d4,bb4], [d4,bb4]@7 ~, g2@3 d3, [g3,f4] [g3,bb3], ~@5 f4@3", // Gm G7 Gm
  AN: "~@2 [a2,bb3,g4] [c3,bb3] c3@2 g4 e4, f4@4 e4@3 ~, [c3,g3]@3 ~@3 [c3,g3]@2, [bb3,g4] ~ bb3@2, ~ c4@2 ab4@3 ~@2", // Eb C7 C5 Eb
  AO: "~@7 eb4, f3, f2@5 ab3@3, ab3@3 bb3@5, eb4 bb3 eb4@10 ab2@4",
  AP: "~@4 [c3,ab3,f4] [bb2,ab3,eb4] [bb3,d4] [f3,d4], bb2@5 ~ [bb2,ab3]@2, eb4@3 bb3@2 ~@3, bb3 [d3,ab3] ~@2, ab3 f4@3 d4@2 ~@2", // Fm Ebsus4 Bb Dm Bb7 Ddim
  AQ: "ab4@3 ab3 ~@3 eb4, [eb3,bb3,f4] [eb3,bb3], ~@9 g4@7, ~@9 eb4@5 ~@2, ~@3 bb2", // Ebsus2 Eb5
  AR: "g3 ~@2 b3 g3@2 [c3,g3] [b2,eb4,g4], [b2,g4]@4 [b2,d4,f4]@3 ~, b3@3 ~@5, d4!2 ~@2, ~ g3@3 ~@4", // C5 Baug Em Bdim
  AS: "~@3 [c4,eb4,f4] ~@2 [c3,g4] [c3,eb3,c4,eb4], c3@11 f4@3 ~@2, [g3,eb4]@3 eb4@3 ~@2 eb4@6 ~@2, ~ eb3@3 [g2,g4]@2 g3@2, ~@2 g3@2 ~ c4@2 ~", // F7 C5 Cm G
  AT: "[bb3,d4]@2 ~@4 [f4,g4]@2 ~@3 db4 [g2,bb3,g4]@2 [g2,bb3]@2, g2@4 [bb2,c4] [d4,g4] d4@2, g3@3 eb4 d4@4 bb4@6 ~@2, ~@2 bb3@4 bb3@6 c4 ~@3, ~ d4 g3@4 ~@2", // Bb Fsus2 Gm Bbsus2 G5
  AU: "db4@2 db4 ~@3 [eb4,bb4]@2 f4@2 ~@2 bb2@2 [bb2,bb3,db4]@2, bb3@3 f4, bb2@4 db3 bb4@3, ~@3 db4@3 db4@4 f4 eb4@3 ~@2, ~@2 f4@2 db5@3 ~", // Eb5 Bbm
  AV: "[db4,f4]!2 ~ [bb3,bb4] f4!2 c4 [a3,c4,g4], f2@2 [f2,c4] [a2,f4], bb3@3 ~ f3@4, bb2@2 [bb2,db4,f4]@2 [a3,a4]@3 ~", // Db Bb Am7 F5 Dm Bbm A
  AW: "eb4 ~ g3 [c4,ab4] [eb4,g4] ~ c3 [c3,eb3,eb4], c3@11 f4@3 ~@2, c4@3 g3@3 g3@2, ~ eb3@3 ~ eb4 ~@2, ~@3 eb4@3 ~@4 c4@6", // Fm Eb Cm
  AX: "[bb3,d4] d4!2 [d4,g4] d4 ~ [g2,g3,d4] [g2,bb3,d4,f4], g2@5 g4@3, g3@2 g3@3 d4 ~@2, ~@2 bb3@4 bb3@5 eb4@3 ~@2, ~@4 bb4@3 ~", // Bb G5 Gm7
  AY: "d4 ~ f4 [eb4,f4,bb4] ab4 ~@2 [ab3,c4], [ab2,bb3]@2 [ab2,eb4] [c3,eb4], bb4@3 ~ bb4@4, [bb2,f4]@2 g2@2 ~ ab4@3, ~ d4@3 [ab3,c4,c5]@3 ~", // Ebsus2 Ab Absus2 Ab5 Cm Bb5 Ab
  AZ: "~ eb4 ~@8 eb4@2 [bb2,eb4,g4]@2 [bb2,bb3,bb4]@2, bb1, bb2@2 f2 ~, bb3 f4@2 ~, ~ f4 eb4@4 bb3@6 ~@4", // Eb Bb
  BA: "eb3@2 f2 [g1,g2,bb3,d4,g4] [c2,c3,g3,eb4,g4,c5]@2 [bb1,bb2,d4,f4,bb4]@2, [eb2,eb4,g4,bb4]@3 ~@5", // Gm Cm Bb Eb
  BB: "eb4@2 eb4@2 ab2@2 ~ bb4 [bb2,eb4,f4,bb4,eb5]@4 [bb2,bb3,f4,g4]@2 [bb2,bb3,f4]@2, [ab1,ab4] bb1, [ab2,ab3,c4] [c4,eb4] ~ d4, ~@3 [ab2,bb3] ~@4", // Bbsus4 Gm7 Bb5 Ab Cm Absus2
  BC: "eb3@2 bb2 [g1,g2,bb3,d4,g4] [c2,c3,eb4,g4,c5]@2 [bb1,bb2,bb3,d4,f4,bb4]@2, [eb2,g3,bb3,eb4,g4,bb4]@3 ~@5", // Gm Cm Bb Eb
  BD: "eb4@2 eb4@2 [ab2,eb4]@2 ~ bb4 [g4,d5] ~@5 g3@2, [ab1,ab4] [b1,d4], [ab2,c4]@4 c4@4 ~@3 [g4,d5]@3 ~@2, ~@6 [ab2,eb4]@2 b2@3 ~ [d3,b3]@4", // Ab5 G5 Ab Bm Ab G5 Ab5 G
  BE: "c3@2 eb3 [c2,c3,bb3,eb4,g4] [f2,ab3,ab4]@2 [f2,ab3,g4]@2, [c2,d4,g4,bb4]@3 ~ [f1,c4,eb4]@4", // Cm7 Fm Gm F7
  BF: "bb3 ~@2 f4 ~@3 bb3, g1 [c2,c3,g3,g4,bb4], f4@3 ~@3 d4@2, [g2,d4] [d3,d4] ~@2, ~ bb3@3 ~@4", // C7 G5 D
  BG: "f2@2 bb2 [g1,g2,bb3,eb4,f4] [ab1,ab2,ab3]@2 [ab1,ab2,ab3]@2, [f1,ab3,bb3,eb4]@3 ~ [c4,eb4,f4]@4", // Eb Ab Fm7 F7
  BH: "eb4@2 ~@2 [c3,f4]@2 ~ bb3 [bb1,bb2,f4]@2 [c2,c3,f4]@2 ~@2 f4@2, [bb1,bb3]@8 bb4 ~@7, [bb2,f4]@2 ~ [bb2,eb4] eb4@2 [d2,d3,eb4]@2, ~ eb4@2 ~ bb3@4", // F5 Bb5 F5 Bb Bb5 Eb5 Ebmaj7
  BI: "eb3@2 bb2 [g1,g2,bb3,d4,g4] [c2,c3,c4,eb4,g4,c5]@2 [bb1,bb2,bb3,d4,f4,bb4]@2, [eb2,g3,eb4,g4,bb4]@3 ~@5", // Gm Cm Bb Eb
  BJ: "[bb3,c4,eb4] [c4,eb4,f4] eb4 [ab3,f4] ~@3 c4, [ab1,ab2,ab4] [b1,d4,g4], ~@2 bb3@3 eb4@3, ~@3 c4@4 ~, ~@2 ab2 [bb2,bb3]", // Cm7 F7 Db Ab G Bb
  BK: "[c3,eb3,g3,bb3]@2 eb3 [c3,f3,c4] [c3,eb3,bb3] [c3,f3,f4] [g2,eb3,g3] [g2,ab2,f3,d4], c2@3 ~, ~ g3@2 ~, ~ bb2!3", // Cm7 F5 Cm7 F5 Cm Ddim
  BL: "g3 bb3 ~@12 g3@2, g2, [a2,eb3]@3 g3@4 ~, ~ g3@3 eb4@6 bb3@6, ~ bb3@3 c3@2 [bb2,eb4]@2", // Adim Eb5
  BM: "g2@2 [g2,f4] [f2,f3,bb3,f4] [g2,g3,bb3,eb4]@2 [f2,f3,bb3,d4]@2, [g3,bb3]@3 ~@5, f3 ~@7", // G7 Bb5 Eb Bb Gm
  BN: "c4!2 ~ eb4 [eb3,ab3,c4]@2 d4!2, ab3 ~, eb3 [eb3,c4] ~ [f2,f3,bb3]", // Ab Cm Bb5
  BO: "g2@2 [g2,f4] [f2,f3,bb3,d4] [g2,g3,bb3,eb4]@2 [f2,f3,bb3,d4,f4]@2, [g3,bb3,eb4]@3 ~@5, f3 ~@7", // G7 Bb Eb Bb Eb
  BP: "ab3!2 ~ ab3 [eb3,ab3,c4]@2 ~ f4, c4 ~, eb3 [eb3,eb4] ~ [f2,f3,g3,b3,d4]", // Ab Eb G7
  BQ: "~ [bb2,eb3] [c3,g3,d4] [d3,f3,bb3,d4,bb4] c4!2 [bb3,bb4] bb3, [c4,eb4]@3 ~ [c3,eb3,g3,eb4,g4]@2 [bb2,f3,g3,d4,g4]@2, [g2,c3,g3] f4 ~@2", // Eb5 Csus2 Bb Cm Gm7 C5
  BR: "ab3@2 ab3@2 ~@2 f4@2 d4 ~@3 bb3@2 [bb3,f4]@2, [ab2,eb3,f3] [bb2,f3,g3], f4@3 ~ bb4@2 d4@2, c4@2 [c3,ab3,c4]@2 ~ g4@3, ~@2 eb4@6 ~ [bb3,d4] f4@4 ~@2", // Bb5 Fm7 Gm7 Fm Bb
  BS: "~@2 d3 [eb3,bb3,d4] ~@2 f2 [g2,g3,bb3,eb4,g4], [eb3,ab3,c4,d4]@3 ~ [eb3,ab3,c4,eb4]@3 ~", // Ebmaj7 Eb Ab
  BT: "[~@3 ab4 ~@11 c4, ab2@6 ab2 c3, [ab3,c4] ab3@3 c5 ab4@2 c4@8 ~, ~ ab4@3 eb4@6 ab3@12 ab3@10, ~ eb4 c4@4 c4@6 eb4@14 eb4@6]/2", // Ab
  BU: "~@2 [c3,g3] [bb2,d3,g3] [eb3,g3,c4]@2 bb3!2, [eb2,g2,bb2,eb3,eb4]@3 ~@5, ~ bb3@2 ~@3 [d3,f3,d4]@2", // C5 Gm Cm Eb Dm
  BV: "[bb2,c3,eb3,ab3,c4] [f3,ab3] [bb2,eb3,ab3] [c3,f3,c4] [bb2,eb3,eb4] [c3,f3,g3] [bb2,d3,d4] [c3,f3,g3], ~ c3@2 ~ bb3@2 bb3@2", // Ab Fm Ebsus4 F5 Eb5 Csus4 Bb Csus4
  BW: "~@2 [g2,g3] [bb2,d3,g3] [eb3,g3,c4,eb4]@2 ~ d4, [bb2,eb3,bb3]@3 ~@3 [d3,f3,bb3]@2, g2 ~@3, ~ eb4@2 ~@5", // G Gm Cm Eb5 Bb
  BX: "[c3,eb3] [c3,f3,f4] [c3,g3,c4] ab3 ~ [f3,c4] [d3,d4] [f3,c4,f4], ab3@3 eb4@5, ~@3 c3@3 [c3,bb3]@2, ~@2 bb3 ~, ~@5 ab3@3", // Cm F5 C5 F5 D F5 C7
  BY: "eb4 ~ [eb3,bb3] [bb2,d3,g3,d4] [eb3,g3,c4]@2 ~ f4, [bb2,g3]@3 ~@5, eb3 ~@2 [d3,f3,bb3,d4], ~ eb4@2 ~@5", // Eb5 Gm Cm Eb Bb
  BZ: "[c3,eb3,c4] [c3,f3,c4] [c3,g3,ab3] ~@2 f3 eb3 [f3,e4], ab3@2 ~ ab3@5, ~@3 c3@3 [c3,bb3]@2, ~@2 bb3 ~, ~@5 c4@3", // Cm F5 Abmaj7 Fmaj7 C7
  CA: "[eb2,eb3,bb3,eb4,g4]@2 [d3,bb3] f4 [a2,f4]@2 [c2,c3,g3,c4,eb4]@2 [bb1,bb2,f3,bb3,eb4]@2 [ab2,eb4] [ab2,bb3] [ab2,bb3]@2 [g1,g2,g3,bb3,d4]@2, ~@3 [d2,d3,bb3,d4]@3 ~@5 [ab1,ab3,eb4]@3 ~@2", // Eb Gm Dm Cm Bbsus4 Ab5 Absus2 Gm …
  CB: "~@2 ab2 [g1,g2,eb3,bb3,d4,eb4] [ab1,ab2,eb3,ab3,c4,eb4]@2 [bb1,bb2,f3,g3,bb3,d4,eb4]@2, [f1,f2,eb3,ab3,c4,eb4]@3 ~@5", // Ebmaj7 Ab Ebmaj7 Fm7
  CC: "~ g3 eb4@2 ~@10 bb3@2, [eb1,eb2,eb3,g4], bb3 g3@2 bb3@3 eb4@2, ~ bb2@15, ~ bb3 eb4@3 g3@3", // Eb
  CD: "[~ [bb3,eb4,g4]@38 ~@9, eb2@11 ~, [eb3,g3]@13 ~@3]/3", // Eb
})).s("gm_acoustic_guitar_steel").gain(0.31)

// chords · string ensemble 2 · "Strings1"
const string_ensemble_2 = note(`<
  ~ A B C D E@2 ~@14 F G@2 H I J K L M N O P Q R S T U V W@2 ~@6 F X Y Z I J K AA M N O P Q R S AB AC AD AE AF AG AH AG
  AI AJ AK AL AM@2 AN AO AP AQ AR AS AT AU AV AW ~@3
>`.pickRestart({
  A: "[bb2,eb3,g3,bb3,eb4]@3 [d3,g3,bb3,d4,g4] [eb3,bb3,eb4,g4,c5]@2 [f3,bb3,d4,f4,bb4]@2", // Eb Gm Cm7 Bb
  B: "~@3 f4 [eb4,bb4]@2 [d4,bb4]@2, [eb3,ab3,c4], ab4 ~", // Eb5 Gm Ab
  C: "[bb2,eb3,g3,bb3,eb4]@3 [d3,g3,bb3,d4,g4] [c3,eb3,bb3,eb4,g4,c5]@2 [f3,bb3,d4,f4,bb4]@2", // Eb Gm Cm7 Bb
  D: "[eb3,ab3,c4,ab4]@3 [d3,g3,bb3,d4,f4,g4] [eb3,ab3,c4,ab4]@3 [d3,bb3,d4,g4]", E: "[[eb3,c4,eb4,ab4], ab3@7 ~]/2",
  F: "[eb4,c5]@3 [eb4,c5]@3 [f4,d5]@2 [g4,eb5]@3 [f4,d5]@3 [eb4,c5]@2, c3", // Cm Dm Cm Dm Cm
  G: "[d4@3 eb4@3 f4@2 c4@3 db4 c4 ~@3 [db4,bb4]@3 [db4,bb4]@3 [eb4,c5]@2 [f4,db5]@3 [eb4,c5]@3 [db4,bb4]@2, [g2,bb4] bb2, ~@12 bb3@7 ~@13]/2", // Gb Cm Db Cm Gb Gm
  H: "bb3@4 ~@2 a4 g4 [a3,c4,f4,a4]@6 g4@2, f2, [db4,f4,bb4]@3 ~@5, ~ c4 ~@2", // F Bbm
  I: "[eb4,c5]@3 [eb4,c5]@3 [ab4,f5]@2 [g4,eb5]@3 [f4,d5]@3 [eb4,c5]@2, c3", // Cm Db Cm Dm Cm
  J: "[d4,bb4]@6 [d4,bb4]@2 [d4,bb4]@3 [eb4,c5]@3 [f4,d5]@2, g2", K: "[f4,bb4,d5]@3 eb5 [ab4,bb4,eb5]@4, ab2",
  L: "~@2 [bb4,eb5]@2 [a4,d5]@3 bb4 f5 g5@3 [g4,bb4]@2 bb4@2, [bb1,bb2,bb3,f4], eb4@3 eb4, ~@2 [gb4,c5] ~, ~@9 eb3@7", // Eb5 D5 Gm Bb5 Gbdim
  M: "[eb2,eb4,g4,bb4,eb5]@3 [g1,bb3,d4,g4] [c2,eb4,g4,c5]@2 [bb1,d4,f4,bb4]@2", // Eb Gm Cm Bb
  N: "[c4,eb4]@4 [c4,eb4]@3 bb4 f5 g5@3 g4@2 c5@2, [ab1,ab4] bb1, ~@2 [f4,bb4,eb5] [d4,f4]", // Cm Ab Ebsus2 Dm
  O: "[eb2,bb3,eb4,g4,bb4]@3 [g1,bb3,d4,g4] [c2,eb4,g4,c5]@2 [bb1,d4,f4,bb4]@2", // Eb Gm Cm Bb
  P: "[c4,eb4]@4 [c4,eb4]@3 bb4 ~ g5@2 g5@3 g5@2, [ab1,ab4] [b1,g4,d5]", // Cm Ab G
  Q: "f5 eb5@5 [c2,bb3,eb4,g4]@2 [ab3,c4,eb4,ab4]@4 [ab3,c4,eb4,g4]@4, [c2,g4,bb4]@3 ~ f1@4", // Cm7 Ab Abmaj7 C7
  R: "[bb3,d4]@4 [bb3,d4]@4 f5 g5@2 g5@4 eb5, [g1,f4] [c2,g4,bb4,eb5]", // Bb G7 Cm7
  S: "[f1,ab4,bb4,eb5,f5]@3 [g1,bb3,eb4,f4] [ab1,ab3,c4,eb4,f4]@2 [ab1,ab3,c4,eb4,f4]@2", // Fm7 Eb Fm7
  T: "~@7 bb4 ab5 g5@6 f5, [bb1,bb3,eb4,f4]", // Bbsus4
  U: "g5 f5 ~@4 [g1,bb3,d4,g4]@2 [c2,eb4,g4,c5]@4 [bb1,d4,f4,bb4]@4, [eb2,g4,bb4]@3 ~@5, ~ eb5@3 ~@4", // Gm Cm Bb Eb
  V: "[ab1,c4,eb4,ab4]@3 [g1,bb3,eb4,f4]@3 [f1,ab3,c4,eb4]@10", W: "[eb3,bb3,f4]/2", X: "[g2,bb4]",
  Y: "[db4,bb4]@3 [db4,bb4]@3 [eb4,c5]@2 [f4,db5]@3 [eb4,c5]@3 [db4,bb4]@2, bb2", // Gb Cm Db Cm Gb
  Z: "[db4,f4,bb4]@6 a4 g4 [c4,f4,a4]@6 g4@2, f2", AA: "~@7 bb4 f5 g5@3 g4@2 bb4@2, [bb1,bb2,bb3,eb4,f4], ~@9 eb3@7",
  AB: "[bb3,eb4,f4]@4 [bb3,eb4,f4]@3 bb4 bb5 ~ c2@2 ab5@2 g5@2, bb1@2 [bb4,eb5,f5] ~, ~@4 bb1 ~ [d2,bb4,eb5,f5]@2, ~@9 eb3@7, ~@9 g5@3 ~@4", // Bbsus4 Bb
  AC: "[eb2,g4,bb4,eb5,g5]@3 [g1,bb3,d4,g4] [c2,eb4,g4,c5]@2 [bb1,d4,f4,bb4]@2", // Eb Gm Cm Bb
  AD: "[ab1,c4,ab4]@8 f5 g5@2 ab5@3 bb5@2, ~ [b1,g4,d5]", AE: "[g4,bb4,eb5,g5] ~@2 g1, c2@3 ~, ~ [bb3,g4]@3",
  AF: "[a3,eb4,g4]@5 g5 eb5!2, f1", // Am7b5
  AG: "[bb2,f4]@2 bb2!2 bb2@2 bb2!2 bb2@2 bb2!6, [g4,bb4,eb5]@3 [f4,bb4,d5] [g4,bb4,eb5]@2 [f4,bb4,d5]@2", // Bb5 Eb Bb Eb Bb
  AH: "bb2@2 bb2!2 bb2@2 bb2!2 bb2@2 bb2!6, [eb4,ab4,c5]@2 [eb4,ab4,c5] [f4,bb4,d5]", // Ab Bb
  AI: "bb2@2 bb2!2 bb2@2 bb2!2 bb2@2 bb2!2 [b2,f4,g4,d5]@4, [eb4,ab4,c5]@2 [eb4,ab4,c5] ~", // G7 Ab
  AJ: "g3 bb3 c4 [d4,f4,bb4,d5] [eb4,g4,c5,eb5]@2 [g2,bb3,f4,bb4,d5]@2, c3@3 ~, [g4,c5,eb5]@3 ~@5", // Bb Cm Gm7 Cm
  AK: "[eb4,ab4,c5]!2 [f4,bb4,d5,f5]!2, [f2,ab3] [g2,bb3]", // Ab Bb Fm Gm
  AL: "~@6 [g1,g2,eb3,bb3,d4]@2 ~ c3@3 g2@2 [g1,g2,g3,bb3,eb4,g4]@2, [ab1,ab2,eb3,ab3,c4]@3 ~ [ab1,ab2,eb3,ab3,c4,eb4]@3 ~, ~ eb1 ~ eb1", // Ebmaj7 Eb Ab
  AM: "[~@7 c5 g5 ~@16 c3@7, [ab2,ab3,c4,eb4,ab4], ab1 ab1, ~@9 g5@15 bb5@8]/2", // Ab
  AN: "~@3 [g1,bb3,d4,g4] [c2,eb4,g4,c5]@2 [bb1,d4,f4,bb4]@2, [eb2,g3,bb3,eb4]@3 ~@5, ~ bb4 bb5@2", // Gm Cm Bb Eb
  AO: "c6@3 c6@3 c6@2 [bb1,eb4,bb4,c6]@3 bb5 [bb1,d4,bb4,ab5]@3 ab5, [ab1,c4,ab4] ~", // Cm7 Bb7 Ab
  AP: "ab5@3 g5@3 [g1,bb3,d4,g4,f5]@2 [c2,eb4,g4,c5,f5]@3 ~ [bb1,d4,f4,bb4]@3 d5, [eb2,g3,bb3,eb4]@6 ~@5 eb5@3 ~@2", // Gm7 Cm Bb Eb
  AQ: "eb5@2 f5 d5 eb5@2 eb5!2 d5@2 c5@2 [bb1,d4,bb4]@4, [ab1,c4,ab4]@2 [bb1,eb4,bb4] ~", // Bb Ab Eb5
  AR: "[eb2,g3,bb3,eb4]@3 [g1,bb3,d4,g4,bb4] eb5 g5 ab5 bb5, ~@2 [c2,eb4,g4,c5] [bb1,d4,f4,bb4]", // Eb Gm Cm Bb
  AS: "c6@3 c6@3 c6@2 [bb1,eb4,bb4,c6]@3 ~@3 g5@2, [ab1,c4,ab4]@8 ~@3 bb5@3 ~@2, ~@3 [bb1,d4,bb4]", // Cm7 Ab Bb
  AT: "[eb2,eb3,bb3,eb4,g4]@3 [d2,d3,bb3,d4,f4]@3 [c2,c3,g3,c4,eb4]@2 [bb1,bb2,f3,bb3,eb4]@3 [ab1,ab2,ab3,bb3,eb4]@3 [g1,g2,g3,bb3,d4]@2", // Eb Bb Cm Bbsus4 Absus2 Gm
  AU: "[f1,f2,eb3,ab3,c4,eb4]@3 [g1,g2,eb3,g3,bb3,d4,eb4] [ab1,ab2,eb3,ab3,c4,eb4]@2 [bb1,bb2,f3,bb3,d4,eb4]@2", // Fm7 Ebmaj7 Ab Bb
  AV: "[eb2,g2,eb3,g3,bb3,eb4,g4]", AW: "[eb2,g2,eb3,g3]",
})).s("gm_string_ensemble_2").gain(0.36)

// chords · overdriven guitar · "Electric Guitar"
const overdriven_guitar = note(`<
  ~ A B C D E@2 ~@13 F@2 ~ G H ~@3 I J K L M N O P Q R S T U@2 ~@4 V W X@2 Y Z AA AB@2 ~@7 AC@8 ~@3 AD AE@2 ~@13
>`.pickRestart({
  A: "[bb2,eb3,g3]@3 [d3,g3,bb3] [eb3,bb3,eb4]@2 [f3,bb3]@2", B: "[eb3,ab3,c5]",
  C: "[bb2,eb3,g3]@3 [d3,g3,bb3] [c3,eb3,bb3]@2 [f3,bb3,d4]@2", // Eb Gm Cm7 Bb
  D: "[eb3,ab3,c4]@3 [d3,g3,bb3,f4] [eb3,ab3,c4]@3 [d3,bb3], c5", E: "[[ab3,c4,eb4,eb5]@7 ~]/2",
  F: "[[d3,g3]@2 [eb3,bb3] [f3,c4] d4@10 ~@2]/2", G: "bb3 db4", H: "bb3 a3", I: "~@9 eb5@7, ab3@15 ~",
  J: "eb4@3 bb3 eb4@2 d4@2", K: "c4@4 [c4,eb4]@3 bb4 [f4,bb4,eb5]@4 g4@2 c5@2, ~@8 f5 ~@3 [d4,f4]@4",
  L: "[bb3,eb4,g4,bb4]@3 [bb3,d4,g4] [eb4,g4,c5]@2 [d4,f4,bb4]@2", M: "[c4,eb4]@4 [c4,eb4]@3 bb4 [g4,d5]@8, ab4@7 ~@9",
  N: "g4@3 g4 ab4@2 g4@2", O: "f4 g4", P: "ab4@3 eb4 [eb4,f4]@2 [eb4,f4]@2", Q: "bb4@7 bb4@8 f5, g4",
  R: "~ f5 ~@4 [d4,g4]@2 [eb4,g4]@4 [d4,f4]@4, [g4,bb4]@3 ~@5, ~ eb5@3 ~@4", S: "[c4,eb4]@3 [bb3,eb4]@3 [ab3,c4]@10",
  T: "eb4", U: "[bb3@9 ~@7]/2", V: "[g3,c4]@2 [g3,c4] [a3,d4] d4@2 d4@2", W: "[g3,c4] ~", X: "[g3,bb3]@7 ~@9",
  Y: "[g3,bb3] [f3,a3]", Z: "c5 ~", AA: "bb4 ~", AB: "[d5@6 eb5@3 eb5@13 ~@10]/2",
  AC: "[[eb4,f4] ~@3 [eb4,f4] ~@2 bb4 ~ g5@3 ab5@2 g5@114, bb3@4 bb3@3 ~ [bb4,eb5,f5]@4 ~@116]/8", // Ebsus2 Bbsus4
  AD: "[ab3,c4]@3 [bb3,d4] [ab3,c4,eb4]@3 [g3,bb3,eb4,g4]", AE: "[~@7 c5 g5@16 ~@8]/2",
})).s("gm_overdriven_guitar").gain(0.31)

// chords · distortion guitar · "Electric Guitar"
const distortion_guitar = note("<~@56 A ~@2 B C D@3 E F ~ G H I J K L@4 ~@3 M ~ N ~@7>".pickRestart({
  A: "~@9 g5@3 ~@2 c5@2", B: "~@3 [c4,eb4]", C: "~@4 bb3@4 f5 g5@2 g5@4 eb5, ~@8 eb5@7 ~",
  D: "[~ c4@3, ~@3 f4@8 ~, ~@3 eb4@7 ~@2]/3", E: "~@8 f5 g5@2 ab5@3 ~@2", F: "f5@3 ~",
  G: "~@4 bb3 ~@5 bb3 ~@3 bb3 ~, ~ eb4@2 eb4@5", H: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~@3 bb3 ~",
  I: "~@2 bb3 ~ bb3 ~@5 bb3 ~@3 bb3 ~", J: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~@5", K: "~@3 eb4", L: "[~ eb4@15]/4",
  M: "~ bb4 ~ d5 eb4@2 g5 ab5, ~@4 eb5 ~@3", N: "bb5",
})).s("gm_distortion_guitar").gain(0.36)

// chords · piano · "PianoA"
const piano = note(`<
  ~@7 A B C D E F A G C H I J K L M N O P Q R S T ~@10 U V W X Y Z AA AB AC AD AE AF AG AH AI AJ@2 ~@18 AK AL ~@8 AM
  AN@3 ~
>`.pickRestart({
  A: "[g3,bb3,eb4]@2 [g3,bb3,eb4]@2 [g3,bb3,eb4]@2 bb3!2, eb3, ~@3 [g3,eb4]", // Eb Cm
  B: "[ab3,c4,eb4]@2 [ab3,c4,eb4]@2 [ab3,c4,eb4]@2 c4!2, [ab2,eb3], ~@3 [ab3,eb4]", // Ab Ab5
  C: "[bb3,d4,f4,g4]@2 [bb3,d4,f4,g4]@2 [bb3,d4,f4,g4]@2 d4!2, d3, ~@3 [bb3,f4,g4]", // Gm7
// … 132 more lines

More by Kenny Loggins