Strudelify

Rama Lama Ding Dong

Sharpe

KeyC majorTempo127 bpm
0:00/0:00
// Rama Lama Ding Dong — Sharpe
// 127 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 72 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(127/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@4 A B C B C B D E A B C B C B D E A B C B C B D E F G H I J K L@2 M N O N O N O P M N O N O N O P ~@3 A B C B C B D
  E A B C B C B Q@2 ~
>`.pickRestart({
  A: "~@6 c2@2 ~ c2@2 ~", B: "a1@3 ~@3 a1@4 ~@2 f1@4 ~@2 f1@4 ~@2", C: "g1@3 ~@3 g1@2 ~ b1@3 c2@4 ~@2 c2@4 ~@2",
  D: "g1@3 ~@3 g1@2 ~ b1@3 c2@4 ~@2 c2@3 ~@3", E: "f2@4 ~@2 f2@4 ~@2 c2@3 ~@9", F: "~@9 f1@2 ~",
  G: "f1@3 ~@3 f1@4 ~@2 f1@3 c2@3 f2@5 ~, ~@18 e2 ~@5", H: "c2@4 ~@2 f2@2 ~ e2@2 ~ d2@2 ~ c2@2 ~ c2@4 ~@2",
  I: "g1@3 ~@3 c2@4 ~@2 g1@3 ~@3 c2@4 ~@2", J: "g1@4 ~@2 c2 ~@2 c2@2 ~ d2 ~@2 e2 ~@2 f2@4 ~@2",
  K: "c2@3 ~@3 f2@4 ~@2 c2@3 ~@3 f2@4 ~@2", L: "[c2@2 ~ f2@2 ~ c2@2 ~ d2@12 ~@3]/2", M: "~@9 c2@2 ~",
  N: "c2@4 ~@2 a1@3 ~@3 a1@4 ~@2 f1@4 ~@2", O: "f1@4 ~@2 g1@3 ~@3 g1@2 ~ b1@3 c2@4 ~@2",
  P: "c2@3 ~@3 f2@4 ~@2 f2@4 ~@2 c2@3 ~@3", Q: "[g1@3 ~@3 g1@2 ~ b1@3 c2@24 ~@12]/2",
})).s("gm_acoustic_bass").gain(0.44)

// other · tenor sax
const tenor_sax = note("<~@43 A B@3 C D E F G ~@4 H I J K L M N ~@9>".pickRestart({
  A: "~@18 g4@3 g4 ~ g4",
  B: "[g4@3 ~ g4!2 ~ g4!2 f4 ~ d4 e4@3 g4@2 ~ c5@18 a4 g4 ~ e4 d4 ~ c4@11 ~ c4@6 a3@6 g3 ~ g3 ~@3]/3",
  C: "g3@3 ~@7 g3 ~ e3 a3!5 a3@2 ~ c4 ~@2", D: "c4@2 ~ a3@3 b3@2 d4 ~@3 g4@4 ~@8, ~@3 c4 ~@20",
  E: "e4!3 [e4,g4] ~@2 c5@18", F: "~@6 a4 ~@2 a4!2 ~ g4 ~@2 g4!2 ~ e4 ~ e4 d4 ~@2",
  G: "c4@5 ~ c4 ~ c4@3 ~ c4@3 ~@3 c4 ~@5", H: "~@15 a4 ~ a4 c5 ~ c5 a4 ~ a4", I: "g4 ~@2 g4 ~ e4 ~@2 d4@4 ~ c4 ~@10",
  J: "~@9 g4 f4 ~ e4 ~@11", K: "~@8 d4 f4@2 g4 ~@12", L: "~@3 a4 ~@2 c5@2 d5 c5 ~@2 c5 ~@8 c5 ~@2",
  M: "d5@8 ~@4 c5 ~ c5@6 ~@4", N: "g4 ~@9 d#4 d4 c4@2 ~@10",
})).s("gm_tenor_sax").gain(0.46).pan(0.6)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@4 A B C B C B C D A B C B C B C D E F G F G F G H I J K L M J N@2 O P Q P Q P Q R O P Q P Q P Q R ~@3 A B C B C B C
  D A B C B C B S ~@2
>`.pickRestart({
  A: "~@12 [c4,e4,g4]@3 [c2,c3] [c4,e4,g4] ~ [c4,e4,g4] [c2,c3] ~ [c4,e4,g4]@2 ~", // C
  B: "[c4,e4,a4]@3 [a1,a2,c4,e4,a4] ~@2 [c4,e4,a4]@2 ~ [c4,e4,a4]@2 ~ [c4,f4,a4]@3 [f1,f2] [c4,f4,a4] ~ [c4,f4,a4] [f1,f2] ~ [c4,f4,a4]@2 ~, ~@9 [a1,a2] ~@14", // Am F A
  C: "[b3,d4,g4]@3 [g1,g2,b3,d4,g4] ~@3 [g1,g2] ~ [b3,d4,g4]@2 ~ [c4,e4,g4]@3 [c2,c3] [c4,e4,g4] ~ [c4,e4,g4] [c2,c3] ~ [c4,e4,g4]@2 ~, ~@3 [b3,d4,g4] ~@8", // G C G
  D: "[c4,f4,a4]@3 [f2,f3] [c4,f4,a4] ~@2 [f2,f3] ~ [c4,f4,a4]@2 ~ [c4,e4,g4]@2 ~@10, ~@3 [c4,f4,a4] ~@8", // F C F
  E: "~@12 [c4,e4,g4]@3 [c2,c3] ~ [c4,e4,g4]!2 ~ [c2,c3] [c4,e4,g4]@2 ~", // C
  F: "[c4,e4,a4]@3 [a1,a2,c4,e4,a4] ~@2 [c4,e4,a4]@2 ~ [c4,e4,a4]@2 ~ [c4,f4,a4]@3 [f1,f2] ~ [c4,f4,a4]!2 ~ [f1,f2] [c4,f4,a4]@2 ~, ~@9 [a1,a2] ~@14", // Am F A
  G: "[b3,d4,g4]@3 [g1,g2,b3,d4,g4] ~@2 [b3,d4,g4]@2 [g1,g2] [b3,d4,g4]@2 ~ [c4,e4,g4]@3 [c2,c3] ~ [c4,e4,g4]!2 ~ [c2,c3] [c4,e4,g4]@2 ~", // G C
  H: "[c4,f4,a4]@3 [f2,f3] ~ [c4,f4,a4] [c4,f4,a4]@2 [f2,f3] [c4,f4,a4]@2 ~ [c4,e4,g4]@2 ~@10", // F C
  I: "~@18 [c4,f4,a4]@3 [f1,f2] [c4,f4,a4] ~", // F
  J: "[c4,f4,a4] [f1,f2] ~ [c4,f4,a4]@2 ~ [c4,f4,a4]@3 [f1,f2,c4,f4,a4] ~@3 [f1,f2] ~ [c4,f4,a4]@2 ~ [c4,f4,a4]@3 [f1,f2] [c4,f4,a4] ~, ~@6 [c4,f4,a4] ~@5", // F
  K: "[c4,f4,a4] [f1,f2] ~ [c4,f4,a4]@2 ~ [c4,f4,a4]@3 [f1,f2,c4,f4,a4] ~@3 [f1,f2] ~ [c4,f4,a4]@2 ~ [c4,e4,g4]@3 [c2,c3] [c4,e4,g4] ~, ~@6 [c4,f4,a4] ~@5", // F C F
  L: "[c4,e4,g4] [c2,c3] ~ [c4,e4,g4]@2 ~ [c4,e4,g4]@3 [c2,c3,c4,e4,g4] ~@2 [c4,e4,g4]@2 ~ [c4,e4,g4]@2 ~ [c4,e4,g4]@3 [c2,c3] [c4,e4,g4] ~, ~@15 [c2,c3] ~@8", // C
  M: "[c4,e4,g4] [c2,c3] ~ [c4,e4,g4]@2 ~ [c4,e4,g4]@3 [c2,c3,c4,e4,g4] ~@2 [c4,e4,g4]@2 ~ [c4,e4,g4]@2 ~ [c4,f4,a4]@3 [f1,f2] [c4,f4,a4] ~, ~@15 [c2,c3] ~@8", // C F C
  N: "[[c4,f4,a4] [f1,f2] ~ [c4,f4,a4]@2 ~ [c4,f4,a4]@3 [f1,f2,c4,f4,a4] ~@3 [f1,f2] ~ [c4,f4,a4]@2 ~ [d3,f3,a3]@24 ~@6, ~@6 [c4,f4,a4] ~@17]/2", // F Dm F
  O: "~@18 [c4,e4,g4]@3 [c2,c3] [c4,e4,g4] ~", // C
  P: "[c4,e4,g4] [c2,c3] ~ [c4,e4,g4]@2 ~ [c4,e4,a4]@3 [a1,a2,c4,e4,a4] ~@2 [c4,e4,a4]@2 ~ [c4,e4,a4]@2 ~ [c4,f4,a4]@3 [f1,f2] [c4,f4,a4] ~, ~@15 [a1,a2] ~@8", // C Am F A
  Q: "[c4,f4,a4] [f1,f2] ~ [c4,f4,a4]@2 ~ [b3,d4,g4]@3 [g1,g2,b3,d4,g4] ~@3 [g1,g2] ~ [b3,d4,g4]@2 ~ [c4,e4,g4]@3 [c2,c3] [c4,e4,g4] ~, ~@6 [b3,d4,g4] ~@5", // F G C G
  R: "[c4,e4,g4] [c2,c3] ~ [c4,e4,g4]@2 ~ [c4,f4,a4]@3 [f2,f3] [c4,f4,a4] ~@2 [f2,f3] ~ [c4,f4,a4]@2 ~ [c4,e4,g4]@2 ~@4, ~@6 [c4,f4,a4] ~@5", // C F C F
  S: "[b3,d4,g4]@3 [g1,g2,b3,d4,g4] ~@3 [g1,g2] ~ [b3,d4,g4]@2 ~ [c2,c3,c4,e4,g4]@12, ~@3 [b3,d4,g4] ~@8", // G C G
})).s("gm_piano").gain(0.23).pan(0.3)

