Strudelify
KeyA♭ majorTempo96 bpm
0:00/0:00
// Rise — Herb Alpert
// 96 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 138 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/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 · piano · "PIANO2"
const piano = note(`<
  ~@11 A@2 B C D E B C D E F@2 G@2 H@2 I@2 J@2 K@2 L@2 M@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 N@2 O@2 P@2 Q@2 R@2 S@2 T@2 U@2 V
  W F@2 G@2 H@2 I@2 J@2 K@2 L@2 M@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 X@2 O@2 P@2 Q@2 R@2 S@2 T@2 U@2 V W Y Z AA AB Y Z AA AB
  Y Z AA AB Y Z AA AB Y Z AA AB AC
>`.pickRestart({
  A: "[~@2 f1 ~@2 f1 ~@2 [f1,f2] ~@6 [eb4,ab4,c5]@2 f1 [d4,g4,bb4] ~ [c4,f4,ab4] ~ [d4,g4] ~ [c4,f4] ~ [d4,g4] ~ [c4,f4] ~ f2 [d4,g4]]/2", // F Ab Gm Fm G5 F5 G5 F5 …
  B: "~ [f2,ab3,c4,f4] ~@2 [f2,f3]@2 [eb2,eb3] ~ [f2,f3] ~@4 [c2,c3] [d2,d3] [f2,f3]", // Fm F Eb F C D F
  C: "~ [f2,f3] ~ d2 [f2,f3]@2 [d2,d3] ~ [g2,g3] [f2,f3] ~@2 [f2,f3] ~ [d2,d3] [f2,f3]", // F D G F D F
  D: "~ [f2,f3] ~ d2 [f2,f3]@2 [d2,d3] ~ [f2,f3] ~@6 [f2,f3]", // F D F
  E: "~ [f2,f3] [d2,d3] ~ [f2,f3] ~ d2 ~ [eb4,ab4,c5] ~ [eb4,ab4,c5] ~ [d4,g4,bb4]@2 f2 [c4,f4]", // F D F Ab Gm F5
  F: "[~@2 f1 ~@2 [f1,f2] ~@2 [f1,f2] ~@8 f2 f1 ~@2 [f1,f2] ~@2 [f1,f2] ~@7, [c4,eb4,f4]@15 [c4,eb4,f4]@15 ~@2, [f2,ab3]@4 ab3@11 ab3@5 ab3@11 ~]/2", // F F7 Fm
  G: "[ab3@2 bb1 ~@2 bb1 ~@2 bb3@4 ab3@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 ab1@3 ~, [db4,f4]@13 ~@4 db4@3 ~@12, c4@7 ~ bb1@7 ~@17, bb1 ~@3 ab3@7 ~@3 [ab3,c4]@6 [ab3,bb3,db4,f4]@11 ~]/2", // Db Ab Bbm7
  H: "[ab3@2 gb1 ~@2 gb1 ~@2 gb1 ~@3 [ab3,bb3,db4]@2 gb2 ~@2 gb2 gb1 ~@2 [gb1,gb2] ~@2 [gb1,gb2] ~@3 bb1@4, [bb3,db4,f4]@3 ~@5, gb1 ~@3 ab3@8 ~@3 [ab3,bb3,db4,f4]@15 ~@2]/2", // Bbm7 Gb Bbm Bbm7
  I: "[b1 ~ b1 ~@2 b1 ~@2 b1 ~@3 [bb3,eb4] ~ [ab3,db4] ~@2 b1 ~@2 b1@2 ~@2 b1@2 ~@2 bb1 bb3 bb1 ~, [bb3,db4,eb4,gb4]@11 ~@4 [bb3,eb4]@10 ~ [bb3,eb4,gb4]@4 ~@2, ~@20 c2 ~@2 gb4@2 ~@7]/2", // Eb5 Db5 Ebm7 Eb5 Ebm
  J: "[gb3@2 ab1 ~ gb3 ab1 ~@6 [gb3,b3,eb4]@3 ~ ab1 ~ ab1 ~@2 ab1 ~@2 ab1 ~@7, [b3,eb4]@11 ~@21, ab1 ~@5 gb3@5 ~@4 [gb3,b3,eb4]@16 ~, ~@8 ab1@7 ~@17]/2", // B
  K: "[gb1 ~ gb1 ~@2 gb1 ~@2 gb1 ~@3 gb2@2 ~ gb2 ~ gb2 gb1 ~@2 gb1 ~@2 gb1 ~@7, [ab3,bb3,db4]@4 [gb3,bb3,db4]@11 ~]/2", // Bbm7 Gb
  L: "[e1@2 e2 ~@2 e2 ~@2 e1 ~@3 e2@2 ~ e2 ~ e2 e1 ~ e2 [ab3,b3,e4] e1@2 [ab3,b3,e4]@7 ~, [ab3,b3,e4]@21 ~@11]/2", // E
  M: "[eb2 ~ eb2 ~@2 eb2 ~@2 eb2 ~@3 g3@2 eb2 g3@3 eb2 ~ g3 eb2 g3 ~ [g2,f3,bb3,db4]@4 [c2,e3,bb3,c4]@3 ~, [bb3,eb4]@15 [bb3,eb4]@7 ~@10, g3@3 ~@5]/2", // Gm7b5 C7 Eb5
  N: "[eb2 ~ eb2 ~@2 eb2 ~@2 eb2 ~@5 eb2 eb4@3 [eb2,g3]@2 ~@10 eb2@2, [bb3,eb4]@15 ~@3 [bb3,eb4]@11 [eb3,eb4]@2 ~, g3@3 ~@2 eb1@2 eb1, ~@21 g3@3 g3@6 ~@2, ~@11 eb2@2 eb2@2 ~]/2", // Eb Eb5 Eb
  O: "[[g3,c4,eb4]@2 [f3,bb3] ~ [g3,c4,eb4] ~ [f3,bb3,eb4] ~ [g3,c4,eb4] ~ ab1@2 [f3,bb3,eb4]@2 ~ [g3,c4,eb4]@3 [f3,bb3,eb4] ~@3 ab1 ~ ab1@5 ~@3, ab1@9 ~@5 ab1@6 [g3,c4,eb4]@11 ~]/2", // Cm Bb5 Cm Ebsus2 Cm Ebsus2 Cm Ebsus2 …
  P: "[f3@2 g1@2 f3 ~ [f3,a3,d4] ~ [f3,bb3,d4] ~@3 [f3,bb3,d4]@2 g1 ~@3 c2@2 ~ c2 ~@2 c2 ~@3 [e3,bb3,db4]@2 bb1 ~, [bb3,d4]@5 ~@10 [bb3,db4]@13 ~@4, g1 ~@4 g1@8 ~@2 e3@5 e3@2 e3@5 ~@5]/2", // Dm Bb Bbdim Bb Bbm
  Q: "[g3@2 ab1@2 g3 ~ [f3,bb3] ~ [g3,eb4]@4 ~@10 ab1@2 ~@2 [g3,c4,eb4] ~@3 ab1 ~, eb4@7 ~@10 eb5@7 ab1@5 ~@3, c4@5 ~@3 bb3 ~@3 [g3,bb3,eb4]@14 ~@3 [g3,c4,eb4]@2 ~, ab1 ~@4 ab1@11 ab1@4 g4@6 ~@6, ~@9 c5@4 ~@3]/2", // Bb5 Cm Eb Cm
  R: "[[f3,bb3,c4]@6 ~@2 f3@4 f3@2 ~@2 c2 ~ c2@2 [e3,bb3] c2 ~@2 [eb1,gb3,db4,f4]@4 [ab1,gb3,c4,e4]@3 ~, g1@5 ~ g1@9 e3@2 e3@2 ~@13, ~@8 [bb3,c4]@7 bb3@5 ~@12]/2", // Fsus4 Edim Ebm7 Abaug Bbsus2
  S: "[f3@2 db2 ~ f3 db2 f3 ~ [f3,c4,eb4] ~ [f3,bb3] ~ [f3,c4,eb4]@2 db2 [f3,eb4]@3 bb3 ~ f3@2 db2 ~ db2@2 ~@2 f3@2 ~@2, [c4,eb4]@7 ~@8 c4@2 ~@3 [c4,eb4]@11 ~, db2 ~@22 f3@4 ~@5]/2", // F7 Bb5 F7 Cm
  T: "[g3@2 c2 ~ g3 c2 [eb3,bb3,d4] ~@3 c2 ~ [eb3,bb3,d4]@2 c2 eb3@3 f2@2 eb3 [eb3,a3,d4] ~@6 c2@3 ~, [bb3,d4]@5 ~@3 [eb3,bb3,d4]@4 ~@3 [a3,d4]@6 ~@3 [eb3,a3,d4]@7 ~, c2 ~@21 f2@5 ~@5]/2", // Ebmaj7 D Bb Ebmaj7 D5 D
  U: "[a3@2 gb2@2 a3 gb2 [a3,e4,ab4] ~ [gb2,a3,e4,ab4]@4 [a3,e4,ab4]@2 gb2 ~ b2 ~ b2@2 a3 [a3,eb4,ab4] a2 ~ [eb4,ab4]@2 [b3,b4] ~ b2 [b3,b4]@2 b2, [e4,ab4]@5 ~@10 [a3,eb4,ab4]@5 ~@4 a3 ~@7, gb2 ~@21 b2@4 ~@6]/2", // Amaj7 Gbm7 Amaj7 Ab Ab5 B E Ab
  V: "[gb3,ab3,db4]@3 [gb3,ab3,db4] ~@2 gb3@2 e2@2 gb3@2 e2 [gb3,ab3,eb4] e2 ~, e2@3 [ab3,eb4]@3 ~@2", // Gbsus2 Ab7 Ab5
  W: "[a2,g3]@7 ~ [g2,f3,bb3,db4]@4 [c3,e3,bb3,c4]@3 ~, db4 ~@15", // A7 Gm7b5 C7
  X: "[eb2 ~ eb2 ~@2 eb2 ~@2 eb2 ~@3 g3@2 eb2 [g3,bb3,eb4]@3 [eb2,g3]@2 ~@10 eb2@2, [bb3,eb4]@15 ~@3 bb3@14, g3@6 ~@3 eb4@5 eb1@2, ~@20 eb1@6 eb2@3 [eb3,eb4]@3, ~@21 g3 eb2@2 g3@8]/2", // Eb Eb5 Eb
  Y: "[f1,f2,c3] ~ [f1,f2,d3] ~ eb3 [f1,f2] d3 c3 [f1,f2] c3 d3 ~ eb3 ~ d3 c3", // F5 Dm F
  Z: "[f1,f2] c3 d3 ~ eb3 ~ d3 c3 [f1,f2] c3 d3 [f1,f2] eb3 [f1,f2] f3 c3", // F
  AA: "[f1,f2] c3 d3 ~ eb3 ~ d3 c3 [f1,f2] c3 d3 ~ eb3 ~ d3 c3", // F
  AB: "~ c3 d3 ~ eb3 ~ d3 [f1,f2] ab3 ~ bb3 ~ ab3 f3 ~ f3, [f1,f2] ~@7", AC: "[f1,f2] ~@15",
})).s("gm_piano").gain(0.25)

