Strudelify
Un giorno insieme cover art

Nomadi 40

Un giorno insieme

Nomadi

KeyC majorTempo70 bpm
0:00/0:00
// Un giorno insieme — Nomadi
// 70 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 58 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/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
const bass = note(`<
  ~ A B C D E F G H I J E F G H I J K L M N O L P Q R S E F G H I T E F G H I U V W M X V W M N V W M X V W M Y Z@2 ~
>`.pickRestart({
  A: "c2@15 ~ e2@12 g2@4", B: "a2@15 ~ g2@11 ~ g2@4", C: "f2@14 ~@2 g2@11 ~ g2@2 f2@2", D: "e2@3 f2 g2@4", E: "c2 g2",
  F: "a2@16 e2@11 ~ e2@4", G: "f2@16 a2@11 ~ c3@4", H: "d3@11 ~ d3@4 c3@11 ~ c3@4", I: "b2@11 ~ b2@4 a2@8 g2@7 ~",
  J: "e2@15 ~ g2@16", K: "c2@10 ~@2 c2@3 ~ b1@12 g2@4", L: "a2@11 ~ a2@4 g2@11 ~ g2@4",
  M: "f2@10 ~@2 f2@4 g2@11 ~ g2@2 f2@2", N: "e2@3 f2 g2@2 f2 d2", O: "c2@5 g2 c3@2 b2@6 c3 b2",
  P: "f2@11 ~ f2@4 g2@11 ~ g2@4", Q: "c2@2 c3@4 c2 d2", R: "f2@11 ~ f2@4 g2@3 ~ g2@12", S: "c2 c3@3",
  T: "e2@15 ~ g2@12 f2@2 d2@2", U: "e2@15 ~ g2@8 f2@4 d2@4", V: "c2@10 ~@2 c2@3 ~ b1@12 b1@4",
  W: "a1@11 ~ a2@4 g2@11 ~ g2@4", X: "e2@6 f2@2 g2@6 f2 d2", Y: "e2@6 f2@2 g2@5 f2@3", Z: "[d2@3 c2@28 ~]/2",
})).s("gm_fretless_bass").gain(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H I J E F K H L M N O P Q R S T U V W E F G H I J E F K H I X N O P Y N O P Y N O P Y Z O P AA@2 ~@2
>`.pickRestart({
  A: "~ [e3,g3,c4,e4]@7 [e3,g3,c4,e4]@8 [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@6 [g3,b3,e4]@2 [e3,g3,b3,e4]@4", // C Em
  B: "[e3,a3,c4,e4]@7 ~ [a3,c4,e4]@4 [e3,a3,e4] [a3,c4,e4]@2 ~ [c4,e4]@3 ~ e4@4 [e3,g3,b3,e4]@5 [g3,b3,e4] e3 [g3,b3,e4], ~@7 e3@4 ~@4 [e3,a3]@4 [e3,g3,b3]@4 ~@9", // Am A5 Am C Em A5 Em
  C: "[f3,a3,c4,f4]!2 [f3,a3,c4,f4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2", // F G
  D: "[e3,g3,b3,e4]@4 [e3,g3,b3,e4]@2 ~ [e3,g3] [d3,g3,b3,g4] [d3,b3,g4] [d3,g3,b3,g4]@2 [d3,g3,b3,g4]!2 [d3,g3,b3,g4]@2, ~@6 [g3,b3,e4] ~@9, ~@13 [b3,e4]@2 ~@17", // Em G Em E5
  E: "[e3,g3,c4,e4]!2 [d3,g3,b3,g4]!2", // C G
  F: "[e3,a3,c4,e4]@4 [e3,a3,c4,e4]@4 [e3,g3,b3,e4]@2 [e3,g3,b3,e4]@3 [e3,g3,b3,e4] [e3,g3,b3,e4]@2", // Am Em
  G: "[f3,a3,c4,f4]@4 [f3,a3,c4,f4]@4 [e3,a3,c4,e4]@3 c4 [e3,a3,c4,e4]@4", // F Am
  H: "[d3,a3,d4,f4]@4 [d3,a3,d4,f4]@4 [a3,c4,f4,a4]!2 a4!2 [c4,f4,a4]@2 [c4,f4,a4]@2, ~@5 a3 a3@2", // Dm F
  I: "[d3,g3,b3,g4]@3 [g3,b3] [d3,g3,b3,g4]@4 [f3,a3,d4,f4]@4 [d3,g3,b3,g4]@4", // G Dm G
  J: "[e3,g3,b3,e4]@4 [e3,g3,b3,e4]@3 g4 [d3,g3,b3,g4] [d3,g3,b3,g4]@2 g3 [d3,g3,b3,g4]!2 [d3,g3,b3,g4]@2", // Em G
  K: "[f3,a3,c4,f4]@4 [f3,a3,c4,f4]@4 [e3,a3,c4,e4]@3 [c4,e4] [e3,a3,c4,e4]@4", // F Am C Am
  L: "[d3,g3,b3]@3 [g3,b3] [d3,g3,b3,g4]@4 [f3,a3,d4,f4]@4 [d3,g3,b3,g4]@4", // G Dm G
  M: "[e3,g3,b3,e4]@4 [e3,g3,b3,e4]@3 g4 [d3,g3,b3,g4] [d3,g3,b3,g4]@2 [d3,g3] [d3,g3,b3,g4]!2 ~@2", // Em G G5 G
  N: "~@2 [g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,b3,e4]@2 [e3,g3,b3,e4]!2 ~ [e3,g3,b3,e4]!2 [e3,a3,c4,e4]", // C Em Am
  O: "[e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4] [e3,a3,c4,e4]@2 [e3,g3,c4,e4] [c4,e4] ~ [e3,g3,c4,e4]@2 [e3,g3,c4,e4] [a3,e4], ~@5 g3 ~@2", // Am C A5
  P: "[f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] [g3,b3,g4] g4 [b3,g4] g4 [d3,g3,b3,g4] [d3,g3,b3,g4]@2 [d3,b3]@2, ~@7 d3@2 [d3,g3]@2 ~@3 [g3,g4] ~", // F G Em G G5 G
  Q: "[e3,g3,b3]@4 [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@2 e4@2 g4 ~@3 [g3,b3,g4] ~ d3@2 [d3,g3,b3,g4]@2 [g3,b3,g4]@2 [d3,g3,b3,g4]@2 ~@2, ~@14 [d3,g3,b3]@3 [b3,g4]@2 d3@2 [g3,b3,g4]@2 ~@9, ~@9 [d3,g3] ~@6", // Em G Em G G5
  R: "[g3,c4]@2 [g3,c4,e4]@2 [e3,g3,c4,e4]@2 e4 [e3,g3,b3,e4]@2 [e3,g3,b3,e4]!2 [g3,b3,e4] [e3,g3]@2 [e3,g3,b3,e4] [g3,b3,e4], e3@4 ~@8 b3 ~@3, ~@24 e4 ~@7", // C5 C Em
  S: "[e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4]@2 [e3,a3,c4,e4] e4 e3 [g3,c4]@2 [e3,g3,c4,e4] [e3,g3,c4,e4]@2 [e3,g3,c4,e4] [a3,c4,f4], ~@7 [g3,c4]@2 [e3,e4] ~@6", // Am C5 C F C5 E
  T: "[f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] [g3,b3,g4] [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2", // F G
  U: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@6 [g3,c4,e4]@4 e4@2 e4 ~ [e3,g3]@2 [e3,g3,c4,e4]@4 [e3,g3,e4]@2 a3@2, ~@9 [g3,c4]@3 ~@2 c4@2", // C Em C Em C5
  V: "[f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] [d3,g3,b3,g4] [d3,g3,b3,g4]@2 g4 [g3,b3,g4] [d3,g3,b3,g4]@2 [d3,g3,b3,g4] [g3,c4,e4]", // F G C
  W: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] [e3,g3,c4,e4]@2 [g3,c4,e4]@2 e4!2 ~ [e3,g3,c4,e4] e4 e3@2, ~@9 [e3,g3,c4]@3 ~ [g3,c4]@3", // C C5
  X: "[e3,g3,b3,e4]@4 [e3,g3,b3,e4]@3 g4 [d3,g3,b3,g4] ~@7", // Em G
  Y: "[e3,g3,b3,e4]@4 [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@2 e4@2 g4 ~@3 [g3,b3,g4] ~ d3@2 [d3,g3,b3,g4]@2 [g3,b3,g4]@2 [d3,g3,b3,g4]@2 ~@2, ~@14 [d3,g3,b3]@3 [b3,g4]@2 d3@2 [g3,b3,g4]@2 ~@9, ~@9 [d3,g3] ~@6", // Em G Em G G5
  Z: "~@2 [g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [g3,b3,e4]@2 [e3,g3,b3,e4]!2 ~ [e3,g3,b3,e4]!2 [e3,a3,c4,e4]", // C Em Am
  AA: "[[e3,g3,b3,e4]@4 [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@2 e4@2 g4@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 ~ [d3,g3,b3]@3 [d3,g3,b3,g4]@3 [g3,b3,g4]@2 ~ [b3,g4]@3 ~@29, ~@14 [d3,g3,b3]@4 ~@4 g4@3 ~@6 [d3,g3]@3 ~@30]/2", // Em G Em G G5
})).s("gm_acoustic_guitar_steel").gain(0.12).pan(1)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~ A B ~ C ~@2 D E F G ~@2 H E F I J K L M N O P Q R S ~@2 D E F G ~@2 H E F T J K U M J K U M J K U M J K U V ~@3
>`.pickRestart({
  A: "~@13 e3 ~@2", B: "~@12 c4 e3@2 ~@17", C: "~@6 e3 ~@2 g3 ~@6", D: "~@11 [a3,e4] ~@4", E: "~@5 [c4,f4] ~@2",
  F: "~@3 [d3,g4] ~@12", G: "~@3 [g3,b3,e4] ~@3 [d3,g3,b3] ~@3 [d3,b3,g4] ~@4", H: "~@11 a3 ~@4",
  I: "~@3 [g3,b3,e4] ~@3 [d3,g3,b3] ~@3 [b3,g4] ~@4", J: "~@12 [e3,g3,b3,e4] ~@3",
  K: "~@11 [c4,e4] ~@3 [f3,c4], ~@5 e3 ~@2", L: "~@8 [g3,b3] ~ b3 ~@4 g3", M: "~@13 d3 ~@2",
  N: "~@6 [e3,b3] ~@4 e3 ~ b3 ~ e3, ~@25 e4@2 ~@5", O: "~@7 e3 e4 ~ [e3,e4] ~@4 f3", P: "~@7 d3 ~@8",
  Q: "~@6 e4 e3@2 e3@2 e4 ~@3 [f3,f4]", R: "~@10 [d3,b3] d3 ~@3 e3", S: "~@7 e3@2 ~@2 [g3,c4,e4] ~ e3 e4@2",
  T: "~@3 [g3,b3,e4] ~@3 [d3,g3,b3] ~@8", U: "~@8 [g3,b3] ~ b3 ~@4 [g3,e4]", V: "~@29 d3@3",
})).s("gm_acoustic_guitar_steel").gain(0.07).pan(1)