// chords · banjo
const banjo = note("<~@4 A@2 B@2 C@2 D@2 E@2 C@2 F@2 D@2 G@2 C@4 D@2 H@7 ~ I@8 J@8 ~@20>".pickRestart({
  A: "[~@12 [c3,e3,g3,c4,e4,c5]@3 e3 ~ c3 [c3,g3]@2 [c3,e3,g3,c4,e4,c5] [e3,c4]@2 [c3,e3,g3] [a2,e3,a3,c4]@3 [a2,e3,a3]@2 [a2,a3,c4] [a2,a3]@2 [a2,e3,a3,c4,e4,a4] [a2,e3,a3,c4]@2 a2 [c3,c4]@3 [c3,a3]@2 [f3,c4] c4 ~ [c3,f3,a3,c4,f4,a4] [c3,f3,a3,f4,a4]@2 [c3,f3,a3,c4], ~@15 [g3,c4]@2 e3@3 ~ g3 ~@7 [e3,e4,a4]@3 ~@4 f3@5 ~@7, ~@16 [e4,c5]@4 ~ [e4,c5]@6 [c4,e4] ~@2 c4 ~@2 [e4,a4]@6 a4@4 ~@5, ~@39 [c4,f4] ~ [a3,f4]@3 ~ c4 ~@2]/2", // C C5 C Am A5 Am A Am …
  B: "[~ [g3,b3]@3 [d3,b3,g4] b3!2 ~ [d3,g3,b3,g4,b4] [g3,b3]@3 [c3,e3,c4,e4,c5]@3 e3 ~ c3 [c3,g3]@2 [c3,e3,g3,c4,e4,c5] [c3,e3,c4]@2 [c3,e3,g3] [a2,e3,a3,c4]@3 [a2,e3,a3]@2 [a2,a3,c4] [a2,a3]@2 [a2,e3,a3,c4,e4,a4] [a2,e3,a3,c4]@2 a2 [c3,c4]@3 [c3,a3]@2 [f3,c4] c4 ~ [c3,f3,a3,c4,f4,a4] [c3,f3,a3,f4,a4]@2 [c3,f3,a3,c4], d3@3 ~@2 [d3,g3,g4]@3 ~ [d3,g4,b4]@7 [e4,c5]@4 ~ [e4,c5]@6 [c4,e4] ~@2 c4 ~@2 [e4,a4]@6 a4@4 ~@5, ~@12 g3 ~@2 [g3,c4]@2 e3@3 ~ g3 ~@7 [e3,e4,a4]@3 ~@4 f3@5 ~@7, ~@39 [c4,f4] ~ [a3,f4]@3 ~ c4 ~@2]/2", // G C C5 C Am A5 Am A …
  C: "[~ [g3,b3]@3 [d3,b3,g4] b3!2 ~ [d3,g3,b3,g4,b4] [g3,b3]@3 [c3,e3,c4,e4,c5]@3 e3 ~ c3 [c3,g3]@2 [c3,e3,g3,c4,e4,c5] [c3,e3,c4]@2 [c3,e3,g3] [a2,e3,a3,c4]@3 [a2,e3,a3]@2 [a2,a3,c4] [a2,a3]@2 [a2,e3,a3,c4,e4,a4] [a2,e3,a3,c4]@2 a2 [c3,c4]@3 [c3,a3]@2 [f3,c4] c4 ~ [c3,f3,a3,c4,f4,a4] [c3,f3,a3,f4,a4]@2 [c3,f3,a3,c4], d3@3 ~@2 [d3,g3,g4]@3 ~ [d3,g4,b4]@7 [e4,c5]@4 ~ [e4,c5]@6 [c4,e4] ~@2 c4 ~@2 [e4,a4]@6 [c4,f4] ~ [a3,f4]@3 ~ c4 ~@2, ~@12 g3 ~@2 [g3,c4]@2 e3@3 ~ g3 ~@7 [e3,e4,a4]@3 ~@4 f3@5 ~@7]/2", // G C C5 C Am A5 Am A …
  D: "[~ [g3,b3]@3 [d3,b3,g4] b3!2 ~ [d3,g3,b3,g4,b4] [g3,b3]@3 [c3,e3,c4]@3 [c3,e3]@2 [c3,c4] c3@2 [c3,e3,g3,c4] [c3,e3,g3,c4]@2 c3 [c3,g3,c4]@3 [c3,a3]@2 c3 c3@2 [c3,a3,c4,f4,a4] [c3,a3,c4,f4,a4]@3 [c3,e3,g3,e4,c5]@6 ~@6, d3@3 ~@2 [d3,g3,g4]@3 ~ [d3,g4,b4]@8 [e3,g3]@3 ~@4 e3@5 [f3,a3,c4,f4,a4]@3 f3@4 ~@12, ~@12 g3 ~@2 c4 ~@2 c4 ~ [e4,c5]@7 [c4,f4] ~@8 c4 ~@11]/2", // G C C5 F C G5 G Em …
  E: "[~@12 [c3,e3,g3,c4,e4,c5]@3 e3 ~ c3 [c3,g3]@2 [c3,e3,g3,c4,e4,c5] [c3,e3,c4]@2 [c3,e3,g3] [a2,e3,a3,c4]@3 [a2,e3,a3]@2 [a2,a3,c4] [a2,a3]@2 [a2,e3,a3,c4,e4,a4] [a2,e3,a3,c4]@2 a2 [c3,c4]@3 [c3,a3]@2 [f3,c4] c4 ~ [c3,f3,a3,c4,f4,a4] [c3,f3,a3,f4,a4]@2 [c3,f3,a3,c4], ~@15 [g3,c4]@2 e3@3 ~ g3 ~@7 [e3,e4,a4]@3 ~@4 f3@5 ~@7, ~@16 [e4,c5]@4 ~ [e4,c5]@6 [c4,e4] ~@2 c4 ~@2 [e4,a4]@6 a4@4 ~@5, ~@39 [c4,f4] ~ [a3,f4]@3 ~ c4 ~@2]/2", // C C5 C Am A5 Am A Am …
  F: "[~ [g3,b3]@3 [d3,b3,g4] b3!2 ~ [d3,g3,b3,g4,b4] [g3,b3]@3 [c3,e3,c4,e4,c5]@3 e3 ~ c3 [c3,g3]@2 [c3,e3,g3,c4,e4,c5] [e3,c4]@2 [c3,e3,g3] [a2,e3,a3,c4]@3 [a2,e3,a3]@2 [a2,a3,c4] [a2,a3]@2 [a2,e3,a3,c4,e4,a4] [a2,e3,a3,c4]@2 a2 [c3,a3,c4]@3 [c3,a3]@2 [f3,c4] c4 ~ [c3,f3,a3,c4,f4,a4] [c3,f3,a3,f4,a4]@2 [c3,f3,a3,c4], d3@3 ~@2 [d3,g3,g4]@3 ~ [d3,g4,b4]@7 [e4,c5]@4 ~ [e4,c5]@6 [c4,e4] ~@2 c4 ~@2 [e4,a4]@6 a4@4 ~@5, ~@12 g3 ~@2 [g3,c4]@2 e3@3 ~ g3 ~@7 [e3,e4,a4]@3 ~@4 f3@5 ~@7, ~@39 [c4,f4] ~ [a3,f4]@3 ~ c4 ~@2]/2", // G C C5 C Am A5 Am A …
  G: "[~@12 [c3,e3,g3,c4,e4,c5]@3 e3 ~ c3 [c3,g3]@2 [c3,e3,g3,c4,e4,c5] [c3,e3,c4]@2 [c3,e3,g3] [a2,e3,a3,c4]@3 [a2,e3,a3]@2 [a2,a3,c4] [a2,a3]@2 [a2,e3,a3,c4,e4,a4] [a2,e3,a3,c4]@2 a2 [c3,c4]@3 [c3,a3]@2 [f3,c4] c4 ~ [c3,f3,a3,c4,f4,a4] [c3,f3,a3,f4,a4]@2 [c3,f3,a3,c4], ~@15 [g3,c4]@2 e3@3 ~ g3 ~@7 [e3,e4,a4]@3 ~@4 f3@5 ~@7, ~@16 [e4,c5]@4 ~ [e4,c5]@6 [c4,e4] ~@2 c4 ~@2 [e4,a4]@6 [c4,f4] ~ [a3,f4]@3 ~ c4 ~@2]/2", // C C5 C Am A5 Am A Am …
  H: "[~@18 [c3,f3,a3,c4,f4,c5]@3 f3 ~ c3 [c3,a3]@2 [c3,f3,a3,c4,f4,c5] [f3,c4]@2 [c3,f3,a3] [f3,a3,c4]@3 [c3,f3,a3]@2 [c3,a3,c4] [c3,a3]@2 [c3,f3,a3,c4,f4,a4] [c3,f3,a3,c4]@2 c3 [c3,c4]@3 [c3,a3]@2 [f3,c4] c4 ~ [c3,f3,a3,c4,f4,a4] [c3,f3,a3,f4,a4]@2 [c3,f3,a3,c4] [f3,a3] ~@2 [a3,c4] ~ a3!2 [a3,c4,a4] [c3,f3] [c3,f3,a3,c4]@3 [c3,e3,g3,c4,e4,c5]@3 [e3,c4] ~ c3 [c3,g3]@2 [c3,e3,g3,c4,e4,c5] [c3,e3,c4]@2 [c3,e3,g3] [e3,c4]@3 [g3,c4,e4] g3 [c3,c4] c4 g4 [c3,e3,g3,c4,e4] [c3,e3,g3,c4]@2 c3 [c3,c4]@3 [c4,e4] ~ [e3,c4] c4 e4 [c3,e3,g3,c4] [c3,e3,g3,g4]@2 [c3,e3,g3,c4] [g3,c4] ~@2 [c4,g4] ~ c4!2 [c4,g4,c5] [c3,g3] [c3,g3,c4,c5]@3 [c3,f3,a3,c4,f4,c5]@3 f3 c5 c3 [c3,a3]@2 [c3,f3,a3,c4,f4,c5] [c3,f3,c4]@2 [c3,f3,a3] [f3,a3,c4]@3 [c3,f3,a3]@2 [c3,a3,c4] [c3,a3]@2 [c3,f3,a3,c4,f4,a4] [c3,f3,a3,c4]@2 c3 [c3,c4]@3 [c3,a3]@2 [f3,c4] c4 ~ [c3,f3,a3,c4,f4,a4] [c3,f3,a3,f4,a4]@2 [c3,f3,a3,c4] [f3,a3] ~@2 [a3,c4] ~ a3!2 [a3,c4,a4] [c3,f3] [c3,c4,a4]@8 ~, ~@21 [a3,c4]@2 f3@3 ~ a3 ~@2 c3 ~@4 [f3,f4,a4]@3 ~@4 f3@5 ~@7 c3@3 c3@2 [c3,f3]@3 ~@7 g3@2 e3@3 ~ g3 ~@2 [c3,g3] ~@2 [c3,e3]@2 [e3,e4]@3 ~ [e4,g4]@6 g4@4 g4@2 ~@7 g4@3 ~@2 g4@7 f4@4 ~ [f4,c5]@6 ~@6 [f4,a4]@6 ~@27, ~@22 [f4,c5]@4 ~ [f4,c5]@6 [c4,f4] ~@2 c4 ~@2 [f4,a4]@6 [c4,f4] ~ [a3,f4]@3 ~ c4 ~@6 c4@3 ~@2 a4@7 [e4,c5]@4 ~ [e4,c5]@6 ~ g4@2 [c3,g3]@2 ~@4 e3 ~@2 [c3,g3]@2 g3@3 ~@4 c3@3 c3@2 [c3,g3]@3 ~@9 f3@3 ~@4 c3 ~@4 [f3,f4,a4]@3 ~@4 f3@5 ~@7 c3@3 c3@2 [c3,f3]@3 ~ [f3,a3]@3 ~@6, ~@94 e4@3 ~@2 [c4,e4] ~@17 [a3,c4]@3 ~@3 a3 ~@5 [c4,f4] ~@2 c4 ~@8 [c4,f4] ~ [a3,f4]@3 ~ c4 ~@6 c4@3 ~@11]/7", // F F5 F C F F5 F Am …
  I: "[~@18 [c3,e3,g3,c4,e4,c5]@3 e3 ~ c3 [c3,g3]@2 [c3,e3,g3,c4,e4,c5] [c3,e3,c4]@2 [c3,e3,g3] [a2,e3,a3,c4]@3 [a2,e3,a3]@2 [a2,a3,c4] [a2,a3]@2 [a2,e3,a3,c4,e4,a4] [a2,e3,a3,c4]@2 a2 [c3,c4]@3 [c3,a3]@2 [f3,c4] c4 ~ [c3,f3,a3,c4,f4,a4] [c3,f3,a3,f4,a4]@2 [c3,f3,a3,c4] ~ [g3,b3]@3 [d3,b3,g4] b3!2 ~ [d3,g3,b3,g4,b4] [g3,b3]@3 [c3,e3,c4,e4,c5]@3 e3 ~ c3 [c3,g3]@2 [c3,e3,g3,c4,e4,c5] [c3,e3,c4]@2 [c3,e3,g3] [a2,e3,a3,c4]@3 [a2,e3,a3]@2 [a2,a3,c4] [a2,a3]@2 [a2,e3,a3,c4,e4,a4] [a2,e3,a3,c4]@2 a2 [c3,c4]@3 [c3,a3]@2 [f3,c4] c4 ~ [c3,f3,a3,c4,f4,a4] [c3,f3,a3,f4,a4]@2 [c3,f3,a3,c4] ~ [g3,b3]@3 [d3,b3,g4] b3!2 ~ [d3,g3,b3,g4,b4] [g3,b3]@3 [c3,e3,c4,e4,c5]@3 e3 ~ c3 [c3,g3]@2 [c3,e3,g3,c4,e4,c5] [c3,e3,c4]@2 [c3,e3,g3] [a2,e3,a3,c4]@3 [a2,e3,a3]@2 [a2,a3,c4] [a2,a3]@2 [a2,e3,a3,c4,e4,a4] [a2,e3,a3,c4]@2 a2 [c3,c4]@3 [c3,a3]@2 [f3,c4] c4 ~ [c3,f3,a3,c4,f4,a4] [c3,f3,a3,f4,a4]@2 [c3,f3,a3,c4] ~ [g3,b3]@3 [d3,b3,g4] b3!2 ~ [d3,g3,b3,g4,b4] [g3,b3]@3 [c3,e3,c4]@3 [c3,e3]@2 [c3,c4] c3@2 [c3,e3,g3,c4] [c3,e3,g3,c4]@2 c3 [c3,g3,c4]@3 [c3,a3]@2 c3 c3@2 [c3,a3,c4,f4,a4] [c3,a3,c4,f4,a4]@3 [c3,e3,g3,e4,c5]@6, ~@21 [g3,c4]@2 e3@3 ~ g3 ~@7 [e3,e4,a4]@3 ~@4 f3@5 ~@7 d3@3 ~@2 [d3,g3,g4]@3 ~ [d3,g4,b4]@7 [e4,c5]@4 ~ [e4,c5]@6 [c4,e4] ~@2 c4 ~@2 [e4,a4]@6 [c4,f4] ~ [a3,f4]@3 ~ c4 ~@14 g3 ~@2 [g3,c4]@2 e3@3 ~ g3 ~@7 [e3,e4,a4]@3 ~@4 f3@5 ~@7 d3@3 ~@2 [d3,g3,g4]@3 ~ [d3,g4,b4]@8 [e3,g3]@3 ~@4 e3@5 [f3,a3,c4,f4,a4]@3 f3@4 ~@6, ~@22 [e4,c5]@4 ~ [e4,c5]@6 [c4,e4] ~@2 c4 ~@2 [e4,a4]@6 [c4,f4] ~ [a3,f4]@3 ~ c4 ~@14 g3 ~@2 [g3,c4]@2 e3@3 ~ g3 ~@7 [e3,e4,a4]@3 ~@4 f3@5 ~@7 d3@3 ~@2 [d3,g3,g4]@3 ~ [d3,g4,b4]@7 [e4,c5]@4 ~ [e4,c5]@6 [c4,e4] ~@2 c4 ~@2 [e4,a4]@6 [c4,f4] ~ [a3,f4]@3 ~ c4 ~@14 g3 ~@2 c4 ~@2 c4 ~ [e4,c5]@7 [c4,f4] ~@8 c4 ~@5]/8", // C C5 C Am A5 Am A Am …
  J: "[~@18 [c3,e3,g3,c4,e4,c5]@3 e3 ~ c3 [c3,g3]@2 [c3,e3,g3,c4,e4,c5] [c3,e3,c4]@2 [c3,e3,g3] [a2,e3,a3,c4]@3 [a2,e3,a3]@2 [a2,a3,c4] [a2,a3]@2 [a2,e3,a3,c4,e4,a4] [a2,e3,a3,c4]@2 a2 [c3,c4]@3 [c3,a3]@2 [f3,c4] c4 ~ [c3,f3,a3,c4,f4,a4] [c3,f3,a3,f4,a4]@2 [c3,f3,a3,c4] ~ [g3,b3]@3 [d3,b3,g4] b3!2 ~ [d3,g3,b3,g4,b4] [g3,b3]@3 [c3,e3,c4,e4,c5]@3 e3 ~ c3 [c3,g3]@2 [c3,e3,g3,c4,e4,c5] [c3,e3,c4]@2 [c3,e3,g3] [a2,e3,a3,c4]@3 [a2,e3,a3]@2 [a2,a3,c4] [a2,a3]@2 [a2,e3,a3,c4,e4,a4] [a2,e3,a3,c4]@2 a2 [c3,c4]@3 [c3,a3]@2 [f3,c4] c4 ~ [c3,f3,a3,c4,f4,a4] [c3,f3,a3,f4,a4]@2 [c3,f3,a3,c4] ~ [g3,b3]@3 [d3,b3,g4] b3!2 ~ [d3,g3,b3,g4,b4] [g3,b3]@3 [c3,e3,c4,e4,c5]@3 e3 ~ c3 [c3,g3]@2 [c3,e3,g3,c4,e4,c5] [c3,e3,c4]@2 [c3,e3,g3] [a2,e3,a3,c4]@3 [a2,e3,a3]@2 [a2,a3,c4] [a2,a3]@2 [a2,e3,a3,c4,e4,a4] [a2,e3,a3,c4]@2 a2 [c3,c4]@3 [c3,a3]@2 [f3,c4] c4 ~ [c3,f3,a3,c4,f4,a4] [c3,f3,a3,f4,a4]@2 [c3,f3,a3,c4] ~ [g3,b3]@3 [d3,b3,g4] b3!2 ~ [d3,g3,b3,g4,b4] [g3,b3]@3 [c3,e3,c4]@3 [c3,e3]@2 [c3,c4] c3@2 [c3,e3,g3,c4] [c3,e3,g3,c4]@2 c3 [c3,g3,c4]@3 [c3,a3]@2 c3 c3@2 [c3,a3,c4,f4,a4] [c3,a3,f4,a4]@3 [e3,g3,e4,c5]@6, ~@21 [g3,c4]@2 e3@3 ~ g3 ~@7 [e3,e4,a4]@3 ~@4 f3@5 ~@7 d3@3 ~@2 [d3,g3,g4]@3 ~ [d3,g4,b4]@8 e3@3 ~@9 [e3,e4,a4]@3 ~@4 f3@5 ~@7 d3@3 ~@2 [d3,g3,g4]@3 ~ [d3,g4,b4]@8 e3@3 ~@9 [e3,e4,a4]@3 ~@4 f3@5 ~@7 d3@3 ~@2 [d3,g3,g4]@3 ~ [d3,g4,b4]@8 [e3,g3]@3 ~@4 e3@5 [f3,a3,c4,f4,a4]@3 f3@4 ~@6, ~@22 [e4,c5]@4 ~ [e4,c5]@6 [c4,e4] ~@2 c4 ~@2 [e4,a4]@6 a4@4 ~@21 [e4,c5]@4 ~ [e4,c5]@6 [c4,e4] ~@2 c4 ~@2 [e4,a4]@6 [c4,f4] ~@5 c4 ~@18 [e4,c5]@4 ~ [e4,c5]@6 [c4,e4] ~@2 c4 ~@2 [e4,a4]@6 a4@4 ~@32 [c4,f4] ~@5 c4@6 ~@3, ~@45 [c4,f4] ~ [a3,f4]@3 ~ c4 ~@14 g3 ~@2 [g3,c4]@3 ~@3 g3 ~@19 [a3,f4]@3 ~@16 g3 ~@2 [g3,c4]@3 ~@3 g3 ~@17 [c4,f4] ~ [a3,f4]@3 ~ c4 ~@14 g3 ~@2 c4 ~@2 c4 ~ [e4,c5]@8 ~@14]/8", // C C5 C Am A5 Am A Am …
})).s("gm_banjo").gain(0.06).pan(0.7)

