Strudelify

Canzone per i desaparecidos

Nomadi

KeyG majorTempo78 bpm
0:00/0:00
// Canzone per i desaparecidos — Nomadi
// 78 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 103 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(78/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 A B C A D B A B C A D B A B C A D B A B C A D B A B E F E F E F E F C A D B A B C A D B A B C A D B A B E F E F
  E F E F C A D B A B C A D B A B C A D B A B E F E F E F E F E F E F E F E F E F E F G@2
>`.pickRestart({
  A: "d2@12 a1@6 c2@6 d2@8 ~ d2@3 a1@6 d2@2 ~@4", B: "c2@12 g1@6 b1@6 c2@8 ~ c2@3 g1@6 c2@2 ~@4",
  C: "d2@2 a1 c2 d2@2 a1@2", D: "c2@2 g1 a#1 c2@2 g1@2", E: "d2@4 a1@4 d2@3 d2 a1@2 d2 ~",
  F: "c2@12 g1@12 c2@8 ~ c2@3 g1@6 c2@3 ~@3", G: "d2/2",
})).s("gm_fretless_bass").gain(0.48)

// other · flute
const flute = note(`<
  ~@5 A@5 ~ B C@4 ~ D E@4 ~ F G@2 H@2 I@6 ~@3 J K@4 ~ L M N@3 ~ O@2 P@3 I@6 ~@3 Q@5 ~ R S T U@2 ~ V@4 W I@6 ~@2 X@8 Y@2
  ~@5
