Strudelify

Time Passages

Al Stewart

KeyE♭ majorTempo100 bpm
0:00/0:00
// Time Passages — Al Stewart
// 100 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 97 bars on a 16-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.

// chords · piccolo
const piccolo = note(`<
  ~ A ~ B ~@3 C ~@3 D E@2 F G H I J K ~@6 L M N O ~@2 P Q R G S T ~@22 U V W X D Y Z AA AB AC ~ J AD ~@12 AE@2 ~@2 AF@2
  ~ AG AH ~@3
>`.pickRestart({
  A: "g5@6 [d5,f5]@5 ~@5, eb5 ~", B: "eb5@6 [d5,f5]@5 ~@5, g5 ~@7", C: "[g4,eb5] [f4,d5] [eb4,c5]@2",
  D: "~ [d5,f5] c5@2", E: "[[bb4,eb5]@3 [d4,bb4]@3 d4@4 ~@6, ~@3 bb4 ~@4]/2", F: "eb5 [d5,f5]", G: "~@6 [ab4,f5]@7 ~@3",
  H: "g4@6 [f4,c5]@5 ~ [f4,bb4]@4, bb4@9 ~@7", I: "[d4,f4]@2 ~@2 [d4,f4]@3 ~ [c4,eb4]@4 ~@4", J: "[eb4,eb5]",
  K: "[d4,bb4]@5 ~@3 [d4,f4]@5 ~@3", L: "~@2 c5@6 [d5,f5]@7 ~", M: "[eb5,g5] d5 [c5,eb5]@2",
  N: "~@2 c5@3 ~@3 d4@6 ~@2, ~ eb4@4 ~@3, ~@4 bb4 ~@3", O: "[d4,g4]@3 ~@3 [eb4,c5]@9 ~",
  P: "eb5@6 [f4,bb4]@5 ~ [f4,bb4]@4, eb4", Q: "[d4,f4]@4 [d4,f4]@5 ~ [c4,eb4]@6", R: "g4 ~ [d4,f4]@2",
  S: "[g4,eb5]@6 [f4,bb4]@3 ~@3 [d4,f4,bb4]@4", T: "[d4,f4] ~ [d4,f4]@2 [c4,eb4]@3 ~",
  U: "[g4,eb5,g5] [f4,d5,f5] [eb4,c5,eb5]@2", V: "~@2 [eb4,g4]@5 ~@5 bb4@4, ~@4 [d4,f4]@3 ~",
  W: "[d4,g4]@3 ~@3 [eb4,ab4,c5]@8 ~@2", X: "~@7 [eb5,g5]", Y: "[g4,bb4,eb5]@6 [f4,bb4]@5 ~ [f4,bb4]@4",
  Z: "[d4,f4]@3 ~ [d4,f4]@5 ~ [c4,eb4]@6", AA: "[eb5,g5] ~ [d5,f5]@2", AB: "~@2 [g4,eb5]@4 [ab4,c5,f5]@7 ~@3",
  AC: "[g4,eb5]@6 [f4,c5]@3 ~@3 [f4,bb4]@4, bb4@9 ~@7", AD: "[d4,g4,bb4] c5 [d4,f4,g4] ~",
  AE: "[~@3 eb5@3 db5 eb5@2 ~ eb5@2 db5@4, e5@9 ~@23]/2", AF: "[e5@6 eb5@6 db5@2 ~ eb5@4 ~ eb5@4 db5@8]/2",
  AG: "eb5@4 eb5@6 db5@5 ~", AH: "e4@3 ~@5",
})).s("gm_piccolo").gain(0.25)

// chords · flute
const flute = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W D E X Y H I Z K L M N AA P Q AB S AC AD V W AE ~@7 AF T AD V W D E AG
  AH AI I Z AJ AK M N AL AM Q AN AO AP AQ AR AS ~@7 AT AU AV AW AX AU AY AZ AV BA BB BC ~
