Strudelify

Into The Night

B.B. King

KeyB♭ majorTempo102 bpm
0:00/0:00
// Into The Night — B.B. King
// 102 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 9 "OVERDRIVE" overdriven guitar (copy of ch 7 "JAZZ GTR" electric guitar jazz); ch 12 "OVERDRIVE" overdriven guitar (copy of ch 7 "JAZZ GTR" electric guitar jazz, 0.24 beats late)
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(102/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 · "A.PIANO 1"
const piano = note(`<
  ~ A@2 B@4 C@3 D E F G H I J K D E F L M N O P@2 Q@4 R@3 D E S G H ~@2 K D E T N U V W P@2 X@4 Y@2 Z AA I J AB AC AB AD
  P@2 AE@4 AF@3 D E S G H I J K D E AG N U V W AH@2 AI@4 Y@2 AJ@6 ~@2
>`.pickRestart({
  A: "[~@2 [bb3,d4,g4] [a3,c4,f4]@13]/2", // Gm F
  B: "[~@4 [bb3,d4,g4]@2 [a3,c4,f4]@7 ~ [g3,bb3,eb4]@7 ~ [gb3,bb3]@7 ~ [f3,bb3,d4]@4 ~@2 [bb3,d4,g4]@2 [a3,c4,f4]@24 ~@2]/4", // Gm F Eb Gb Bb Gm F
  C: "[~@4 [bb3,d4,g4]@2 [a3,c4,f4]@7 ~ [g3,bb3,eb4]@7 ~ [gb3,bb3]@7 ~ [f3,bb3,d4]@17 ~]/3", // Gm F Eb Gb Bb
  D: "gb3@11 ~@3 bb3@2, [bb3,d4]@7 ~, ~@3 gb3", E: "[f3,bb3,d4]@7 ~ [f3,a3,c4]@7 ~", F: "g3@13 ~ g3@2, [e3,c4]",
  G: "[g3,bb3,eb4]@7 ~ [f3,bb3,d4]@7 ~", H: "[eb3,g3,bb3]@7 ~ [eb3,g3,bb3,c4]@8",
  I: "~@2 [f3,bb3] [d3,g3]@3 [c3,f3] [d3,g3]", J: "[f3,bb3] ~ [f3,bb3] [d3,g3]@5",
  K: "[f3,bb3]@6 ~ bb3, d4@7 ~, ~@3 f3", L: "g3@7 g3, [bb3,eb4]", M: "[f3,bb3,d4]@3 [f3,a3,c4]@5",
  N: "[g3,bb3,eb4] [f3,bb3,d4]", O: "[eb3,g3,bb3]@2 [eb3,g3,c4] [gb3,bb3,d4]", P: "[~@4 [bb3,d4,g4] ~ [a3,c4,f4]@26]/2",
  Q: "[~@4 [bb3,d4,g4] ~ [a3,c4,f4]@7 ~ [g3,bb3,eb4]@7 ~ [gb3,bb3]@7 ~ [f3,bb3,d4]@4 ~@2 [bb3,d4,g4] ~ [a3,c4,f4]@24 ~@2]/4", // Gm F Eb Gb Bb Gm F
  R: "[~@4 [bb3,d4,g4] ~ [a3,c4,f4]@7 ~ [g3,bb3,eb4]@7 ~ [gb3,bb3]@7 ~ [f3,bb3]@14 ~@2 bb3@2, ~@30 d4@17 ~, ~@11 f3]/3", // Gm F Eb Gb Bb5
  S: "[e3,g3,c4]@8 [f3,bb3,c4] ~ [e3,g3,c4]@6", T: "[e3,g3,c4]@5 ~ [f3,bb3,c4]@4 [e3,g3,c4] ~ [e3,g3,c4]@4",
  U: "g3@6 ~ bb3, eb3, bb3@7 ~, ~@3 g3", V: "[g3,bb3,eb4]!2 [f3,bb3,d4]!2",
  W: "[eb3,g3,bb3]!2 [eb3,g3,c4] [gb3,bb3,d4]", // Eb Cm Gbaug
  X: "[~@4 [bb3,d4,g4] ~ [a3,c4,f4]@7 ~ [g3,bb3,eb4]@7 ~ [gb3,bb3,d4]@7 ~ [f3,bb3,d4]@4 ~@2 [bb3,d4,g4] ~ [a3,c4,f4]@24 ~@2]/4", // Gm F Eb Gbaug Bb Gm F
  Y: "[~@4 [bb3,d4,g4] ~ [a3,c4,f4]@7 ~ [g3,c4,e4]@18]/2", Z: "[g3,bb3,eb4]@7 ~", AA: "[gb3,bb3,d4]",
  AB: "[g3,bb3,eb4]", AC: "[f3,bb3,d4]", AD: "[eb3,g3,c4]@3 [gb3,bb3,d4]",
  AE: "[~@4 [bb3,d4,g4] ~ [a3,c4,f4]@7 ~ [g3,bb3,eb4]@7 ~ [gb3,bb3,eb4]@7 ~ [f3,bb3,d4]@4 ~@2 [bb3,d4,g4] ~ [a3,c4,f4]@24 ~@2]/4", // Gm F Eb Ebm Bb Gm F
  AF: "[~@4 [bb3,d4,g4] ~ [a3,c4,f4]@7 ~ [g3,bb3,eb4]@7 ~ [gb3,bb3,d4]@7 ~ [f3,bb3,d4]@18]/3", // Gm F Eb Gbaug Bb
  AG: "[e3,g3,c4]@6 [f3,bb3,c4]@3 ~ [e3,g3,c4] ~ [e3,g3,c4]@4", AH: "[~@4 [bb3,d4,g4] ~ [a3,f4]@26]/2",
  AI: "[~@4 [bb3,d4,g4] ~ [a3,f4]@7 ~ [g3,bb3,eb4]@7 ~ [gb3,bb3,d4]@7 ~ [f3,d4]@4 ~@2 [bb3,g4] ~ [a3,f4]@24 ~@2]/4", // Gm Dm Eb Gbaug Dm Eb Dm
  AJ: "[~@4 [bb3,d4,g4] ~ [a3,c4,f4]@7 ~ [g3,bb3,eb4]@7 ~ [gb3,bb3,d4]@7 ~ [f3,bb3,d4]@5 ~ [bb3,d4,g4]@2 ~@6 [g4,d5,g5]@6 ~@2 [g4,d5,g5]@6 ~@2 [g4,d5]@4 ~@4 [bb3,d4,g4] ~ [a3,c4,f4]@7 ~ [g3,c4,e4]@18, ~@19 [a3,f4]@12 ~@17, ~@10 g5 ~@5]/6", // Gm F Eb Gbaug Bb Gm G5 Gm …
})).s("gm_piano").gain(0.38).pan(0.4)

// bass · synth bass 2 · "SYN BASS 1"
const bass = note(`<
  ~ A B C D A B C D E F G E H I J K E F G E L M H N A B C D A B C D O P Q R H I J K E F G S H T H N A B C D A U C V E P
  W X E P Y Z A B C D A AA C D E P Q AB AC AD W AE E F G S H T H N A B C D A AF C AG C AH AI AA Q L ~@2
>`.pickRestart({
  A: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ d1@2 f1 ~", B: "g1 ~ g1 ~ f1 ~ g1 ~ g1 f1 g1@2 d1@2 bb1@2",
  C: "g1 ~ g1 ~ g1 ~ g1 ~ f1 ~ f1 ~ f1@2 f1 ~", D: "eb1 ~ eb1 ~ eb1@2 eb1 ~ d1 ~ d1 ~ d1 ~ d1 ~",
  E: "c1 ~ c1 ~ c1 ~ c1 ~ c1 ~ c1 ~ c1 ~ c1 ~", F: "d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ f1@2",
  G: "g1@2 g1 ~ g1 ~ g1 ~ f1 ~ f1 ~ f1 ~ f1 ~", H: "c1 ~ c1 ~ c1 ~ c1 ~ d1 ~ d1 ~ d1 ~ d1 ~",
  I: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ f1 ~ f1 ~ f1 ~ f1 ~", J: "g1 ~ g1 ~ g1@2 g1 ~ g1 ~ g1 ~ d1 ~ f1 ~",
  K: "g1 ~ g1 ~ f1 ~ g1@2 g1 ~ g1 ~ g1 f1 d1@2", L: "c1 ~ c1 ~ c1 ~ c1 ~ c1 ~ c1 ~ c1@2 c1 ~",
  M: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1@2 g1 ~", N: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ f1 ~ f1 eb1 d1@3 ~",
  O: "c1 ~ c1 ~ c1@2 c1 ~ c1@2 c1 ~ c1 ~ c1 ~", P: "d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~",
  Q: "g1 ~ g1 ~ g1 ~ g1 ~ f1 ~ f1 ~ f1 ~ f1 ~", R: "c1 ~ c1 ~ c1 ~ c1 ~ bb0 ~ c1 ~ c1 ~ c1 ~",
  S: "c1 ~ c1 ~ c1 ~ bb0@4 c1 ~ c1 ~ c1 ~", T: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ d1 ~",
  U: "g1 ~ g1 ~ f1 ~ g1 ~ g1 f1 g1@2 d1@2 bb1 g1", V: "c1 ~ c1 ~ c1@2 c1 ~ c1 ~ c1 ~ bb0 ~ c1 ~",
  W: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ d1 ~ f1 ~", X: "g1 ~ g1@2 f1 ~ g1 ~ g1 ~ g1 ~ g1 f1 d1@2",
  Y: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~", Z: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 eb1 d1@2 f1 d1",
  AA: "g1 ~ g1 ~ f1 ~ g1 ~ g1 f1 g1@2 d1@2 bb1 ~", AB: "c1 ~ c1 ~ c1 ~ c1 ~ bb0@2 c1 ~ c1 ~ c1 ~",
  AC: "c1 ~ c1 ~ c1@2 c1 ~ d1 ~ d1 ~ d1 ~ d1 ~", AD: "eb1 ~ eb1@2 eb1 ~ eb1 ~ f1 ~ f1 ~ f1 ~ f1 ~",
  AE: "g1 ~ g1 ~ f1 ~ g1 ~ g1 ~ g1 ~ g1 f1 d1 ~", AF: "g1 ~ g1 ~ f1 ~ g1 ~ g1 f1 g1@2 d1 ~ bb1 ~",
  AG: "c1 ~ c1 ~ c1@2 c1 ~ c1 ~ c1 ~ c1 d1 bb1@2", AH: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ d1 ~ d1 ~ d1 ~ d1 ~",
  AI: "g1 ~ g1 ~ g1 ~ g1 ~ g1@2 g1 ~ d1 ~ f1 ~",
})).s("gm_synth_bass_2").gain(0.49)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~ A@6 B@3 C D E F G H I J C D E K L M N O@6 P@3 C D Q F G ~@2 J C D R S T U V W@8 K X H I K Y K Z O@6 AA@3 C D Q F G H
  I J C D AB S T U V W@8 AC@6 ~@2
>`.pickRestart({
  A: "[~@4 [g4,bb4,d5]@2 [f4,a4,c5]@29 ~ [g4,bb4,d5]@2 [f4,a4,c5]@8 [eb4,g4,bb4]@6 ~@2 [bb3,eb4,gb4]@7 ~ [bb3,d4,f4]@5 ~ [g4,bb4,d5]@2 [f4,a4,c5]@26]/6", // Gm F Gm F Eb Ebm Bb Gm …
  B: "[~@4 [g4,bb4,d5]@2 [f4,a4,c5]@6 ~@2 [eb4,g4,bb4]@6 ~@2 [bb3,eb4,gb4]@7 ~ [bb3,d4,f4]@17 ~]/3", C: "[bb3,d4,gb4]",
  D: "[bb3,d4,f4] [a3,c4,f4]", E: "[g3,c4,e4]@15 ~", F: "[g3,bb3,eb4] [f3,bb3,d4]", G: "[g3,bb3,eb4] [bb3,c4,eb4,f4]",
  H: "~@2 [f3,bb3] [d3,g3]@3 [c3,f3] [d3,g3]", I: "[f3,bb3] ~ [f3,bb3] [d3,g3]@5", J: "[bb3,d4,f4]", K: "[g3,bb3,eb4]",
  L: "[f3,bb3,d4]@3 [f3,a3,c4]@5", M: "[g3,bb3,eb4]@4 [f3,bb3,d4]@3 ~",
  N: "[eb3,g3,bb3]@4 [eb3,g3,c4] ~ [gb3,bb3,d4]@2", // Eb Cm Gbaug
  O: "[~@4 [bb4,d5] ~ [f4,a4,c5]@29 ~ [bb4,d5] ~ [f4,a4,c5]@8 [eb4,g4,bb4]@6 ~@2 [bb3,eb4,gb4]@7 ~ [bb3,d4,f4]@5 ~ [g4,bb4,d5] ~ [f4,a4,c5]@26, ~@2 g4 ~@15 g4 ~@29]/6", // Bb F Bb F Eb Ebm Bb Gm …
  P: "[~@4 [g4,bb4,d5] ~ [f4,a4,c5]@6 ~@2 [eb4,g4,bb4]@6 ~@2 [bb3,eb4,gb4]@7 ~ [bb3,d4,f4]@17 ~]/3", // Gm F Eb Ebm Bb
  Q: "[g3,c4,e4]@8 [bb3,f4] ~ [g3,c4,e4]@6, ~@4 c4 ~@3", R: "[g3,c4,e4]@6 [bb3,c4,f4]@4 [g3,c4,e4] ~ [g3,c4,e4]@4",
  S: "[g3,bb3,eb4] [bb3,d4], ~@4 f3@3 ~", T: "[eb3,g3,bb3]", U: "[g3,bb3,eb4]!2 [f3,bb3,d4]!2",
  V: "[eb3,g3,bb3]!2 [eb3,g3,c4] [gb3,bb3,d4]", // Eb Cm Gbaug
  W: "[~@4 [bb4,d5] ~ [f4,a4,c5]@29 ~ [bb4,d5] ~ [f4,a4,c5]@8 [eb4,g4,bb4]@6 ~@2 [bb3,d4,gb4]@7 ~ [bb3,d4,f4]@5 ~ [g4,bb4,d5] ~ [f4,a4,c5]@28 ~@2 [g4,bb4,d5] ~ [f4,a4,c5]@6 ~@2 [e4,g4,c5]@18, ~@2 g4 ~@15 g4 ~@45]/8", // Bb F Bb F Eb Bbaug Bb Gm …
  X: "[gb3,bb3,d4]", Y: "[f3,bb3,d4]", Z: "[eb3,g3,c4]@3 [gb3,bb3,d4]",
  AA: "[~@4 [g4,bb4,d5] ~ [f4,a4,c5]@6 ~@2 [eb4,g4,bb4]@7 ~ [bb3,d4,gb4]@7 ~ [bb3,d4,f4]@18]/3", // Gm F Eb Bbaug Bb
  AB: "[g3,c4,e4]@6 [bb3,c4,f4]@3 ~ [g3,c4,e4] ~ [g3,c4,e4]@4", // C Bbsus2 C
  AC: "[~@4 [g4,bb4,d5] ~ [f4,a4,c5]@6 ~@2 [eb4,g4,bb4]@6 ~@2 [bb3,d4,gb4]@7 ~ [bb3,d4,f4]@5 ~ [g4,bb4,d5] ~ [f4,a4,c5]@28 ~@2 [g4,bb4,d5] ~ [f4,a4,c5]@6 ~@2 [e4,g4,c5]@18]/6", // Gm F Eb Bbaug Bb Gm F Gm …
})).s("gm_epiano2").gain(0.29).pan(0.7)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  ~ A@4 B@5 C D E F G ~@2 H C D E I J K L M@2 N@4 O@3 C D P F G Q@2 H C D R K S K L M@2 T@4 U@2 I C V@2 I H S W M@2 N@4
  X@3 C D P F Y V@2 H C D R K S K L M@2 T@4 U@2 Z@4 U@2 ~@2
>`.pickRestart({
  A: "[~@6 g6@31 ~ a6@8 g6@8 gb6@10]/4", B: "[g6@37 ~ a6@7 ~ g6@8 gb6@8 [bb4,d5,f5]@18]/5", C: "[bb4,d5,gb5]",
  D: "[bb4,d5,f5] [a4,c5,f5]", E: "[g4,c5,e5]", F: "[g4,bb4,eb5] [f4,bb4,d5]", G: "[g4,bb4,eb5] [g4,c5,f5]",
  H: "[bb4,d5,f5]", I: "[bb4,eb5,g5]", J: "[bb4,d5,f5]@3 [a4,c5,f5]@5", K: "[bb4,eb5,g5] [bb4,d5,f5]",
  L: "[g4,bb4,eb5]@3 [bb4,d5,f5]", M: "[~@2 [g5,bb5,d6] [f5,a5,c6]@13]/2",
  N: "[~@2 [g5,bb5,d6] [f5,a5,c6]@4 [eb5,g5,bb5]@4 [eb5,gb5,bb5]@4 [d5,f5,bb5]@3 [g5,bb5,d6] [f5,a5,c6]@13]/4", // Gm F Eb Ebm Bb Gm F
  O: "[~@2 [g5,bb5,d6] [f5,a5,c6]@4 [eb5,g5,bb5]@4 [eb5,gb5,bb5]@4 [bb4,d5,f5]@9]/3", P: "g4@8 bb4@2 g4@5 ~, [c5,e5]",
  Q: "[d6,g6]/2", R: "[g4,e5]@3 [bb4,f5]@2 [g4,e5]@3, c5", S: "[g4,bb4,eb5]",
  T: "[~@2 [g5,bb5,d6] [f5,a5,c6]@4 [eb5,g5,bb5]@4 [d5,gb5,bb5]@4 [d5,f5,bb5]@3 [g5,bb5,d6] [f5,a5,c6]@13]/4", // Gm F Eb Daug Bb Gm F
  U: "[~@2 [g5,bb5,d6] [f5,a5,c6]@4 [e5,g5,c6]@9]/2", V: "[~ [d6,g6]@7]/2", W: "[g4,bb4,eb5]@3 [gb4,bb4,d5]",
  X: "[~@2 [g5,bb5,d6] [f5,a5,c6]@4 [eb5,g5,bb5]@4 [d5,gb5,bb5]@4 [bb4,d5,f5]@9]/3", Y: "[g4,bb4,eb5] [g4,c5,eb5]",
  Z: "[~@4 [f5,bb5,d6]@2 [f5,a5,c6]@8 [eb5,g5,bb5]@8 [d5,gb5,bb5]@8 [bb4,d5,f5]@5 ~ [g5,bb5,d6]@2 [f5,a5,c6]@26]/4", // Bb F Eb Daug Bb Gm F
})).s("gm_percussive_organ").gain(0.22).pan(0.4)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@5 A@2 B@3 ~@5 C@3 ~@6 D E F G@3 H I@3 ~@5 J K ~@6 L@2 ~ M N O@3 P Q R S T U V W@2 X@2 Y Z AA@2 AB AC@3 ~@5 AD AE AF
  ~@5 AG@2 AH AI AJ AK AL AM AN AO AP@2 AQ@2 AR AS ~@2
