Strudelify

I Remember Yesterday

Donna Summer

KeyE♭ majorTempo126 bpm
0:00/0:00
// I Remember Yesterday — Summer Donna
// 126 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: ch 16 "MUTED GTR" named as a guitar, played on electric guitar muted (its muted trumpet patch is not one)
// note: Full arrangement: all 96 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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 · "FRETLESS"
const bass = note(`<
  A@2 B@2 C D E F G D E F C D H@2 I J K L M N O P Q R S T U V C D H@2 W J K L M N O P Q R S T X V G D E F G Y@2 Z AA AB
  AC AD AE AF AG AH AI AJ AK AL AM AN AO@2 I J K L M N O P Q R S T X V C D E F C D C D C AP
>`.pickRestart({
  A: "[bb2@13 ab2@13 ~ g2@13 f2@22 ~@2]/2", B: "[f2@8 bb2@31 ~ eb2@6 g2@2 ~@4 bb2@2 ~@2 c3@6 bb2@2]/2",
  C: "~@4 g2 ~@3 ab1@6 c2@2 ~@4 eb2@2 ~@2 f2@6 eb2@2", D: "~@2 c2@2 eb2@3 g2 ~@2 bb2 ~ c3@3 bb2",
  E: "~@4 g2@4 ab1@4 ~@2 c2@2 ~@4 eb2@6 ~@2 f2 ~@3", F: "~ f2@2 ~ eb2@3 g2 ~@2 bb2 ~ c3@3 bb2",
  G: "~@2 g2 ~ ab1@3 c2 ~@2 eb2 ~ f2@3 eb2", H: "[~@4 g2@4 bb1@3 ~@5 bb1@19 ~@9 eb3@4 c3@4 bb2@2 ~@6 bb2@4]/2",
  I: "c3@4 eb3@2 ~@6 eb3@3 ~ c3@4 bb2@3 ~@5 bb2@4", J: "c3@4 eb3@3 ~@5 d3@4 bb2@4 d3@2 ~@6 d3@4",
  K: "bb2@3 ~ d3@2 ~@6 d3@4 a2@4 gb2@4 d2@4 gb2@4", L: "g2@4 a2@3 ~@5 f2@4 eb2@3 ~ f2@2 ~@6 ab2@4",
  M: "f2@2 eb2 ~@3 eb2@2 f2@2 ab2 ~@3 ab2@2", N: "bb2@4 ab2@3 ~@5 b1@4 db2@3 ~ b1@4 ~@4 b1@4",
  O: "db2@4 b1@4 ~@4 bb1@4 c2@4 bb1@3 ~@5 bb1@4", P: "c2@4 ~@4 eb2@2 ~@2 eb2@4 bb1@3 ~ eb2@2 ~@6 eb2@4",
  Q: "bb2@4 eb2@4 d2@2 ~@2 d2@4 bb1@3 ~ d2@2 ~@6 d2@4", R: "bb1@4 d2@3 ~ db2 ~@3 db2@4 bb1@4 db2@2 ~@6 db2@4",
  S: "bb1@4 db2@2 ~@2 c2@11 ~ b1@7 ~ b1@4", T: "b2@4 b1 ~@3 eb2@2 ~@2 eb2@4 bb1@3 ~ eb2@2 ~@6 eb2@4",
  U: "bb1@4 eb2@3 ~ f2 ~@3 f2@3 ~ c3@3 ~ f2@4 ~@4 bb2@4", V: "c3@4 bb2@3 ~ eb2@6 g2@2 ~@4 bb2@2 ~@2 c3@6 bb2@2",
  W: "c3@4 eb3@2 ~@6 eb3@4 c3@4 bb2@3 ~@5 bb2@4", X: "bb1@4 eb2@2 ~@2 f2 ~@3 f2@3 ~ c3@3 ~ f2@4 ~@4 bb2@4",
  Y: "[~@4 c2@4 eb2@6 g2@2 ~@4 bb2@2 ~@2 c3@6 bb2@6 g2@2 ~@2 c2@3 ~@5 c2@3 ~@9 f2 ~@3]/2",
  Z: "f2 ~ f2 ~@5 f1@3 ~ f1@2 ~@8 f1 ~ f1@2 ~@2 f1@2 ~@2", AA: "~@6 f1 ~ g1@2 ~@2 g1@3 ~@7 g1 ~ g1@2 ~@2 g1@2 ~@2",
  AB: "~@6 g1 ~ c2@2 ~@2 c2@2 ~@8 c2 ~ c2@2 ~@2 c2@2 ~@2",
  AC: "~@8 c3@4 bb2@2 ~@2 c3@2 ~@2 f2 ~ f2 ~ gb2 ~ gb2 ~ g2@3 ~",
  AD: "eb2@2 ~@2 c2@2 ~@2 f2@3 ~ f2@2 ~@8 f2 ~ f2@2 ~@2 f2@2 ~@2",
  AE: "~@6 f2 ~ g2@2 ~@2 g2@3 ~@7 g2 ~ g2@2 ~@2 g2@2 ~@2", AF: "~@6 g2 ~ c2@2 ~@2 c2@2 ~@6 c2 ~ c2 ~ c2@2 ~@2 c2@2 ~@2",
  AG: "~@4 c2 ~ c2 ~ c2@2 ~@2 c2@3 ~@7 c2 ~ c2@8", AH: "bb1@6 ~@2 ab1@3 ~ ab1@2 ~@8 ab1 ~ ab1@3 ~ ab1@2 ~@2",
  AI: "~@6 ab1 ~ ab1@2 ~@2 ab1@2 ~@8 ab1 ~ ab1@2 ~@2 ab1@3 ~",
  AJ: "~@6 ab1 ~ eb2@3 ~ eb2@2 ~@8 eb2 ~ eb2@2 ~@2 eb2@2 ~@2",
  AK: "d2@2 eb2@2 d2@3 ~ c2@2 ~@2 c2@2 ~@6 c2 ~@3 f2@3 ~ f2@2 ~@2", AL: "~@8 f2@3 ~ f2@2 ~@8 f2 ~ f2@3 ~ f2@2 ~@2",
  AM: "~@4 f2 ~ f2@2 g2@3 ~ g2@2 ~@8 g2 ~ g2@3 ~ g2@2 ~@2", AN: "~@6 g2 ~ c2@3 ~ c2@2 ~@10 c2@4 c2@4",
  AO: "[c2@4 c2@2 ~@10 bb1@21 ~@7 eb3@4 c3@4 bb2@2 ~@6 bb2@4]/2", AP: "~@2 c2@2 eb2@3 g2 ~@8",
})).s("gm_fretless_bass").gain(0.32)