>`.pickRestart({
  A: "[eb5,g5]@6 [d5,f5]@3 ~@5 [c5,eb5]@2", B: "[d5,f5]@2 bb5@2 ~@6 c5@5 f5, eb5 ~@9 eb5@4 ~@2",
  C: "[eb5,g5]@2 f5@2 eb5@2 [d5,f5]@3 ~@5 eb5@2", D: "[eb5,c6]@2 bb5@2 g5@2 [d5,bb5]@3 ~ [d5,bb5]@4 eb5@2",
  E: "[d5,g5]@2 bb5@2 c6@2 [c5,ab5]@7 ~@3", F: "~ g5 f5 eb5 [d5,f5]@3 ~, ~ c5@3 ~@4",
  G: "[c5,g5] ~ [d5,f5]@2 [c5,eb5]@4, ~@3 g5@2 ~@11", H: "~ c6!2 g5 bb5 ~ bb5@2, ~ eb5@2 ~ [d5,f5]@3 ~",
  I: "[d5,g5]@2 bb5@2 c6@2 [eb5,c6]@7 ~@3", J: "~ g5 f5 eb5 [d5,f5] bb5 ab5 [c5,g5], ~ c5@3 ~@4",
  K: "~@2 [d5,f5]@2 eb5!4, ~ c5", L: "[eb5,eb6]@6 [d5,bb5]@3 ~ bb5@2 [d5,bb5]@4",
  M: "[d5,f5]@2 bb5@2 [d5,f5]@5 ~ [c5,eb5]@6", N: "[eb5,g5]@2 ~ bb5!5, ~ [d5,f5]",
  O: "[eb5,c6]@2 [g5,eb6]@4 [f5,f6]@7 ~@3", P: "[eb5,eb6]@6 [d5,bb5,c6]@3 ~ g5@2 [d5,bb5]@4",
  Q: "[d5,f5]@2 bb5@2 [d5,f5]@3 ~ [c5,eb5]@4 ~@2 [d5,f5]@2", R: "~ [c6,eb6]!6 c6, eb5",
  S: "[d5,bb5]@2 c6@2 [d5,f5,g5]@2 c5 eb5", T: "g5@3 ~ [d5,f5]@3 eb5", U: "[d5,f5]@2 bb5@2 [d5,f5]@3 ~ [c5,eb5]@6 ~ d5",
  V: "[eb5,g5] f5 eb5 [d5,f5]@2 ~@2 [c5,eb5]", W: "[d5,f5] bb5 [d5,f5]@3 [c5,eb5]@2 c6",
  X: "~ bb4 g5@2 f5@2 eb5@2 [d5,f5]@6 ~@2, ~ c5@3 ~@4", Y: "[c5,g5] ~ [d5,f5]@2 [c5,eb5]@4, ~@2 g5 ~@5",
  Z: "~@2 g5@2 f5@2 eb5@2 [d5,f5]@2 ~ c6 ab5@2 [c5,g5]@2, ~ c5@3 ~ bb5 ~@2", // Dm C5
  AA: "[eb5,c6]@2 [g5,eb6]@4 [f5,f6]@7 ~@3, ~@6 eb6 ~@9", AB: "~ [c6,eb6]!3 [bb5,d6] [c6,eb6]!2 c6, eb5",
  AC: "g5@3 ~ [d5,f5]@3 eb5, ~@8 g5 ~@7", AD: "[d5,f5]@2 bb5@2 [d5,f5]@3 ~ [c5,eb5]@6 ~@2",
  AE: "[d5,f5]@2 bb5@2 [d5,f5]@6 [c5,eb5]@4 [f5,c6] ~", // Dm Cm F5
  AF: "~@2 [g5,eb6]@2 [d6,f6]@2 eb6 eb6@2 ~@3 ab5@2 ~ f5, ~@5 [g5,d6]@2 bb5", // Cm Dm G5
  AG: "~@2 g5@2 f5@2 eb5@2 [d5,f5]@6 bb5 ab5, ~ c5@3 ~@4", AH: "[c5,g5] ~ d5@2 [c5,eb5]@4, ~@3 g5@2 ~@11",
  AI: "~ bb5 c6@2 c6@2 g5@2 bb5@2 ~@2 bb5@4, ~ eb5@2 ~ d5@3 ~", AJ: "~@2 [d5,f5]@2 eb5 f5 eb5 f5, ~ c5",
  AK: "[eb5,eb6]@6 [d5,bb5]@3 ~ bb5@2 [d5,f5,bb5]@4", AL: "[eb5,c6]@2 ~ [bb5,d6] ~@2 [f5,f6]@7 ~@3, ~ [g5,eb6] ~@2",
  AM: "[eb5,eb6]@6 [d5,c6]@3 ~ g5@2 [d5,bb5]@4", AN: "~ eb6 d6 eb6 d6 eb6 bb5 c6, eb5",
  AO: "[d5,bb5]@2 c6@2 [d5,f5]@2 c5 eb5", AP: "ab5@3 ~ [eb5,gb5]@3 e5",
  AQ: "[eb5,gb5]@2 b5@2 [eb5,gb5]@3 ~ [db5,e5]@6 ~@2", AR: "[e5,ab5] gb5 e5 [eb5,gb5]@2 ~@2 [db5,e5]",
  AS: "[eb5,gb5] b5 [eb5,gb5]@3 [db5,e5]@2 db6", // Ebm Dbm
  AT: "~@2 [ab5,e6]@2 [eb6,gb6]@2 e6 e6@2 ~@3 a5@2 ~ gb5, ~@5 [ab5,eb6]@2 b5", // Dbm Ebm Ab5
  AU: "[e5,ab5]@6 [eb5,gb5]@3 ~@5 [db5,e5]@2", AV: "[eb5,gb5] b5 [eb5,gb5]@3 [db5,e5]@3",
  AW: "~@2 gb5@2 e5@2 [eb5,gb5]@5 ~@3 [db5,e5]@2, [e5,ab5] ~@3", AX: "[eb5,gb5] b5 [eb5,gb5]@2 ~ [db5,e5] b5!2",
  AY: "[eb5,gb5]@2 b5@2 ~@2 [eb5,gb5]@3 ~ [db5,e5]@6", AZ: "[e5,ab5] gb5 e5 [eb5,gb5]@3 ~@2",
  BA: "[db5,e5]@3 ~ gb5@3 ~", BB: "[eb5,gb5]@2 b5@2 [eb5,gb5]@6 [db5,e5]@3 ~@2 db5", BC: "[e5,ab5], eb5 ~@15",
})).s("gm_flute").gain(0.35)

// chords · lead 8 bass lead
const lead_8_bass_lead = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W D X Y Z AA AB AC AD AE AF AG AH AI AJ AK S AL AM V AN AO AP AQ AR AS
  AT AU@2 ~@31 AV AW ~@12
>`.pickRestart({
  A: "[bb3,eb4,g4]@6 [bb3,d4,f4]@3 ~@5 eb4!2, ~@7 c4", // Eb Bb
  B: "[bb3,d4,f4]@2 bb4@2 ~@2 [bb3,d4,f4]@3 ~ [ab3,c4]@5 f4, ~@5 eb4@2 ~", // Bb Ab
  C: "[bb3,eb4,g4]@2 f4@2 eb4@2 [d4,f4]@3 ~@5 [c4,eb4]@2", D: "[eb4,c5]@2 bb4@2 g4@2 [d4,bb4]@3 ~ [d4,bb4]@4 eb4@2",
  E: "[d4,g4]@2 bb4@2 c5@2 [c4,eb4,c5]@7 ~@3", F: "~ g4 f4 [ab1,eb4] bb1@3 ab2, ab1@3 ~@5, ~ [ab3,c4]@3 [d4,f4]@4",
  G: "[c4,g4] ~ [bb1,d4,f4]@2 ab1@3 ab1, c2@3 ~@5, ~@3 g4@2 ~@3 [ab3,c4,eb4]@8", // C5 Bb Ab
  H: "~ c5!2 g4 bb4 ~@2 bb3, eb2@3 ~@3 bb4@2, ~ [eb4,g4]@2 ~ [d4,f4]@3 ~", I: "[d4,g4]@2 bb4@2 c5@2 [eb4,c5]@7 ~@3",
  J: "~ g4 f4 eb4 [d4,f4] bb4 ab4 [c4,g4], ~ [ab3,c4]@3 ~@4", K: "c2@2 [bb1,bb3,d4,f4]@2 eb4!4, ~ [ab3,c4], ~@2 ab1!2",
  L: "[eb2,eb4,g4,eb5]@6 [d4,f4,bb4]@3 ~ bb4@2 ~@2 bb1@2, ~@3 [d4,f4,bb4]", // Eb Bb
  M: "[bb3,d4,f4]@2 bb4@2 [d4,f4]@5 ~@5 bb1@2, eb2@3 ~@2 [ab3,c4,eb4]@3", // Bb Dm Ab
  N: "[eb4,g4]@2 ~ bb4!5, eb2 ~, bb3@3 ~ [d4,f4]@4", O: "[eb4,c5]@2 [g4,eb5]@4 [f4,c5,f5]@7 ~@3",
  P: "[eb4,bb4,eb5]@6 [d4,f4,bb4,c5]@3 ~ g4@2 [d4,f4,bb4]@4", // Eb5 Bb
  Q: "[bb3,d4,f4]@2 bb4@2 [bb3,d4,f4]@3 ~ [ab3,c4,eb4]@4 ~@2 [d4,f4]@2", // Bb Ab Dm
  R: "~ [c5,eb5]!2 [ab1,c5,eb5] [c5,eb5]!3 c5, [ab3,eb4], ab1@3 ~ ab1@3 ~", // Cm Ab Cm Ab5
  S: "[d4,g4,bb4]@2 c5@2 [bb3,d4,f4,g4]@2 c4 eb4, g1 bb1", T: "g4@3 eb2 [eb2,bb3,d4,f4]@3 [c4,eb4]",
  U: "[d4,f4] bb4 [d4,f4] eb2 [eb2,c4,eb4]@3 ~", V: "[eb4,g4] f4 eb4 [d4,f4]@2 ~@2 [c4,eb4]",
  W: "[d4,f4] bb4 ~@2 g1 [c2,c4,eb4]@2 c5, ~@2 [d4,f4]@3 ~@3", X: "[d4,g4] bb4 c5 ~ eb2@4, ~@6 [c4,eb4,ab4,c5]@7 ~@3",
  Y: "~ g4 f4 [ab1,eb4] [d4,f4]@4, ab1@3 ~ bb1@3 ~, ~ [ab3,c4]@3 ~@4", // Ab5 Dm Ab
  Z: "[c4,g4] ~ [d4,f4]@2 [ab3,c4,eb4]@4, ~@3 g4@2 ~@11", AA: "~ c5!2 g4 bb4 ~ bb4@2, ~ [eb4,g4]@2 ~ [d4,f4]@3 ~",
  AB: "[d4,g4] bb4 c5 ~ ab2@3 ~, g2 ~, ~@6 [eb4,c5]@7 ~@3", // G5 Cm
  AC: "~ g4 f4 [ab1,eb4] [d4,f4] bb4 ab4 [c4,eb4,g4], ab1@3 ~ bb1@4, ~ [ab3,c4]@3 ~@4", // Ab5 Dm Cm Ab
  AD: "~@2 [bb3,d4,f4]@2 eb4!4, ~ [ab3,c4]", AE: "[eb4,g4,eb5]@6 [d4,f4,bb4]@3 ~ bb4@2 [d4,f4,bb4]@4",
  AF: "[bb3,d4,f4]@2 bb4@2 [d4,f4]@5 ~ [ab3,c4,eb4]@6", AG: "[eb4,g4]@2 ~ bb4!5, eb2 [bb1,d4,f4], bb3@3 ~@5",
  AH: "[eb4,c5] [g4,eb5]@2 ~ f1@2 ~@2, c2@6 [f4,c5,f5]@7 ~@3", // Cm F5
  AI: "[eb2,eb4,bb4,eb5]@3 [d4,f4,bb4,c5] ~ g4 [d4,f4,bb4]@2, ~@4 eb2@3 ~", // Eb5 Bb
  AJ: "[bb3,d4,f4]@2 bb4@2 [bb3,d4,f4]@3 ~ [ab3,c4,eb4]@4 ~@2 [d4,f4]@2, eb2@3 ~ eb2@3 ~", // Bb Ab Dm
  AK: "~ [c5,eb5]!6 c5, [ab3,eb4], ab1@3 ~ ab1@3 ~", AL: "g4@3 ~ [bb3,d4,f4]@3 [c4,eb4]",
  AM: "[d4,f4]@2 bb4@2 [d4,f4]@3 ~ [c4,eb4]@6 ~@2", AN: "~ bb4 [d4,f4]@3 [c4,eb4]@2 c5",
  AO: "[d4,f4]@2 bb4@2 [d4,f4]@6 [c4,eb4]@4 [d4,c5] ~", AP: "[gb3,c4,eb4]@2 [eb4,g4,eb5]!3 [db4,db5]@2 [c4,c5]",
  AQ: "[c4,eb4,f4,ab4,c5] ~@3 [c4,eb4,f4,ab4] bb4 c5 [g4,bb4]", // Fm7 Gm
  AR: "~@2 [f4,ab4]@2 [eb4,g4]@2 [d4,f4]@3 ~ [d4,g4]@4 [bb3,eb4]@2", // Fm Eb Dm G5 Eb5
  AS: "~ [ab3,f4] [bb3,g4]!2 [g3,eb4] [bb3,g4] ~ [c4,gb4]", // Db Eb Cm Eb Cdim
  AT: "~@2 [eb4,gb4,eb5]@2 [eb4,gb4,eb5]@2 [gb4,eb5]@3 ~ [db4,db5]@2 ~@2 [c4,eb4,f4,ab4,c5]@2", // Ebm Db Fm7
  AU: "[~ bb4 [c4,eb4,f4,ab4]@2 ab4 bb4 c5 ~@3 [bb4,d5] ~@5, ~@14 [eb4,g4,c5,eb5]@11 ~@7]/2", AV: "~@13 b4 ~@2",
  AW: "~@2 [db5,e5]@2 eb5@2 e5 ~@9", // Dbm
})).s("gm_lead_8_bass_lead").gain(0.11)

