Strudelify
Terry B cover art

Giorni Infiniti

Terry B

Pooh

KeyC minorTempo74 bpm
0:00/0:00
// Terry B — Pooh
// 74 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 80 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(74/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.

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@2 A B@2 ~@7 C@2 ~@2 D@2 E@7 F@4 G@4 H@3 I@6 F@4 J@5 ~@6 K@2 L M@7 N@7 O@4 ~@2
>`.pickRestart({
  A: "~ eb5@7 ~ d5@8 bb4@7 ~ g4@7", B: "[~ c5@7 ~ bb4@8 f4@8 bb4@4 ~@4 c4@31, ~@30 c5@31 ~@3, ~@31 g4@31 ~@2, ~ eb4]/2",
  C: "[~@33 [c4,eb4]@29 ~@2, ~@31 c5@29 ~@4, ~@32 g4@29 ~@3]/2", // Cm
  D: "[~@32 f4@14 ~@2 [f3,bb3,d4]@14 ~ [g3,bb3], ~@15 f3@8 ~@8 eb3, ~@31 [ab3,c4]@15 ~@18]/2", // Bb Gm Ab
  E: "[eb4@12 ~@4 [eb3,ab3,c4]@14 ~@2 f4@14 ~@2 f4@14 ~@2 c4@29 ~@3 [c4,eb4]@27 ~@5 [bb3,d4]@24 ~@8 eb4@26 ~@6 f4@14 ~@2 [bb3,d4]@14 ~ [g3,bb3], ~@30 f3@15 ~@17 c3@30 ~@99 [ab3,c4]@15 ~@18, ~@31 [ab3,d4]@14 ~@2 [g3,b3,d4]@15 ~ [eb3,g3]@29 ~@3 [f3,ab3]@27 ~@5 [f3,ab3]@24 ~@8 [eb3,g3,bb3]@26 ~@5 f3@16 ~ f3@15 eb3@2]/7", // Ab Cm Bb Gm Ab Abdim G Eb …
  F: "[eb4@12 ~@4 [eb3,ab3,c4]@14 ~@2 f4@14 ~@2 f4@14 ~@2 c4@29 ~@3 [c4,eb4]@13 ~@3 [d4,f4]@14 ~ bb3, ~@30 f3@15 ~@17 c3@30 ~@36, ~@31 [ab3,d4]@14 ~@2 [g3,b3,d4]@15 ~ [eb3,g3]@29 ~@3 ab3@13 ~@3 ab3@13 ~@4]/4", // Ab Cm Dm Abdim G Eb
  G: "[[d4,f4]@15 ~ eb4@12 ~@4 eb4@13 ~@3 f4@13 ~@3 f4@12 ~@4 eb4@11 ~@5 f4@13 ~@3 f4@14 ~ eb3, ~@15 [g3,c4]@12 ~@4 [ab3,c4]@13 ~@3 d4@15 ~ [b3,d4]@12 ~@36 [b3,d4]@14 ~@3, ~@47 ab3@11 ~@21 [g3,c4]@11 ~@5 [ab3,c4]@13 ~@18 c3@2]/4", // Dm C5 Ab Bm C5 Ab
  H: "[[g3,c4]@12 ~@4 bb3@14 ~@2 c4@13 ~@3 bb3@12 ~@4 c4@14 ~@2 bb3@13 ~@2 [c3,eb3], ~@14 c3@15 ~@2 [c3,eb3,ab3]@13 ~@3 [f3,g3]@12 ~@4 [eb3,g3]@14 ~@2 [eb3,g3]@14 ~@3, ~@15 [eb3,g3]@14 ~@17 d3@12 ~@4 c3@14 ~@2 c3@14 ~@4]/3", // C5 Cm Ab Fsus2 Eb
  I: "[[ab3,c4]@13 ~@3 bb3@11 ~@5 c3@21 ~@11 [c4,eb4]@27 ~@5 [bb3,d4]@24 ~@8 eb4@26 ~@6 f4@14 ~@2 [f3,bb3,d4]@14 ~ [g3,bb3], ~@14 d3@11 ~@6 eb3@20 ~@12 [f3,ab3]@27 ~@5 [f3,ab3]@24 ~@8 [eb3,g3,bb3]@26 ~@5 f3@16 ~@16 eb3@2, ~@15 [f3,g3]@11 ~@4 [g3,c4]@20 ~@109 [ab3,c4]@15 ~@18]/6", // Ab Cm Bb Gm Fm Eb Fsus2 C5 …
  J: "[[d4,f4]@15 ~ eb4@12 ~@4 eb4@13 ~@3 f4@13 ~@3 f4@12 ~@4 eb4@11 ~@5 f4@13 ~@3 f4@14 ~@2 [g3,c4]@12 ~@20, ~@15 [g3,c4]@12 ~@4 [ab3,c4]@13 ~@3 d4@15 ~ [b3,d4]@12 ~@36 [b3,d4]@14 ~@35, ~@47 ab3@11 ~@21 [g3,c4]@11 ~@5 [ab3,c4]@13 ~@18 [c3,eb3]@12 ~@22]/5", // Dm C5 Ab Bm C5 Ab Cm
  K: "[~@32 c4@29 ~@3, ~@15 c3@15 ~@2, ~@31 [eb3,g3]@29 ~@4]/2", // Eb
  L: "[ab3,c4,eb4]@13 ~@3 [d4,f4]@14 ~ bb3, ~@15 ab3@13 ~@4", // Ab Dm
  M: "[[d4,f4]@15 ~ eb4@12 ~@4 eb4@13 ~@3 f4@13 ~@3 f4@12 ~@4 [c4,eb4]@11 ~@5 f4@13 ~@3 f4@14 ~@2 [g3,c4]@12 ~@4 bb3@14 ~@2 [ab3,c4]@13 ~@3 bb3@12 ~@4 c4@14 ~@2 bb3@13 ~@2 c3, ~@15 [g3,c4]@12 ~@4 [ab3,c4]@13 ~@3 d4@15 ~ [b3,d4]@12 ~@36 [b3,d4]@14 ~@2 eb3@12 ~@4 [eb3,g3]@14 ~@18 [d3,f3,g3]@12 ~@4 [eb3,g3]@14 ~@2 [eb3,g3]@14 ~@3, ~@47 ab3@11 ~@21 g3@11 ~@5 [ab3,c4]@13 ~@18 c3@12 ~@4 c3@15 ~@2 [c3,eb3]@13 ~@18 c3@14 ~@2 c3@14 ~@4]/7", // Dm Cm C5 Ab C5 Ab Bm Eb …
  N: "[[eb3,ab3,c4]@13 ~@3 bb3@11 ~@5 [g3,c4]@12 ~@4 bb3@14 ~@2 [ab3,c4]@13 ~@3 bb3@12 ~@4 c4@14 ~@2 bb3@13 ~@3 [eb3,ab3,c4]@13 ~@3 bb3@11 ~@5 [g3,c4]@12 ~@4 bb3@14 ~@2 c4@13 ~@3 [g3,bb3]@15 ~, ~@14 d3@11 ~@5 c3@12 ~@4 c3@15 ~@2 [c3,eb3]@13 ~@18 c3@14 ~@2 c3@14 ~@3 c3@14 ~@2 [f3,g3]@11 ~@5 eb3@12 ~@4 [eb3,g3]@14 ~@18 [d3,f3]@15 ~@2, ~@15 [f3,g3]@11 ~@5 eb3@12 ~@4 [eb3,g3]@14 ~@18 [d3,f3,g3]@12 ~@4 [eb3,g3]@14 ~@2 [eb3,g3]@14 ~@17 d3@11 ~@5 c3@12 ~@4 c3@15 ~@2 [c3,eb3,ab3]@13 ~@20]/7", // Ab C5 Ab C5 Gm Cm Fsus2 Eb …
  O: "[~@7 c4@93 ~@28, ~ c3@49 ~@14, ~@3 eb3@96 ~@29, ~@5 g3@95 ~@28]/4",
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.6)

// bass · fretless bass
const bass = note(`<
  ~ A ~@2 B@6 C D@2 ~@2 E F G H I J K L M G N O K P Q R S T U ~@4 K V W G X I K P Q R S T Y@6 C Z AA P Q R S T U ~@5
  AB@2 AC@2 ~@6