// chords · banjo
const banjo = note(`<
  ~ A B C D E D E D E D E D E F G H I J K L M N O P Q R S T U D E F G H I J K L M N O P Q R S T U D E D E D V W X ~@15 G
  H I J K L M N O P Q R S T U D E D E D E D E D Y
>`.pickRestart({
  A: "~@8 eb4 ~@6 eb4@2 ~@2 eb4 ~ eb4 ~ eb4@2 ~@3 eb4 ~@3",
  B: "~@2 eb4 ~ eb4@2 ~@3 d4 ~ d4!2 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4!2 ~@2 d4!2 ~@2 d4 ~",
  C: "~@8 [g3,eb4] ~@5 eb4 ~ [g3,eb4] ~@3 [g3,eb4] ~ [g3,eb4]@2 eb4@2 [g3,eb4] ~ [g3,eb4] ~@3", // Cm
  D: "[g3,eb4]@2 ~@2 [g3,eb4]@2 ~@2 [eb3,c4] ~@5 c4 ~ [eb3,c4] ~@3 [eb3,c4] ~ [eb3,c4]@2 c4@2 [eb3,c4] ~ [eb3,c4] ~@3", // Cm
  E: "[eb3,c4]@2 ~@2 [eb3,c4]@2 ~@2 [g3,eb4] ~@5 eb4 ~ [g3,eb4] ~@3 [g3,eb4] ~ [g3,eb4]@2 eb4@2 [g3,eb4] ~ [g3,eb4] ~@3", // Cm
  F: "[g3,eb4] ~ [g3,eb4] ~@13", // Cm
  G: "~@8 g3@2 ~@5 [g3,eb4] eb4@2 ~@2 [g3,eb4] ~@6 eb4!2 ~@3, ~@8 eb4 ~@7 g3 ~@10 g3@3 ~@2", // Cm
  H: "[g3,eb4] ~@7 [g3,eb4] ~@6 [g3,eb4] eb4 ~@3 [g3,eb4] ~@6 g3@2 ~@3, ~@27 eb4 ~@4", // Cm
  I: "g3@2 ~@6 d4@2 ~@5 gb4!2 ~@3 d4@2 ~@2 gb3 ~@2 [d4,gb4] ~@3 gb3, eb4 ~@7 gb4 ~@6 d4@4 ~ gb4 ~@11", // D
  J: "[d4,gb4]@2 ~@6 [c4,d4,gb4]@2 ~@5 [c4,d4,gb4] [c4,d4] ~@3 [c4,gb4]@2 ~@2 gb3 ~@2 [c4,d4,gb4] ~@3 gb3, ~@16 gb4@2 ~@2 d4 ~@11", // D D7 Csus2 Cdim D7
  K: "[c4,d4,gb4]@2 ~@6 [ab3,c4]@3 ~@4 [ab3,c4] [ab3,c4]@2 ~@2 [ab3,c4]@2 ~@5 [ab3,c4]@3 ~@2", // D7 Ab
  L: "ab3@2 ~@6 [ab3,c4]@2 ~@5 [ab3,c4]!2 ~@3 [ab3,c4]@2 ~@2 f2 ~@2 [ab3,c4] ~@3 f2, c4 ~@31", // Ab
  M: "[ab3,c4]@2 ~@6 [ab3,b3]@3 ~@4 [ab3,b3]@2 ~@3 [ab3,b3]@3 ~@4 ab3@2 ~@3, ~@27 b3 ~@4", // Ab Abm
  N: "[ab3,b3]@3 ~@5 [bb3,d4]@3 ~@4 [bb3,d4]@2 ~@3 [bb3,d4]@3 ~@4 [bb3,d4]@2 ~@3", // Abm Bb
  O: "[bb3,d4]@3 ~@5 [bb3,eb4]@2 ~ [bb3,eb4] eb4 ~@2 eb4 [bb3,eb4] ~@2 [bb3,eb4] bb3 ~@2 bb3 ~@3 [bb3,eb4] eb4 ~@2 eb4", // Bb Eb5
  P: "[bb3,eb4] ~@2 [bb3,eb4]!2 ~@2 [bb3,eb4] d4@2 ~ [bb3,d4]!2 ~@2 [bb3,d4]!2 ~@2 [bb3,d4] ~@7 [bb3,d4] d4 ~@2 d4, ~@8 bb3 ~@23", // Eb5 Bb
  Q: "[bb3,d4] ~@2 [bb3,d4] ~@4 db4@2 ~ [bb3,db4] ~@4 [bb3,db4] ~@2 [bb3,db4] ~@7 [bb3,db4] ~@4, ~@8 bb3 ~@23", // Bb Bbm
  R: "[bb3,db4] ~@2 [bb3,db4] db4 ~@2 db4 [ab3,c4]@4 ~@4 [ab3,c4]@6 ~@2 ab3 ~@2 [b3,eb4] ab3 ~@2 ab3", // Bbm Ab B
  S: "[b3,eb4]@3 ~@5 [g3,eb4]@3 ~@4 [g3,eb4] ~@4 [g3,eb4]@2 ~@5 g3@2 ~@3, ~@27 eb4 ~@4", // B Cm
  T: "[g3,eb4]@2 ~@6 [c4,f4]@5 ~@3 [c4,f4]@6 ~@2 [c4,ab4]@5 ~@3", // Cm F5 Fm
  U: "[c4,ab4]@4 ~@4 [g3,eb4] ~@5 eb4 ~ [g3,eb4] ~@3 [g3,eb4] ~ [g3,eb4]@2 eb4@2 [g3,eb4] ~ [g3,eb4] ~@3", // Fm Cm
  V: "[eb3,c4]@2 ~@2 [eb3,c4]@2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] [bb3,eb4] [bb3,eb4]@4 [bb3,eb4]@2 ~@4 [g3,bb3,eb4] ~@3 [bb3,eb4]@2 ~@2, ~@18 g3 ~@9 g3 ~@3", // Cm Eb Eb5 Eb Eb5
  W: "~@2 [g3,bb3,eb4]@2 ~@4 [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4]@2 [g3,c4,eb4] ~ [c4,eb4] ~@11 [f3,a3,eb4] ~@3, ~@8 g3 ~@5 c4 ~", // Eb Cm F7
  X: "[f3,a3,c4,eb4] ~ [f3,a3,c4]@2 ~@28, ~@2 eb4 ~@29", Y: "[eb3,c4]@2 ~@2 [eb3,c4]@2 ~@2 [g3,eb4] ~@23",
})).s("gm_banjo").gain(0.13).pan(1)