// chords · banjo · soft notes
const banjo_soft = note(`<
  ~@4 A B C B C D E F G B C D H I E F G D C D C D E F ~ J K L M N K ~@2 N O N O N P Q ~ R O N O R P Q ~@20
>`.pickRestart({
  A: "~@18 c4 ~@2 c3@2 ~", B: "~@3 a4 ~@8 a3@3 ~@3 [c3,f3]@2 ~@4", C: "~@4 b4@4 ~@10 c4 ~@5",
  D: "~@3 a4 ~@8 a3@3 a4@3 [c3,f3]@2 ~@4", E: "~@4 b4@4 ~@7 c5@4 ~@5", F: "~@3 a4 ~@20", G: "~@18 c4 ~@5",
  H: "~@4 b4@4 ~@10 c4 ~@2 c3@2 ~", I: "~@3 a4 ~@14 [c3,f3]@2 ~@4", J: "c4 ~@2 c3@2 ~@4 a4 ~@8 a3@3 a4@3",
  K: "[c3,f3]@2 ~@7 a4@4 ~@11", L: "c4 ~@8 g4 ~@8 g3@3 ~@3", M: "[c3,e3]@2 ~@7 c5@4 ~@11", N: "c4 ~@8 a4 ~@8 a3@3 a4@3",
  O: "[c3,f3] ~@4 b4@2 ~@5", P: "[c3,f3]@2 ~@8 b4@4 ~@7 c5@3", Q: "~@9 a4 ~@14", R: "c4 ~@8 a4 ~@8 a3@3 ~@3",
})).s("gm_banjo").gain(0.04).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@4 A B@6 C A B@6 C A B@6 C D B@6 ~ D B@7 D B@7 ~@3 A B@6 C A B@5 C ~@2>".pickRestart({
  A: "~@2 x!2", B: "x!4", C: "x!3 ~", D: "~@3 x",
})).gain(0.32)