>`.pickRestart({
  A: "~@5 g2@3 ~ d3@2 eb3@3 e3@3 f3@10 g3@4 ~",
  B: "[~@5 g2@8 d3@4 c3@12 ab3@25 ~@2 c4@14 ~@2 c4@14 ~@2 f3@19 ~@13 c4@14 ~@2 c4@13 ~@3 f3@16 f3@4 g3@12 bb3@7 ~]/6",
  C: "ab3@11 ~ bb3 ~@3 ab3@7 ~ c3@8", D: "[c3@10 ~@2 eb3 ~@3 f3@7 ~ d3@25 ~@15]/2", E: "d3@13 ~@3", F: "eb2@25 ~@7",
  G: "d2@15 ~ bb1@15 ~", H: "eb2@14 ~@2 ab2@13 ~@3", I: "f2@4 c3@2 f2@2 g2@3 ~ d3@3 ~", J: "c3@9 ~@7 c2@16",
  K: "c2@7 ~", L: "d2@13 ~@3", M: "eb3@3 ~", N: "eb2 ab2", O: "f2@16 g2@7 ~ g1@8", P: "ab2@15 ~ bb2@15 ~",
  Q: "g1@12 ~@2 g1@2 c2@8 bb1@7 ~", R: "ab1@16 bb1@12 ~@2 f1 ~", S: "b1@13 ~ g1@2 c2@14 eb3@2",
  T: "d2@15 ~ b1@13 ~ b1@2", U: "c2@7 ~@9", V: "d2@29 ~@3", W: "eb2@15 ~", X: "eb2@16 ab2@15 ~",
  Y: "[~@4 g2@8 d3@4 c3@12 ab3@25 ~@3 c4@14 ~@2 c4@14 ~@2 f3@19 ~@13 c4@14 ~@2 c4@13 ~@3 f3@16 f3@4 g3@12 bb3@7 ~]/6",
  Z: "c3@10 ~@2 eb3 ~@3 f3@7 ~ d3@8", AA: "c3@2 c2@5 ~", AB: "[~@3 g2@8 d3@4 c3@12 ab3@23 ~@14]/2",
  AC: "[~@3 g2@8 d3@4 c3@12 ab3@24 ~@13]/2",
})).s("gm_fretless_bass").gain(0.52)

// bass · contrabass
const bass_2 = note(`<
  A B A B C@3 D E F G H I J ~@14 K L M N O F P F P Q ~@7 K L M N O D@2 E D E D G R S K L M N O F P F P F P F P F T@7