>`.pickRestart({
  A: "[~@13 g5@16 ~@3]/2", B: "[~@4 bb4 ~ c5@5 ~ c5 ~ bb4@5 ~ g4 ~ g4@5 ~ f4 ~ bb4@5 ~@13]/3",
  C: "[~@6 eb5@6 ~@2 c5@5 ~ bb4@2 g4@5 ~ f4 ~ bb4@4 g4 ~@13]/3", D: "c5@11 ~@5",
  E: "~@4 c5@2 bb4 g4 c5@2 bb4@2 ~@2 db5@2", F: "~@4 bb4@2 ~@2 g4@2 f4@3 ~@3",
  G: "[~@2 g4@2 bb4 ~ c5 ~ c5@3 bb4 c5 ~ bb4@6 c5 ~ g4@7 ~ bb4@5 ~@3 e5@8 ~@2]/3",
  H: "c5 ~ c5 ~ bb4 ~ bb4@2 g4@4 e4@2 ~@2", I: "[~@4 bb4 ~ c5@6 c5 ~ bb4@8 g4@8 bb4@4 ~@14]/3", J: "~@3 e5@4 ~",
  K: "c5 ~ c5 ~ bb4@2 ~@2 bb4@2 g4@4 ~@2", L: "[~@14 db5@13 ~@5]/2", M: "~@2 gb5 ~ g5 ~ a5@8 ~@2",
  N: "db5@2 c5@2 bb4 ~ g4@4 f4 ~@5", O: "[~@4 a4 ~ c5@5 ~ c5 ~ bb4@4 c5@2 c5@3 ~ g4@6 bb4@4 ~@8 g5@6]/3",
  P: "~ f5 ~ eb5 ~ eb5 ~ c5", Q: "~ a4@5 ~@2", R: "~@4 a4@2 g4 ~ g4@4 a4 ~ a4@2", S: "~ g4@2 ~@3 f4@2 bb4 ~ c5@6",
  T: "d5 ~ g4 g4@3 e4 ~", U: "~@4 bb4 ~ c5 ~ c5@3 ~ c5 ~ bb4 ~", V: "c5@2 ~ db5@2 ~ bb4@2 g4@6 bb4@2",
  W: "[~@10 gb5@2 ~@2 g5@4 [c5,e5] ~@3 c5@2 c5 ~ c5 ~ bb4@4]/2", X: "[g4@10 ~@2 bb4@2 c5@5 ~@9 bb4@2 a4@2]/2",
  Y: "~@4 f4@2 c4@2 ~@4 bb4 ~ a4@2", Z: "g4@4 f4 ~@7 bb4@2 a4@2", AA: "[~@4 g4@2 bb4@2 ~@2 c5@2 ~@2 db5@11 ~@5 c5@2]/2",
  AB: "~ bb4@2 ~ c5@3 ~ bb4@2 ~@2 c5 ~ c5@2", AC: "[~ bb4@2 ~@7 g4@2 bb4 ~ c5@5 bb4 c5@2 ~@2 bb4@4 c5 ~ c5@10 ~@8]/3",
  AD: "~@3 e5@3 ~ c5", AE: "~@2 c5 ~ bb4@3 ~ bb4@3 ~ g4@2 gb4@2", AF: "~@2 e4 ~@5", AG: "[~@14 bb5@15 ~@3]/2",
  AH: "~@3 c5@4 ~", AI: "~@3 g4 g4@3 ~", AJ: "~@4 bb4 ~ c5@2 c5@3 ~ c5@2 bb4 ~",
  AK: "c5@3 ~ c5@2 bb4@2 ~@2 bb4 ~ c5@2 c5@2", AL: "db5 ~ bb4 g4 g4@2 bb4 ~", AM: "bb4 c5 ~@4 bb4!2",
  AN: "~@2 a4@2 a4 ~ g4@8 f4 ~", AO: "~@4 c5@2 c5 ~ c5 ~ bb4@4 c5@2", AP: "[~@3 bb4@2 ~ c5@4 ~ c5 ~@2 bb4 ~]/2",
  AQ: "[a4@5 ~ g4@2 ~@4 f4 ~ a4@5 ~@9 c5@2 bb4@2]/2", AR: "~@2 g5@11 ~@3", AS: "~@4 f5@2 ~@2 c5@2 bb4 ~@5",
})).s("gm_electric_guitar_jazz").gain(0.45)

// bass · slap bass 1 · "SLAPBASS 1"
const bass_2 = note(`<
  ~@8 A ~@7 B@2 ~@8 C ~@3 D ~@9 E ~@9 F ~@3 G ~@3 H ~@7 D ~@3 I ~@11 A ~@7 J ~@3 K L ~@6 M ~@2