// other · brass section
const brass_section = note("<~@18 A B C ~@19 A B ~@2 A B ~@2 A B ~@2 A B ~@4>".pickRestart({
  A: "~@6 f5 g5", B: "a5@15 ~ b5@15 ~", C: "b5",
})).s("gm_brass_section").gain(0.52)

// other · french horn
const french_horn = note("<~@16 A ~@4 B C ~@2 D E ~@11 F ~@19>".pickRestart({
  A: "~@5 c4 d4@2", B: "g4@15 ~ g4@15 ~", C: "e4@15 ~ e4@15 ~", D: "f4@8 e4@7 ~ [d4,g4]@15 ~", E: "[c4,g4]@29 ~@3",
  F: "~@2 g3 a3 b3 c4 d4 g3, ~@20 b3 ~@11",
})).s("gm_french_horn").gain(0.4).pan(0.4)

// chords · string ensemble 2
const string_ensemble_2 = note("<A B C@3 ~@5 D E@2 F@4 G@4 H@4 I@2 E@2 F@4 E J K@2 L@2 G@12 M@6 ~>".pickRestart({
  A: "~@6 g4 f5", B: "e5@19 ~@5 e4@4 d5@4",
  C: "[c5@23 ~@4 a4@4 a5@4 ~ a5@3 ~ a5@4 c5@4 b4@3 a5@4 g5@4 f5@2 ~ g5@31 ~@3]/3", D: "~@16 g3@4 a3@3 b3@4 d4@5",
  E: "c4 b3", F: "[~@8 g3@2 [f3,c4] [g3,b3]@5, a3 ~, ~@2 d4@3 ~@3]/4",
  G: "[c4 b3 ~@2 f4 [b3,g4]@3, e4 ~, ~@2 a3@3 ~@3]/4", H: "[c4 b3 ~@2 f4 b3 c4@2, e4@4 ~ g4@3, ~@2 a3@3 ~@3]/4",
  I: "[[a4,a5,a6]@2 [g4,g5,g6]@2 ~ [e4,e5,e6]@2 ~@2 [f4,f5,f6]@2 ~@3 d4@13 [c4,c5,c6]@2 [b3,b4,b5]@2 ~@6 c7@21 ~@6, ~@4 [f4,f5,f6]@2 ~ [g5,g6]@2 ~@2 [e5,e6]@2 [d5,d6]@14 ~@37, ~@8 g4@2 ~@2 e4@2 ~@17 [c4,c5,c6]@28 ~@5]/2", // A G E F C B F G …
  J: "c4 e4", K: "[~@2 f4 a4, a3]/2", L: "[g3@2 [f3,c4] [g3,b3]@5]/2",
  M: "[c4@8 b3@8 ~@16 f4@8 [b3,g4]@27 [c4,g4]@28 ~, e4 ~@2, ~@2 a3@3 ~@7]/6", // Em C5
})).s("gm_string_ensemble_2").gain(0.56).pan(0.2)