>`.pickRestart({
  A: "[~@12 d5@4 ~@2 d5@2 ~ d5@4 ~@2 d5@6 ~@3 d5@4 ~@2 d5@2 ~ d5@5 ~ d5@5 ~@7 d5@2 ~ d5@2 ~ d5@2 ~ d5@5 ~ e5@4 ~@2 e5@5 ~ d5@2 ~ c5@5 ~ c5@5 ~@10 c5@2 ~ c5@2 ~ c5@4 ~@2 c5@3 ~@3 c5@4 ~@2 c5@2 ~ c5@5 ~ c5@5 ~@10 c5@2 ~ c5@2 ~ c5@4 ~@2 c5@4 ~@2 c5@2 ~ d5@4 ~@2 d5@5 ~ d5@5 ~@40]/5",
  B: "~@12 d5@4 ~@2 d5@2 ~ d5@5 ~ d5@2 ~ d5@4 ~@2 d5@4 ~@2 d5@4 ~@2",
  C: "[d5@5 ~ d5@5 ~@7 d5@2 ~ d5@2 ~ d5@4 ~@2 d5@2 ~ d5@2 ~ e5@4 ~@2 d5@2 ~ c5@5 ~ c5@5 ~@10 c5@2 ~ c5@2 ~ c5@4 ~@2 c5@4 ~@2 c5@4 ~@2 c5@2 ~ c5@5 ~ c5@5 ~@10 c5@2 ~ c5@2 ~ c5@4 ~@2 c5@4 ~@2 c5@2 ~ d5@4 ~@2 d5@5 ~ d5@6 ~@39]/4",
  D: "~@9 a4@2 ~ d5@4 ~@2 d5@2 ~ d5@4 ~@2 d5@3 ~@3 d5@7 ~@2 d5@2 ~ d5@2 ~",
  E: "[d5@5 ~ d5@5 ~@7 d5@2 ~ d5@2 ~ d5@4 ~@2 d5@2 ~ e5@8 ~ d5@2 ~ c5@5 ~ c5@5 ~@10 c5@2 ~ c5@2 ~ c5@3 ~@3 c5@3 ~@3 c5@4 ~@2 c5@2 ~ c5@5 ~ c5@5 ~@10 c5@3 ~@3 c5@5 ~ c5@4 ~@2 c5@2 ~ d5@4 ~@2 d5@5 ~ d5@6 ~@39]/4",
  F: "~@12 d5@4 ~@2 d5@2 ~ d5@4 ~@2 d5@7 ~@2 d5@4 ~@2 d5@5 ~",
  G: "[d5@5 ~ d5@6 ~@3 d5@2 ~ d5@2 ~ d5@2 ~ d5@5 ~ d5@5 ~ e5@2 ~ d5@4 ~@2 c5@5 ~ c5@6 ~@9 c5@2 ~ c5@2 ~ c5@4 ~@2 c5@2 ~ c5@5 ~ c5@2 ~ c5@4 ~@2]/2",
  H: "[c5@5 ~ c5@4 ~@8 c5@4 ~@2 c5@4 ~@2 c5@5 ~ c5@2 ~ d5@4 ~@2 d5@5 ~ d5@7 ~@38]/2",
  I: "[~@30 d5@2 ~ d5@2 ~ d5@4 ~@2 d5@2 ~ f5@5 ~ d5@5 ~@22 d5@2 ~ d5@2 ~ d5@5 ~ d5@2 ~ d5@5 ~ c5@10 ~@17 d5@2 ~ d5@2 ~ d5@4 ~@2 d5@2 ~ f5@5 ~ d5@17 ~@10 d5@2 ~ d5@2 ~ d5@5 ~ d5@2 ~ d5@5 ~ c5@14 ~@13 d5@2 ~ d5@2 ~ d5@5 ~ d5@2 ~ f5@6 d5@16 ~@29]/6",
  J: "~@12 d5@4 ~@2 d5@5 ~ d5@2 ~ d5@7 ~@2 d5@5 ~ d5@4 ~@2",
  K: "[d5@5 ~ d5@5 ~@7 d5@2 ~ d5@2 ~ d5@4 ~@2 d5 ~@2 e5@8 ~ d5@2 ~ c5@5 ~ c5@5 ~@10 c5 ~@2 c5@2 ~ c5@5 ~ c5@4 ~@2 c5@4 ~@2 c5@2 ~ c5@5 ~ c5@4 ~@11 c5@2 ~ c5@2 ~ c5@4 ~@2 c5@4 ~@2 c5@2 ~ d5@4 ~@2 d5@5 ~ d5@6 ~@39]/4",
  L: "~@12 d5@5 ~ d5@4 ~@2 d5@4 ~@2 d5@4 ~@2 d5@5 ~ d5@5 ~",
  M: "d5@5 ~ d5@4 ~@8 d5@2 ~ d5@2 ~ d5@4 ~@2 d5@2 ~ d5@2 ~ e5@4 ~@2 d5@5 ~",
  N: "[c5@5 ~ c5@5 ~@7 c5@2 ~ c5@2 ~ c5@5 ~ c5@4 ~@2 c5@4 ~@2 c5@2 ~ c5@5 ~ c5@4 ~@11 c5@2 ~ c5@2 ~ c5@4 ~@2 c5@4 ~@2 c5@5 ~ d5@2 ~ d5@5 ~ d5@8 ~@37]/3",
  O: "[~@12 d5@4 ~@2 d5 ~@2 d5@2 ~ d5@5 ~ d5 ~@2 d5@7 ~@2 d5@2 ~ d5@5 ~ d5@4 ~@8 d5@2 ~ d5@4 ~@2 d5@4 ~@2 d5@2 ~ e5@8 ~ d5@5 ~]/2",
  P: "[c5@4 ~@2 c5@5 ~@7 c5@2 ~ c5@2 ~ c5@5 ~ c5@4 ~@2 c5@4 ~@2 c5@2 ~ c5@5 ~ c5@5 ~@10 c5@2 ~ c5@2 ~ c5@4 ~@2 c5@4 ~@2 c5@2 ~ c5@4 ~@2 d5@12 ~@39]/3",
  Q: "[~@12 d5@5 ~ d5@4 ~@2 d5@2 ~ d5@8 ~ d5@4 ~@2 d5@2 ~ d5@5 ~ d5@5 ~@10 d5@2 ~ d5@2 ~ d5@4 ~@2 d5@5 ~ e5@4 ~@2 d5@2 ~ c5@5 ~ c5@6 ~@9 c5@2 ~ c5@2 ~ c5@4 ~@2 c5@4 ~@2 c5@4 ~@2 c5@2 ~ c5@5 ~ c5@4 ~@11 c5@2 ~ c5@2 ~ c5@4 ~@2 c5@2 ~ c5@2 ~ c5@2 ~ d5@4 ~@2 d5@12 ~@39]/5",
  R: "~@12 d5@2 ~ d5@6 ~@2 d5@5 ~@2 d5@2 d5@2 ~ d5@4 ~@2 d5@2 ~ d5@4",
  S: "~@3 d5@4 ~@11 d5@2 ~ d5@2 ~ d5@4 ~@2 d5@2 ~ e5@7 ~@2 d5@2 ~ c5@3",
  T: "~@3 c5@5 ~@10 c5@2 ~ c5@2 ~ c5@5 ~ c5@4 ~@2 c5@4 ~ c5@5 ~@2",
  U: "[c5@5 ~ c5@5 ~@7 c5@2 ~ c5@2 ~ c5@7 ~ c5@2 ~ c5@3 ~ d5@4 ~@2 d5@12 ~@39]/2",
  V: "[~@12 d5@4 ~@2 d5@2 ~ d5@8 ~ d5@4 ~@2 d5@4 ~@2 d5@2 ~ d5@5 ~ d5@5 ~@10 d5@2 d5@2 ~@2 d5@5 ~ d5@5 ~ e5@2 ~ d5@4 ~@2 c5@7 ~ c5@4 ~@9 c5@2 ~ c5@2 ~ c5@5 ~ c5@4 ~@2 c5@2 ~ c5@4 ~@2 c5@8 ~ c5@5 ~@7 c5@2 ~ c5@2 ~ c5@4 ~@2 c5@4 ~@2 c5@4 ~@2 d5@4 ~@2]/4",
  W: "d5@5 ~ d5@10 ~@32",
  X: "[~@30 d5@2 ~ d5@2 ~ d5@4 ~@2 d5@2 ~ f5@5 ~ d5@5 ~@22 d5@2 ~ d5@2 ~ d5@5 ~ d5@2 ~ d5@5 ~ c5@10 ~@17 d5@2 ~ d5@2 ~ d5@4 ~@2 d5@2 ~ f5@5 ~ d5@17 ~@10 d5@2 ~ d5@2 ~ d5@5 ~ d5@2 ~ d5@5 ~ c5@14 ~@13 d5@2 ~ d5@2 ~ d5@4 ~@2 d5@2 ~ f5@5 ~ d5@5 ~@22 d5@2 ~ d5@2 ~ d5@5 ~ d5@2 ~ d5@5 ~ c5@10 ~@17 d5@2 ~ d5@2 ~ d5@4 ~@2 d5@2 ~ f5@5 ~ d5@17 ~@10 d5@2 ~ d5@2 ~ d5@5 ~ d5@2 ~ d5@3]/8",
  Y: "[~@3 c5@14 ~@13 d5@2 ~ d5@2 ~ d5@4 ~@2 d5@2 ~ f5@5 ~ d5@5 ~@40]/2",
})).s("gm_flute").gain(0.19)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@5 A ~@3 A B A ~@3 A B A ~@3 A B A ~@3 A B C D E F G H G H A ~@3 A B A ~@3 A B A ~@3 A B C D E F G H G H A ~@3 A B A
  ~@3 A B A ~@3 A B C D E F G H G H G H G H G H G H G H G H I ~
>`.pickRestart({
  A: "[d3,a3]!8 ~@16", B: "[c3,g3]!8 ~@16", C: "d3@23 ~", D: "c3@11 ~", E: "d3@15 ~", F: "c3@15 ~",
  G: "d3@3 e3@3 f3@3 d3@6 e3@3 f3@3 d3@26 ~", H: "c3@3 d3@3 e3@3 c3@6 d3@3 e3@3 c3@25 ~@2", I: "d3@17 ~@31",
})).s("gm_distortion_guitar").gain(0.32).pan(0.6)