// bass · fretless bass · "FrtlsBass"
const bass = note(`<
  ~ A B C D A B C D A B C D A B C D A B C D E@2 F G H@2 I@2 J@2 K@2 L@2 M@2 E@2 F G H@2 I@2 J@2 K@2 L@2 N O P@2 Q@2 R@2
  S@2 T@2 U@2 V@2 W X E@2 F G H@2 I@2 J@2 K@2 L@2 M@2 E@2 F G H@2 I@2 J@2 K@2 L@2 N O P@2 Q@2 R@2 S@2 T@2 U@2 V@2 W X A
  B A B A B A B A B A B A B A B A B A B Y
>`.pickRestart({
  A: "f1 ~ f1@2 ~ f1@2 ~ f1 ~@5 eb2 f2", B: "~ f2 f1 ~@2 f1 ~@2 f1 ~@7", C: "f1 ~ f1 ~@2 f1 ~@2 f1 ~@3 eb2@3 f2",
  D: "f2!2 f1 ~@2 f1 ~@2 g1@2 g2@2 c2@2 c3 ~",
  E: "[f1@2 f1 ~@2 f1 ~@2 f1 ~@3 eb2@3 f2@2 f2 f1 ~@2 f1 ~@2 f1 ~@5 c2 b1]/2", F: "bb1 ~ bb1 ~@2 bb1 ~@2 bb1 ~@6 bb1",
  G: "~@2 bb1 ~@2 bb1 ~@2 bb1 ~@3 ab1@4",
  H: "[gb1 ~ gb1 ~@2 gb1 ~@2 gb1 ~@5 gb2 gb1@3 gb1 ~@2 gb1 ~@2 gb1 ~@5 bb1 gb1]/2",
  I: "[b1 ~ b1 ~@2 b1 ~@2 b1 ~@5 gb1 b1@3 b1 ~@2 b1 ~ gb1 b1@4 bb1@3 ~]/2",
  J: "[ab1@2 ab1 ~@2 ab1 ~@2 ab1 ~@5 eb1 ab1@2 ~ ab1 ~@2 ab1@2 ~ ab1 ~@7]/2",
  K: "[gb1@2 gb1 ~@2 gb1@2 ~ gb1 ~@5 gb1 gb1@2 ~ gb1 ~@2 gb1@2 ~ gb1@2 ~@5 eb1]/2",
  L: "[e1@2 e1 ~@2 e1 ~@2 e1@2 ~@5 e1@2 ~ e1 ~@2 e1 ~@2 e1 ~@6 e1]/2",
  M: "[eb1@2 eb1 ~@2 eb1 ~@2 eb1@2 ~@4 eb2 eb1@3 eb1 ~@2 eb1 ~@2 g1@4 c2@4]/2",
  N: "eb1@2 eb1 ~@2 eb1 ~@2 eb1@2 ~@4 eb2 eb1", O: "eb1@2 eb1 ~@2 eb1 ~@2 eb1@4 f1@2 eb1 ~, eb2 ~@15",
  P: "[ab1@2 ab1 ~@2 ab1@2 ~ ab1@2 ~@5 ab1@2 ~ ab1 ~@2 ab1@2 ~ ab1@2 ~@6]/2",
  Q: "[g1@2 g1 ~@2 g1@2 ~ g1 ~@5 g1 c2@2 ~ c2 ~@2 c2 ~@2 c2@2 ~@4 eb1@2]/2",
  R: "[ab1@2 ab1 ~@2 ab1 ~@2 ab1 ~@5 gb1 ab1@2 ~ ab1 ~@2 ab1@2 ~ ab1@2 ~@6]/2",
  S: "[g1@2 g1 ~@2 g1@2 ~ g1@2 ~@4 g1 c2@2 ~ g1 ~@2 g1 ~@2 eb1@4 ab1@4]/2",
  T: "[db2@2 db2 ~@2 db1 ~@2 db1@2 ~@4 db2 db1@3 db1 ~@2 db1 ~@2 db1@2 ~@4 eb1 db1]/2",
  U: "[c1@2 c1 ~@2 c1 ~@2 c1@2 ~@4 c2 f1@3 f1 ~@2 f1 ~@2 f1 ~@5 e1 f1]/2",
  V: "[gb1 ~ gb1 ~@2 gb1 ~@2 gb1@2 ~@4 gb1 b1@3 b1 ~@2 b1 ~@2 b1 ~@5 eb1@2]/2", W: "e1@2 e1 ~@2 e1 ~@2 e1@2 ~@4 ab1 e1",
  X: "a1@8 g1@4 c2@3 ~", Y: "f1 ~@7",
})).s("gm_fretless_bass").gain(0.45)