// other · string ensemble 2
const string_ensemble_2_2 = note(`<
  ~ A B C@2 ~@6 D@2 E F ~ G H I@3 J K@3 L@2 D@2 E F ~ M N@2 O P Q G H I@3 J R S@2 H T U V J R W@4 ~
>`.pickRestart({
  A: "c4@15 ~ b3@16, g4", B: "a3@15 g3@17, e4", C: "[[c4,f4]@16 d4@15 e4@17 d4@15 ~, ~@16 g4@47 ~]/2",
  D: "[g4@31 a4@17 g4@16]/2", E: "f4@15 e4@17, c4", F: "f4", G: "~@7 g4@10 a4@2 b4@2 c5@2 d5@2 e5@2 f5@2 d5@3",
  H: "c5 d5, g5", I: "[[c5,a5]@47 d5@16 e5@16 d5@17, ~@47 b5@49]/3", J: "c6 d6, g5",
  K: "[e6@32 f6@15 b5@16 ~ c6@32, a5@47 g6@49]/3", L: "[f4@4 e4@4 g4@23 ~]/2", M: "~@7 b3@4 ~ c4@3 d4@4 e4@4 f4@4 d4@5",
  N: "[e4@16 g4@15 a4@17 b4@16]/2", O: "f4@15 e4@17, c5", P: "d5@2 e5 f5", Q: "[d5,g5]@2 c5 b4", R: "[a5,e6]",
  S: "[[a5,a6]@11 [c5,c6]@4 [b4,b5]@4 [a5,a6]@4 [g5,g6]@4 [f5,f6]@4 [g5,g6]@33]/2", T: "[c5,a5]",
  U: "[a5,a6]@11 ~ c6@4 [b4,b5]@4 [a5,a6]@4 [g5,g6]@3 ~ f6@4, ~@11 c5@4 ~@12 f5@4 ~", V: "[g5,g6]",
  W: "[[a5,a6]@11 [c5,c6]@4 [b4,b5]@4 [a5,a6]@4 [g5,g6]@4 [f5,f6]@4 g6@39 ~ [e3,g3]@55 ~@2, ~@31 g5@36 ~@61]/4", // A C B A G F Em
})).s("gm_string_ensemble_2").gain(0.35).pan(0.7)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~ A B C D ~@6 E F G@2 H I J B K L J B M N O@2 E F G@2 H P Q R G@2 S@2 J B K L J B K L J B K L J B K T@3 ~
>`.pickRestart({
  A: "~ c3@15 e3@16", B: "a2 g2", C: "f2@4 g2@3 f2", D: "e2@6 f2@2 g2@7 ~", E: "c3 g2", F: "a2 e2",
  G: "[f2@16 a2@15 d3@17 c3@16]/2", H: "b2@2 a2 g2", I: "e2@4 ~ c4 d4@2, ~ g2", J: "c3 b2", K: "f2@15 g2@13 f2@4",
  L: "e2@3 f2 g2@4", M: "f2@15 g2@17", N: "c3",
  O: "[a3@2 g3@2 ~ e3@2 g3@2 f3@2 e3@2 d3@14 c3@2 b2@2 c3@29 ~@4, ~@2 f3 ~@29]/2",
  P: "~@2 g3 a3 g3 a3 g3 a3 g3 a3 g3 a3 g3 a3 b3 g3, e2 g2", Q: "c3 g2, g3", R: "[a2,e3]@15 ~ e2@16, ~@15 g3@17",
  S: "[b2@16 a2@7 ~@4 g5@3 ~@5 g5@2 a5@2 g5@2 a5@2 g5@2 a5@2 ~@3 a5@2 b5@2 c6@2 d6@2 e6@2 f6@2 d6@2, ~@23 g5@3 ~@5 g5@3 ~@13 g5@3 ~@2 c4@4 d4@8, ~@3 g2 e2@2 g2@2]/2",
  T: "[e2@6 f2@2 g2@11 c2@28 ~]/3",
})).s("gm_string_ensemble_1").gain(0.48)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note(`<
  ~@37
  [~@7 g5@2 a5@2 g5@2 a5@2 g5@2 a5@2 g5@2 a5@2 ~@2 a5@3 ~ a5@3]
  [~ a5@2 ~@29]
  ~@19
