Strudelify

I Got the Feelin

James Brown

KeyF majorTempo125 bpm
0:00/0:00
// I Got the Feelin — Brown James
// 125 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (1/8 at bar 1, 4/4 at bar 1, 9/8 at bar 26, 3/4 at bar 27, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 111 bars on a 32-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 · piano · "ACOU BASS"
const bass = note("<~ [~ e1@2 f1 ~@12] ~@109>").s("gm_piano").gain(0.51)

// bass · slap bass 2 · "ACOU BASS"
const bass_2 = note(`<
  ~ A@8 B@8 C@3 D E F E F G H@2 ~@2 I J K J K J K J K J K J K J K L@3 M@2 N@10 O@4 P Q R@2 S T U@2 ~@2 V W X W X W X W X
  W X W X W X W X W X W Y Z@2 AA AB@2 AC@2 AD@2 AE ~@3 AF AG AH
>`.pickRestart({
  A: "[~@22 f2@4 f2@4 e2@4 f2@3 ~@9 f2@4 f2@4 f2@4 f2@4 f2@4 e1@4 f1@2 ~@14 f2@4 f2@4 e2@4 f2@3 ~@9 f2@4 f2@4 f2@4 f2@4 f2@4 e1@4 f1@2 ~@14 f2@4 f2@4 e2@4 f2@3 ~@9 f2@4 f2@4 f2@4 f2@4 f2@4 e1@4 f1@2 ~@14 f2@4 f2@4 e2@4 f2@3 ~@9 f2@4 f2@4 f2@4 f2@4 f2@2]/8",
  B: "[~@2 e1@4 f1@2 ~@14 f2@4 f2@4 e2@4 f2@3 ~@9 f2@4 f2@4 f2@4 f2@4 f2@4 e1@4 f1@2 ~@14 f2@4 f2@4 e2@4 f2@3 ~@9 f2@4 f2@4 f2@4 f2@4 f2@4 e1@4 f1@2 ~@14 f2@4 f2@4 e2@4 f2@3 ~@9 f2@4 f2@4 f2@4 f2@4 f2@4 e1@4 f1@2 ~@14 f2@4 f2@4 e2@4 f2@3 ~@9 f2@4 f2@4 f2@4 f2@4 f2@2]/8",
  C: "~@2 a1@4 bb1@7 ~@19", D: "~@25 f2@4 c2@3", E: "~ e1@4 f1@2 ~@14 f2@4 f2@4 e2@3",
  F: "~ f2@3 ~@9 f2@4 f2@4 f2@4 f2@4 f2@3", G: "~@5 f1@2 ~@2 bb1@2 ~@6 b1@2 ~@5 c2@2 ~@6", H: "[~@9 c2@30 ~@25]/2",
  I: "~@6 e2 f2", J: "e1@2 f1 ~@7 f2@2 f2@2 e2@2", K: "f2@3 ~@9 f2@4 f2@4 f2@4 f2@4 f2@4", L: "a1@4 bb1@7 ~@21",
  M: "[~@23 f2@4 c2@4 e1@3 f1@2 ~@14 f2@4 f2@4 e2@4 f2@2]/2",
  N: "[~@5 f2@2 f2@2 f2@2 f2@2 f2@2 e1@2 f1 ~@7 f2@2 f2@2 e2@2 f2]/2",
  O: "[~@10 f2@4 f2@4 f2@4 f2@4 f2@4 a1@5 bb1@7 ~@20 a1@5 bb1@7 ~@20 a1@5 bb1@7 ~@22]/4", P: "~@22 f2@4 c2@3 e1@3",
  Q: "~ f1@2 ~@14 f2@4 f2@4 e2@4 f2@3", R: "[~@9 f2@4 f2@4 f2@4 f2@4 f2@4 e1@4 f1@2 ~@14 f2@4 f2@4 e2@4 f2@3]/2",
  S: "~@9 f2@4 f2@4 f2@4 f2@4 f2@4 ~@3", T: "~ f1@2 ~@2 bb1@2 ~@6 b1@2 ~@6 c2@2 ~@9", U: "[~@5 c2@30 ~@29]/2",
  V: "~@5 e2 f2 e1", W: "f1@2 ~@14 f2@4 f2@4 e2@4 f2@3 ~", X: "~@2 f2!5 e1", Y: "~@2 f2!5 a1", Z: "bb1@7 ~@21 a1@4",
  AA: "bb1@7 ~@25", AB: "[~@19 f2@4 c2@4 e1@4 f1@2 ~@14 f2@4 f2@4 e2@4 f2@3 ~@2]/2",
  AC: "[~@7 f2@4 f2@4 f2@4 f2@4 f2@4 e1@4 f1@2 ~@14 f2@4 f2@4 e2@4 f2@3 ~@2]/2",
  AD: "[~@7 f2@4 f2@4 f2@4 f2@4 f2@4 ~@4 f1@2 ~@2 bb1@2 ~@5 b1@2 ~@6 c2@2 ~@12]/2", AE: "~@2 c2@29 ~",
  AF: "~@17 e2@4 f2@4 ~@4 f1@2 ~, ~@26 e1@5 ~", AG: "~@14 f2@4 f2@4 e2@4 f2@3 ~@3", AH: "~@2 b1 ~@2 c2 ~@4 f1@3 ~@19",
})).s("gm_slap_bass_2").gain(0.51)