// chords · banjo · soft notes
const banjo_soft = note(`<
  ~ A ~ B C D C D C D C D C D E ~@2 F@2 ~@4 G H I J ~@2 K C D E ~@2 F@2 ~@4 G H I J ~@2 K C D C D C L ~@19 F@2 ~@4 G H I
  J ~@2 K C D C D C D C D C L
>`.pickRestart({
  A: "~@11 eb4@2 ~@14 eb4 ~@2 eb4@2", B: "d4 ~@11 [g3,eb4] ~ g3 ~@9 g3@2 ~@6",
  C: "~@2 [g3,eb4] ~@9 [eb3,c4] ~ eb3 ~@9 eb3@2 ~@6", D: "~@2 [eb3,c4] ~@9 [g3,eb4] ~ g3 ~@9 g3@2 ~@6",
  E: "~@2 [g3,eb4] ~@29", F: "~@28 gb3 ~@3", G: "~@12 bb3 ~@2 bb3 ~@4 eb4 ~@2 eb4 ~@4 bb3 ~@2 bb3",
  H: "~@20 [bb3,d4] ~@2 [bb3,d4] ~@4 bb3 ~@2 bb3", // Bb
  I: "~@4 [bb3,d4] ~@2 [bb3,d4] ~@4 [bb3,db4] ~@2 [bb3,db4] ~@4 [bb3,db4] ~@2 [bb3,db4] ~@4 [bb3,db4] ~@2 [bb3,db4]", // Bb Bbm
  J: "~@4 bb3 ~@2 bb3 ~@24", K: "~@12 [g3,eb4] ~ g3 ~@9 g3@2 ~@6", L: "~@2 [eb3,c4] ~@29",
})).s("gm_banjo").gain(0.08).pan(1)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@10 A B ~@2 C@2 D E F G H ~@2 I J K L@2 M N ~@2 C@2 D E F G H ~@2 I O K L@2 M N ~@5 P Q R S T U V S W X Y Z AA AB AC
  AD ~@2 AE D E F G H ~@2 I O K L@2 M N ~@10