>`.pickRestart({
  A: "~@12 c3@2 bb2 g2", B: "[~@10 c3 d3@2 ~ bb2 c3@2 ~@15]/2", C: "~@11 g2 bb2@2 g2@2", D: "~@6 c3@2 bb2 ~ f2 ~@5",
  E: "~@8 bb2 c3 ~@2 g2 ~ d2 ~", F: "~@8 bb2 c3@2 f2 ~ f2!2 g2", G: "~@8 f2 g2 g1!2 db2 c2 bb1 ~",
  H: "~@10 g2 ~ bb2 ~@3", I: "~ d2 ~ d2!3 g2 bb2 d2!2 f2 g2 a1!2 bb1 c2", J: "~@6 d2!3 bb2 d2!2 bb2@4",
  K: "~@10 d2 ~ bb1 c2@2 a1", L: "f2@5 ~@11", M: "~@10 bb2@2 c3 bb2 f2 bb2",
})).s("gm_slap_bass_1").gain(0.36).pan(0.4)

// bass · slap bass 1 · "SLAPBASS 1" · soft notes
const bass_soft = note("<~@30 A ~@9 B ~@13 C ~@3 D ~@7 A ~@27 E ~@10>".pickRestart({
  A: "~@9 f2 ~ g2 ~@4", B: "~@13 f2 ~@2", C: "~@15 g1", D: "~@11 g2 ~ g2 ~@2", E: "~@11 c2 ~@4",
})).s("gm_slap_bass_1").gain(0.22).pan(0.4)

// chords · lead 5 charang · "CHARANG"
const lead_5_charang = note("<~@15 A B ~@22 A B ~@18 A B ~@18 A B ~@24>".pickRestart({
  A: "~@2 [f3,bb3] [d3,g3]@3 [c3,f3] [d3,g3]", B: "[f3,bb3] ~ [f3,bb3] [d3,g3]@5",
})).s("gm_lead_5_charang").gain(0.3).pan(0.4)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@15 A B ~@22 A C ~@18 A C ~@18 D C ~@24>".pickRestart({
  A: "~@2 [f3,bb3] [d3,g3]@3 [c3,f3] [d3,g3]", B: "[f3,bb3]@2 ~@2 [f3,bb3]@2 ~ d3@9, ~@3 g3@5",
  C: "[f3,bb3] ~ [f3,bb3] [d3,g3]@5", D: "~@4 [f3,bb3]@2 [d3,g3]@6 [c3,f3]@2 [d3,g3] ~",
})).s("gm_overdriven_guitar").gain(0.3).pan(0.8)

// other · synth drum
const synth_drum = note(`<
  A ~@7 B ~@5 C ~@9 D ~@13 E ~@9 F ~@15 F ~@13 G ~@9 H ~@3 I ~ J ~ K ~ L ~@3 M ~@2