// other · trumpet
const trumpet = note(`<
  ~ A B@2 C@2 B@2 C@2 B@2 C@2 B@2 D@2 E@2 F G H@2 I J K ~@3 L M N O N M N O N M N O N O N P Q@2 R@2 S@2 T@2 S@2 T@2 S@2
  U@2 V@2 W X Y X Z AA AB ~@3 AC AD AE AF AE AD AE AD AE AD AE AD AE AD AE AF AE AD AE AF AE AG@3 AH@2 AI@2 AJ AK AL ~@3
  AM AN AO
>`.pickRestart({
  A: "~@6 f4@2 ~@11 f5@2 ~@5 eb5@2 ~@4", B: "[~@14 ab4@4 g4@4 f4@2 ~@6 f4@4 eb4@4 f4@2 ~@11 f5@2 ~@6 eb5 ~@4]/2",
  C: "[~@14 ab4@4 g4@4 f4@2 ~@6 f4@4 eb4@4 f4@2 ~@11 f5@2 ~@5 eb5@2 ~@4]/2",
  D: "[~@14 ab4@4 g4@4 f4@2 ~@6 f4@4 eb4@5 ~@11 ab5@5 ~@9]/2", E: "~@18 ab5@5 ~@9", F: "~@29 f4@3",
  G: "~ eb4@4 f4@2 ~@10 f5@2 ~@6 eb5 ~@6", H: "[~@13 ab4@4 g4@4 f4@2 ~@6 f4@4 eb4@4 f4@2 ~@10 f5@2 ~@6 eb5 ~@6]/2",
  I: "~@13 ab4@4 g4@4 f4@2 ~@9", J: "~@9 c6@2 ~@6 b5@2 ~@6 c6@2 ~@5", K: "~ eb6@3", L: "~@7 f4",
  M: "eb4@2 f4 ~@5 f5 ~@3 eb5 ~@3", N: "~@6 ab4@2 g4@2 f4 ~@3 f4@2", O: "eb4@4 f4@2 ~@10 f5@2 ~@6 eb5 ~@7",
  P: "eb4@5 ~@11 ab5@5 ~@11", Q: "~@16 ab5@5 ~@11", R: "[~@27 f4@4 eb4@3 f4@2 ~@11 f5@2 ~@6 eb5 ~@8]/2",
  S: "[~@10 ab4@4 g4@4 f4@2 ~@6 f4@4 eb4@4 f4@2 ~@11 f5@2 ~@6 eb5 ~@8]/2",
  T: "[~@10 ab4@4 g4@4 f4@2 ~@6 f4@4 eb4@4 f4@2 ~@11 f5@2 ~@5 eb5@2 ~@8]/2",
  U: "[~@10 ab4@4 g4@4 f4@2 ~@6 f4@4 eb4@5 ~@11 ab5@5 ~@13]/2", V: "~@14 ab5@5 ~@13", W: "~@26 f4@3 eb4@3",
  X: "~ f4@2 ~@10 f5@2 ~@6 eb5 ~@10", Y: "~@9 ab4@4 g4@4 f4@2 ~@6 f4@4 eb4@3", Z: "~@9 ab4@4 g4@4 f4@2 ~@13",
  AA: "~@5 c6@2 ~@6 b5@2 ~@6 c6@2 ~@9", AB: "~@5 eb6@26 ~", AC: "~@6 f4 eb4", AD: "f4 ~@5 f5 ~@3 eb5 ~@5",
  AE: "~@4 ab4@2 g4@2 f4 ~@3 f4@2 eb4@2", AF: "f4@2 ~@10 f5@2 ~@6 eb5 ~@11", AG: "~@12 ab5@5 ~@15",
  AH: "[~@23 f4@4 eb4@4 f4@2 ~@10 f5@2 ~@6 eb5 ~@12]/2",
  AI: "[~@7 ab4@4 g4@4 f4@2 ~@6 f4@4 eb4@4 f4@2 ~@10 f5@2 ~@6 eb5 ~@12]/2", AJ: "~@7 ab4@4 g4@4 f4@2 ~@15",
  AK: "~@3 c6@2 ~@6 b5@2 ~@6 c6@2 ~@11", AL: "~ eb6@13 ~@2", AM: "~@21 f4@5 eb4@4 f4@2", AN: "~@10 f5@2 ~@6 eb5 ~@13",
  AO: "~@5 f5 ~@10",
})).s("gm_trumpet").gain(0.28)