// chords · epiano2 · "E PIANO2"
const epiano2 = note(`<
  ~ A ~@3 B@2 C@2 D@2 E@2 F G H G F G H G I@2 J@2 K@2 L@2 M@2 N@2 O@2 P@2 I@2 J@2 K@2 L@2 M@2 N@2 O@2 Q@2 R@2 S@2 T@2
  U@2 V@2 W X Y Z@2 AA I@2 J@2 K@2 L@2 M@2 N@2 O@2 P@2 I@2 J@2 K@2 L@2 M@2 N@2 O@2 Q@2 R@2 S@2 T@2 U@2 V@2 W X Y Z@2 AA
  AB ~@7 AC AD AE AF AC AD AE AF AC AD AE AF AB
>`.pickRestart({
  A: "[f5,f6] ~ [c5,d5,e5,f5,g5,a5,b5] [f4,g4,a4,b4] ~@12, c6 ~@7", // F Cmaj7 G7
  B: "[[a3,eb4,f4] ~ [ab3,d4,f4] ~ [a3,eb4,f4] ~ [ab3,d4,f4] ~ [a3,eb4,f4] ~@3 [ab3,d4,f4]@2 ~ [a3,eb4,f4]@3 [ab3,d4,f4] ~ [a3,eb4,f4] ~@11]/2", // F7 Ddim F7 Ddim F7 Ddim F7 Ddim …
  C: "[[a3,eb4,f4] ~ [ab3,d4,f4] ~ [a3,eb4,f4] ~ [ab3,d4,f4] ~ [a3,eb4,f4] ~@3 [ab3,d4,f4]@3 [a3,eb4,f4]@2 eb4 [ab3,d4] ~ [a3,eb4,f4] ~@11, ~@17 f4@2 ~@13]/2", // F7 Ddim F7 Ddim F7 Ddim F7 Abdim …
  D: "[[a3,eb4,f4] ~ [ab3,d4,f4] ~ [a3,eb4,f4] ~ [ab3,d4,f4] ~ [a3,eb4,f4] ~@3 [ab3,d4,f4]@3 [a3,eb4,f4]@2 [a3,eb4] [ab3,d4,f4] ~ [a3,eb4,f4] ~@11]/2", // F7 Ddim F7 Ddim F7 Ddim F7 Adim …
  E: "[[a3,eb4,f4] ~ [ab3,d4,f4] ~ [a3,eb4,f4] ~ [ab3,d4,f4] ~ [a3,eb4,f4] ~@3 [d4,f4] ~ a3 [eb4,ab4,c5]@2 a3 [d4,g4,bb4] ~ [c4,f4,ab4] ~ [bb3,d4,g4] ~ [ab3,c4,f4] ~@3 [f3,bb3,d4] ~@2 [bb3,d4,g4], ~@6 ab3 ~@9]/2", // F7 Ddim F7 Ddim F7 Dm Ab Gm …
  F: "[a3,eb4]@2 ~@2 [ab3,d4]@2 ~ [a3,eb4] ~@6 d4 ~", G: "[a3,eb4] ~ [ab3,d4] ~ [a3,eb4] [ab3,d4] ~ [a3,eb4] ~@8",
  H: "[a3,eb4]@4 [ab3,d4]@3 [a3,eb4] ~@7 [ab3,d4]", I: "[[ab3,c4,eb4,f4]@29 ~@3]/2",
  J: "[db4@15 ~@7 bb3@9 ~, [ab3,f4]@31 ~, bb3@13 ~@2 c4@6 ~@11, ~@9 db4@6 ~]/2", K: "[[ab3,bb3,db4,f4]@15 ~]/2",
  L: "[[b2,gb3,bb3,db4,eb4]@28 bb2@3 ~]/2", M: "[[ab2,gb3,b3,eb4]@31 ~]/2", N: "[[gb2,gb3,bb3,db4]@29 ~@3]/2",
  O: "[[e2,e3,gb3,ab3,b3]@29 ~@3]/2", P: "[[eb2,eb3,f3,g3,bb3]@23 ~ [g2,f3,bb3,d4]@4 [c3,e3,bb3,db4]@3 ~]/2",
  Q: "[eb3@16 [eb3,eb4]@2 ~@10 eb4@2 eb3 ~, [eb2,f3,g3,bb3]@31 ~, ~@9 eb3@6 ~, ~@19 eb5@12 ~, ~@19 eb4@3 bb4@9 ~]/2", // Eb
  R: "[c4@12 ~@2 [eb4,g4,bb4]@15 ~@3, bb3@29 ~@3, [eb4,g4,bb4]@7 ~@9, ~@12 c4@17 ~@3]/2", // Eb
  S: "[[bb3,d4,f4,a4,c5]@15 [bb3,db4,e4,ab4,c5]@16 ~]/2", // Bbmaj7 Bbm7b5
  T: "[~@7 [eb4,g4]@9, ab3, [c4,eb4,g4]@13 c4@18 ~, ~@3 bb3@5]/2", // Eb Cm
  U: "[[bb3,d4,f4,a4,c5]@14 [bb3,db4,e4,ab4,c5]@10 [gb3,bb3,db4,f4]@4 [gb3,bb3,c4,e4]@3 ~]/2", // Bbmaj7 Bbm7b5 Gbmaj7 Gb7
  V: "[~@7 [eb4,f4,ab4]@9, db3, [eb4,f4,ab4]@7 ~@9, c4@3 c4@5, ~@5 bb3@11]/2", W: "[bb3,d4,eb4,g4]",
  X: "[a3,d4,eb4,g4]@15 ~", Y: "[a3,b3,db4,e4,ab4]",
  Z: "[~@4 b3@4 ~@7 gb4, [a3,db4,ab4], eb4 [gb3,ab3,b3,eb4], ~@4 b4@9 b4@3]/2", // Amaj7 Abm7
  AA: "[a2,g3,b3,db4,eb4]@2 [g2,f3,bb3,db4] [c3,e3,bb3,c4]", // Gm7b5 C7
  AB: "[f5,f6] b5 [b4,c5,d5,e5,f5,g5,a5] [f4,g4,a4] ~@12, c6 ~@7", // F Bm7b5 F
  AC: "[eb5,f5,ab5,c6]@6 [eb5,f5,ab5,c6]@5 ~ [eb5,f5,ab5,c6]@4", // Fm7
  AD: "~@2 [eb5,f5,ab5,c6]@5 ~ [d5,f5,g5,bb5]@2 ~ [d5,f5,g5,bb5]@2 ~ [c5,eb5,f5,ab5]@2", AE: "~ [c5,eb5,f5,ab5] ~@14",
  AF: "~@6 [c5,f5] ~ [bb4,eb5] [c5,f5] ~@6", // F5 Eb5 F5
})).s("gm_epiano2").gain(0.22)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@59 A@2 B@2 C D E F G H ~@15 I J K L M N O P Q R S T U V W X Y Z@2 AA AB Z@2 AC@2 B@2 C D E F G H ~@21
>`.pickRestart({
  A: "[g2@15 c3@9 eb3@4 ab2@4]/2", B: "[db3,c4,f4]/2", C: "[c3,bb3,eb4]", D: "[f2,a3,eb4]", E: "[gb2,a3,e4]",
  F: "[b2,a3,eb4]", G: "[e2,b2,ab3,eb4]", H: "[a2,g3,b3] ~", I: "~@8 g2@4 c3@3 ~", J: "c3@9 ~@7", K: "~@10 c3@3 c3@2 ~",
  L: "c3@3 db3@3 bb2@6 ~@4", M: "~@10 c3@2 ~ c3@2 ~", N: "c3@2 ~ db3@3 bb3@5 ~@5", O: "~@10 bb2@3 bb2@2 ~",
  P: "bb2@2 ~ b2@3 gb3@5 ~@5", Q: "~@4 f3 gb3 ab3 bb3", R: "b3 ~", S: "~@8 bb2@3 b2@2 db3@3", T: "bb3 ~",
  U: "~@8 ab2@2 ~ bb2@2 b2@2 ~", V: "ab3 ~", W: "~@8 g2@2 ~ ab2@2 bb2@3", X: "eb3", Y: "bb2 eb3", Z: "[ab2,g3,c4]/2",
  AA: "[g2,bb3,f4]", AB: "[c3,bb3,e4]", AC: "[[g2,f3]@4 [c3,e3]@2 [eb3,db4] [ab2,c4], bb3@3 gb3]/2",
})).s("gm_string_ensemble_1").gain(0.25)

// other · brass section · "BRASS1"
const brass_section = note(`<
  ~@20 A B C D C E F G H I J K L M N O P B C D C E F G H I J K L M N O Q R S B T U V B W X Y Z AA AB AC AD A B C D C E F
  G H I J K L M N O P B C D C E F G H I J K L AE N O Q R S B T U V B W X Y Z AA AB AF AD ~@20 A AG
