Strudelify

See You In September

The Happenings

KeyA♭ majorTempo125 bpm
0:00/0:00
// See You In September — The Happenings
// 125 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 86 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.

// bass · electric bass finger · "fbass-2"
const bass = note(`<
  ~ A B A B C D E F G D H I C J K I C L M N O P E Q R S T U C V W I C X W Y O Z A B A B C D E F C D AA AB AC AD AE AF AG
  AH AI AJ AK AL AM AN AK AO AP AQ AP AQ AC AD AE AF AC AD AE AF AC AD AE AF AC AD AE AR@2
>`.pickRestart({
  A: "f2", B: "bb1", C: "f2@6 ~@3 f2 ~@2 ab1@4 ~@2 c2@3 ~@3", D: "bb1@6 ~@3 bb1 ~@2 f1@3 ~@3 f1@3 ~@3",
  E: "f2@6 ~@3 f2 ~@2 ab1@4 ~@2 c2@4 ~@2", F: "bb1@6 ~@3 bb1 ~@2 bb1@4 ~@2 f1@3 ~@3",
  G: "f2@6 ~@3 f2 ~@2 ab1@4 ~@2 c2@3 ~@3, bb1 ~@23", H: "bb1 eb2@6 ~@2 eb2 ~@2 g1@4 ~@2 bb1@3 ~@3",
  I: "c2@6 ~@3 c2 ~@2 c2@4 ~@2 g1@3 ~@3", J: "bb1@6 ~@3 bb1 ~@2 f1@3 ~@3 f1@3 ~@3, f2 ~@23",
  K: "bb1 eb2@5 ~@3 eb2 ~@2 g1@4 ~@2 bb1@2 eb2@2 ~@2", L: "f2@6 ~@3 f2 ~@2 bb1@3 ~@3 f1@3 ~@3, ~@12 c2 ~@11",
  M: "g1@6 ~@3 g1 ~@2 bb0@4 ~@2 g1@4 ~@2, bb1 ~@23", N: "c2@6 ~@3 c2 ~@2 c2@4 ~@2 g1@3 ~@3, g1 ~@23",
  O: "f2@6 ~@3 f2 ~@2 ab1@4 ~@2 c2@3 ~@3, c2 ~@23", P: "f2@6 ~@3 f2 ~@2 f2@3 ~@3 c2@3 ~@3",
  Q: "f2 d2@6 ~@2 d2 ~@2 d2@4 ~@2 ab1@3 ~@3", R: "f2@6 ~@3 f2 ~@2 ab1@4 ~@2 c2@3 ~@3, d2 ~@23",
  S: "bb1@6 ~@3 bb1 ~@2 f1@3 ~@3 f1 bb1@3 ~@2", T: "[bb1,eb2] eb2@2 ~ eb2@3 ~@2 eb2 ~@2 eb2@4 ~@2 bb1@4 ~@2",
  U: "c2@6 ~@3 c2 ~@2 c2@4 ~@2 g1@3 ~@3, eb2 ~@23", V: "bb1@6 ~@3 bb1 ~@2 f1@3 ~@3 f1@2 ~@4, f2 ~@23",
  W: "g1@6 ~@3 g1 ~@2 bb0@4 ~@2 d1@4 ~@2", X: "gb2@6 ~@3 gb2 ~@2 c2@3 ~@3 eb2@3 ~@3, c2 ~@23",
  Y: "c2@6 ~@3 c2 ~@2 c2@4 ~@2 g1@2 ~@4, g1 ~@23", Z: "bb1 ~@2 bb1 ~@8", AA: "gb2@6 ~@3 gb2 ~@2 a1@4 ~@2 db2@4 ~@2",
  AB: "b1 ~@7", AC: "gb2@6 ~@3 gb2 ~@2 a1@4 ~@2 db2@3 ~@3, b1 ~@23", AD: "b1@6 ~@3 b1 ~@2 gb1@3 ~@3 gb1@3 ~@3",
  AE: "b1 e2@6 ~@2 e2 ~@2 ab1@4 ~@2 b1@3 ~@3", AF: "db2@6 ~@3 db2 ~@2 db2@4 ~@2 ab1@3 ~@3",
  AG: "gb2@6 ~@3 gb2 ~@2 a1@4 ~@2 db2@3 ~@3", AH: "b1@6 ~@3 b1 ~@2 gb1@3 ~@3 gb1@2 ~@4",
  AI: "ab1@6 ~@3 ab1 ~@2 b0@4 ~@2 eb1@4 ~@2", AJ: "db2@6 ~@3 db2 ~@2 db2@4 ~@2 db2@3 ~@3",
  AK: "gb2@6 ~@3 gb2 ~@2 a1@4 ~@2 db2@3 ~@3, db2 ~@23", AL: "gb2 g2@5 ~@3 g2 ~@2 db2@3 ~@3 db2 e2@2 ~@3",
  AM: "ab1@6 ~@3 ab1 ~@2 b0@4 ~@2 eb1@3 ~@3", AN: "db2@6 ~@3 db2 ~@2 db2@4 ~@2 ab1 db2@2 ~@3", AO: "b1 ~@2 b1 ~@8",
  AP: "gb2", AQ: "b1", AR: "[e2@5 ~@3]/2",
})).s("gm_electric_bass_finger").gain(0.33)