// other · alto sax · "ALTO SAXES"
const alto_sax = note(`<
  ~ A B@14 C@2 D@2 E F G@2 H I J ~@3 K L M L N L N L N L N L N L N O P@2 Q@2 R@10 S@2 T@2 U V W V X Y Z ~@3 AA AB AC AB
  AC AB AC AB AC AB AC AB AC AB AC AB AC AB AC AB AC AD@3 AE@2 AF@2 AG AH AI ~@3 AJ AK AL
>`.pickRestart({
  A: "~@6 f3@2 ~@10 g4 ~@7 ab4 ~@5", B: "[~@14 ab4@4 g4@4 f4@2 ~@6 f3@4 eb3@4 f3@2 ~@10 g4 ~@7 ab4 ~@5]/2",
  C: "[~@14 ab4@4 g4@4 f4@2 ~@6 f3@4 eb3@4 ~@12 [bb4,eb5]@5 ~@9]/2", D: "~@18 [bb4,eb5]@5 ~@9", E: "~@29 f3@3",
  F: "~ eb3@4 f3@2 ~@10 g4 ~@7 ab4 ~@6", G: "[~@13 ab4@4 g4@4 f4@2 ~@6 f3@4 eb3@4 f3@2 ~@10 g4 ~@7 ab4 ~@6]/2",
  H: "~@13 ab4@4 g4@4 f4@2 ~@9", I: "~@9 [ab4,f5]@3 ~@5 [ab4,gb5]@2 ~@6 [bb4,g5]@2 ~@5", J: "~@9 [e5,bb5]@23",
  K: "~@7 f3", L: "eb3@4 f3@2 ~@10 g4 ~@7 ab4 ~@7", M: "~@6 eb4@2 d4@2 c4 ~@3 f3@2", N: "~@6 ab4@2 g4@2 f4 ~@3 f3@2",
  O: "eb3@4 ~@12 eb5@5 ~@11", P: "~@16 eb5@5 ~@11", Q: "[~@27 f3@4 eb3@3 f3@2 ~@10 g4 ~@7 ab4 ~@9]/2",
  R: "[~@10 ab4@4 g4@4 f4@2 ~@6 f3@4 eb3@4 f3@2 ~@10 g4 ~@7 ab4 ~@9]/2",
  S: "[~@10 ab4@4 g4@4 f4@2 ~@6 f3@4 eb3@4 ~@12 [bb4,eb5]@5 ~@13]/2", T: "~@14 [bb4,eb5]@5 ~@13", U: "~@26 f3@3 eb3@3",
  V: "~ f3@2 ~@10 g4 ~@7 ab4 ~@10", W: "~@9 ab4@4 g4@4 f4@2 ~@6 f3@4 eb3@3", X: "~@9 ab4@4 g4@4 f4@2 ~@13",
  Y: "~@5 [ab4,f5]@3 ~@5 [ab4,gb5]@2 ~@6 [bb4,g5]@2 ~@9", Z: "~@5 [e5,bb5]@26 ~", AA: "~@6 f3 eb3",
  AB: "f3@2 ~@10 g4 ~@7 ab4 ~@11", AC: "~@4 ab4@2 g4@2 f4 ~@3 f3@2 eb3@2", AD: "~@12 [bb4,eb5]@5 ~@15",
  AE: "[~@23 f3@4 eb3@4 f3@2 ~@10 g4 ~@7 ab4 ~@12]/2",
  AF: "[~@7 ab4@4 g4@4 f4@2 ~@6 f3@4 eb3@4 f3@2 ~@10 g4 ~@7 ab4 ~@12]/2", AG: "~@7 ab4@4 g4@4 f4@2 ~@15",
  AH: "~@3 [ab4,f5]@3 ~@4 [ab4,gb5]@2 ~@7 [bb4,g5]@2 ~@11", AI: "~ [e5,bb5]@13 ~@2", AJ: "~@21 f3@5 eb3@4 f3@2",
  AK: "~@10 g4 ~@7 ab4 ~@13", AL: "~@5 eb4 ~@10",
})).s("gm_alto_sax").gain(0.5)