>`.pickRestart({
  A: "~ c2@16 bb1@15", B: "~ ab1@16 g1@15", C: "[~ c2@63 g2@32]/3", D: "c2@31 ~", E: "g2", F: "c2@15 ~ bb1@15 ~",
  G: "d2", H: "bb2 ab2", I: "eb2@31 ~", J: "~ c2@31", K: "ab1@15 ~ bb1@15 ~", L: "g1@15 ~ c2@7 ~ bb1@6 ~@2",
  M: "ab1@15 ~ bb1@14 ~@2", N: "b1@7 ~ c2@7 ~", O: "d2@14 ~@2 b1@13 ~@3", P: "ab1@15 ~ g1@14 ~@2", Q: "c2@29 ~@3",
  R: "bb1@15 ~ b1@15 ~", S: "c2@24 bb1@7 ~", T: "[ab1@16 g1@19 ~@4 c2@154 ~@31]/7",
})).s("gm_contrabass").gain(0.22)

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@13 A B C@2 D E F@2 G H@2 I J K@6 L M ~@3 N O P@2 Q R S@6 L M ~@7 T@5 L M ~@15
>`.pickRestart({
  A: "~@11 g4@2 g5@2 ~ f5 ~ eb5@3 ~ d5@5 c5@3 bb4@2", B: "~ bb4@4 ab4@12 ~@15",
  C: "[~@9 f4@2 ~ f5@2 eb5@2 d5@4 c5@5 ~ bb4@3 ab4 ~ ab4@4 g4@13 ~@12 g5@2 g5@2]/2",
  D: "f5@4 g5@2 ~ ab5@4 f5@4 ~ d5@4 d5@6 ~@2 eb5@2 eb5 ~", E: "eb5@4 ~ f5 ~ g5@4 eb5@3 ~ c5@4 ~ c5@6 ~@2 eb5 ~ eb5 ~",
  F: "[d5@4 eb5@2 f5@4 d5@4 ~ b4@5 c5 ~ d5@4 ~ eb5@4 c5@9 ~@2 g4@2 g5@2 ~ f5@2 eb5@3 ~ d5@5 ~ c5@3 bb4 ~]/2",
  G: "bb4@3 ab4@12 ~@17", H: "[~@9 f4@2 ~ f5@2 eb5 ~ d5@5 c5@4 bb4@3 ab4@2 ab4@4 ~ g4@13 ~@12 g5@2 g5@2]/2",
  I: "f5@3 ~ g5 ~ ab5@4 ~ f5@4 d5@4 d5@7 ~@2 eb5 ~@2 eb5", J: "eb5@3 ~ f5 ~ g5@4 ~ eb5@3 c5@4 ~ c5@7 ~@2 eb5 ~ eb5@2",
  K: "[d5@4 eb5 ~ f5@4 d5@4 ~ b4@5 c5 ~ d5@4 eb5@4 c5@16 ~@6 eb5 ~ eb5 ~ eb5@3 ~ eb5 ~ eb5@5 ~ eb5 ~ eb5 ~ eb5@3 ~ eb5 ~ d5@4 d5@2 ~@2 f5!2 ~ f5@3 d5@2 bb4@4 bb4@3 ~ d5 ~ d5 ~ d5@2 eb5 ~ c5@4 ~ c5@3 eb5!2 ~ eb5@3 ~ eb5 eb5@11 ~ g5@3 f5@6 ~ f5 ~ f5 ~ f5@3 ~ f5 ~ f5@12 ~ ab5@4 ~ g5@2 f5@2 eb5@7 ~ g5@3 ~]/6",
  L: "f5@3 ~ g5 ~ ab5@4 f5@5 ~ d5@4 eb5 ~ f5@4 ~ d5@5", M: "c5 ~@3", N: "~@10 g4@2 g5@2 ~ f5@2 eb5@4 d5@5 c5@3 bb4@2 ~",
  O: "bb4@3 ab4@8 ~@21", P: "[~@10 f4@2 f5@2 eb5 ~ d5@4 c5@5 ~ bb4@3 ab4 ~ ab4@4 g4@8 ~@17 g5@2 g5@2]/2",
  Q: "f5@3 ~ g5 ~ ab5@5 f5@4 d5@4 ~ d5@6 ~@2 eb5@2 eb5 ~", R: "eb5@3 ~ f5@2 g5@4 ~ eb5@4 c5@4 c5@6 ~@3 eb5@2 eb5 ~",
  S: "[d5@4 eb5 ~ f5@4 d5@4 b4@5 ~ c5 ~ d5@5 eb5@3 c5@10 ~@11 eb5 ~@2 eb5 ~ eb5@3 ~ eb5 ~ eb5@5 ~ eb5 ~@2 eb5 eb5@2 ~@2 eb5 ~ d5@4 ~ d5@2 f5 ~ f5 ~ f5@3 d5@2 bb4@4 bb4@3 d5 ~ d5 ~ d5@3 eb5 ~ c5@4 ~ c5@3 eb5 ~ eb5 eb5@3 ~ eb5 ~ eb5@12 g5@2 f5@6 ~ f5@2 f5 ~ f5@3 ~ f5 ~ f5@12 ~ ab5@4 ~ g5@2 f5@2 eb5@7 ~ g5@3 ~]/6",
  T: "[~@20 eb5@2 eb5 ~ eb5@3 ~ eb5 ~ eb5@6 ~ eb5 ~ eb5 ~ eb5@2 ~ eb5 ~ d5@5 d5@2 ~ f5 ~ f5 f5@3 d5@2 bb4@4 bb4@3 d5 ~ d5 ~ d5@3 eb5 ~ c5@4 ~ c5@3 eb5 ~ eb5 eb5@3 ~ eb5 ~ eb5@12 g5@4 f5@5 f5 ~ f5 ~ f5@3 ~ f5 ~ f5@11 ~ ab5@4 ~ g5@3 ~ f5@2 eb5@6 ~ g5@4]/5",
})).s("gm_acoustic_guitar_nylon").gain(0.57)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A B A B C D E F E G H E I C J E I K L M F J N I K L M O P Q R@2 S T U T U F J N I K L M O P V P W X F J E F E G H Y Z
  P Q P W X G U G U G U G U G AA@6 ~