// drums · clap
const clap = s("cp").struct(`<
  ~@4 A B@6 C A B@6 C A B@6 C D B@5 E ~ D B@6 F D B@6 F ~@3 A B@6 C A B@5 G ~@2
>`.pickRestart({
  A: "~@5 x ~ x", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x!2 ~@3", D: "~@7 x", E: "~ x ~ x ~ x ~@2", F: "~ x ~ x ~ x!2 ~",
  G: "~ x ~ x ~@4",
})).gain(0.37)

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

// drums · open hat
const open_hat = s("oh").struct("<~@70 [~@7 x!17] [x!12 ~@12]>").gain(0.27)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@70 [x!7 ~@17] ~>").gain(0.14)

// drums · crash
const crash = s("cr").struct("<~@34 [~@3 x] ~@34 [~ x] ~@2>").gain(0.27)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@4 A B@6 C A B@6 C A B@6 C D B@5 E ~ D B@6 F D B@6 F ~@3 A B@6 C A B@5 G ~@2
>`.pickRestart({
  A: "~@5 x ~ x", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x!2 ~@3", D: "~@7 x", E: "~ x ~ x ~ x ~@2", F: "~ x ~ x ~ x!2 ~",
  G: "~ x ~ x ~@4",
})).gain(0.32)

stack(bass, tenor_sax, piano, banjo, banjo_soft, kick, clap, snare, open_hat, open_hat_soft, crash, tambourine)