// other · tenor sax · "TENOR SAXES"
const tenor_sax = note(`<
  ~ A B@2 C@2 B@2 C@2 B@2 C@2 B@2 D@2 E@2 F G H G I J K ~@3 L M N O P M P O P M P O P O P Q R@2 S@2 T@2 U@2 T@2 U@2 T@2
  V@2 W@2 X Y Z Y AA AB AC ~@3 AD AE AF AG AF AE AF AE AF AE AF AE AF AE AF AG AF AE AF AG AF AH@3 AI@2 AJ@2 AK AL AM
  ~@3 AN AO AP
>`.pickRestart({
  A: "~@6 f3@3 ~@9 d4 ~@7 c4 ~@5", B: "[~@14 eb4@4 d4@4 c4@2 ~@6 f3@4 eb3@4 f3@2 ~@10 d4 ~@7 c4 ~@5]/2",
  C: "[~@14 eb4@4 d4@4 c4@2 ~@6 f3@4 eb3@4 f3@3 ~@9 d4 ~@7 c4 ~@5]/2",
  D: "[~@14 eb4@4 d4@4 c4@2 ~@6 f3@4 eb3@4 ~@12 [c4,gb4]@5 ~@9]/2", E: "~@18 [c4,gb4]@5 ~@9", F: "~@29 f3@3",
  G: "~ eb3@4 f3@2 ~@10 d4 ~@7 c4 ~@6", H: "~@13 eb4@4 d4@4 c4@2 ~@6 f3@3", I: "~@13 eb4@4 d4@4 c4@2 ~@9",
  J: "~@9 [f3,c4]@2 ~@6 [gb3,db4] ~@7 [g3,d4]@2 ~@5", K: "~@9 e3@23, ~ g4@3", L: "~@7 f3",
  M: "eb3@4 f3@3 ~@9 d4 ~@7 c4 ~@7", N: "~@6 c4@2 bb3@2 ab3 ~@3 f3@2", O: "eb3@4 f3@2 ~@10 d4 ~@7 c4 ~@7",
  P: "~@6 eb4@2 d4@2 c4 ~@3 f3@2", Q: "eb3@4 ~@12 [gb4,bb4]@5 ~@11", R: "~@16 [gb4,bb4]@5 ~@11",
  S: "[~@27 f3@4 eb3@3 f3@2 ~@10 d4 ~@7 c4 ~@9]/2",
  T: "[~@10 eb4@4 d4@4 c4@2 ~@6 f3@4 eb3@4 f3@2 ~@10 d4 ~@7 c4 ~@9]/2",
  U: "[~@10 eb4@4 d4@4 c4@2 ~@6 f3@4 eb3@4 f3@3 ~@9 d4 ~@7 c4 ~@9]/2",
  V: "[~@10 eb4@4 d4@4 c4@2 ~@6 f3@4 eb3@4 ~@12 [c4,gb4]@5 ~@13]/2", W: "~@14 [c4,gb4]@5 ~@13", X: "~@26 f3@3 eb3@3",
  Y: "~ f3@2 ~@10 d4 ~@7 c4 ~@10", Z: "~@9 eb4@4 d4@4 c4@2 ~@6 f3@4 eb3@3", AA: "~@9 eb4@4 d4@4 c4@2 ~@13",
  AB: "~@5 [f3,c4]@2 ~@6 [gb3,db4] ~@7 [g3,d4]@2 ~@9", AC: "~@5 [e3,g4]@26 ~", AD: "~@6 f3 eb3",
  AE: "f3@3 ~@9 d4 ~@7 c4 ~@11", AF: "~@4 eb4@2 d4@2 c4 ~@3 f3@2 eb3@2", AG: "f3@2 ~@10 d4 ~@7 c4 ~@11",
  AH: "~@12 [c4,gb4]@5 ~@15", AI: "[~@23 f3@4 eb3@4 f3@2 ~@10 d4 ~@7 c4 ~@12]/2",
  AJ: "[~@7 eb4@4 d4@4 c4@2 ~@6 f3@4 eb3@4 f3@2 ~@10 d4 ~@7 c4 ~@12]/2", AK: "~@7 eb4@4 d4@4 c4@2 ~@15",
  AL: "~@3 [f3,c4]@2 ~@6 [gb3,db4] ~@7 [g3,d4]@2 ~@11", AM: "~ [e3,g4]@13 ~@2", AN: "~@21 f3@5 eb3@4 f3@2",
  AO: "~@10 d4 ~@7 c4 ~@13", AP: "~@5 a3 ~@10",
})).s("gm_tenor_sax").gain(0.28)