>`.pickRestart({
  A: "~@28 eb4 ~ eb4 ~", B: "~@4 [eb4,ab4]@3 ~@25, ~@4 ab3 ~@27",
  C: "[~@8 [f3,bb3]@2 ~@6 [d4,gb4]@19 ~@9 [eb4,g4]@4 [eb4,g4] ~@15]/2", D: "~@27 [eb4,g4] [eb4,g4]@2 ~@2",
  E: "[eb4,g4] ~@11 [d4,gb4]@5 ~@3 [d4,gb4] ~@11", F: "~@12 [c4,gb4]@4 ~@4 [c4,gb4] ~@7 [c4,gb4] ~@3",
  G: "~@3 [c4,gb4] ~@12 [c4,f4,ab4] ~@10 [c4,f4,ab4] ~@4", H: "[c4,f4,ab4] ~@26 [c4,f4] ~@4",
  I: "~@12 [eb4,g4] ~@3 [eb4,g4] ~@15", J: "~@4 [eb4,g4]@4 ~@4 [d4,f4] ~@3 [d4,f4] ~@15",
  K: "~@4 [d4,f4]@4 ~@5 f4@2 ~@2 [db4,f4]@2 ~@13, ~@6 db4 ~@9", // Dm Db
  L: "[~@4 [db4,f4]@3 ~ [ab3,c4,eb4]@11 ~ [ab3,b3,eb4]@18 ~@2 [bb3,eb4]@5 ~@2 eb4 ~@4 eb4@6 ~@2 eb4 ~@3]/2", // Db Ab Abm Eb5
  M: "~@3 [bb3,eb4]@3 ~@2 [c4,f4]@3 ~@5 [c4,f4]@7 ~ [ab3,c4]@5 ~@2 c4", N: "[ab3,c4] ~ [ab3,c4] ~@13",
  O: "~@4 [eb4,g4]@4 ~@4 [d4,f4]@2 ~@2 [d4,f4] ~@15", P: "~@10 [eb4,g4] ~@5", Q: "~@4 [eb4,g4]@2 ~@22 f4 ~@3",
  R: "f4 ~ f4 ~@13 [ab3,c4,eb4]@3 ~@7 [ab3,c4,eb4] ~ [ab3,c4,eb4]@3 ~", // Ab
  S: "~@16 [bb3,d4,f4]@3 ~@5 [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4]@3 ~", // Bb
  T: "~@16 [bb3,c4,eb4]@3 ~@5 [bb3,c4,eb4,g4] ~ [bb3,c4,eb4,g4] ~ [bb3,c4,eb4,g4]@3 ~", // Cm7
  U: "~@16 [bb3,c4,eb4,g4]@2 ~@6 [bb3,c4,eb4,g4] ~ [bb3,c4,eb4,g4] ~ [bb3,c4,eb4,g4]@3 ~", // Cm7
  V: "~@4 [bb3,c4,eb4,g4]@3 ~@9 [ab3,c4,eb4]@3 ~@7 [ab3,c4,eb4] ~ [ab3,c4,eb4]@3 ~", // Cm7 Ab
  W: "~@16 [bb3,c4,eb4]@3 ~@3 [eb5,g5]!2 [eb5,g5]@5 ~@3", // Cm7 Eb
  X: "[eb5,g5]@5 ~@11 [bb3,c4,eb4,g4]@2 ~@6 [bb3,c4,eb4,g4] ~ [bb3,c4,eb4,g4] ~ [bb3,c4,eb4,g4]@3 ~", // Eb Cm7
  Y: "[bb3,d4,g4]@8 [eb4,ab4] ~@3 [eb4,ab4] ~@6 [eb4,ab4] ~@4 ab4 ~@3 [ab4,ab5]@3 [ab4,ab5]", // Gm Ab5 Ab
  Z: "[ab4,ab5]@4 ~@12 [eb4,ab4] ~@11 [eb4,ab4] ~@3", AA: "~@16 [bb3,eb4] ~@11 [bb3,eb4] ~@3",
  AB: "bb3@2 [bb3,eb4] ~ [bb3,eb4]@2 ~@10, d4@7 ~@25", AC: "~@16 [c4,f4] ~@11 [c4,f4]@2 ~@2",
  AD: "~@16 [c4,g4] ~@11 [c4,g4]@2 ~@2", AE: "~@12 [eb4,g4]@4 [eb4,g4] ~@15",
})).s("gm_electric_guitar_clean").gain(0.12).pan(0)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@20 A ~@6 B C ~@9 A ~@6 B C ~@8 D ~ E ~ D ~ F G H ~@12 A ~@6 B C ~@11
>`.pickRestart({
  A: "~@27 ab4 ~@4", B: "~@15 bb3 ~@4 bb3@6 ~@2 bb3 ~@3", C: "~@31 ab3", D: "~@24 [ab3,c4,eb4] ~@7",
  E: "~@16 g4@3 ~@13", F: "~@16 g4@3 ~ [eb5,g5]!2 ~@10", G: "~@8 [eb5,g5]@5 ~@19", H: "~@24 eb4 ~@7",
})).s("gm_electric_guitar_clean").gain(0.06).pan(0)