// chords · electric bass pick
const electric_bass_pick = note(`<
  ~@52 A B C D E F G H I J K L M N O P Q R S T U V W X Y ~@7 Z AA AB AC AD AE AF AG AH AI AJ AK ~
>`.pickRestart({
  A: "~@4 d5@2 ~ eb5@2 ~@3 ab4@2 bb4@2, ~@5 g4@2 ~", B: "g4@3 ~ [d4,f4]@3 [c4,eb4]",
  C: "[d4,f4]@2 bb4@2 [d4,f4]@3 ~ [c4,eb4]@6 ~@2", D: "[eb4,g4] ~ eb4 [d4,f4]@2 ~@2 [c4,eb4]",
  E: "[d4,f4] bb4 [d4,f4]@3 [c4,eb4]@2 c5", F: "[eb4,c5]@2 ~@2 g4@2 [d4,bb4]@3 ~ [d4,bb4]@4 eb4@2",
  G: "[d4,g4] bb4 c5 ~@4 g4, ~@6 [c4,eb4,ab4,c5]@7 ~@3, ~ eb2", H: "ab4 ~ f4 eb4 bb1@3 ab2, ab1 [d4,f4]",
  I: "[c4,g4] ~ [d4,f4]@2 [ab3,c4,eb4]@4", J: "~@2 c5 g4 bb4 ~ bb4@2, eb2@3 ~ [eb2,d4,f4]@3 ~",
  K: "[d4,g4] bb4 c5 ~ ab2@3 [ab2,g4], g2 ~, ~@6 [eb4,c5]@7 ~@3", // G5 Abmaj7 Cm
  L: "ab4 ~ f4 eb4 [d4,f4] bb4 ab4 [c4,eb4,g4], ab1@3 ~ bb1@4", M: "~@2 [bb3,d4,f4]@2 eb4!4, ~ [ab3,c4]",
  N: "[eb4,g4,eb5]@6 [d4,f4,bb4]@3 ~ bb4@2 [d4,f4,bb4]@4", O: "[bb3,d4,f4]@2 bb4@2 [d4,f4]@5 ~ [ab3,c4,eb4]@6",
  P: "[eb4,g4]@2 ~ bb4!5, eb2 [bb1,d4,f4], bb3@3 ~@5", Q: "[eb4,c5] [g4,eb5]@2 ~ f1@2 f2@2, c2@6 [f4,c5,f5]@7 ~@3",
  R: "[eb2,eb4,bb4,eb5]@3 [d4,f4,bb4,c5] ~ g4 ~ bb1, ~@4 eb2@3 ~, ~@3 [d4,f4,bb4]", // Eb5 Bb
  S: "[bb3,d4,f4]@2 bb4@2 [bb3,d4,f4]@3 ~ [ab3,c4,eb4]@4 ~@2 [d4,f4]@2, eb2@3 ~ eb2@3 ~", // Bb Ab Dm
  T: "~@2 [c5,eb5]!5 c5, [ab3,eb4], ab1@3 ~ ab1@3 ~", U: "[d4,g4,bb4]@2 c5@2 [bb3,d4,f4,g4]@2 c4 eb4, g1 bb1",
  V: "ab4@3 ~ [b3,eb4,gb4]@3 [db4,e4]", W: "[eb4,gb4]@2 b4@2 [eb4,gb4]@3 ~ [db4,e4]@6 ~@2",
  X: "[e4,ab4] ~ e4 [eb4,gb4]@2 ~@2 [db4,e4]", Y: "[eb4,gb4] b4 [eb4,gb4]@3 [db4,e4]@2 ~",
  Z: "~@6 a4 b4, ~@5 e4@3, ~@5 ab4@2 ~", AA: "[b3,e4,ab4]@6 [b3,eb4,gb4]@3 ~@5 db4@2, ~@14 e4 ~",
  AB: "[b3,eb4,gb4]@2 b4@2 ~@2 [b3,eb4,gb4]@3 ~ [a3,db4]@5 gb4, ~@5 e4@2 ~", // B A
  AC: "[b3,e4,ab4]@2 ~@2 [a1,e4]@2 [b1,eb4,gb4]@3 ~@5 [db4,e4]@2", AD: "~ b4 [eb4,gb4]@2 ~ [a3,db4,e4] b4!2",
  AE: "[e4,ab4]@6 [b3,eb4,gb4]@3 ~@5 [db4,e4]@2", AF: "[eb4,gb4]@2 b4@2 ~@2 [eb4,gb4]@3 ~ [db4,e4]@6",
  AG: "[e4,ab4] ~ [a1,e4] [eb4,gb4]@3 ~@2, ~@6 b1@3 ~@7", AH: "[eb4,gb4] b4 [eb4,gb4]@3 [db4,e4]@3",
  AI: "[db4,e4]@3 ~ [eb4,gb4]@2 ~@2", // Dbm Ebm
  AJ: "[eb4,gb4]@2 b4@2 [eb4,gb4]@6 ~@5 eb4, ~@5 e4@3, ~@5 db4@2 [eb2,db4], ~@3 db2", AK: "[e4,ab4], e2 ~",
})).s("gm_electric_bass_pick").gain(0)