// other · baritone sax
const baritone_sax = note(`<
  ~ A B@2 C@2 B@2 C@2 B@2 C@2 B@2 D@2 E@2 F G H I J K L ~@3 M N O P O N O P O N O P O P O Q R@2 S@2 T@2 U@2 T@2 U@2 T@2
  V@2 W@2 X Y Z Y AA AB AC ~@3 AD AE AF AG AF AE AF AE AF AE AF AE AF AE AF AG AF AE AF AG AF AH@3 AI AJ AK AJ AL AM AN
  ~@3 AO AP AQ
>`.pickRestart({
  A: "~@6 f2@3 ~@9 a2@2 ~@6 f3@2 ~@4", B: "[~@7 f3@2 eb3@2 f3 ~@3 f2@2 eb2@2 ~@2 f2 ~@3 a2 ~@3 f3 ~@2]/2",
  C: "[~@14 f3@4 eb3@4 f3@2 ~@6 f2@4 eb2@4 f2@3 ~@9 a2@2 ~@6 f3@2 ~@4]/2",
  D: "[~@14 f3@4 eb3@4 f3@2 ~@6 f2@4 eb2@4 ~@12 ab2@5 ~@9]/2", E: "~@18 ab2@5 ~@9", F: "~@29 f2@3",
  G: "~ eb2@3 ~@5 f2@2 ~@6 a2@2 ~@6 f3@2 ~@5", H: "~@13 f3@4 eb3@4 f3@2 ~@6 f2@3",
  I: "~ eb2@4 ~@4 f2@2 ~@6 a2@2 ~@6 f3@2 ~@5", J: "~@13 f3@4 eb3@4 f3@2 ~@9", K: "~@9 bb2@2 ~@6 b2@2 ~@6 c3@2 ~@5",
  L: "~@9 c2@23", M: "~@7 f2", N: "eb2@4 f2@3 ~@9 a2@2 ~@6 f3@2 ~@6", O: "~@6 f3@2 eb3@2 f3 ~@3 f2@2",
  P: "eb2@2 ~@2 f2 ~@3 a2 ~@3 f3 ~@3", Q: "eb2@4 ~@12 c4@5 ~@11", R: "~@16 c4@5 ~@11",
  S: "[~@27 f2@4 eb2@3 ~@4 f2@2 ~@6 a2@2 ~@6 f3@2 ~@8]/2",
  T: "[~@5 f3@2 eb3@2 f3 ~@3 f2@2 eb2@2 ~@2 f2 ~@3 a2 ~@3 f3 ~@4]/2",
  U: "[~@10 f3@4 eb3@4 f3@2 ~@6 f2@4 eb2@4 f2@3 ~@9 a2@2 ~@6 f3@2 ~@8]/2",
  V: "[~@10 f3@4 eb3@4 f3@2 ~@6 f2@4 eb2@4 ~@12 ab2@5 ~@13]/2", W: "~@14 ab2@5 ~@13", X: "~@26 f2@3 eb2@3",
  Y: "~@5 f2@2 ~@6 a2@2 ~@6 f3@2 ~@9", Z: "~@9 f3@4 eb3@4 f3@2 ~@6 f2@4 eb2@3", AA: "~@9 f3@4 eb3@4 f3@2 ~@13",
  AB: "~@5 bb2@2 ~@6 b2@2 ~@6 c3@2 ~@9", AC: "~@5 c2@25 ~@2", AD: "~@6 f2 eb2", AE: "f2@3 ~@9 a2@2 ~@6 f3@2 ~@10",
  AF: "~@4 f3@2 eb3@2 f3 ~@3 f2@2 eb2@2", AG: "~@2 f2 ~@3 a2 ~@3 f3 ~@5", AH: "~@12 ab2@5 ~@15",
  AI: "~@23 f2@4 eb2@3 ~@2", AJ: "~@3 f2@2 ~@6 a2@2 ~@6 f3@2 ~@11", AK: "~@7 f3@4 eb3@4 f3@2 ~@6 f2@4 eb2@4 ~",
  AL: "~@7 f3@4 eb3@4 f3@2 ~@15", AM: "~@3 bb2@2 ~@6 b2@2 ~@6 c3@2 ~@11", AN: "~@3 c2@25 ~@4",
  AO: "~@21 f2@4 ~ eb2@4 ~@2", AP: "~ f2 ~@3 a2 ~@3 f3 ~@6", AQ: "~@2 eb2@2 ~ f2@2 ~@3 f3@2 ~@20",
})).s("gm_baritone_sax").gain(0.28)