// chords · piano · "A.PIANO 3"
const piano = note(`<
  A@4 B C B D B C B C B D ~@3 E F G ~ H I ~@4 J K L B D ~@3 E F G ~ H I ~@4 J K L B C B D B M N O@4 P@7 Q R@4 ~@2 E F G
  ~ H I ~@4 J K L B C B D B D B D B D
>`.pickRestart({
  A: "[[bb3,d4,f4]@13 [ab3,c4,eb4]@12 ~@2 [g3,d4,f4]@13 [c3,f3,ab3,c4,eb4]@30 ~@2 [bb2,ab3,bb3]@27 ~@9 [g4,bb4,c5,eb5]@2 ~@18]/4", // Bb Ab G7 Fm7 Bb7 Cm7
  B: "~@12 [ab4,c5,eb5]@2 ~@14 [eb4,ab4,c5]@3 ~", C: "~ [eb4,ab4,c5] ~@4 [g4,bb4,c5,eb5] ~@9", D: "~ [eb4,ab4,c5] ~@14",
  E: "~@8 [a4,c5,d5]@2 ~@2 [a4,c5,d5,gb5]@2 ~@4 [a4,c5,d5,gb5]@2 ~@2 d5 c5 [c5,d5]@2 ~@2 [a4,c5,d5,gb5]@2 ~@2, ~@11 a4@2 ~@3", // D7 Csus2 D7
  F: "[a4,c5,d5]@4 ~@4 [gb4,a4,c5]@2 ~@2 [gb4,a4,c5]@2 ~@4 [gb4,a4,c5]@2 ~@3 c5 c5@2 ~@2 gb4@2 ~@2, gb5@2 ~@21 [gb4,a4]@4 ~@5", // D7 Gbdim Gbm
  G: "[gb4,a4,c5] ~@7", H: "~@12 [ab3,b3,eb4] ~@5 [b3,eb4]@2 ~@2 f4 ~@3 f4@2 eb4@2 ~@2, ~@18 ab3 ~@7 b3@5 ~",
  I: "~@3 [ab3,b3]@5 ~@10 d4@2 ~@2 [bb3,d4]@8 ~@2, ~ eb4@3 ~@12", // Abm Bb
  J: "~@12 [g3,bb3]@2 ~@5 g3@2 ~@2 g3@2 ~@2 [g3,bb3,eb4]@2 ~@3", // Gm Eb
  K: "[g3,bb3]@2 ~@2 [g3,bb3,eb4]@2 ~@2 c4 ~@3 c4@2 ~@2 f2@2 ~ c4@2 ~@3 bb2@2 ~@2 [bb2,c4,eb4]@2 ~@2, ~@24 c4 ~@7", // Gm Eb Cm7
  L: "~@3 [ab3,c4,eb4]@5 ~@4 [g4,bb4,c5,eb5]@2 ~@18", // Ab Cm7
  M: "~@2 [eb4,ab4,c5]@2 ~@4 f5@4 ~@3 f5@2 eb5 ~@5 c5 f5@4 ~ f5@2 ~", // Ab
  N: "~@3 eb5@2 ~@2 c5 ~@5 g5@13 ~@6, ~ [c2,g2,c3]@2 ~, ~@12 [g4,c5,eb5]@15 ~@5", // C5 Cm
  O: "[~@8 f1@4 [ab3,c4,eb4]@2 ~@2 f1 ~@2 [f3,ab3,eb4] ~@4 [f3,ab3,c4,eb4]@16 g1@4 [f3,g3,bb3,d4]@2 ~@2 g1 ~@2 [f3,g3,d4] ~@4 [f3,g3,bb3,d4]@16 c2@3 ~ [g3,bb3,c4,eb4]@2 ~@2 c2 ~@2 [g3,bb3,c4,eb4] ~@4 [g3,bb3,c4,eb4]@16 c2@4 [g3,c4,eb4] ~@3 c2 ~@2 [g3,bb3,c4,eb4] ~@4 [g3,bb3,c4,eb4]@8, ~@12 f3 ~@6 c4@2 ~@30 bb3@2 ~@55 bb3@2 ~@18]/4", // Ab Fm7 Gm7 G7 Gm7 Cm7 Cm Cm7
  P: "[c2@3 ~ [bb3,c4,eb4]@2 ~@2 f1@4 [c4,eb4]@2 ~@2 f1 ~@2 [c4,eb4]@2 ~@3 [f3,ab3,c4,eb4]@16 g1@4 [f3,g3,bb3,d4]@2 ~@2 g1 ~@2 [f3,g3,d4] ~@3 g1 [f3,bb3,d4]@16 c2@4 [g3,bb3,c4,eb4]@2 ~@2 [c2,d2] ~@2 [g3,bb3,c4,eb4] ~@3 c2 [g3,bb3,c4,eb4]@16 c2@4 [g3,bb3,c4,eb4] ~@3 c2 ~@2 [g3,bb3,c4,eb4] ~@4 [c2,g3,c4,eb4]@8 [bb1,f3,d4]@6 ~@2 ab1@3 ~ [ab3,bb3,c4,eb4]@2 ~@2 ab1 ~@2 [ab3,bb3,c4,eb4] ~@3 ab1 [ab3,bb3,c4,eb4]@16 ab1@4 [bb3,c4,eb4]@2 ~@2 ab1 ~@2 [bb3,c4]@2 ~@2 ab1 [ab3,bb3,c4,eb4]@15 ~ eb2@4 [bb3,eb4]@2 ~@5 [eb2,eb4,g4] ~@4 [bb3,eb4,g4]@7 ~, ~@4 g3 ~@7 [f3,ab3] ~@6 [f3,ab3] ~@31 bb3@2 ~@3 g3@14 ~@50 bb3@14 ~@38 ab3 ~@6 [ab3,eb4] ~@24 g4 ~@6 bb3@2 ~@3 eb2 ~@7]/7", // Cm7 Cm Fm7 Gm7 G7 Bb Cm7 Csus2 …
  Q: "[bb3,d4,f4]@8 c2@4 [c4,eb4] ~@3 c2 ~@2 [g3,c4]@2 ~@3 [a3,c4,f4]@7 ~, ~@12 g3@2 ~@5 eb4 ~@12", // Bb Cm C5 F
  R: "[~@8 f2@4 [f3,ab3,c4,eb4]@2 ~@2 f2 ~@2 [f3,ab3,c4,eb4]@2 ~@2 f2 ~@12 f2@3 ~ g2@3 ~ [g3,bb3,d4,f4]@2 ~@2 g2 ~@2 f4 ~@3 g2 [g3,bb3,d4,f4]@16 c3@2 ~@2 [g3,eb4]@2 ~@2 c3 ~ [c4,eb4] ~@4 c3 [g3,c4,eb4]@17 ~@7 [bb1,ab3,bb3,d4]@16, ~@24 [f3,ab3,c4,eb4]@15 ~@11 [g3,bb3,d4]@2 ~@24 c4 ~@5 g3@2 ~@44]/4", // Fm7 Gm7 Cm Bb7 Fm7 Gm
})).s("gm_piano").gain(0.2).pan(0.3)