// chords · electric bass pick · soft notes
const electric_bass_pick_soft = note("<~@55 A ~ B ~ C D E ~ C ~@7 F ~@3 G ~@9 H ~ I ~@3 I ~@5>".pickRestart({
  A: "~ f4 ~@6", B: "~ bb4 ~@6", C: "~ [ab3,c4]@3 ~@4, ~ g4 ~@6", D: "~@3 g4@2 ~@11", E: "~ [eb4,g4]@2 ~@5, ~ c5 ~@6",
  F: "~ [c5,eb5] ~@6", G: "~ gb4 ~@6", H: "~@15 e4", I: "~ [ab1,gb4] ~@6",
})).s("gm_electric_bass_pick").gain(0)

// chords · electric bass finger
const electric_bass_finger = note("<~@77 A B C D E F@2 ~@13>".pickRestart({
  A: "[g3,db4,e4]@3 gb5 [e4,ab4,e5]@2 [e4,ab4,e5]@2 [e4,ab4,e5]@2 [d4,d5]@4 [db4,db5]@2", // Dbdim E D Db
  B: "[db4,e4,gb4,a4,db5] ~@3 [db4,e4,gb4,a4] b4 db5 [ab4,b4]", // Gbm7 Abm
  C: "~@3 b4 [e4,ab4]@2 [eb4,gb4]@3 ~ [eb4,ab4]@4 [b3,e4]@2, ~ [gb4,a4] ~@6", // E Ebm Ab5 E5 Gbm
  D: "~ [a3,gb4] [b3,ab4]!2 [ab3,e4] [b3,ab4] ~ [db4,g4]", // D E Dbm E Dbdim
  E: "~@2 [e4,g4,e5]@2 [e4,g4,e5]@2 [g4,e5]@3 ~ [d4,d5]@2 ~@2 [db4,e4,gb4,a4,db5]@2", // Em C D Gbm7
  F: "[~@2 b4@2 [db4,e4,gb4,a4]@3 b4 a4@2 b4@2 db5@2 ~@6 [b4,eb5]@2 db5@2 [ab4,b4]@2 ~@6, ~@14 [e4,ab4,e5]@11 ~@7, ~@7 db5@4 ~@5]/2", // Gbm7 B Abm E
})).s("gm_electric_bass_finger").gain(0.22)