// chords · electric guitar clean · "CLEAN GUITAR 1"
const electric_guitar_clean = note(`<
  ~ A B@15 C@3 D E F E F G H ~@4 I J I J I J I J I J I J I J K@3 L M N M N M N M N M N M N O@3 P Q R Q R S T ~@4 U V U V
  U V U V U V U V U V U V U V U V W@2 X Y Z AA Z AA AB AC ~@4 AD AE
>`.pickRestart({
  A: "~@15 [f3,c4,a4]", B: "~@15 [f3,c4,eb4,a4]",
  C: "~@6 [a3,db4,g4,a4] [d4,ab4,bb4]@5 [ab4,bb4] ~ [bb3,d4,ab4,bb4]@2 ~@16, ~@3 bb3@3 ~@10", // A7 Bb7 Absus2 Bb7
  D: "~@6 [a3,db4,g4,a4] bb4@5 [ab4,bb4] ~ [bb3,d4,ab4,bb4]@2 ~@13 [bb3,d4,ab4,bb4]@2 ~, ~@3 [bb3,d4,ab4]@3 ~@10", // A7 Absus2 Bb7
  E: "~@29 a4@3, ~@28 [f3,c4,eb4]@3 ~", F: "~@29 [f3,c4,eb4,a4]@2 ~",
  G: "~@9 [ab3,d4,f4,bb4] ~@7 [ab3,d4,f4,bb4]@2 ~@6 [bb3,g4,c5]@2 ~@5, ~@12 e4 ~@3", H: "~@9 [bb3,e4,g4,c5]@23",
  I: "~@27 [f3,c4,eb4,a4]@3 ~@2", J: "~@14 [f3,c4,eb4] ~, ~@27 a4@2 ~@3",
  K: "~@3 a3 [bb3,d4,ab4,bb4]@6 [ab4,bb4] ~ [bb3,ab4,bb4] ~@19, ~@4 [db4,g4,a4] ~@6 d4@2 ~@19", // Bb7 Absus2 Bb7 A7
  L: "~@3 a3 [bb3,d4,ab4,bb4]@6 [ab4,bb4] [bb3,d4,ab4,bb4]@2 ~@14 [bb3,d4,ab4,bb4]@2 ~@3, ~@4 [db4,g4,a4] ~@27", // Bb7 Absus2 Bb7 A7
  M: "~@26 [f3,c4,eb4,a4]@3 ~@3", N: "~@13 [f3,c4,eb4,a4] ~@2",
  O: "~@2 [a3,db4,g4] [bb3,d4,ab4,bb4]@6 [ab4,bb4] [bb3,d4,ab4,bb4]@2 ~@20, ~@3 a4 ~@28", // A7 Bb7 Absus2 Bb7
  P: "~@2 [a3,db4,g4,a4] [d4,ab4,bb4]@5 [ab4,bb4] ~ [bb3,d4,ab4,bb4]@2 ~@13 [bb3,d4,ab4,bb4]@2 ~@5, ~ bb3@3 ~@12", // A7 Bb7 Absus2 Bb7
  Q: "~@25 [f3,c4,eb4,a4]@3 ~@4", R: "~@25 [f3,c4,eb4,a4]@2 ~@5",
  S: "~@6 [ab3,d4,f4,bb4] ~@6 [ab3,d4,f4,bb4]@2 ~@6 [bb3,e4,g4,c5]@2 ~@9", T: "~@5 [bb3,e4,g4,c5]@25 ~@2",
  U: "~@24 [f3,c4,eb4,a4]@3 ~@5", V: "~@12 [f3,c4,eb4,a4] ~@3",
  W: "[a3,db4,g4,a4] bb4@5 [ab4,bb4] ~ [bb3,d4,ab4,bb4]@2 ~@22, [bb3,d4,ab4]@3 ~@13", // A7 Absus2 Bb7
  X: "[a3,db4,g4,a4] bb4@5 ~@26, [bb3,d4,ab4]@3 ~@13", // A7 Bb7
  Y: "~@6 [ab4,bb4] ~ [bb3,ab4,bb4] ~@14 [bb3,d4,ab4,bb4]@2 ~@7, ~@7 d4@2 ~@23", Z: "~@22 [f3,c4,eb4,a4]@3 ~@7",
  AA: "~@23 eb4@2 ~@7, ~@11 [f3,c4,a4] ~@4", AB: "~@3 [ab3,d4,f4,bb4] ~@7 [ab3,d4,f4,bb4]@2 ~@5 [bb3,e4,g4,c5]@2 ~@12",
  AC: "~@3 [bb3,e4,g4,c5]@25 ~@4", AD: "~@21 [f3,c4,eb4,a4]@3 ~@8", AE: "~@10 a4@3 ~@19, ~@9 [f3,c4,eb4]@3 ~@20",
})).s("gm_electric_guitar_clean").gain(0.23)