// chords · string ensemble 1 · "stgs-4"
const string_ensemble_1 = note(`<
  ~ A@2 B@2 A@2 B@2 C@2 D@4 E@2 F G@2 H@5 I@2 J@7 K@2 L M N@3 B@2 A@2 O@4 P ~ Q@2 R@6 S T@3 U@4 V@2 Q@2 W@12 X Y@2
>`.pickRestart({
  A: "[~@8 [bb4,d5]@7 ~, ~@23 ab4@21 ~@4]/2", B: "[eb5@21 ~@2 [bb4,d5]@22 ~@3, [f4,ab4]@15 ~]/2",
  C: "[~@23 [bb4,d5]@19 ~@6, [f4,ab4]@7 ~]/2", // Bb Fm
  D: "[[bb4,d5,eb5]@21 ~@3 [c5,e5]@21 ~@2 [ab4,eb5]@23 ~@2 [ab4,bb4,d5]@18 ~@6, g4@43 ~@4 f4@47 ~@2, ~@23 bb4@20 ~@2 c5@22 ~@29]/4", // Ebmaj7 C Ab5 Bb7
  E: "[db5 d5@18 ~@5 [c5,e5]@21 ~@3, g4@43 ~@5, [bb4,eb5]@23 bb4@19 ~@6]/2", F: "[f4,ab4,c5]@7 ~",
  G: "[[ab4,eb5]@12 [ab4,bb4]@9 ~@21 f4@5 ~, f4@23 ~ [g4,bb4]@23 ~, c5@10 ~@2 d5@35 ~]/2", // Ab5 Absus2 Gm
  H: "[[g4,e5]@10 ~@20 a4@5 ~ ab4@11 ~ d5@7 ~@5, [bb4,c5]@18 ~@5 c5@69 ~@28, ~@24 f4@85 ~@11, ~@24 ab4@33 ~@38 ab4@14 ~@11, ~@16 eb5@15 ~@9]/5", // C Bbsus2
  I: "[eb5@23 ~ [bb4,d5]@20 ~@4, [f4,ab4]@43 ~@5, c5@7 ~@9]/2", // Bb Fm
  J: "[~ d5 ~@8 d5@12 ~@2 [c5,e5]@19 ~@5 ab4@23 ~ bb4@21 ~@3 [f4,g4]@21 ~@2 [g4,bb4,e5]@20 ~@5 [f4,ab4]@20 ~@4, [g4,bb4]@41 ~@7 f4@46 ~ bb4@21 ~@2 c5@20 ~@5 c5@24 ~, eb5@2 ~@2 eb5@19 ~@24 eb5@22 ~@3 d5@46 ~@26 eb5@24]/7", // C Fsus2 Edim Fm Gm
  K: "[[gb4,a4]@19 ~@5 [f4,g4,bb4]@22 ~@2, c5@17 ~@6 d5@24 ~]/2", L: "[g4,c5,e5]@7 ~", M: "[f4,ab4,eb5], c5@5 ~",
  N: "[[bb4,d5]@2 ~@4 [bb4,d5]@2 ~@15 bb4@24 ~ d5@21 ~@3, ~@23 [g4,eb5]@46 ~@3, ~@47 ab4@21 ~@4, ~@48 bb4@19 ~@5]/3", // Bb Cm
  O: "[eb5@21 ~@2 [bb4,d5]@22 ~@3 ab4@20 ~@4 [bb4,d5]@21 ~@3, [f4,ab4]@45 ~@2 f4@21 ~@3 ab4@21 ~@4]/4", // Bb Fm
  P: "[gb4,a4], e5@7 ~", Q: "[~@23 [b4,eb5]@19 ~@6, [gb4,a4]@7 ~]/2",
  R: "[[b4,eb5,e5]@21 ~@3 [db5,f5]@21 ~@2 [a4,e5]@23 ~@2 b4@22 ~ [gb4,ab4,b4]@21 ~@3 [ab4,db5,f5]@20 ~@5, ab4@43 ~@4 gb4@47 ~@50, ~@23 b4@20 ~@2 db5@22 ~@4 eb5@47 ~@26, ~@71 a4@20 ~@53]/6", // Emaj7 Db A5 Abm7 Db
  S: "[gb4,a4,e5]@23 ~", // Gbm7
  T: "[a4 [g4,bb4]@21 ~@2 gb4@22 ~ [ab4,db5,f5]@21 ~@4, e5@11 ~@25, db5@19 ~@4 [ab4,b4]@22 ~@2 b4@19 ~@6]/3", // Gm Db Abm
  U: "[[a4,e5]@22 ~ [b4,eb5]@7 [b4,eb5]@2 ~@15 b4@24 ~ eb5@21 ~@3, gb4@43 ~@28 a4@21 ~@4, ~@23 a4@19 ~@5 [ab4,e5]@46 ~@3, ~@72 b4@19 ~@5]/4", // A5 B Dbm
  V: "[e5@21 ~@2 [b4,eb5]@22 ~@3, [gb4,a4]@15 ~]/2", // B Gbm
  W: "[[b4,eb5,e5]@21 ~@3 [db5,f5]@21 ~@2 [gb4,a4] a4@22 ~ [b4,eb5]@19 ~@6, ab4@43 ~@4 e5@23 ~@26, ~@23 b4@20 ~@2 db5@22 ~@29, ~@8 gb4@7 ~]/4", // Emaj7 Db Gbm B
  X: "[b4,eb5,e5]@7 ~, ab4", Y: "[[ab4,e5]@31 ~@17, e4@29 ~@19]/2",
})).s("gm_string_ensemble_1").gain(0.11)