>`.pickRestart({
  A: "~@8 f4@2 g4@2 ab4@2 bb4 ~", B: "c5 ~", C: "~@10 c5@3 c5@3", D: "c5@3 db5@3 bb4@5 ~@5",
  E: "c5@2 ~ db5@3 bb4@5 ~@5", F: "~@10 bb4@3 bb4@3", G: "bb4@3 b4@3 gb4@5 ~@5", H: "~@4 f4 gb4 ab4 bb4", I: "b4@3 ~@5",
  J: "~@8 bb4@2 ~ b4@2 db5 ~ b4", K: "bb4@3 ~@5", L: "~@8 ab4@2 ~ bb4@2 b4 [b4,db5] bb4", M: "ab4@7 ~@9",
  N: "~@8 g4@3 ab4@2 bb4@2 ~", O: "g4 f4 ~ g4@6 ~@7", P: "~@8 f4@2 g4 ~ ab4@2 bb4 ~", Q: "~@2 ab4 bb4", R: "c5@3 ~",
  S: "~@8 c5@3 bb4@2 ab4 ~ bb4", T: "~@7 [db5,d5] eb5@4 db5@4", U: "c5@9 ~@7", V: "~@8 c5@2 ~ bb4@2 ab4 bb4 ~",
  W: "~@2 [bb4,db5] [b4,d5]", X: "[c5,eb5]@3 ~", Y: "~@3 [db5,f5]", Z: "[eb5,g5], gb5 ~@15", AA: "[b4,d5]@9 ~@7",
  AB: "[e5,ab5]@3 [e5,ab5]", AC: "[b4,eb5]@8 [eb5,gb5]@7 ~", AD: "[b4,eb5]@13 ~@3", AE: "ab4@5 ~@11",
  AF: "[b4,eb5] [eb5,gb5]", AG: "[eb4,ab4,bb4,f5] ~@15",
})).s("gm_brass_section").gain(0.21)

// chords · electric guitar muted · "MTD GTR"
const electric_guitar_muted = note("<~@6 A B ~@56 C ~@3 D ~@43 C ~@3 D ~@5 A E ~@14>".pickRestart({
  A: "~@9 f3 [eb4,ab4,c5]!2 [eb4,ab4,c5,f5] ~ [eb4,ab4,c5,f5] ~", // Ab Fm7
  B: "[eb4,ab4,c5,f5] ~ [eb4,ab4,c5,f5] ~ [eb4,ab4,c5,f5] ~@11", // Fm7
  C: "~ [c4,e4] db4 [d4,f4] gb4 [eb4,g4] [e4,ab4] f4 [gb4,a4] bb4 [g4,b4] [ab4,c5] a4 [bb4,db5] [b4,d5] eb5", // C Dm Eb E Gbm G Ab Bbm …
  D: "eb5 [eb5,e5]!2 e5 [eb5,e5]!3 eb5 ~@8", E: "[eb4,ab4,c5,f5] ~ [eb4,ab4,c5,f5] ~@13",
})).s("gm_electric_guitar_muted").gain(0.19)

// chords · electric guitar muted · "MTD GTR" · soft notes · Fm7
const electric_guitar_muted_2 = note(`<
  ~@7
  [~@6 [eb4,ab4,c5,f5] ~ [eb4,ab4,c5,f5] ~@7]
  ~@115
  [~@4 [eb4,ab4,c5,f5] ~ [eb4,ab4,c5,f5] ~ [eb4,ab4,c5,f5] ~@7]
  ~@14