// bass · fretless bass
const bass = note(`<
  ~ A@2 B C D E F G H I J K@2 L M K@2 N O K@2 B P C D E F Q H I J R K L M K@2 N O K@2 B S T U V W X V@2 Y@2 K@2 B Z C AA
  E F AB H I J K@2 L M K@2 AC O AD@2 AE AF AG AH AI AJ AH@2 AK@2 AL@2 AE AM AD@2 AE AN AO AP AQ ~
>`.pickRestart({
  A: "eb2@3 eb2 eb2@3 ~", B: "eb2@2 g1@2 ab1@2 bb1@3 ~@5 bb1@2", C: "g1@3 g1!2 bb1@3", D: "eb2@3 bb1 eb2@4",
  E: "ab1@3 ab1 bb1@3 ab2", F: "~@2 bb1@2 ab1@3 ab1, c2@3 ~@5", G: "eb2@3 bb1 eb2@3 ~", H: "g2@4 ab2@3 ab2",
  I: "ab1@3 ab1 bb1@4", J: "c2 bb1 ab1!2", K: "eb2@3 eb2 eb2@3 bb1", L: "eb2 bb1", M: "c2@3 f2 f1@2 f2@2",
  N: "ab1@3 ab1 ab1@3 ~", O: "g1 bb1", P: "g1@3 g1!2 c2@2 ~", Q: "eb2@3 eb3 eb2@3 ~", R: "eb2@3 bb1 eb2@3 bb1",
  S: "bb1@3 ~ ab1@3 bb1", T: "bb1@3 bb1 bb1@3 ~", U: "c2@2 ~ c2 c2@4", V: "c2@3 c2 c2@3 ~", W: "eb2@3 eb2 eb2@3 eb2",
  X: "bb1@3 ~@4 bb1", Y: "[c2@3 c2 c2@3 f2@8 ~, ~@7 bb1@4 ~@5]/2", Z: "d2@2 ~ c2 d2@2 ~ c2", AA: "eb2@3 ~ eb2@4",
  AB: "eb2@3 ~ eb2@3 ~", AC: "ab1@3 ab1 ~ eb2 ab1@2, ~@2 ab1 ~", AD: "e2@3 e2 e2@3 b1",
  AE: "e2@2 ab1@2 a1@2 b1@3 ~@5 b1@2", AF: "eb2@2 ~ db2 eb2@2 ~ db2", AG: "db2@2 ~ db2 db2@4", AH: "db2@3 db2 db2@3 ~",
  AI: "e2@3 ~@4 e2", AJ: "b1@3 ~@4 e2", AK: "[db2@3 db2 db2@3 gb2@7 gb2 ~, ~@7 b1@4 ~@5]/2", AL: "e2@3 e2 e2@3 ~",
  AM: "ab1@3 ab1!2 b1@3", AN: "ab1@2 ~ ab1!2 b1@2 ~", AO: "e2 ~@3", AP: "b1@2 ~ b1 db2@2 ~ eb2, ~@3 db2", AQ: "e2 ~",
})).s("gm_fretless_bass").gain(0.14)