>`.pickRestart({
  A: "~ [eb3,g3,c4]@16 [eb3,g3,bb3]@15", B: "~ [c3,eb3,ab3]@16 [d3,f3,bb3]@15", C: "~ [g3,c4,eb4]@31",
  D: "~ [ab3,c4,eb4]@31", E: "[bb3,d4,f4]", F: "[g3,c4,eb4]", G: "[g3,c4,eb4] [g3,bb3,eb4]", H: "[ab3,c4,f4]",
  I: "[bb3,eb4,g4]", J: "[ab3,c4,eb4]", K: "[ab3,c4,f4] [bb3,d4,f4]", L: "[bb3,eb4,g4] [c4,eb4,ab4]",
  M: "[ab3,d4,f4] [b3,d4,g4]", N: "[ab3,d4,f4]", O: "[c4,eb4,g4]", P: "[ab3,c4,eb4] [ab3,d4,f4]",
  Q: "[bb3,d4,f4]@2 c4 bb3, ~@16 [g3,eb4]@13 ~@3", R: "[[ab3,c4,eb4]@8 [ab3,d4,f4]@7 [b3,d4,f4]@9 [c4,eb4,g4]@8]/2",
  S: "[ab3,c4,f4] [b3,d4,g4]", T: "[c4,eb4,g4] [bb3,eb4,g4]", U: "[ab3,c4,eb4] [bb3,d4,f4]",
  V: "[bb3,d4,f4]@2 c4 bb3, ~@4 [eb4,g4]@3 ~", W: "[b3,d4,f4] [c4,eb4,g4]", X: "[ab3,c4,f4] [b3,d4,f4]",
  Y: "[ab3,d4,f4] [b3,d4,f4]", Z: "[g3,c4,eb4]@3 [g3,bb3,eb4]",
  AA: "[[ab3,c4,eb4]@16 [bb3,d4,f4]@22 ~ [c4,eb4,g4,c5]@153]/6", // Ab Bb Cm
})).s("gm_string_ensemble_2").gain(0.25)

// other · vibraphone
const vibraphone = note("<~@5 A B C B C D E F G ~@4 H ~@61>".pickRestart({
  A: "~ eb7@4 ab6@4 c7@4 eb7@4 ab6@3 c7@4 eb7@4 ab6@4", B: "d7 g6 bb6 d7 g6 bb6 d7 g6", C: "eb7 g6 c7 eb7 g6 c7 eb7 g6",
  D: "eb7 ab6 c7 eb7 ab6 c7 eb7 ab6", E: "d7 ab6 bb6 d7 ab6 bb6 d7 ab6",
  F: "eb7@4 g6@4 ~ bb6@4 eb7@4 g6@4 bb6@4 eb7@4 g6@3", G: "~ c7@4 ~@27", H: "g6@4 bb5@4 c6@7 ~",
})).s("gm_vibraphone").gain(0.12).pan(0.4)

// other · pad new age
const pad_new_age = note("<A B A B C ~@28 D E D E F ~@26 D E D E D E D E D G@2 ~@5>".pickRestart({
  A: "~ eb5@7 ~ d5@8 bb4@7 ~ g4@7", B: "~ c5@7 ~ bb4@8 f4@8 bb4@7", C: "~ g4@8 ~@23", D: "eb5@7 ~ d5@8 bb4@7 ~ g4@7 ~",
  E: "c5@7 ~ bb4@8 f4@8 bb4@7 ~", F: "g4 ~@3", G: "[c5@7 ~ bb4@8 f4@9 ~ bb4@11 ~@27]/2",
})).s("gm_pad_new_age").gain(0.31).pan(0.4)

// chords · epiano2
const epiano2 = note(`<
  A B C B D E F G H I J K L M N K O P Q R S N K O P Q R T U V W X Y Z AA AB AC S N K AD@2 AE R AF AG V U X AH S N H AI H
  AJ AK K AF AL V U AM AN AB AA AB AA AO AA AO AC AB AP AQ@3 ~@3