// chords · string ensemble 1 · "stgs-4" · soft notes
const string_ensemble_1_soft = note(`<
  ~@2 A@2 ~ B A@2 ~ B ~@18 C@3 ~@2 D ~@2 E ~@3 A@2 ~ B A@2 ~ B F@2 ~ G ~@5 H@3 I@2 J@2 ~@2 F@2 ~ G ~@16
>`.pickRestart({
  A: "[~@23 c5@20 ~@5]/2", B: "c5@7 ~", C: "[~@23 c5@21 ~@3 ab4@20 ~@5]/3", D: "~@10 gb4 ~", E: "bb4@5 ~",
  F: "[~@23 db5@20 ~@5]/2", G: "db5@7 ~", H: "[~@23 b4@18 ~@6 db5@22 ~@3]/3", I: "[~@11 eb5@12 ~]/2",
  J: "[~@11 db5@11 ~@2]/2",
})).s("gm_string_ensemble_1").gain(0.05)

// chords · acoustic guitar steel · "steel-5"
const acoustic_guitar_steel = note(`<
  ~ A B A B C D C D C D E F C D E F G H I F G J C K C L M F C L N F O P N Q C R A B A B C D C D C D S ~ S T U V S W X Y
  S Z X Y S AA AB AC AB AC S T U V S T U V S T U V S T U ~@2
>`.pickRestart({
  A: "~ [eb4,ab4]@5 ~@18, c4 ~@3", B: "~ d4@5 ~@18, [f3,ab3] ~@3",
  C: "~@3 [c4,eb4,ab4]@5 ~@2 [c4,eb4,ab4] ~@5 [c4,eb4,ab4] ~@5 [c4,eb4,ab4] ~", // Ab
  D: "~@4 d4@5 ~ [f3,ab3,d4] ~@5 [f3,ab3,d4] ~@4 d4 [f3,ab3] ~, ~ [f3,ab3]@2 ~@5", // Ddim Fm
  E: "~@3 [bb3,d4,g4]@5 ~@2 [bb3,d4,g4] ~@5 [bb3,d4,g4] ~@5 [bb3,eb4,g4] ~", // Gm Eb
  F: "~@4 e4@5 ~ [g3,bb3,e4] ~@5 [g3,bb3,e4] ~@4 e4 [g3,bb3] ~, ~ [g3,bb3]@2 ~@5", // Edim Gm
  G: "~@3 [c4,f4,ab4]@5 ~@2 [c4,f4,ab4] ~@5 [c4,f4,ab4] ~@5 [c4,f4,ab4] ~", // Fm
  H: "~@4 ab4@5 ~ [c4,eb4,ab4] ~@5 [f3,ab3,d4] ~@4 d4 [f3,ab3] ~, ~ [c4,eb4]@2 ~@5", // Ab Ddim Fm Cm
  I: "~@3 [d3,g3,bb3]@5 ~@2 [d3,g3,bb3] ~@5 [d3,g3,bb3] ~@5 [d3,f3,bb3] ~", // Gm Bb
  J: "~@4 ab4@5 ~ [c4,eb4,ab4] ~@5 [c4,eb4,a4] ~@4 a4 [c4,eb4] ~, ~ [c4,eb4]@2 ~@5", // Ab Adim Cm
  K: "~@4 f4@5 ~ [ab3,d4,f4] ~@5 [ab3,d4,f4] ~@4 f4 [ab3,d4] ~, ~ [ab3,d4]@2 ~@5", // Ddim Abdim
  L: "~@4 d4@5 ~ [f3,ab3,d4] ~@5 [f3,ab3,d4] ~@4 d4 [f3,bb3] ~, ~ [f3,ab3]@2 ~@5", // Ddim Bb5 Fm
  M: "~@3 [bb3,d4,g4] ~@6 [bb3,eb4,g4] ~@5 [bb3,d4,g4] ~@5 [bb3,d4,g4] ~", // Gm Eb Gm
  N: "~@3 [d3,f3,bb3]@5 ~@2 [d3,f3,bb3] ~@5 [d3,f3,bb3] ~@5 [d3,f3,bb3] ~", // Bb
  O: "~@3 [c4,eb4,ab4]@5 ~@2 [c4,eb4,ab4] ~@5 [c4,eb4,ab4] ~@5 [gb3,c4,eb4] ~", // Ab Cdim
  P: "~@4 a4@5 ~ [c4,gb4,a4] ~@5 [c4,gb4,a4] ~@4 gb4 [a3,eb4] ~, ~ [c4,gb4]@2 ~@5", // Gbdim Adim Cdim
  Q: "~@4 e4@5 ~ [g3,bb3,e4] ~@5 [g3,bb3,e4] ~@4 e4 [g3,c4] ~, ~ [g3,bb3]@2 ~@5", R: "[f3,ab3,d4] ~@5 [f3,ab3,d4] ~@17",
  S: "~@3 [db4,e4,a4]@5 ~@2 [db4,e4,a4] ~@5 [db4,e4,a4] ~@5 [db4,e4,a4] ~", // A
  T: "~@4 eb4@5 ~ [gb3,a3,eb4] ~@5 [gb3,a3,eb4] ~@4 eb4 [gb3,a3] ~, ~ [gb3,a3]@2 ~@5", // Ebdim Gbm
  U: "~@3 [b3,eb4,ab4]@5 ~@2 [b3,eb4,ab4] ~@5 [b3,eb4,ab4] ~@5 [b3,e4,ab4] ~", // Abm E
  V: "~@4 f4@5 ~ [ab3,b3,f4] ~@5 [ab3,b3,f4] ~@4 f4 [ab3,b3] ~, ~ [ab3,b3]@2 ~@5", // Fdim Abm
  W: "~@4 eb4@5 ~ [gb3,a3,eb4] ~@5 [gb3,a3,eb4] ~@4 eb4 [gb3,b3] ~, ~ [gb3,a3]@2 ~@5", // Ebdim B5 Gbm
  X: "~@3 [eb3,gb3,b3]@5 ~@2 [eb3,gb3,b3] ~@5 [eb3,gb3,b3] ~@5 [eb3,gb3,b3] ~", // B
  Y: "~@4 f4@5 ~ [ab3,b3,f4] ~@5 [ab3,b3,f4] ~@4 f4 [ab3,db4] ~, ~ [ab3,b3]@2 ~@5", // Fdim Db5 Abm
  Z: "~@4 bb4@5 ~ [db4,g4,bb4] ~@5 [db4,g4,bb4] ~@4 g4 [bb3,e4] ~, ~ [db4,g4]@2 ~@5", // Gdim Bbdim Dbdim
  AA: "[gb3,a3,eb4] ~@5 [gb3,a3,eb4] ~@17", AB: "~ [e4,a4]@5 ~@18, db4 ~@3", AC: "~ eb4@5 ~@18, [gb3,a3] ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.24).pan(0.3)

// other · harmonica · "backing-6"
const harmonica = note(`<
  ~ A B C D E F G ~ H@2 I@2 J@2 K L M@2 N@2 O P Q R S@2 T@2 U@2 V W X Y Z@2 AA@2 A B C D AB AC AD AC E F AE@2 AF@2 AG@2
  AH@2 AI AJ AK AL AM@2 AN@2 AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB AY BC BD AX BE BF@2
>`.pickRestart({
  A: "c4@5 ~ d4@2 ~ eb4@2 ~ f4@5 ~ eb4@3 d4@3", B: "c4@7 g4@5 f4@12", C: "c4@5 ~ d4@2 eb4@3 ~ f4@6 eb4@3 d4@3",
  D: "c4@5 ~ g4@6 f4@12, ~@6 gb4 ~@17", E: "~@6 [ab4,c5] ~@2 [ab4,c5]@2 ~@7 [ab4,c5]@3 [f4,bb4]@3",
  F: "~@6 [f4,bb4]@2 ~ [f4,bb4]@6 ~@9", G: "~@6 [ab4,c5] ~@2 [ab4,c5]@4 ~@5 c5@3 [f4,bb4]@3, ~@17 ab4@3 ~@4",
  H: "[f3@12 c4@23 ~ bb3@5 ~ c4@5 ~]/2", I: "[d4@12 bb3@27 ~ ab3@3 ~ g3@3 ~]/2",
  J: "[f3@12 c4@22 ~@2 eb4@3 d4@2 ~ c4@2 ~ d4@3]/2", K: "d4 ~@23", L: "c4 ~@3",
  M: "[~@6 f4@4 ~ ab4@2 ~ c5@2 ~ ab4 ~@3 bb4@6 ~@21]/2", N: "[~@6 g4@4 ~ bb4@2 ~@2 d5 ~ bb4 ~@3 c5@8 ~@19]/2",
  O: "~@6 f4@5 ~ ab4@2 ~ c5@2 ~@7", P: "~@6 ab4@5 ~ c5@2 ~ eb5@2 ~@7", Q: "~@6 f4@4 ~ ab4@2 ~@2 c5@5 ab4@3 ~",
  R: "bb4@8 ~@3 g3 ab3@6 g3@6", S: "[f3@12 c4@27 bb3@4 ~ c4@3 ~]/2", T: "[d4@11 ~ bb3@26 ~@2 ab3@3 ~ g3@3 ~]/2",
  U: "[f3@12 c4@17 ab3@2 ~ bb3@2 ~ c4@2 ~ eb4@3 d4@3 ~ bb3@3]/2", V: "g3 d4", W: "c4@12 ab3@5 g3@7",
  X: "f3@12 eb4@6 c4@5 ~", Y: "eb4@12 d4@6 eb4@5 ~", Z: "[f4@12 d4@24 e4@5 c4@7]/2", AA: "[eb4@11 ~ c4@22 ~@14]/2",
  AB: "~@6 f4@5 ~ ab4@3 c5@5 ab4@3 ~", AC: "bb4@2 ~", AD: "~@6 f4@5 ~ ab4@3 c5@5 ~ ab4@3",
  AE: "[~@6 [a4,db5] ~@2 [a4,db5]@4 ~@5 db5@3 [gb4,b4]@8 ~@10 a4@5 ab4@4, ~@17 a4@3 ~@28]/2", // A B5
  AF: "[gb4@12 db5@23 ~ b4@5 ~ db5@5 ~]/2", AG: "[eb5@12 b4@27 ~ a4@3 ~ ab4@3 ~]/2",
  AH: "[gb4@11 db5@18 ~ a4@3 b4@3 db5@3 e5@2 eb5@3 b4@3 ~]/2", AI: "ab4 eb5", AJ: "db5@6 ~@6 a4@5 ab4@6 ~",
  AK: "gb4@2 e5 db5", AL: "e5@12 c5@5 ~ db5@5 ~", AM: "[eb5@2 b4@4 ab4 a4]/2", AN: "[db5@11 ~ db5@22 ~@14, eb5 ~@47]/2",
  AO: "db4@5 ~ eb4@2 ~ e4@2 ~ gb4@5 ~ e4@3 eb4@3", AP: "db4@7 ab4@5 gb4@12",
  AQ: "db4@5 ~ eb4@2 e4@3 ~ gb4@6 e4@3 eb4@3", AR: "db4@5 ~ ab4@6 gb4@12, ~@6 g4 ~@17",
  AS: "~@6 [a4,db5] ~@2 [a4,db5]@3 ~@6 [a4,db5]@3 [ab4,b4]@3", AT: "~@6 ab4@2 ~ [ab4,b4]@3 ~@12, ~@5 b4@2 ~@17",
  AU: "~@6 [b4,eb5] ~@2 [b4,eb5]@3 ~@6 [b4,eb5]@3 [a4,db5]@2 ~", AV: "~@6 [a4,db5] ~@2 [a4,db5]@3 ~@12",
  AW: "~@6 [a4,db5] ~@2 [a4,db5]@4 ~@4 [a4,db5]@3 ~ [ab4,b4]@3", AX: "~@6 [ab4,b4]@2 ~ [ab4,b4]@3 ~@12",
  AY: "~@5 [b4,eb5]@2 ~@2 [b4,eb5]@3 ~@6 [b4,eb5]@2 ~ [a4,db5]@2 ~", AZ: "~@6 [a4,db5]@2 ~ [a4,db5]@3 ~@12",
  BA: "~@2 [a4,db5]!2 ~@2 [a4,db5] [ab4,b4]", BB: "~@6 b4@2 ~ [ab4,b4]@3 ~@12, ~@5 ab4@2 ~@17",
  BC: "~@5 [a4,db5]@2 ~@2 [a4,db5]@3 ~@12", BD: "~@6 [a4,db5]@3 [a4,db5]@3 ~@7 [a4,db5]@2 ~ [ab4,b4]@2",
  BE: "~@6 [b4,e5]@3 [b4,e5]@3 ~@6 [b4,e5]@2 ~@4", BF: "[[b4,e5]@5 ~@3]/2",
})).s("gm_harmonica").gain(0.33)

// chords · rock organ · "theatre-7"
const rock_organ = note(`<
  ~ A B A B C@4 D@2 E@2 F@5 G H I J K@2 L M@2 N@2 O@2 P@2 Q R S@2 T U V B W B C@4 X@3 ~ Y@2 Z@6 AA AB AC AD AE@6 Y@2
  AF@2 AG@2 AF@2 AG@2 AF@2 AG@2 AH AI@2
>`.pickRestart({
  A: "[f4,ab4,c5,eb5]@7 ~", B: "[ab4,bb4,d5]@11 ~",
  C: "[[ab4,c5,eb5]@21 ~@4 d5@8 [f4,ab4,bb4,d5] ~@5 f4@3 ~ [ab4,d5]@2 ~@3 [c5,eb5]@20 ~@4 [bb4,d5]@22 ~@2, f4@31 ~@14 f4@50 ~, ~@24 [ab4,bb4]@9 ~@9 bb4@3 ~@2 ab4@46 ~@3]/4", // Ab Bb7 Abdim Cm Bb Absus2
  D: "[[c5,eb5]@21 ~@3 [bb4,d5]@19 ~@5, [f4,ab4]@43 ~@5]/2", // Cm Bb Fm
  E: "[~ [bb4,d5]@22 ~ bb4 ~@3 bb4@17 ~@2 ab4, eb5@22 ~@2 c5@23 ~, ~ g4@44 ~ f4@2, ~@25 e5@22 ~]/2", // Bb
  F: "[[ab4,c5,eb5]@23 ~@2 [bb4,d5]@21 ~@3 d5@22 ~ e5@23 ~ [f4,ab4]@23 ~, f4@22 ~@2 [bb4,eb5]@11 ~ c5@23 ~, ~@24 ab4@21 ~ g4@49 ~@25, ~@24 bb4@7 ~@9]/5", // Ab Bb Fm Eb5
  G: "[f4,ab4,c5,eb5]@3 ~ [f4,ab4,c5,eb5] ~@4 [f4,ab4,c5,eb5] ~@3 [bb4,d5]@11, ~@6 ab4@5 ~, ~@13 f4@9 ~@2", // Fm7 Bb
  H: "~@18 [f4,g4]@5 ~, g4@17 ~@7, ~ [bb4,d5]@23", I: "[g4,bb4,c5,e5]@23 ~", J: "[f4,ab4,c5]@17 ~ [f4,ab4,c5]@5 ~",
  K: "[[f4,ab4,c5,eb5]@11 ~ [f4,a4,c5]@11 ~ [f4,ab4,c5]@17 ~@2 [f4,ab4,c5,eb5]@5, ~@12 eb5@29 ~@7]/2", // Fm7 F Fm Fm7
  L: "[f4,ab4,bb4,d5]@7 ~@2 [f4,bb4,d5] ~@8 [f4,ab4,bb4,d5] ~@5", // Bb7 Bb Bb7
  M: "[~ f4@7 ~ [f4,ab4,c5,eb5] ~@8 [ab4,c5,eb5]@5 ~@2 d5@20 ~@3, [ab4,c5,eb5]@7 ~@11 f4@27 ~@3, ~@8 [ab4,bb4]@7 ~]/2", // Fm7 Ab Absus2
  N: "[~@9 d5@13 ~@2 eb5@2 e5@20 ~@2, ~ g4@46 ~, ~ [bb4,eb5]@23 c5@23 ~, ~@4 bb4@3 ~]/2", // Eb5
  O: "[[f4,ab4,c5,eb5]@7 ~@3 [f4,ab4,c5,eb5] ~@7 [ab4,c5,eb5]@5 ~@2 d5@18 ~@5, ~@18 f4@23 ~@7, ~@4 [ab4,bb4]@3 ~]/2", // Fm7 Ab Absus2
  P: "[[g4,bb4,d5]@11 ~ e5@11 ~, ~@23 [g4,c5]@23 ~@2, ~@23 bb4@21 ~@4]/2", Q: "[f4,c5,eb5], ab4@11 ~",
  R: "~ [gb4,a4,c5,eb5]@20 ~@3", S: "[[f4,g4,bb4,d5]@23 ~ [c5,e5]@23 ~, ~@23 g4@23 ~@2, ~@8 bb4@7 ~]/2",
  T: "~ eb5@22 ~, [f4,ab4], c5@11 ~", U: "[ab4,bb4,db5] ~@2 [ab4,bb4,db5] ~@8", V: "[f4,ab4,c5,eb5]@11 ~",
  W: "[ab4,c5,eb5]@5 ~, f4@11 ~", // Ab
  X: "[[ab4,c5,eb5]@21 ~@4 d5@8 [f4,ab4,bb4,d5] ~@5 f4@3 ~ [ab4,d5]@2 ~@3 [db5,e5]@20 ~@4, f4@31 ~@14 gb4@27, ~@24 [ab4,bb4]@9 ~@9 bb4@3 ~@2 a4@25]/3", // Ab Bb7 Abdim Dbm Absus2
  Y: "[[db5,e5]@21 ~@3 [b4,eb5]@19 ~@5, [gb4,a4]@43 ~@5]/2", // Dbm B Gbm
  Z: "[~ [b4,eb5]@22 ~ b4 ~@3 b4@17 ~@3 [db5,e5]@22 ~@3 eb5@22 ~ [b4,eb5]@22 ~@2 db5@24, e5@22 ~@2 db5@23 a4@23 ~@2 [a4,b4]@22 ~ ab4@47 ~@2, ~ ab4@44 ~ gb4@46 ~@3 gb4@22 ~@2 b4@21 ~@4, ~@25 f5@22 ~@73 f5@22 ~@2]/6", // B Dbm B Asus2
  AA: "~ [db5,e5]@8 ~ [gb4,a4,db5,e5] ~@8 gb4@5, [gb4,a4]@8 ~@10 [a4,db5,e5]@5 ~", AB: "~ [g4,bb4,db5]@21 ~@2, e5@5 ~",
  AC: "[gb4,ab4,b4,eb5]@23 ~", AD: "[ab4,b4,db5,f5]@23 ~",
  AE: "[[a4,db5,e5]@22 ~ a4 [a4,b4,d5]@2 ~@4 [a4,b4,d5]@2 ~@16 [a4,db5]@21 ~@4 eb5@8 [gb4,a4,b4,eb5] ~@5 gb4@3 ~ [a4,eb5]@2 ~@3 [db5,e5]@20 ~@4 [b4,eb5]@22 ~@2, gb4@45 ~@2 b4@20 ~@23 b4@3 ~@51, ~@47 ab4@16 ~@9 [a4,b4]@9 ~@14 a4@46 ~@3, ~@48 gb4@31 ~@14 gb4@50 ~, ~@24 e5@7 ~@41]/6", // A Bm7 A B7 Adim Dbm B Asus2
  AF: "[~ [b4,eb5]@22 ~ b4 ~@3 b4@17 ~@2 a4, e5@22 ~@2 db5@23 ~, ~ ab4@44 ~ gb4@2, ~@25 f5@22 ~]/2", // B
  AG: "[[db5,e5]@21 ~@3 [b4,eb5]@19 ~@5, gb4@7 ~, a4 ~@47]/2", AH: "[ab4,b4,eb5,e5]@11 ~",
  AI: "[[e4,ab4,b4]@31 ~@17]/2", // E
})).s("gm_rock_organ").gain(0.16).pan(0.7)

// chords · electric guitar clean · "guit-11"
const electric_guitar_clean = note(`<
  ~ A@4 B C D E D E F G D E F H I E J K I L I E D E F H I M N K O P J K D Q A@4 B C D E B C R ~ R S T U V S W U X Y Z X
  R AA AB@4 R AC AD AE R AC AD AE R AC AD AE R AC AD ~@2
>`.pickRestart({
  A: "[~@2 eb5@15 ~@8 d5@8 ~@16 eb5@11 ~@12 [bb4,d5]@14 ~@10, f4@17 ~@6 f4@10 ~@14 f4@12 ~@11 f4@14 ~@12, ~ [ab4,c5]@16 ~@7 [ab4,bb4]@9 ~@15 [ab4,c5]@11 ~@12 ab4@14 ~@11]/4", // Bb Ab Absus2 Ab
  B: "~@3 [f4,ab4,c5,eb5] ~@5 [f4,ab4,c5,eb5] ~@2", C: "~@3 [f4,ab4,bb4,d5] ~@5 [f4,ab4,bb4,d5] ~@2",
  D: "~@2 [f4,ab4,c5,eb5] ~@3 [f4,ab4,c5,eb5] ~", E: "~@2 [f4,ab4,bb4,d5] ~@3 [f4,ab4,bb4,d5] ~",
  F: "~@2 [g4,bb4,d5,eb5] ~@3 [g4,bb4,d5,eb5] ~", G: "~@2 [g4,bb4,db5,eb5] ~@3 [g4,bb4,db5,eb5] ~",
  H: "~@3 [g4,bb4,c5,e5]@2 ~@4 [g4,bb4,c5,e5]@2 ~", I: "~@3 [f4,ab4,c5,eb5]@2 ~@4 [f4,ab4,c5,eb5]@2 ~",
  J: "~@2 [f4,g4,bb4,d5] ~@3 [f4,g4,bb4,d5] ~", K: "~@2 [g4,bb4,c5,e5] ~@3 [g4,bb4,c5,e5] ~",
  L: "~@3 [f4,ab4,c5,eb5] ~@5 [f4,a4,c5,eb5] ~@2", M: "~@3 [f4,ab4,bb4,d5]@2 ~@4 [f4,ab4,bb4,d5]@2 ~",
  N: "~@6 [f4,g4,bb4,d5]@5 ~@7 [f4,g4,bb4,d5]@5 ~", O: "~@2 [ab4,eb5] ~@3 [ab4,eb5] ~, ~@5 [f4,c5]@4 ~@8 [f4,c5]@4 ~@3",
  P: "~@2 [gb4,a4,c5,eb5] ~@3 [gb4,a4,c5,eb5] ~", Q: "[f4,ab4,bb4,d5] ~@2 [f4,ab4,bb4,d5] ~@8",
  R: "~@2 [gb4,a4,db5,e5] ~@3 [gb4,a4,db5,e5] ~", S: "~@3 [gb4,a4,b4,eb5]@2 ~@4 [gb4,a4,b4,eb5]@2 ~",
  T: "~@3 [ab4,b4,eb5,e5]@2 ~@4 [ab4,b4,eb5,e5]@2 ~", U: "~@2 [ab4,b4,db5,f5] ~@3 [ab4,b4,db5,f5] ~",
  V: "~@6 [gb4,a4,db5,e5]@5 ~@7 [gb4,a4,db5,e5]@5 ~", W: "~@3 [gb4,ab4,b4,eb5]@2 ~@4 [gb4,ab4,b4,eb5]@2 ~",
  X: "~@3 [gb4,a4,db5,e5]@2 ~@4 [gb4,a4,db5,e5]@2 ~", Y: "~@3 [g4,bb4,db5,e5]@2 ~@4 [g4,bb4,db5,e5]@2 ~",
  Z: "~@2 [gb4,ab4,b4,eb5] ~@3 [gb4,ab4,b4,eb5] ~", AA: "[gb4,a4,b4,eb5] ~@2 [gb4,a4,b4,eb5] ~@8",
  AB: "[~@2 e5@15 ~@8 eb5@8 ~@16 e5@11 ~@12 [b4,eb5]@14 ~@10, gb4@17 ~@6 gb4@10 ~@14 gb4@12 ~@11 gb4@14 ~@12, ~ [a4,db5]@16 ~@7 [a4,b4]@9 ~@15 [a4,db5]@11 ~@12 a4@14 ~@11]/4", // B A Asus2 A
  AC: "~@2 [gb4,a4,b4,eb5] ~@3 [gb4,a4,b4,eb5] ~", AD: "~@2 [ab4,b4,eb5,e5] ~@3 [ab4,b4,eb5,e5] ~",
  AE: "~@2 [ab4,b4,d5,e5] ~@3 [ab4,b4,d5,e5] ~", // E7
})).s("gm_electric_guitar_clean").gain(0.17).pan(0.6)

// other · brass section · "brass-12"
const brass_section = note("<~@6 A B A B ~@28 C ~@5 A B A B A D ~@14 E ~@4 D ~@3 D ~@3 D ~@3 D ~@2 F@2>".pickRestart({
  A: "~@12 c5@3 bb4 ~@2 c5@3 bb4@2 ~", B: "f4@17 ~@7", C: "[f4,ab4,c5,eb5] ~ [f4,ab4,c5,eb5] ~@5", D: "gb4@17 ~@7",
  E: "[gb4,a4,db5,e5] ~ [gb4,a4,db5,e5] ~@5", F: "[e5@29 ~@19]/2",
})).s("gm_brass_section").gain(0.35).pan(0.4)

// drums · kick
const kick = s("bd").struct("<A B@4 C@33 D B@4 C@7 B C@13 D B@4 C@15 E ~>".pickRestart({
  A: "~@7 x", B: "x ~@6 x", C: "x ~@2 x ~@2 x ~", D: "x ~ x ~@4 x", E: "x",
})).gain(0.29)

// drums · kick · soft notes
// … 94 more lines