// bass · piano · "CLEAN GUITAR 2"
const bass_3 = note("<~ [~ e2@2 f2 ~@12] ~@109>").s("gm_piano").gain(0.46)

// other · electric guitar clean · "CLEAN GUITAR 2"
const electric_guitar_clean_2 = note(`<
  ~ A B C B C B C B C B C B C B C B D@3 E F G H I J K ~@4 L M L M L M L M L M L M L M N@3 O@7 P@8 Q R S@2 T@2 U V ~@3 W
  X@18 Y@2 Z@2 AA AB@5 AC AD ~@3 AE AF@2
>`.pickRestart({
  A: "~@10 a2 ~@2 f3 ~@2, ~@19 ab2@2 ~@11", B: "~ eb3@9 ~@6", C: "~ e2@2 f2 ~@6 a2 ~@2 f3 ~@2, ~@19 ab2@2 ~@11",
  D: "~@2 a2@4 bb2@5 ~@21", E: "~@25 f3@3 ~ c3@3", F: "~ e2@3 ~ f2@2 ~@11 a2@2 ~@5 f3@2 ~@5, ~@17 ab2@2 ~@13",
  G: "~ eb3@18 ~@13", H: "~ e2@4 f2@2 ~@11 a2@2 ~@5 f3@2 ~@5, ~@17 ab2@2 ~@13", I: "~ eb3@18 ~@10 f3@3",
  J: "~@9 bb2 ~@7 b2 ~@6 c3 ~@7", K: "~@9 c3@22 ~", L: "e2@4 f2@2 ~@11 a2@2 ~@5 f3@2 ~@6, ~@8 ab2 ~@7", M: "eb3@9 ~@7",
  N: "a2@4 bb2@5 ~@23",
  O: "[~@23 f3@3 ~ c3@3 ~ e2@3 f2@2 ~@12 a2@2 ~@5 f3@2 ~@6 eb3@18 ~@13 e2@4 f2@2 ~@12 a2@2 ~@5 f3@2 ~@6 eb3@18 ~@13 e2@4 f2@2 ~@12 a2@2 ~@5 f3@2 ~@6 eb3@18 ~@13 e2@2, ~@47 ab2@2 ~@62 ab2@2 ~@62 ab2@2 ~@47]/7",
  P: "[~@2 f2@2 ~@12 a2@2 ~@5 f3@2 ~@6 eb3@18 ~@13 e2@4 f2@2 ~@12 a2@2 ~@5 f3@2 ~@6 eb3@18 ~@13 e2@4 f2@2 ~@12 a2@2 ~@5 f3@2 ~@6 eb3@18 ~@13 a2@4 ~ bb2@5 ~@22 a2@4 ~ bb2@5 ~@22 a2@2, ~@15 ab2@2 ~@62 ab2@2 ~@62 ab2@2 ~@111]/8",
  Q: "~@3 bb2@5 ~@24", R: "~@22 f3@3 ~ c3@3 e2@3",
  S: "[~ f2@2 ~@12 a2@2 ~@4 f3@2 ~@6 eb3@18 ~@14 e2@3, ~@7 ab2 ~@24]/2",
  T: "[~ f2@2 ~@12 a2@2 ~@4 f3@2 ~@6 eb3@18 ~@10 f3@3 ~@4, ~@7 ab2 ~@24]/2", U: "~@5 bb2 ~@7 b2 ~@7 c3 ~@10",
  V: "~@5 c3@22 ~@5", W: "~@7 e2", X: "[f2@2 ~@11 [ab2,a2]@2 ~@5 f3@2 ~@6 eb3@18 ~@14 e2@4]/2",
  Y: "[f2@2 ~@11 [ab2,a2]@2 ~@5 f3@2 ~@6 eb3@18 ~@14 a2@4]/2", Z: "bb2@5 ~@23 a2@4", AA: "bb2@5 ~@27",
  AB: "[~@19 f3@3 ~ c3@3 ~ e2@3 ~ f2@2 ~@11 a2@2 ~@5 f3@2 ~@6 eb3@18 ~@14 e2@4 f2@2 ~@11 a2@2 ~@5 f3@2 ~@6 eb3@18 ~@10 f3@3 ~@6, ~@43 ab2@2 ~@62 ab2@2 ~@51]/5",
  AC: "~@3 bb2 ~@6 b2 ~@7 c3 ~@13", AD: "~ c3@11 ~@4", AE: "~@26 e2@3 f2@2 ~",
  AF: "[~@11 a2@2 ~@5 f3@2 ~@6 eb3@18 ~@20, ~@5 ab2 ~@26]/2",
})).s("gm_electric_guitar_clean").gain(0.46)