// chords · piano · "A.PIANO 3" · soft notes
const piano_soft = note(`<
  ~@17 A B ~@2 C D ~@4 E F G ~@5 A B ~@2 C D ~@4 E F G ~@5 H ~@19 A B ~@2 C D ~@4 E F G ~@10
>`.pickRestart({
  A: "~@8 gb5@2 ~@13 gb5 gb5@2 ~@6", B: "~@29 c5@2 ~, ~@14 a4 ~", C: "~@22 [ab3,b3] ~@3 ab3@4 ~@2",
  D: "~@12 [ab3,bb3,d4]@2 ~@4 bb3@2 ~@2 ab3@7 ~@3, ~@18 ab3 ~@13", // Bb7
  E: "~@8 [bb3,eb4]@2 ~@2 eb4@2 ~@5 [bb3,eb4]@2 ~@2 bb3@2 ~@7, ~@8 g3 ~@14 eb4 ~@8", // Eb5
  F: "eb4@2 ~@6 [ab3,eb4]@2 ~@2 [ab3,eb4]@3 ~@4 [ab3,eb4]@2 ~@3 [ab3,eb4]@2 ~@2 ab3@3 ~", G: "bb2 ~@31",
  H: "~@12 eb5 ~@15 eb5 ~@3",
})).s("gm_piano").gain(0.11).pan(0.3)