>`).s("gm_string_ensemble_1").gain(0.32)

// chords · piano
const piano = note(`<
  ~@5 A B C D E F A G H I J K L M N O P M Q R S T A G H I J K A G H I J K P M U K P M U K P M U K V M U W@4
>`.pickRestart({
  A: "[g3,c4,e4]!2 [g3,b3,d4]!2, c3 g2", B: "[a3,c4,e4]@2 [a3,c4,e4]@2 e2@2 ~ [g3,b3,e4], a2@4 [g3,b3,e4]@3 ~, ~@3 e2",
  C: "[f3,a3,c4]!2 [a3,c4,e4]!2, f2 a2", D: "[a3,d4,f4]!2 [a3,c4,d4,f4]!2, d2",
  E: "[g3,b3,d4]@8 [g3,b3,d4]@8 [a3,c4,d4]@8 [g3,b3]@5 ~@3, g2, ~@3 d4", F: "[b3,e4,g4] [g3,b3,e4] [g3,b3,d4]!2, e2 g2",
  G: "[a3,c4,e4]!2 [g3,b3,e4]!2, a2 e2", H: "[a3,c4,f4]!2 [a3,c4,e4]!2, f2 a2", I: "[a3,d4,f4]!2 [a3,c4,d4,f4]!2, d3",
  J: "[g3,d4]!2 [a2,f3,c4] [g2,g3,b3,d4], b2 ~", K: "[g3,b3,e4]!2 [g3,b3,d4]!2, e2 g2",
  L: "[g3,c4,e4]!2 [g3,b3,e4]!2, ~ b2", M: "[a3,c4,e4]!2 [g3,c4,e4]!2, a2 g2",
  N: "[a3,c4,f4] [a3,c4] [g3,b3,d4]!2, f2@17 ~@15, ~@8 f4@3 ~@21", O: "[g3,b3,e4]!2 [g3,b3,d4]!2",
  P: "[g3,c4,e4]!2 [g3,b3,e4]!2, c3 b2", Q: "[a3,c4,f4]!2 [g3,b3,d4] d4, f2 g2, ~@6 b3 ~, ~@24 g3 ~@7",
  R: "[g3,c4,e4]!4, c3", S: "[a3,c4,f4]@2 [a3,c4,f4]@2 [g3,c4,d4] ~ [g3,b3,d4]@2, f2 g2", T: "[g3,c4,e4]!4, c3@15 ~",
  U: "[a3,c4,f4] [a3,c4] [g3,b3,d4]!2, f2@17 ~@15, ~@8 f4@3 ~@5 g2@11 ~@5", V: "[g3,c4,e4]!2 [g3,b3,e4]!2, c3 ~",
  W: "[[g3,b3,e4]@4 [g3,b3,e4]@4 [g3,b3,d4]@5 [g3,b3,d4]@6 [c3,g3,c4,e4]@32 ~@13, e2@8 g2@11 ~@45]/4", // Em G C
})).s("gm_piano").gain(0.33).pan(0)

// other · clarinet
const clarinet = note("<~ A B C D ~@11 E F@2 G@2 H@2 G@2 ~@14 F@2 G@2 F@2 G@2 F@2 G@2 F@2 I@3 ~@2>".pickRestart({
  A: "c4@15 ~ b3@16", B: "e4", C: "f4 d4", D: "e4 d4", E: "~@2 g3 a3 b3 c4 d4@2", F: "[e4@63 ~]/2", G: "[f4 g4@3]/2",
  H: "e4/2", I: "[f4@8 g4@27 ~@13]/3",
})).s("gm_clarinet").gain(0.35)

// other · trumpet
const trumpet = note("<~@21 [~@7 b4@9] [c5@7 ~] ~@2 [c5@15 ~ g4@16] [c5@31 ~] ~@31>").s("gm_trumpet").gain(0.4).pan(1)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A C A C D@2 E F G D@2 H I J K@2 L M D N K O P Q D@3 R D H G S T U D V G D S W S D S F S K@2 F S K@2 M X ~@2
>`.pickRestart({
  A: "x ~@6 x!2 ~ x ~@5", B: "x ~@6 x!2 ~ x ~@2 x!3", C: "x ~@6 x!2 ~ x ~@3 x ~", D: "x ~@7 x ~ x ~@4 x",
  E: "x ~@7 x ~@6 x", F: "x", G: "x ~ x ~@5 x ~ x ~@4 x", H: "x!2 ~ x!2 ~@3", I: "x ~@3 x!2 ~ x",
  J: "x ~@5 x!2 ~@6 x ~@3 x ~@9 x ~@3", K: "x ~@2 x ~@4 x ~ x ~@3 x ~", L: "x ~@2 x ~@4 x ~ x ~@4 x",
  M: "x ~ x!2 ~@4 x ~@7", N: "x!2 ~@2 x!2 ~@2", O: "x ~@5 x!2 ~@14 x!2 ~@8", P: "~@3 x ~@4 x ~ x ~@4 x",
  Q: "x ~@17 x!2 ~@12", R: "x ~@2 x ~@3 x", S: "x!2 ~@2 x!2 ~ x", T: "x ~@3 x!2 ~@2", U: "x ~ x ~@3 x ~ x ~@4 x ~@2",
  V: "x ~ x ~@4 x ~ x ~@5 x", W: "x ~@2 x ~@12", X: "~@3 x ~@12",
})).gain(0.56)

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