// other · tenor sax · "LEAD TENOR SAX"
const tenor_sax_2 = note("<~@75 A B C@2 D E F G@3 H I ~@24>".pickRestart({
  A: "~@4 f4@5 ~@14 ab4@6 ~@3", B: "~@8 bb3@5 ~@7 bb4@7 ~@5",
  C: "[b4@4 c5@2 ~@6 ab4@4 ~@4 f4@4 eb4@3 ~ f4@8 eb4@2 ~@2 f4@4 eb4 ~@3 ab3@4 g3@3 ~ ab3@4 g3@4]/2",
  D: "f3@4 eb3@2 ~@6 f3 ~@8 eb4@2 ~@5 f4@2 ~@2", E: "~@4 eb4 ~@3 f4@13 eb4@2 ~@9", F: "g4@12 eb4@3 ~@17",
  G: "[~@4 c5@13 ab4@2 f4@3 ~@2 f4@11 ~@9 bb4@2 ~ b4@2 bb4@2 ab4@2 f4@2 ~@6 ab4@11 f4@3 ~@5 f4@8 eb4@3 ~ c4@2 ~@2]/3",
  H: "f4@8 d4@3 c4@2 ~@3 f4@8 eb4@2 ~@6", I: "~@5 c4 eb4 c4 eb4 ~ bb3 ab3 ~@4, ~@19 c4@2 ~@11",
})).s("gm_tenor_sax").gain(0.51)

// drums · rim
const rim = s("rim").struct(`<
  ~@2 A ~@3 A ~@3 A ~@3 A ~@7 B ~ B ~@7 C ~@3 C ~@3 C ~ D ~@7 E ~ F ~ E ~@3 E ~@7 G ~ G ~@7 H ~@3 H ~ H ~ H ~ H ~ H ~@3
  H ~@7 I ~ I ~@8
>`.pickRestart({
// … 104 more lines

More by James Brown