>`).s("gm_electric_guitar_muted").gain(0.08)

// other · xylophone · "Xylaphon"
const xylophone = note(`<
  ~@2 A B C ~ A B C ~ A B C ~ A B C ~ A B C ~@16 D E ~@46 D E ~@33 C ~ A B C ~ A B C ~ A B C ~ A B C ~
>`.pickRestart({
  A: "~@10 c3!2 eb3!2 e3 ~", B: "f3 ~@15", C: "~@9 f4 eb4 c4 bb3 ~ c4 ~",
  D: "~@5 [f4,ab4] [g4,bb4] [ab4,c5] ~ c5 [c5,f5] [ab4,c5] ~ [g4,bb4] ~ [ab4,c5]", E: "~ [g4,bb4] [f4,ab4] ~@13",
})).s("gm_xylophone").gain(0.19)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!136 x>").gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@16 [~@3 x] ~@3 [~@3 x] [~ x ~ x]!116 x>").gain(0.45)

// drums · clap
const clap = s("cp").struct("<~@9 [~ x ~ x]!12 [~ x ~@2]!116 ~>").gain(0.45)

// drums · low tom
const low_tom = s("lt").struct("<~@13 [~@3 x]!3 ~ [~@3 x]!3 ~ [~@3 x]!116 ~>").gain(0.45)

// drums · hihat
const hihat = s("hh").struct(`<
  A ~@15 B ~@3 B C D@7 C D@7 C D@7 C D@7 C D@7 C D@7 C D@7 C D@7 C D@7 C D@7 C D@7 C D@7 C D@7 C D@7 C D@3 ~
>`.pickRestart({
  A: "x!4", B: "x!6 ~@2", C: "~@4 x ~ x!3 ~ x!3 ~ x!2", D: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@13 [~@3 x]!3 ~ [~@3 x]!3 ~ [~@3 x]!116 ~>").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@16 [~@7 x] ~@3 [~@7 x] ~@117>").gain(0.35)

// drums · crash
const crash = s("cr").struct(`<
  ~@21 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@4
>`.pickRestart({
  A: "x",
})).gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~@5 [~@3 x]!4 [~ x ~ x]!128 ~>").gain(0.45)

stack(
  piano, bass, epiano2, string_ensemble_1, brass_section, electric_guitar_muted, electric_guitar_muted_2, xylophone,
  kick, snare, clap, low_tom, hihat, mid_tom, open_hat, crash, tambourine
)

More by Herb Alpert