// chords · distortion guitar · soft notes
const distortion_guitar_soft = note(`<
  ~@5 A ~@3 A B A ~@3 A B A ~@3 A B A ~@3 A B ~@8 A ~@3 A B A ~@3 A B A ~@3 A B ~@8 A ~@3 A B A ~@3 A B A ~@3 A B ~@22
>`.pickRestart({
  A: "~@8 [d3,a3]!5 ~@11", B: "~@8 [c3,g3]!5 ~@11",
})).s("gm_distortion_guitar").gain(0.16).pan(0.6)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A@5 ~@3 B@3 ~@3 B@3 ~@3 B@3 ~@3 B@3 ~@3 A@5 ~@3 B@3 ~@3 B@3 ~@3 B@3 ~@3 A@5 ~@3 B@3 ~@3 B@3 ~@3 B@3 ~@3 C@8 D@8 E F@2
>`.pickRestart({
  A: "[~@41 d4@6 f4@18 g4@6 a4@18 d5@6 c5@18 d5@6 e5@18 d4@6 f4@18 g4@6 a4@18 d5@6 c5@18 d5@6 e5@24 ~]/5",
  B: "[~@41 d4@6 f4@18 g4@6 a4@18 d5@6 c5@18 d5@6 e5@19 ~@6]/3",
  C: "[~@41 d4@6 f4@18 g4@6 a4@18 d5@6 c5@18 d5@6 e5@18 d4@6 f4@18 g4@6 a4@18 d5@6 c5@18 d5@6 e5@18 d4@6 f4@18 g4@6 a4@18 d5@6 c5@18 d5@6 e5@18 d4@6 f4@18 g4@6 a4@18 d5@6 c5]/8",
  D: "[~@17 d5@6 e5@18 d4@6 f4@18 g4@6 a4@18 d5@6 c5@18 d5@6 e5@18 d4@6 f4@18 g4@6 a4@18 d5@6 c5@18 d5@6 e5@18 d4@6 f4@18 g4@6 a4@18 d5@6 c5@18 d5@6 e5@18 d4@6 f4@18 g4@6 a4@18 d5@6 c5]/8",
  E: "~@17 d5@6 e5@25", F: "d4/2",
})).s("gm_string_ensemble_1").gain(0.4).pan(0.4)

// other · string ensemble 1
const string_ensemble_1_2 = note("<~@28 A@5 ~@21 A@5 ~@21 B@8 C@8 D@5 ~@2>".pickRestart({
  A: "[~@47 [c4,c5]@2 ~@4 [a3,a4]@2 ~ [f3,f4] ~@5 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~ [e3,e4]@2 ~@4 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~ [f3,f4] ~@5 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~ [e3,e4]@2 ~@4 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [g3,g4]@2 ~@5]/5", // C A F C A C A C …
  B: "[~@47 [c4,c5]@2 ~@4 [a3,a4]@2 ~ [f3,f4] ~@5 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~ [e3,e4]@2 ~@4 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~ [f3,f4] ~@5 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~ [e3,e4]@2 ~@4 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~ [f3,f4] ~@5 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~ [e3,e4]@2 ~@4 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~ [f3,f4] ~@5 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]]/8", // C A F C A C A C …
  C: "[~@5 [g3,g4]@2 ~ [e3,e4]@2 ~@4 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~ [f3,f4] ~@5 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~ [e3,e4]@2 ~@4 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~ [f3,f4] ~@5 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~ [e3,e4]@2 ~@4 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~ [f3,f4] ~@5 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~ [e3,e4]@2 ~@4 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~ [f3,f4] ~@5 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]]/8", // G E C G C G C A …
  D: "[~@5 [g3,g4]@2 ~ [e3,e4]@2 ~@4 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~ [f3,f4] ~@5 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~ [e3,e4]@2 ~@4 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~ [f3,f4] ~@5 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [a3,a4]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~ [e3,e4]@2 ~@4 [c4,c5]@2 ~@4 [c4,c5]@2 ~@4 [g3,g4]@2 ~@4 [c4,c5]@2 ~ [c4,c5]@2 ~@4 [g3,g4]@2 ~@5]/5", // G E C G C G C A …
})).s("gm_string_ensemble_1").gain(0.4).pan(0.8)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B A B A@2 B@2 A B A@2 B@2 A B A@2 B@2 A B A@2 B@2 A B ~@8 A@2 B@2 A B A@2 B@2 A B A@2 B@2 A B ~@8 A@2 B@2 A B A@2
  B@2 A B A@2 B@2 A B ~@22
>`.pickRestart({
  A: "~@7 a4@2 ~ a4@3 ~@6 a4@3 ~@9 a4@2 ~ a4@3 ~@6 a4@3 ~@2, ~@2 [d4,f4]!2 ~@2 [d4,f4] ~@3 [d4,f4]!2 ~@2 [d4,f4] ~", // Dm
  B: "~@7 g4@2 ~ g4@3 ~@6 g4@3 ~@9 g4@2 ~ g4@3 ~@6 g4@2 ~@3, ~@6 [c4,e4]@2 ~ [c4,e4]@3 ~@6 [c4,e4]@3 ~@9 [c4,e4]@2 ~ [c4,e4]@3 ~@6 [c4,e4]@3 ~@3", // C
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.7)

// chords · marimba
const marimba = note("<~@5 A B C D@6 E@12 F@8 ~@3 A B G E@12 F@8 ~@3 A B G H@8 ~ A B I J ~@24>".pickRestart({
  A: "d5@6 ~@3 d5@6 ~@3 e5@4 ~@2 d5@7 ~@2 a4@7 ~@2 f4@4 ~@2", B: "d5@7 ~@2 d5@6 ~@3 e5@4 ~@2 d5@13 ~@11",
  C: "g5@6 ~@3 e5@6 ~@3 c5@4 ~@2 c5@6 ~@3 g4@6 ~@3 e4@6",
  D: "[g4@6 ~@3 g4@7 ~@2 a4@5 ~@121 d5@6 ~@3 d5@6 ~@3 e5@4 ~@2 d5@7 ~@2 a4@7 ~@2 f4@4 ~@2 d5@7 ~@2 d5@6 ~@3 e5@4 ~@2 d5@13 ~@11 g5@6 ~@3 e5@6 ~@3 c5@4 ~@2 c5@6 ~@12 e4@6, ~@8 g4@83 g4@5]/6",
  E: "[g4@9 ~@9 a4@5 ~@121 d5@6 ~@3 d5@6 ~@3 e5@4 ~@2 d5@7 ~@2 a4@7 ~@2 f4@4 ~@2 d5@7 ~@2 d5@6 ~@3 e5@4 ~@2 d5@13 ~@11 g5@6 ~@3 e5@6 ~@3 c5@4 ~@2 c5@6 ~@12 e4@6, ~@3 g4@5 g4@83 g4@5]/6",
  F: "[g4@9 ~@9 a4@5 ~ g4@360, ~@3 g4@5 ~@120]/8", G: "g5@6 ~@3 e5@6 ~@3 c5@4 ~@2 c5@6 ~@12 e4@6, ~@11 g4@5",
  H: "[~@18 a4@5 ~@121 d5@6 ~@3 d5@6 ~@3 e5@4 ~@2 d5@7 ~@2 a4@7 ~@2 f4@4 ~@2 d5@7 ~@2 d5@6 ~@3 e5@4 ~@2 d5@13 ~@11 g5@6 ~@3 e5@6 ~@3 c5@4 ~@2 c5@6 ~@12 e4@6 ~@18 a4@5 ~@73, g4]/8",
  I: "g5@6 ~@3 e5@6 ~@3 c5@4 ~@2 c5@6 ~@12 e4@6", J: "~@18 a4@5 ~@25",
})).s("gm_marimba").gain(0.48)

// chords · percussive organ
const percussive_organ = note(`<
  ~ A B A B ~@4 A B ~@4 A B ~@4 A B ~@4 A B A B A B A B A B ~@4 A B ~@4 A B ~@4 A B A B A B A B A B ~@4 A B ~@4 A B ~@4
  A B A B A B A B A B A B A B A B A B A B A B C@2
>`.pickRestart({
  A: "[d5,f5,a5]", B: "[c5,e5,g5]", C: "[d5,f5,a5]/2",
})).s("gm_percussive_organ").gain(0.11)

// chords · vibraphone
const vibraphone = note(`<
  ~@9 A B ~@4 A B ~@4 A B ~@4 A B ~@12 A B ~@4 A B ~@4 A B ~@12 A B ~@4 A B ~@4 A B ~@22
>`.pickRestart({
  A: "[d4,f4]@7 ~@2 [d4,f4]@8 ~ [e4,g4]@6 [f4,a4]@20 ~@4", B: "[e4,g4]@7 ~@2 [e4,g4]@7 ~@2 [f4,a4]@6 ~@24",
})).s("gm_vibraphone").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B@26 C B@3 C B@3 D B@17 E B@7 F B@17 G B@3 D B H B D B I B@3 I B@3 I B J K ~
>`.pickRestart({
  A: "x ~@6 x!2 ~@2 x ~@4", B: "x ~@2 x ~@3 x!2 ~@2 x ~@4", C: "x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x",
  D: "x ~@2 x ~@3 x ~ x ~ x ~ x ~ x", E: "x ~@2 x ~@3 x!2 ~@6 x", F: "x ~@2 x ~@3 x!2 ~@2 x!2 ~@2 x",
  G: "x ~@2 x ~@11 x", H: "x ~@2 x ~@3 x!2 ~@2 x ~ x ~ x", I: "x ~@2 x ~@3 x!2 ~@2 x ~@3 x",
  J: "x ~@2 x ~@3 x ~ x ~ x ~@4", K: "x",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<~ A@27 B A@7 C A@17 D A@7 E A@17 D A@3 F A@3 G A@11 C ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@12 x ~@11 x ~@11 x ~@5 x!6", C: "~ x ~@2", D: "~@4 x ~@4 x ~@2 x ~@3", E: "~@4 x ~@4 x ~@6",
  F: "~ x!3", G: "~@2 x ~@2 x ~ x",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@3 B C@3 B A@3 C@2 A@3 C A C B A@2 C A C A C@2 D@7 E C@2 A@4 C A C A@3 C A C A C F D@7 E C A C A@3 C A C A@3 C A C
  A C G D@7 E D@12 ~@2
>`.pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!3 ~@2 x", B: "x ~ x!3 ~ x!3 ~ x!3 ~@3", C: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2",
  D: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x", E: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~ x!2", F: "x ~ x!3 ~ x!3 ~@7", G: "x ~ x!2 ~@12",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@36 A ~@51 A ~@3 A ~@7 A ~@2>".pickRestart({
  A: "~@45 x!2 ~",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@32 A ~@3 B ~@17 C ~@3 D ~@3 C ~@17 E ~@5 F ~ G ~@11 B ~@2>".pickRestart({
  A: "~@4 x ~@2 x", B: "~@2 x!2", C: "~@13 x!2 ~", D: "~@42 x ~@2 x!2 ~", E: "~@6 x ~@3 x ~@2 x!2 ~", F: "~@7 x",
  G: "~@3 x ~@2 x ~",
})).gain(0.56)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A@4 ~@3 A@4 ~@2 A@3 ~ A ~ A@3 ~ A ~ A ~@2 B@7 C ~@2 A@4 ~ A ~ A@3 ~ A ~ A ~ D B@7 C ~ A ~ A@3 ~ A ~ A@3 ~ A ~ A ~ E
  B@7 C B@12 ~@2
>`.pickRestart({
  A: "~@7 x", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~@2", D: "~@5 x ~@2", E: "~ x ~@2",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@2 B A ~@3 A ~ A ~@5 A ~@5 A ~@3 A ~ A ~ A@3 C A@3 ~@5 A ~@3 A ~ A ~@3 A D A C A@3 C A E A ~@5 A ~@3 A ~ A ~@3 A
  D A@3 F A@7 C A C A C A C@2 A@2 ~
>`.pickRestart({
  A: "x", B: "~@3 x", C: "x ~@2 x", D: "~@15 x", E: "x ~@14 x", F: "x ~ x!2",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct("<~@29 A@7 B ~@18 A@7 C ~@18 A@20 ~@2>".pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~@2", C: "x!7 ~",
})).gain(0.56)

// drums · shaker
const shaker = s("sh").struct("<~ [x!16]!100 ~@2>").gain(0.48)

stack(
  bass, flute, distortion_guitar, distortion_guitar_soft, string_ensemble_1, string_ensemble_1_2, acoustic_guitar_steel,
  marimba, percussive_organ, vibraphone, kick, snare, hihat, low_tom, mid_tom, open_hat, crash, ride, shaker
)

More by Nomadi