Strudelify
See You In September cover art

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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "fbass-2"
const bass = note(`<
  ~ A B A B C D C E F D G H C I J H C K L M N O C P Q R S T C U V H C W V X N Y A B A B C D C E C D Z AA AB AC AD AE Z
  AF AG AH AI AJ AG AK AI AL AM AN AM AN AB AC AD AE AB AC AD AE AB AC AD AE AB AC AD AO@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: "bb1@6 ~@3 bb1 ~@2 bb1@4 ~@2 f1@3 ~@3", F: "f2@6 ~@3 f2 ~@2 ab1@4 ~@2 c2@3 ~@3, bb1 ~@23",
  G: "bb1 eb2@6 ~@2 eb2 ~@2 g1@4 ~@2 bb1@3 ~@3", H: "c2@6 ~@3 c2 ~@2 c2@4 ~@2 g1@3 ~@3",
  I: "bb1@6 ~@3 bb1 ~@2 f1@3 ~@3 f1@3 ~@3, f2 ~@23", J: "bb1 eb2@5 ~@3 eb2 ~@2 g1@4 ~@2 bb1@2 eb2@2 ~@2",
  K: "f2@6 ~@3 f2 ~@2 bb1@3 ~@3 f1@3 ~@3, ~@12 c2 ~@11", L: "g1@6 ~@3 g1 ~@2 bb0@4 ~@2 g1@4 ~@2, bb1 ~@23",
  M: "c2@6 ~@3 c2 ~@2 c2@4 ~@2 g1@3 ~@3, g1 ~@23", N: "f2@6 ~@3 f2 ~@2 ab1@4 ~@2 c2@3 ~@3, c2 ~@23",
  O: "f2@6 ~@3 f2 ~@2 f2@3 ~@3 c2@3 ~@3", P: "f2 d2@6 ~@2 d2 ~@2 d2@4 ~@2 ab1@3 ~@3",
  Q: "f2@6 ~@3 f2 ~@2 ab1@4 ~@2 c2@3 ~@3, d2 ~@23", R: "bb1@6 ~@3 bb1 ~@2 f1@3 ~@3 f1 bb1@3 ~@2",
  S: "[bb1,eb2] eb2@2 ~ eb2@3 ~@2 eb2 ~@2 eb2@4 ~@2 bb1@4 ~@2", T: "c2@6 ~@3 c2 ~@2 c2@4 ~@2 g1@3 ~@3, eb2 ~@23",
  U: "bb1@6 ~@3 bb1 ~@2 f1@3 ~@3 f1@2 ~@4, f2 ~@23", V: "g1@6 ~@3 g1 ~@2 bb0@4 ~@2 d1@4 ~@2",
  W: "gb2@6 ~@3 gb2 ~@2 c2@3 ~@3 eb2@3 ~@3, c2 ~@23", X: "c2@6 ~@3 c2 ~@2 c2@4 ~@2 g1@2 ~@4, g1 ~@23",
  Y: "bb1 ~@2 bb1 ~@8", Z: "gb2@6 ~@3 gb2 ~@2 a1@4 ~@2 db2@4 ~@2", AA: "b1 ~@7",
  AB: "gb2@6 ~@3 gb2 ~@2 a1@4 ~@2 db2@3 ~@3, b1 ~@23", AC: "b1@6 ~@3 b1 ~@2 gb1@3 ~@3 gb1@3 ~@3",
  AD: "b1 e2@6 ~@2 e2 ~@2 ab1@4 ~@2 b1@3 ~@3", AE: "db2@6 ~@3 db2 ~@2 db2@4 ~@2 ab1@3 ~@3",
  AF: "b1@6 ~@3 b1 ~@2 gb1@3 ~@3 gb1@2 ~@4", AG: "ab1@6 ~@3 ab1 ~@2 b0@4 ~@2 eb1@4 ~@2",
  AH: "db2@6 ~@3 db2 ~@2 db2@4 ~@2 db2@3 ~@3", AI: "gb2@6 ~@3 gb2 ~@2 a1@4 ~@2 db2@3 ~@3, db2 ~@23",
  AJ: "gb2 g2@5 ~@3 g2 ~@2 db2@3 ~@3 db2 e2@2 ~@3", AK: "db2@6 ~@3 db2 ~@2 db2@4 ~@2 ab1 db2@2 ~@3",
  AL: "b1 ~@2 b1 ~@8", AM: "gb2", AN: "b1", AO: "[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]@21 ~@3, [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 ~ [bb4,d5]@21 ~@3, ~@23 [g4,eb5]@46 ~@3, ~@47 ab4@21 ~@4]/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@20 ~@4 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 A C D E F ~ G@2 H@2 I@2 J K L@2 M@2 N O P Q R@2 H@2 S@2 T U V W X@2 Y@2 A B A C Z AA AB AA D E AC@2 AD@2 AE@2
  AF@2 AG AH AI AJ AK@2 AL@2 AM AN AM AO AP AQ AR AS AP AT AR AS AU AT AR AV AW AT AX AY@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 ~ g4@6 f4@12, ~@6 gb4 ~@17",
  D: "~@6 [ab4,c5] ~@2 [ab4,c5]@2 ~@7 [ab4,c5]@3 [f4,bb4]@3", E: "~@6 [f4,bb4]@2 ~ [f4,bb4]@6 ~@9",
  F: "~@6 [ab4,c5] ~@2 [ab4,c5]@4 ~@5 c5@3 [f4,bb4]@3, ~@17 ab4@3 ~@4", G: "[f3@12 c4@23 ~ bb3@5 ~ c4@5 ~]/2",
  H: "[d4@12 bb3@27 ~ ab3@3 ~ g3@3 ~]/2", I: "[f3@12 c4@23 ~ eb4@3 d4@2 ~ c4@2 ~ d4@3]/2", J: "d4 ~@23", K: "c4 ~@3",
  L: "[~@6 f4@4 ~ ab4@2 ~ c5@2 ~ ab4 ~@3 bb4@6 ~@21]/2", M: "[~@6 g4@4 ~ bb4@2 ~@2 d5 ~ bb4 ~@3 c5@8 ~@19]/2",
  N: "~@6 f4@5 ~ ab4@2 ~ c5@2 ~@7", O: "~@6 ab4@5 ~ c5@2 ~ eb5@2 ~@7", P: "~@6 f4@4 ~ ab4@2 ~@2 c5@5 ab4@3 ~",
  Q: "bb4@8 ~@3 g3 ab3@6 g3@6", R: "[f3@12 c4@27 bb3@4 ~ c4@3 ~]/2",
  S: "[f3@12 c4@17 ab3@2 ~ bb3@2 ~ c4@2 ~ eb4@3 d4@3 ~ bb3@3]/2", T: "g3 d4", U: "c4@12 ab3@5 g3@7",
  V: "f3@12 eb4@6 c4@5 ~", W: "eb4@12 d4@6 eb4@5 ~", X: "[f4@12 d4@24 e4@5 c4@7]/2", Y: "[eb4@11 ~ c4@22 ~@14]/2",
  Z: "~@6 f4@5 ~ ab4@3 c5@5 ab4@3 ~", AA: "bb4@2 ~", AB: "~@6 f4@5 ~ ab4@3 c5@5 ~ ab4@3",
  AC: "[~@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
  AD: "[gb4@12 db5@23 ~ b4@5 ~ db5@5 ~]/2", AE: "[eb5@12 b4@27 ~ a4@3 ~ ab4@3 ~]/2",
  AF: "[gb4@11 db5@18 ~ a4@3 b4@3 db5@3 e5@2 eb5@3 b4@3 ~]/2", AG: "ab4 eb5", AH: "db5@6 ~@6 a4@5 ab4@6 ~",
  AI: "gb4@2 e5 db5", AJ: "e5@12 c5@5 ~ db5@5 ~", AK: "[eb5@2 b4@4 ab4 a4]/2", AL: "[db5@11 ~ db5@22 ~@14, eb5 ~@47]/2",
  AM: "db4@5 ~ eb4@2 ~ e4@2 ~ gb4@5 ~ e4@3 eb4@3", AN: "db4@7 ab4@5 gb4@12", AO: "db4@5 ~ ab4@6 gb4@12, ~@6 g4 ~@17",
  AP: "~@6 [a4,db5] ~@2 [a4,db5]@3 ~@6 [a4,db5]@3 [ab4,b4]@3", AQ: "~@6 ab4@2 ~ [ab4,b4]@3 ~@12, ~@5 b4@2 ~@17",
  AR: "~@5 [b4,eb5]@2 ~@2 [b4,eb5]@3 ~@6 [b4,eb5]@2 ~ [a4,db5]@2 ~", AS: "~@6 [a4,db5] ~@2 [a4,db5]@3 ~@12",
  AT: "~@6 [ab4,b4]@2 ~ [ab4,b4]@3 ~@12", AU: "~@2 [a4,db5]!2 ~@2 [a4,db5] [ab4,b4]",
  AV: "~@5 [a4,db5]@2 ~@2 [a4,db5]@3 ~@12", AW: "~@6 [a4,db5]@3 [a4,db5]@3 ~@7 [a4,db5]@2 ~ [ab4,b4]@2",
  AX: "~@6 [b4,e5]@3 [b4,e5]@3 ~@6 [b4,e5]@2 ~@4", AY: "[[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 A B A B C@4 V@3 ~ W@2 X@6 Y Z AA AB AC@6 W@2 AD@2
  AE@2 AD@2 AE@2 AD@2 AE@2 AF AG@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: "[[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
  W: "[[db5,e5]@21 ~@3 [b4,eb5]@19 ~@5, [gb4,a4]@43 ~@5]/2", // Dbm B Gbm
  X: "[~ [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
  Y: "~ [db5,e5]@8 ~ [gb4,a4,db5,e5] ~@8 gb4@5, [gb4,a4]@8 ~@10 [a4,db5,e5]@5 ~", Z: "~ [g4,bb4,db5]@21 ~@2, e5@5 ~",
  AA: "[gb4,ab4,b4,eb5]@23 ~", AB: "[ab4,b4,db5,f5]@23 ~",
  AC: "[[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
  AD: "[~ [b4,eb5]@22 ~ b4 ~@3 b4@17 ~@2 a4, e5@22 ~@2 db5@23 ~, ~ ab4@44 ~ gb4@2, ~@25 f5@22 ~]/2", // B
  AE: "[[db5,e5]@21 ~@3 [b4,eb5]@19 ~@5, gb4@7 ~, a4 ~@47]/2", AF: "[ab4,b4,eb5,e5]@11 ~",
  AG: "[[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 D E I H D J D E D E F K L E M H D N I H D O A@4 B C D E B C P ~ P Q R S T Q U S P V U T
  P W X@4 P Q R Y P Q R Y P Q R Y P Q R ~@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: "~@2 [g4,bb4,c5,e5] ~@3 [g4,bb4,c5,e5] ~", I: "~@2 [f4,g4,bb4,d5] ~@3 [f4,g4,bb4,d5] ~",
  J: "~@3 [f4,ab4,c5,eb5] ~@5 [f4,a4,c5,eb5] ~@2", K: "~@3 [g4,bb4,c5,e5]@2 ~@4 [g4,bb4,c5,e5]@2 ~",
  L: "~@3 [f4,ab4,c5,eb5]@2 ~@4 [f4,ab4,c5,eb5]@2 ~", M: "~@6 [f4,g4,bb4,d5]@5 ~@7 [f4,g4,bb4,d5]@5 ~",
  N: "~@2 [gb4,a4,c5,eb5] ~@3 [gb4,a4,c5,eb5] ~", O: "[f4,ab4,bb4,d5] ~@2 [f4,ab4,bb4,d5] ~@8",
  P: "~@2 [gb4,a4,db5,e5] ~@3 [gb4,a4,db5,e5] ~", Q: "~@2 [gb4,a4,b4,eb5] ~@3 [gb4,a4,b4,eb5] ~",
  R: "~@2 [ab4,b4,eb5,e5] ~@3 [ab4,b4,eb5,e5] ~", S: "~@2 [ab4,b4,db5,f5] ~@3 [ab4,b4,db5,f5] ~",
  T: "~@3 [gb4,a4,db5,e5]@2 ~@4 [gb4,a4,db5,e5]@2 ~", U: "~@3 [gb4,ab4,b4,eb5]@2 ~@4 [gb4,ab4,b4,eb5]@2 ~",
  V: "~@3 [g4,bb4,db5,e5]@2 ~@4 [g4,bb4,db5,e5]@2 ~", W: "[gb4,a4,b4,eb5] ~@2 [gb4,a4,b4,eb5] ~@8",
  X: "[~@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
  Y: "~@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
const kick_soft = s("bd").struct(`<
  ~@8 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@9 A ~@7 A ~@3 A ~@3 A ~@9 A ~@3 A ~@3 A ~@5
>`.pickRestart({
  A: "~@5 x ~@2",
})).gain(0.11)

// drums · snare
const snare = s("sd").struct("<~ A@4 B@33 C A@4 B@7 ~ B@13 C B@19 ~@2>".pickRestart({
  A: "~@5 x ~ x", B: "~@2 x ~@2 x ~ x", C: "x!2 ~@2",
// … 82 more lines