// other · brass section · "BRASS 1"
const brass_section = note(`<
  A@4 B@2 C@2 D@2 E@2 F@2 G@2 ~@2 H@2 ~@2 I@6 ~ J K@2 G@2 ~@2 H@2 ~@2 I@6 ~ L M L N O P@2 Q R ~@14 S@2 ~@2 H@2 ~@2 I@6 ~
  L M L N O T@4 U@2
>`.pickRestart({
  A: "[[f4,c5,c6]@13 ~ eb4@12 ~ [d4,c5,c6]@13 [eb4,eb5,eb6]@32 [d4,d5]@32 eb5@12 d5 ~ c5@2 g4@2 ab4@2 bb4 ~@3, ~@13 [bb4,bb5]@14 ~@45 d6@29 ~@27]/4", // F5 D7 Eb D Bb
  B: "[d5@2 db5@2 c5 ~@3 g4@3 ~ ab4@2 ~@8 ab4@14 ~@4 eb5@12 d5 ~ c5@2 g4@2 ab4@2 bb4 ~@3]/2",
  C: "[d5@2 db5@2 c5 ~@3 g4@3 ~ ab4 ~@15 [ab3,g4] ~@5 [ab3,g4]@5 ~ g4@8 f4@4 eb4@2 ~@2 bb3@2 b3@2 c4@2 ~@2, ~@11 ab4@7 ~@14]/2", // Abmaj7
  D: "[f4@2 e4@2 eb4 ~@3 c4@2 ~@2 eb4@2 ~@2 bb4@2 a4@2 ab4@2 g4@17 ~ eb5@12 d5 ~ c5@2 g4@2 ab4@2 bb4 ~@3]/2",
  E: "[d5@2 db5@2 c5 ~@3 g4@3 ~ ab4 ~@9 ab4@14 ~@4 eb5@12 d5 ~ c5@2 g4@2 ab4@2 bb4 ~@3]/2",
  F: "[d5@2 db5@2 c5 ~@3 g4@3 ~ ab4 ~@15 [ab3,g4] ~@5 [ab3,g4]@5 ~ g4@12 bb4@2 g4 ~ c5@2 ~@2 bb4 ~ c5@2, ~@11 ab4@7 ~@14]/2", // Abmaj7
  G: "[bb4 ~ g4 ~ eb4 ~ c4@2 bb4@2 ~@6 [d4,bb4]@21 ~@27]/2", // Gm
  H: "[~@12 d5 ~@3 d5 ~@3 d5 ~@2 [d4,eb4] d5@2 ~ db5 c5 ~@2 c5@5 ~@28, ~@4 c4@7 ~ e4@6 ~@14]/2", // Ebmaj7
  I: "[~@12 bb4 ~@3 bb4 ~@3 bb4 ~@3 bb4@4 ab4 ~@2 ab4@6 ~@3 eb3@32 d3@32 db3@31 ~ c4@11 ~@2 b3@18 ~@25]/6",
  J: "~@8 eb5@12 d5 ~ c5@2 g4@2 ab4@2 bb4 ~@3",
  K: "[d5@2 db5@2 c5 ~@3 g4@3 ~ ab4 ~@9 ab4@14 ~@4 g4@12 bb4@2 g4 ~ c5@2 ~@2 bb4 ~ c5@2]/2", L: "~@4 eb5@6 ~@2 g4 ~@3",
  M: "d5@2 ~@2 c5 ~@27", N: "d5@2 ~@2 c5 ~@23 [ab3,g4] ~@3",
  O: "~@2 [ab3,g4]@5 ~ g4@8 f4@4 eb4@2 ~@2 bb3@2 b3@2 c4@2 ~@2", // Abmaj7
  P: "[f4@2 e4@2 eb4 ~@3 c4@2 ~@2 eb4@2 ~@2 bb4@2 a4@2 ab4@2 g4@17 ~ g4@3 ~@3 g4@4 ~@6 g4@3 ~@3 g4@2]/2",
  Q: "~@28 [eb4,g4,g5] ~@3", R: "[eb4,g4,g5] ~ [eb4,g4,g5] ~@29", S: "[~@16 [d4,bb4]@21 ~@27]/2",
  T: "[f4@2 e4@2 eb4 ~@3 c4@2 ~@2 eb4@2 ~@2 bb4@2 a4@2 ab4@2 g4@17 ~ g4@8 f4@4 eb4@2 ~@2 bb3@2 b3@2 c4@2 ~@2]/2",
  U: "[f4@2 e4@2 eb4 ~@3 c4@2 ~@2 eb4@2 ~@2 bb4@2 a4@2 ab4@2 g4@17 ~ g4@8 ~@16]/2",
})).s("gm_brass_section").gain(0.32).pan(0.1)