>`.pickRestart({
  A: "~ [c4,eb4,g4]@14 ~@2 [bb3,eb4,g4]@12 ~@3", B: "~ [ab3,c4,eb4]@13 ~@3 [bb3,d4,f4]@12 ~@3",
  C: "~ [c4,eb4,g4]@12 ~@4 [bb3,eb4,g4]@11 ~@4", D: "~ [c4,eb4,g4]@18 ~@13", E: "~ [ab3,c4,eb4]@20 ~@11",
  F: "[bb3,d4,f4]@27 ~@5", G: "[c4,eb4,g4]@27 ~@5", H: "[bb3,d4,f4]@13 ~@3", I: "[c4,eb4,g4]@23 ~@9",
  J: "[ab3,c4,f4]@13 ~@3", K: "[ab3,d4,f4]@25 ~@7", L: "[bb3,eb4,g4]@13 ~@3", M: "~ [c4,eb4,g4]@24 ~@7",
  N: "[ab3,c4,eb4]@25 ~@7", O: "[bb3,eb4,g4]@25 ~@7", P: "[ab3,c4,f4]@13 ~@3 [ab3,d4,f4]@13 ~@3",
  Q: "[bb3,eb4,g4]@11 ~@5 [ab3,c4,eb4]@12 ~@4", R: "[ab3,d4,f4]@13 ~@3 [b3,d4,f4]@12 ~@4", S: "[c4,eb4,g4]@7 ~@9",
  T: "[c4,eb4,g4]@19 ~@13", U: "[ab3,c4,eb4]@11 ~@5 [ab3,d4,f4]@12 ~@4", V: "[bb3,d4,f4]@12 ~@4 [c4,eb4,g4]@11 ~@5",
  W: "[ab3,c4,eb4]@5 ~@3 [ab3,d4,f4]@5 ~@3", X: "[b3,d4,f4]@6 ~@2 [c4,eb4,g4]@5 ~@3",
  Y: "[ab3,c4,f4]@11 ~@5 [b3,d4,f4]@10 ~@6", Z: "[c4,eb4,g4]@13 ~@3 [bb3,eb4,g4]@11 ~@5",
  AA: "[ab3,c4,eb4]@3 ~ [bb3,d4,f4]@3 ~", AB: "[c4,eb4,g4]@11 ~@5 [bb3,eb4,g4]@11 ~@5",
  AC: "[ab3,c4,eb4]@6 ~@2 [bb3,d4,f4]@5 ~@3", AD: "[[bb3,eb4,g4]@24 ~@6 [ab3,c4,f4]@13 ~@5 [ab3,d4,f4]@13 ~@3]/2",
  AE: "[bb3,eb4,g4]@11 ~@5 [c4,eb4,ab4]@10 ~@6", AF: "[c4,eb4,g4]@17 ~@15",
  AG: "[ab3,c4,eb4]@11 ~@5 [ab3,d4,f4]@13 ~@3", AH: "[ab3,c4,f4]@11 ~@5 [b3,d4,f4]@12 ~@4", AI: "[c4,eb4,g4]@13 ~@3",
  AJ: "[c4,eb4,g4]@21 ~@11", AK: "[ab3,c4,f4]@7 ~", AL: "[ab3,c4,eb4]@12 ~@4 [ab3,d4,f4]@13 ~@3",
  AM: "[b3,d4,f4]@11 ~@5 [c4,eb4,g4]@11 ~@5", AN: "[ab3,c4,f4]@13 ~@3 [b3,d4,f4]@12 ~@4",
  AO: "[c4,eb4,g4]@11 ~@5 [bb3,eb4,g4]@12 ~@4", AP: "[ab3,c4,eb4]@11 ~@5 [bb3,d4,f4]@10 ~@6",
  AQ: "[~@7 [c4,eb4,g4]@62 ~@27]/3", // Cm
})).s("gm_epiano2").gain(0.29).pan(0.4)

// other · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A@3 ~@4 B ~@14 C D ~@8 E@2 ~@3 F@2 ~@18 G ~@5 H I ~@2 J@2 ~ K L M N O P@2 ~@2
>`.pickRestart({
  A: "[~@21 f4@4 d4@5 eb4@10 ~@21 c5@27 ~@8]/3", B: "~@6 d4 eb4 f4@8", C: "~@10 g3@4 eb4@2 d4@11 ~ c4@2 bb3@2",
  D: "c4@15 ~@17", E: "[~@19 eb4@2 d4@5 ~@2 eb4 d4 c4@5 c4 bb3 g3@6 g3 f3@2 ~ eb4 f4@15 ~]/2",
  F: "[~@18 ab2@2 ~ eb3@2 ~ ab3@3 g3@2 eb3@15 ~@20]/2",
  G: "~ eb3 g3 c4 ~ eb3 g3 c4 ~ eb3 g3 c4 ~ eb3 g3 c4, c3 ~ c3 ~ c3 ~ c3 ~", H: "~@9 c4 ~ c4!2 ~ c4!9 bb3 c4@7 ~",
  I: "~@10 bb3@2 c4@3 eb4@3 g4@3 bb4@10 ~",
  J: "[~@3 bb3 ~ bb3 ~ bb3@8 ~@5 bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ c4@9 ~@4 f3@2 g3@9 ~@10]/2",
  K: "~@24 g4@2 ~ f4@2 ~ eb4@2", L: "f4 ~@15", M: "~@4 [d4,f4]@8 ~@9 c4@4 bb3@7",
  N: "~@11 g3 f3 g3@8 ~ c4 bb3 g3@6 g3 ab3",
  O: "bb3@5 ~ eb4 d4 c4 bb3 ab3 g3 f3 bb3 g3 eb3 c3 bb2@2 ~ g2@2 ab2@2 bb2@2 c3@2 d3@2 eb3@2",
  P: "[f3@2 ~ g3@3 bb3 d4 eb4@2 c4 eb4 f4 g4 bb4@8 ~ g4@2 bb4@17 ~@22]/2",
})).s("gm_acoustic_guitar_steel").gain(0.28).pan(0.3)