>`.pickRestart({
  A: "~@10 c4 ~@3 a3 ~", B: "~@8 b3 ~ b3 ~ bb3!2 c3 ~", C: "~@10 f4 ~@3 f4 ~", D: "~@8 b3 ~ b3 ~ bb3!2 bb2 ~",
  E: "~@8 bb3 ~ bb3 ~ gb3!2 bb2 ~", F: "~@2 a3 ~ a3 ~ a3 ~ a3 ~ g3 ~ g3!2 bb2 ~", G: "~@8 bb3 ~ bb3 ~@3 bb3 ~",
  H: "~@8 a3 ~ gb3 ~ g3!2 bb2 ~", I: "~@7 eb3", J: "~@14 a3 ~", K: "~@2 a3 ~ a3 ~ a3 ~ a3 ~ eb3 ~ f3!2 bb2 ~",
  L: "~@7 bb2", M: "~@6 c4 ~ c4 ~ f3 ~ f3 ~ bb2 ~",
})).s("gm_synth_drum").gain(0.45)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!102 ~@2>").gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  A B@7 C B@5 C B D B@7 C B@7 E B@5 C B D B@7 C B@9 D B@5 F B@7 E B@5 C B D B@7 C B@11 D B@2 ~@2
>`.pickRestart({
  A: "~@8 x ~@3 x!2 ~@2", B: "~ x ~ x", C: "~@4 x ~@7 x!2 ~@2", D: "~@4 x ~@7 x ~ x!2", E: "~@2 x ~@2 x!3",
  F: "~@4 x ~@5 x ~ x!2 ~@2",
})).gain(0.49)

// drums · clap
const clap = s("cp").struct(`<
  ~@15 A ~@9 A ~@3 A ~@9 A ~@9 A ~@6 A ~@2 A ~@2 A ~@3 A ~ A@2 ~@19 A ~@3 A ~@2 A ~@2 A ~@5
>`.pickRestart({
  A: "~@3 x",
})).gain(0.55)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A B A C A@5 B A C A@3 B A B A C A@5 D A C A C A C A B A C A@3 B A B A C A@5 D A C A C A C A B A C A C A@3 D A C A C
  A C A D A C A@3 B A B A C A C A@3 B A B A@4 C B C A C A ~@2
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@3 x", C: "~ x ~ x ~ x ~@2", D: "~ x ~ x ~@4",
})).gain(0.22)

// drums · open hat
// … 18 more lines

More by B.B. King