// other · brass section · "BRASS 1" · soft notes
const brass_section_soft = note(`<
  ~@4 A ~ A ~@3 A ~ A ~@5 B ~@11 A ~@5 B ~@10 C D@2 E@2 ~@22 B ~@10 C D@2 E@2 ~@6
>`.pickRestart({
  A: "~@8 c5!3 ~@5", B: "~@22 db4 ~@9", C: "~@20 d5 ~ c5@2 ~@2 ab4@2 bb4 ~@3",
  D: "[~@2 db5@2 ~@4 g4@3 ~ ab4@2 ~@2 c5@2 c5@2 c5@2 ab4@14 ~@16 d5 ~ c5@2 ~@2 ab4@2 bb4 ~@3]/2",
  E: "[~@2 db5@2 ~@4 g4@3 ~ ab4 ~@3 c5@2 c5@2 c5@2 ab4@14 ~@28]/2",
})).s("gm_brass_section").gain(0.2).pan(0.1)

// chords · trombone
const trombone = note(`<
  A@4 ~@2 B C D@2 ~@2 B E F ~@3 G@2 ~@2 H@6 ~@4 F ~@3 G@2 ~@2 H@6 ~@4 B C D@2 ~@16 I ~@3 G@2 ~@2 H@6 ~@4 B C J@4 K@2
>`.pickRestart({
  A: "[[d4,f4]@13 [c4,eb4]@13 ~ [d4,f4]@13 ab4@32 ab4@32 ~@24]/4", // Dm Cm Dm
  B: "~@8 g3@2 ~@2 [eb3,g3] ~ [eb3,g3]@11 ~@3 [f3,ab3] ~@3, ~@8 eb3 ~@23", // Eb Fm
  C: "~@2 [f3,ab3]@3 ~@3 g4@8 f4@4 eb4@2 ~@2 bb3@2 b3@2 c4@2 ~@2", // Fm
  D: "[f4@2 e4@2 eb4 ~@3 c4@4 eb4@2 ~@2 bb4@2 a4@2 ab4@2 g4@17 ~@25]/2", E: "~@2 [f3,ab3]@3 ~@27",
  F: "~@8 bb2@3 ~@5 bb2@16",
  G: "[~@12 [gb3,c4] ~@3 [gb3,c4] ~@3 [gb3,c4] ~@3 [gb3,c4]@2 [gb3,c4]@2 [gb3,c4] ~ [gb3,c4]@5 ~@29]/2", // Gbdim
  H: "[~@11 [bb2,ab3] ~@4 [bb2,ab3] ~@3 [bb2,ab3] ~@3 [bb2,ab3] ~ [bb2,ab3] ~ [bb2,ab3] ~ [bb2,ab3]@7 ~@3 eb4@32 d4@32 db4@32 c3@11 ~@2 b2@18 ~@25, ~@68 eb3@15 ~@13]/6", // Bb7
  I: "~ bb2",
// … 163 more lines

More by Donna Summer