// chords · piano
const piano = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W D X Y G H I J K L M Z O P Q R S T U V AA AB ~@40 AC AD AE AF AG AH AI
  AJ AK AL AM ~
>`.pickRestart({
  A: "[eb4,g4]@6 [d4,f4]@3 ~@5 [c4,eb4]@2", B: "[d4,f4]@2 bb4@2 ~@2 [d4,f4]@3 ~ c4@5 f4, eb4 ~@9 eb4@4 ~@2",
  C: "[bb3,eb4,g4]@2 f4@2 eb4@2 [d4,f4]@3 ~@5 [c4,eb4]@2", D: "[eb4,c5]@2 bb4@2 g4@2 [d4,bb4]@3 ~ [d4,bb4]@4 eb4@2",
  E: "[d4,g4]@2 bb4@2 c5@2 [c4,eb4,ab4,c5]@7 ~@3", F: "~ g4 f4 eb4 [d4,f4]@4, ~ [ab3,c4]@3 ~@4",
  G: "[c4,g4] ~ [d4,f4]@2 [ab3,c4,eb4]@4, ~@3 g4@2 ~@11", // C5 Dm Ab
  H: "~ c5!2 g4 bb4 ~@2 bb3, ~ [eb4,g4]@2 ~ [d4,f4]@3 ~, ~@3 bb4", I: "[d4,g4]@2 bb4@2 c5@2 [eb4,c5]@7 ~@3",
  J: "~ g4 f4 eb4 [d4,f4] bb4 ab4 [c4,eb4,g4], ~ [ab3,c4]@3 ~@4", K: "~@2 [bb3,d4,f4]@2 eb4!4, ~ [ab3,c4]",
  L: "[eb4,g4,eb5]@6 [d4,f4,bb4]@3 ~ bb4@2 [d4,f4,bb4]@4", M: "[bb3,d4,f4]@2 bb4@2 [d4,f4]@5 ~ [ab3,c4,eb4]@6",
  N: "[eb4,g4]@2 ~ bb4!5, bb3@3 ~ [d4,f4]@4", O: "[eb4,c5]@2 [g4,eb5]@4 [f4,c5,f5]@7 ~@3",
  P: "[eb4,bb4,eb5]@6 [d4,f4,bb4,c5]@3 ~ g4@2 [d4,f4,bb4]@4", // Eb5 Bb
  Q: "[bb3,d4,f4]@2 bb4@2 [bb3,d4,f4]@3 ~ [ab3,c4,eb4]@4 ~@2 [d4,f4]@2", R: "~ [c5,eb5]!6 c5, [ab3,eb4]",
  S: "[d4,g4,bb4]@2 c5@2 [bb3,d4,f4,g4]@2 c4 eb4", T: "g4@3 ~ [bb3,d4,f4]@3 [c4,eb4]",
  U: "[d4,f4]@2 bb4@2 [d4,f4]@3 ~ [c4,eb4]@6 ~@2", V: "[eb4,g4] f4 eb4 [d4,f4]@2 ~@2 [c4,eb4]",
  W: "[d4,f4] bb4 [d4,f4]@3 [c4,eb4]@2 c5", X: "[d4,g4]@2 bb4@2 c5@2 [c4,eb4,ab4,c5]@7 ~@3, ~@3 eb3 ~@4",
  Y: "~ g4 f4 eb4 ~@3 ab2, ~ [ab3,c4]@3 [d4,f4]@4", Z: "[eb4,g4]@2 ~ bb4!5, bb3@3 ~ [bb1,d4,f4]@4",
  AA: "~ bb4 [d4,f4]@3 [c4,eb4]@2 c5", AB: "[d4,f4]@2 bb4@2 [d4,f4]@6 [c4,eb4]@4 ~ [c4,eb4]",
  AC: "[b3,e4,ab4]@6 [b3,eb4,gb4]@3 ~@5 [db4,e4]@2", // E B Dbm
  AD: "[b3,eb4,gb4]@2 b4@2 ~@2 [b3,eb4,gb4]@3 ~ [a3,db4]@5 gb4, e4 ~@9 e4@4 ~@2", // B A
  AE: "[b3,e4,ab4]@2 gb4@2 e4@2 [eb4,gb4]@3 ~@5 [db4,e4]@2", AF: "~ b4 [eb4,gb4]@2 ~ [a3,db4,e4] b4!2",
  AG: "[e4,ab4]@6 [b3,eb4,gb4]@3 ~@5 [db4,e4]@2", AH: "[eb4,gb4]@2 b4@2 ~@2 [eb4,gb4]@3 ~ [db4,e4]@6",
  AI: "[e4,ab4] gb4 e4 [eb4,gb4]@3 ~@2", AJ: "[eb4,gb4] b4 [eb4,gb4]@3 [db4,e4]@3", AK: "[db4,e4]@3 ~@5",
  AL: "[eb4,gb4]@2 b4@2 [eb4,gb4]@6 db4@4 ~ eb4, ~@5 e4@3, ~@7 db4", AM: "[e4,ab4]@3 ~",
})).s("gm_piano").gain(0.26)

// chords · epiano1
const epiano1 = note(`<
  ~@45 A B C D E F@3 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@3 ~@12
>`.pickRestart({
  A: "[c4,eb4]@2 [eb4,g4,eb5]!3 [db4,db5]@2 [c4,c5]", B: "[c4,eb4,f4,ab4,c5] ~@3 [c4,eb4,f4,ab4] bb4 c5 [g4,bb4]",
// … 137 more lines

More by Al Stewart