Strudelify
Eravamo ragazzi cover art

Un posto felice

Eravamo ragazzi

Pooh

KeyD majorTempo107 bpm
0:00/0:00
// Eravamo ragazzi — Pooh
// 107 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 130 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): tk9.
setcpm(107/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 · fretless bass · "tk2"
const bass = note(`<
  A B C D E F G H E F G H I F G H J K E L G H M N O P Q R S@3 T I F U V W X Y Z AA AB U V AA AB U V AC AD AE I L AF H E
  L AF H M N I F AF H J N O S Q AG AH S AI AJ E L U V AK AL Y Z AA AB U V AA AB U V AC AD AE E F G H E F G AM I F G H I
  F AF AN I F AF H I F AF AO I F E L G H E F G H AP@2
>`.pickRestart({
  A: "~@4 a2@6 ~@4 a1 ~, a1@9 ~ a1@4 ~@2, ~@3 a2", B: "~@2 a2@3 a1 a2 a1, a1@9 ~@7", C: "a1@2 a2 a1@2 a2@2 a1",
  D: "a1@4 a2@2 a1@3 ~ a1@6", E: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2 d2@2 d2@2",
  F: "b1 ~ b1@2 b1 ~ b1 ~ b1@2 b1 ~ b1@2 b1@2", G: "d2 ~ d2 ~ d2 ~ d2@2 d2@2 d2@2 d2@2 d2@2",
  H: "b1 ~ b1@2 b1@2 b1@2 b1 ~ b1@2 b1@2 b1@2", I: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2 d2@2",
  J: "f#1 ~ f#1@2 f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1@2", K: "a1 ~ a1 ~ a1 ~ a1@2 a1 ~ a1 ~ a1 ~ a1@2",
  L: "b1 ~ b1 ~ b1 ~ b1 ~ b1@2 b1 ~ b1@2 b1@2", M: "f#1 ~ f#1@2 f#1 ~ f#1@2 f#1 ~ f#1 ~ f#1 ~ f#1@2",
  N: "a1 ~ a1 ~ a1 ~ a1@2 a1 ~ a1 ~ a1 ~ a1 ~", O: "e1 ~ e1@2 e1 ~ e1@2 g1 ~ g1@2 g1 ~ g1@2",
  P: "a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1@2 a1@2 a1@2", Q: "d2 ~ d2@2 d2 ~ d2@2 c#2@2 c#2 ~ c#2 ~ c#2@2",
  R: "b1 ~ b1 ~ b1@2 b1 ~ b1@2 b1 ~ b1 ~ b1 ~", S: "a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1@2",
  T: "a1@2 a1 ~ a1 ~ e2 g2@9", U: "g1@2 g1 ~ g1 ~ g1@2 g1 ~ g1@2 g1 ~ g1@2",
  V: "a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1 ~", W: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@2 f2@2",
  X: "d2 ~ d2 ~ d2 ~ d2 ~ d2@2 d2 ~ d2@2 d2@2", Y: "a#1@2 a#1 ~ a#1 ~ a#1@2 a#1 ~ a#1@2 a#1 ~ a#1@2",
  Z: "c2 ~ c2@2 c2 ~ c2@2 c2 ~ c2@2 c2 ~ c2 ~", AA: "d1 ~ d1@2 d2@2 d1 ~ d1 ~ d1@2 d2@2 d1@2",
  AB: "b1@2 b1@2 b1 ~ b1 ~ b1@2 b1 ~ b1 ~ b1 ~", AC: "a1@2 a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2",
  AD: "c2@2 c2@2 c2 ~ c2 ~ c2@2 c2@2 c2@2 c2@2", AE: "g1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1 ~",
  AF: "d2 ~ d2 ~ d2 ~ d2@2 d2@2 d2@2 d2 ~ d2@2", AG: "b1 ~ b1 ~ b1@2 b1@2 b1@2 b1 ~ b1 ~ b1 ~",
  AH: "a1 ~ a1 ~ a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1@2", AI: "a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1 ~ a1 ~ a1 ~",
  AJ: "a1@2 a1 ~ a1 ~ e2 g2@8 ~", AK: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@2 f2@2 f2@2",
  AL: "d2 ~ d2@2 d2 ~ d2 ~ d2@2 d2 ~ d2@2 d2@2", AM: "b1 ~ b1@2 e2@2 f#2 b2 f#2 b1 e2 b2 f#2 e2 b1 e2",
  AN: "b1 ~ b1@2 e2 f#2 ~ b2 f#2 b1 e2 b2 f#2 e2 b1 e2", AO: "b1 ~ b1@2 e2 f#2@2 b2 f#2 b1 e2 b2 f#2 e2 b1 e2",
  AP: "[~ d1@15, d2]/2",
})).s("gm_fretless_bass").gain(0.45)

// chords · string ensemble 2 · "tk3"
const string_ensemble_2 = note(`<
  A@4 B@12 C@2 B@4 C@2 D E F G H@4 I@3 J K@4 L@3 J I@3 J M N J B@8 C@2 B@4 C@2 D E F G H@4 I@3 O P@4 I@3 J I@3 J Q N J
  B@24 R@2 B@8 R@2
>`.pickRestart({
  A: "[~@11 e4@21, [a2,e3,a3]]/4", B: "[a3,d4]/4", C: "[f#3 a3, c#4]/2", D: "e4 d4, [g3,b3]", E: "[a3,c#4,e4]",
  F: "[d4,f#4] [c#4,e4]", G: "[b3,d4]", H: "[~@22 e4@41 ~, [a2,e3,a3]]/4", I: "[a3@2 g3, d4]/3", J: "[a3,e4]",
  K: "[c4@4 ~@2 d4 [c4,e4,g4], f4@7 ~, ~@4 a#3@3 ~]/4", L: "[a3@32 g3@15 ~, d4]/3", M: "g4 f#4, d4", N: "[g3,c4]",
  O: "[a3,e4]@15 ~", P: "[c4@32 a#3@15 ~ [a#3,d4]@8 [c4,e4,g4]@8, f4@7 ~]/4", Q: "[d4,g4] [d4,f#4]", R: "[a3,d4]/2",
})).s("gm_string_ensemble_2").gain(0.3)

// other · overdriven guitar · "tk6"
const overdriven_guitar = note(`<
  ~@4 A@2 B C A@2 D E@2 ~@14 F@3 G@2 ~ H I ~@2 J K ~@2 L M N O P M N Q R S A@2 D E@2 ~@14 F@3 T@2 ~ H I ~@2 J K ~@2 L U
  O@2 P U O Q R S A@2 D V A@2 W@2 ~@4 A@2 W@2 ~@4 A@2 W@2 X ~ A@2 B C A@2 D Y@3
>`.pickRestart({
  A: "[~ a3 d4 f#4@3 a3@9 ~]/2", B: "~ a3 d4 f#4 ~ a4@3", C: "f#4@7 ~", D: "~ a3 d4 f#4@2 a4@3", E: "[f#4@31 ~]/2",
  F: "[~@7 [e4,a4,c#5]@17]/3", G: "[[a4,c#5,e5]@31 ~]/2", H: "~@5 [a4,d5]@3", I: "[d4,g4]", J: "~@5 [c5,f5]@3",
  K: "[f4,a#4]", L: "~@4 d5 [d5,e5] a4@2 d5 ~ d5 [d5,e5] a4@2 d5@2",
  M: "d5@2 d5 [d5,e5] a4@2 d5@2 d5@2 d5 [d5,e5] a4@2 d5@2", N: "d5 ~ d5 [d5,e5] a4@2 d5@2 d5 ~ d5 [d5,e5] a4@2 d5 ~",
  O: "d5@2 d5 [d5,e5] a4@2 d5@2 d5 ~ d5 [d5,e5] a4@2 d5 ~", // Dsus2
  P: "d5 ~ d5 [d5,e5] a4@2 d5 [d5,e5] d5 ~ d5 [d5,e5] a4@2 d5@2", // Dsus2
  Q: "d5@2 e5 [a4,d5] d5@2 e5 [a4,d5] d5@2 e5 [a4,d5] d5@2 e5 [a4,d5]", // D5
  R: "c5@2 d5 [g4,c5] c5@2 d5 [g4,c5] c5@2 d5 [g4,c5] c5@2 d5 [g4,c5]", S: "[e4,a4]@7 ~", T: "[[a4,c#5,e5]@29 ~@3]/2",
  U: "d5@2 d5 [d5,e5] a4@2 d5@2 d5 ~ d5 [d5,e5] a4@2 d5@2", V: "f#4", W: "[~@2 a3@2 d4@2 f#4@4 a4@21 ~]/2", X: "a4@3 ~",
  Y: "f#4/3",
})).s("gm_overdriven_guitar").gain(0.28).pan(0.7)

// chords · distortion guitar · "tk7"
const distortion_guitar = note(`<
  ~@4 A@2 B@2 A@2 C D E@2 F@3 G@2 H@2 I J K@2 L M N ~@4 A@2 O P Q@2 R S T@2 O P T@2 O P U V W A@2 C D E@2 F@3 G@2 H@2 I
  J K@2 L M D ~@4 X@2 O P Y@2 R S T@2 O P T@2 O P U V Z X@2 C D X@2 C D E@2 AA@2 X@2 C D E@2 AB@2 X@2 C D E@2 X@2 B@2
  A@2 C D AC@2
>`.pickRestart({
  A: "[[d3,a3]@23 ~@3 [a3,d4] ~@5]/2", B: "[[a3,d4]@25 ~@3 [a3,d4]@2 ~@2]/2", C: "[a3,d4]", D: "[b2,f#3]",
  E: "[[d3,a3]@28 ~@2 [a3,d4] d3]/2", // D5
  F: "[[d3,a3,d4]@28 ~@2 [f#3,c#4,f#4] ~ [f#3,c#4,f#4]@16, ~@31 [f#2,c#3]@6 ~@11]/3", // D5 F#5
  G: "[[a2,e3] ~@3 [a3,b3,e4]@2 [a3,b3,e4] ~ [a3,b3,e4] ~ [a2,e3]@2 [a3,b3,e4] ~ [d4,f#4,a4]@17 ~, ~@2 [a2,e3]@7 ~@23]/2", // A5 Asus2 A5 Asus2 D A5
  H: "[~@4 [d4,f#4,a4] ~@5 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~ [d4,f#4,a4]@15 ~, ~@15 [d3,a3]@16 ~]/2", // D D5
  I: "~@4 [d4,f#4,a4] ~@5 [d4,f#4,a4] ~@3 [c#4,f#4]!2", J: "[f#3,c#4,f#4]",
  K: "[~@2 a3@2 b3@2 [a3,b3,e4]@7 ~ [g3,b3,e4] ~ [g3,b3,e4]@8 [b2,g3,b3,d4]@8, a2@14 ~ [e2,b2]@9 ~@8]/2", // Asus2 Em G E5
  L: "~@3 [a3,c#4,f#4]@5, [a2,e3]", M: "d3@7 ~ c#3@8, a3", N: "[b2,f#3]@15 ~", O: "[g2,d3]", P: "[a2,e3]",
  Q: "[[f3,c4]@25 ~ [c4,f4] ~@5]/2", R: "[a#2,f3]", S: "[a#3,f4] [c4,g4]", T: "[[a2,d3]@4 [a3,d4,f#4]@25 ~@3]/2",
  U: "[a3,d4,g4] [a3,d4,f#4]", V: "[g3,c4]", W: "[a3,e4]@15 ~", X: "[[d3,a3]@25 ~ [a3,d4] ~@5]/2",
  Y: "[[f3,c4]@23 ~@3 [c4,f4] ~@5]/2", Z: "[a3,e4]", AA: "[[a3,d4]@28 ~@2 [a3,d4] d3, d3 ~@31]/2",
  AB: "[[d3,a3,d4]@28 ~@2 [c#3,a3] [f#2,c#3]]/2", AC: "[d3,a3,d4]/2",
})).s("gm_distortion_guitar").gain(0.25).pan(0.2)

// chords · electric guitar clean · "tk8"
const electric_guitar_clean = note(`<
  A@2 B@5 C D@3 C ~@11 E@2 F G H A@4 I@2 J K L@2 M N O@2 P Q O@2 P Q ~ R S D@3 T ~@11 U@2 F G V W@4 I@2 P Q X@2 Y Z AA@2
  P Q AA@2 P AB ~ R AC D@3 C AD@4 ~@4 AD@4 ~@4 AD@4 ~@2 D@3 C AD@4 ~@2
>`.pickRestart({
  A: "[~@10 g3@2 ~@8 c#4@2 a3@9 ~, a3@4 c#4@10 a3@7 ~@11, ~ d4@6 ~@2 d4@2 ~@5, ~@3 a3@3 e3@10]/2",
  B: "[~@10 g3@2 ~@8 c#4@2 ~@12 f#3@2 ~@2 f#3@6 d3@2 f#3@2 ~@4 a3@2 f#3@4 b2@5 ~@7 d4@10, a3@4 c#4@10 a3@7 ~ a3@12 ~@2 a3@9 ~@9 b3@7 ~@7 a3@10 ~@2, ~@2 d4@12 ~@4 d4@4 ~@16 d4@14 ~@2 d4@12 ~@4 f#3@7 ~@3, ~@6 a3@6 e3@19 ~ d3@10 ~@6 b2@9 ~@7 d3@10 ~@6]/5",
  C: "~ d4 [a3,c#4] [a3,c#4,d4]@5, b2", // A Dmaj7
  D: "[~@2 f#3@2 ~@2 f#3@6 d3@2 f#3@2 ~@6 f#3@4 b2@5 ~@7 d4@10, d3@10 ~@6 b2@9 ~@7 d3@10 ~@6, ~@4 a3@9 ~@9 b3@7 ~@7 a3@10 ~@2, ~@6 d4@14 ~@2 d4@12 ~@4 f#3@7 ~@3]/3",
  E: "[~@16 [g3,b3,e4]@8 [g3,b3,d4]@7 ~, ~@15 e2@8 ~@9]/2", F: "[e3,a3]@13 ~@3",
  G: "~@4 d4@2 a3 ~@5 c#4@2 a3@2, d3@4 c#3@3 ~, ~@2 f#4@5 ~@3 e4@6", H: "~ a3 [a3,d4,f#4]@5 ~, b2@15 ~",
  I: "[~@4 d4@2 ~@8 a3@2 ~@4 d4@2 ~@6 d4@3 ~, d3@9 ~ d3@4 ~@2 b2@15 ~, ~@2 a3@10 d4@5 ~ a3@7 ~ a3@5 ~, ~@6 e4@12 ~@4 e4@9 ~]/2",
  J: "~ g3 ~ g3 ~@2 d4 ~, g2@7 ~, ~@2 d4@2 e4@3 ~, ~@5 g3@2 ~",
  K: "~@2 b3 a3, a2, ~ a3@3 ~@4, ~@2 d4@5 ~, ~@6 c#4@7 ~@3",
  L: "[~@4 f4@2 ~@8 c4@2 ~@4 f4@2 ~@6 f4@3 ~, f3@9 ~ f3@4 ~@2 d3@15 ~, ~@2 c4@10 f4@5 ~ c4@7 ~ c4@5 ~, ~@6 g4@12 ~@4 g4@9 ~]/2",
  M: "~ a#3 ~ a#3 ~@2 f4@2, a#2@15 ~, ~ f4 g4@2, ~@5 a#3@3", N: "~@2 a#3 d4 ~@2 c3@2, c3@10 g3@5 ~, ~ f3@3 c4@3 ~",
  O: "[~@2 d4 ~@4 a3 ~@2 d4 ~@3 d4@2, d3@9 ~ d3@4 ~@2 b2@16, ~@2 a3@10 d4@5 ~ a3@7 ~ a3@6, ~@3 e4@6 ~@2 e4@5]/2",
  P: "~ g3 ~ g3 ~@2 d4@2, g2@7 ~, ~ d4 e4@2, ~@5 g3@3", Q: "~@2 b3 a3, a2, ~ a3@3 ~@4, ~ d4@3, ~@6 c#4@7 ~@3",
  R: "~@5 c4@3, ~@2 c3@13 ~, ~@4 e3@11 ~, ~@6 g3@9 ~", S: "~ e4, ~ a2@7, ~ e3@3, ~@3 a3@5",
  T: "~@2 d4 ~ [a3,c#4]@2 [a3,c#4,d4]@10, b2", U: "[~@16 [g3,b3,e4]@8 [g3,b3,d4]@7 ~, ~@15 e2@9 ~@8]/2",
  V: "~@2 a3@2 [a3,d4,f#4]@11 ~, b2", // D
  W: "[~@5 g3 ~@4 c#4 a3@5, a3@4 c#4@10 a3@7 ~@11, ~ d4@6 ~@2 d4@2 ~@5, ~@3 a3@3 e3@10]/2",
  X: "[~@2 f4 ~@4 c4 ~@2 f4 ~@3 f4@2, f3@9 ~ f3@4 ~@2 d3@16, ~@2 c4@10 f4@5 ~ c4@7 ~ c4@6, ~@3 g4@6 ~@2 g4@5]/2",
  Y: "~ a#3 ~ a#3 ~@2 f4@2, a#2, ~ f4 g4@2, ~@10 a#3@5 ~", Z: "~@2 a#3 d4 ~@2 c3@2, c3@5 g3@3, ~ f3@3 c4@4",
  AA: "[~@2 d4 ~@4 a3 ~@2 d4 ~@3 d4@2, d3@9 ~ d3@4 ~@2 b2@15 ~, ~@2 a3@10 d4@5 ~ a3@7 ~ a3@6, ~@3 e4@6 ~@2 e4@5]/2",
  AB: "~@2 b3 a3, a2@15 ~, ~ a3@3 ~@4, ~ d4@3, ~@6 c#4@7 ~@3",
  AC: "~@8 e4@5 ~@3, ~ a2@5 ~@2, ~@4 e3@9 ~@3, ~@6 a3@7 ~@3",
  AD: "[~@2 f#3@2 ~@2 f#3@6 d3@2 f#3@2 ~@6 f#3@4 b2@5 ~@7 f#3@7 ~@5 d4 ~ [a3,c#4]@2 [a3,c#4,d4]@10, d3@10 ~@6 b2@9 ~@7 d3@10 ~@6 b2@16, ~@4 a3@9 ~@9 b3@7 ~@7 a3@10 ~@18, ~@3 d4@7 ~ d4@6 ~@2 d4@6 ~@7]/4", // A Dmaj7
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.4)

// chords · electric guitar clean · "tk8" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@5 A B C ~ D B E ~@40 D B E ~@40 D B C ~ D B E ~@5 D B E ~@5 D B E ~@3 D B C ~ D B E ~@2
>`.pickRestart({
  A: "~ f#3@2 ~@4 b3, ~@3 f#3", B: "~@2 f#3@3 ~@7 d3@2 f#3@2", C: "~ a3 ~@6", D: "~@2 a3 ~@4 b3, ~ f#3@2 ~@3 f#3@2",
  E: "~@2 a3 ~@13",
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.4)

// chords · acoustic guitar steel · "tk9" · F#7
const acoustic_guitar_steel = note("<~@25 [~@3 [c#4,e4,f#4]@3 ~@2] ~@42 [~@3 [c#4,e4,f#4]@3 ~@2] ~@61>")
  .s("gm_acoustic_guitar_steel").gain(0.32).pan(0.7)

// chords · piano · "tk11"
const piano = note(`<
  A@4 B C D E B C D E ~@16 A@4 B C D ~ F G H I B C D ~ B C D ~ J K L B C D E ~@16 A@4 B C D ~ F G H I B C D ~ B C D ~ J
  K L B C D E B C D E ~@4 B C D E ~@4 B C D E ~@2 B C D E B C D E ~@2
>`.pickRestart({
  A: "[[a1,a2]@15 ~ a2@2 ~@4 [g3,a3,c#4,d4]@9 ~, [g3,a3,c#4,d4]@11 ~@5, ~@16 a1@15 ~, ~@9 a2@6 ~]/2", // A Gsus2
  B: "~@4 a3@6 ~@2 a3 ~ a3@2, d2@7 ~, ~@2 d3@8 d3@5 ~, ~ [d4,f#4]@3", // D
  C: "~ a3 ~@4 [a3,d4,f#4]@2, b2@6 [a3,f#4]@5 ~@5, ~@4 d4@7 ~@5, ~@4 b2@3 ~", // D
  D: "~@2 a3@2 d4 ~ [a3,d4]@5 ~ [a3,d4]@4, d2@13 ~@3", // D5
  E: "~@2 a3@2 ~@2 [a3,f#4]@4 b2@2 [a3,d4,f#4]@2 b2 ~, b2@9 ~@7, ~@4 d4@7 ~@5", // D
  F: "~@4 c4@6 ~@2 c4 ~ c4@2, f2@7 ~, ~@2 f3@8 f3@5 ~, ~ [f4,a4]@3", // F
  G: "~ c4 ~@4 [c4,f4,a4]@2, d3@6 [c4,a4]@5 ~@5, ~ f4@2 ~, ~@4 d3@3 ~", // F
  H: "~@2 c4@2 f4 ~ [c4,f4]@5 ~ [c4,f4]@4, f2@13 ~@3", I: "[c2,a#3,d4]@4 [c2,g3,c4]@3 ~",
  J: "[a2,b3,d4,g4]@8 [a2,a3,d4,f#4]@7 ~", K: "~@4 c3@2 ~ c3, [g3,c4,e4]@11 ~ [g3,c4,e4]@4", L: "a2 ~@3",
})).s("gm_piano").gain(0.44).pan(0.6)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<A@3 B ~@7 C ~@38 D ~@3 C ~@38 D ~@3 C ~@3 E ~@25 C ~@2>".pickRestart({
  A: "~@7 x ~ x ~@5 x", B: "~@7 x ~ x ~@6", C: "~@5 x ~@2", D: "~@3 x", E: "~@10 x!2 ~@4",
})).gain(0.31)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@3 A B@7 C B@11 D B@7 E B@18 F B@3 C B@11 D B@7 E B@18 F B@3 C B@3 G B@7 C B@7 C B@9 C ~@2
>`.pickRestart({
  A: "~@5 x ~@2", B: "~ x ~ x", C: "~@4 x ~@7 x ~@2 x", D: "~@4 x ~@10 x", E: "~@4 x ~@7 x!4",
  F: "~@4 x ~@5 x ~ x ~@2 x", G: "~@2 x ~ x ~@7 x ~@2 x",
})).gain(0.55)

// drums · hihat
const hihat = s("hh").struct("<[~@2 x!3 ~ x!3 ~@2 x!2 ~ x!2] [x ~ x!3 ~ x!3 ~@2 x!2 ~ x!2]!3 ~@126>").gain(0.31)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<[~@9 x ~@3 x ~@2]!4 ~@126>").gain(0.16)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@11 A ~@11 B ~@7 C ~@18 D ~@3 A ~@11 B ~@7 C ~@18 D ~@3 A ~@3 E ~@7 A ~@7 A ~@9 A ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~ x", C: "~@3 x", D: "~@4 x ~@2 x", E: "~ x ~@5 x",
})).gain(0.55)

// drums · open hat
const open_hat = s("oh").struct("<~@4 [x!8]!124 ~@2>").gain(0.39)

// drums · crash
const crash = s("cr").struct(`<
  A ~@3 A ~@2 B A ~@3 A ~@2 B A ~ A ~@2 B A ~ A ~@3 A ~@3 A ~@3 A ~@3 C ~@3 C ~@6 A ~@3 A ~@2 B A ~ A ~@2 B A ~ A ~@3 A
  ~@3 A ~@3 A ~@3 C ~@3 C ~@6 A ~@3 A ~@3 A ~@2 B A ~@3 A ~@2 B A ~@3 A ~ A ~@2 B A ~@3 A ~
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~ x ~@2",
})).gain(0.47)

stack(
  bass, string_ensemble_2, overdriven_guitar, distortion_guitar, electric_guitar_clean, electric_guitar_clean_2,
// … 2 more lines

More by Pooh