// drums · hihat
const hihat = s("hh").struct("<~@11 A@6 B@3 C B@3 D B@2 A@3 E A F A@3 G A@2 ~@19>".pickRestart({
  A: "x ~ x ~ x!4", B: "x!8", C: "x!4 ~ x!3", D: "x!6 ~@2", E: "x!2 ~ x", F: "x!4", G: "x ~ x ~ x!2 ~ x",
})).gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@11 [~ x ~ x ~@4]!6 ~@10 [~ x ~ x ~@4]!12 ~@19>").gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<~@10 A ~@5 B ~@3 C ~@4 D E ~@3 F ~ C ~@5 G ~@8 H@3 I H@3 ~@4>".pickRestart({
  A: "~@31 x", B: "~@5 x ~@2", C: "~@15 x", D: "x", E: "~@7 x", F: "~@26 x!2 ~@4", G: "~@10 x ~@2 x!2 ~",
  H: "~@15 x ~@16", I: "~@7 x ~@6 x ~",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@10 A ~@3 B ~ C ~@3 B ~@3 D ~ E ~@3 F ~ D ~@5 G ~@3 H ~@3 I J@3 K J@3 L M ~@2
>`.pickRestart({
  A: "~@24 x!2 ~@4 x ~", B: "~@12 x!3 ~", C: "~@22 x ~ x ~ x!2 ~@4", D: "~@7 x", E: "~@3 x", F: "~@16 x!2 ~@4 x!2 ~@8",
  G: "~@11 x!2 ~ x ~", H: "~@12 x!4", I: "~@24 x!2 ~ x!3 ~ x", J: "~@7 x ~@8", K: "x ~@4 x ~@3 x ~ x!3 ~ x",
  L: "~@26 x ~@2 x ~@2", M: "x ~@2 x ~@28",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@20 A ~@3 B ~@5 A ~@5 B ~@21>".pickRestart({
  A: "~ x", B: "~@3 x",
})).gain(0.32)
// … 16 more lines

More by Nomadi