// other · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note("<~@64 [c4@5 c4!4 ~ c4 ~@2 c4 ~@18] ~@15>")
  .s("gm_acoustic_guitar_steel").gain(0.16).pan(0.3)

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

// drums · rim
const rim = s("rim").struct("<~@14 A@13 B ~@9 A@7 C ~@6 A@7 B ~@21>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x",
})).gain(0.57)

// drums · snare
const snare = s("sd").struct("<~@28 [~ x ~ x]!5 ~@12 [~ x ~ x]!5 ~@9 [~ x ~ x]!11 ~@10>").gain(0.57)

// drums · low tom
const low_tom = s("lt").struct("<~@27 A ~@16 B ~@5 C ~@7 C ~@21>".pickRestart({
  A: "~@7 x", B: "~@4 x ~@3 x ~@5 x!2", C: "~@3 x",
})).gain(0.57)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@14 A B C@2 D E F A B C@2 D E G H I J I F ~@4 A B C@2 D E F K H I J I F ~@9 H I J I F H F@5 ~@10
>`.pickRestart({
  A: "~ x!4 ~@2 x", B: "x ~@2 x!2 ~@2 x", C: "x!5 ~@2 x", D: "x!5 ~ x!2", E: "x ~ x!6", F: "x!8", G: "x!3 ~@2 x!2 ~",
  H: "~ x!7", I: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", J: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", K: "x ~@4 x ~@2",
})).gain(0.29)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@27
  [~@8 x ~@3 x!2 ~@2]
  ~@16
  [~@2 x!2 ~@2 x!2 ~@5 x ~@2]
  ~@13
  [~@10 x!2 ~@2 x!2]
  ~@21
>`).gain(0.57)

// drums · high tom
const high_tom = s("ht").struct("<~@27 [~@6 x!2 ~@8] ~@52>").gain(0.57)

// drums · crash
const crash = s("cr").struct("<~@14 A ~@6 A ~@6 A ~@8 A ~@7 A ~@13 A ~@4 A ~@15>".pickRestart({
  A: "x",
})).gain(0.36)

// drums · ride
const ride = s("rd").struct(`<
  ~@6 A ~ A ~ A ~ B A C D C@2 E F ~ C D C@2 E F ~@6 A ~ A@2 C D C@2 E F ~ A ~@5 G@8 H ~@11 A@3 I ~@6
>`.pickRestart({
// … 29 more lines

More by Pooh