Strudelify

Le strade

Nomadi

KeyE minorTempo124 bpm
0:00/0:00
// Le strade — Nomadi
// 124 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 151 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(124/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 · electric bass finger
const bass = note(`<
  ~ A B C D A B C D E F G H E F G H I J K L M N O P Q R S T U V O P Q I K L M N O P Q R S T U V S T U W S T U V S T U W
  S T U V S T U W A B C D A B C D E F G H E F G H I J K L M N O P Q R S T U V O P Q I K L M N O P Q R S T U V S T U W S
  T U V S T U W S T U V S T U X A B C D A B C D E F G H E F Y@4
>`.pickRestart({
  A: "e2@8 ~@4 e2@3 ~ e2@7 ~ b1@4 e2@3 ~", B: "d2@8 ~@4 d2@3 ~ d2@7 ~ a1@4 d2@3 ~", C: "c2@2 ~ c2 c2@2 g1 c2",
  D: "b1@8 ~@4 b1@3 ~ b1@4 f1@4 f#1@4 b1@4", E: "e2@9 ~@3 e2@4 c2@8 g1@4 c2@4", F: "g1@9 ~@3 g1@3 ~ d2@8 a1@4 d2@3 ~",
  G: "e2@9 ~@3 e2@3 ~ d2@9 ~@3 d2@4", H: "g1@3 ~ f#1@3 ~ e2@6 ~@2", I: "e2@9 ~@3 e2@3 ~ e2@7 ~ a1@4 b1@4",
  J: "e2@8 ~@4 e2@3 ~ e2@7 ~ a1@4 b1@4", K: "e2@9 ~@3 e2@2 ~@2 e2@7 ~ e2@7 ~", L: "d2@9 ~@3 d2@3 ~ d2@4 a1@4 d2@4 e2@4",
  M: "a1@8 ~@4 a1@3 ~ a1@3 ~ e1@4 a1@4 b1@3 ~", N: "e2@9 ~@3 e2@3 ~ e2@7 ~ b1@8",
  O: "e2@9 ~@3 e2@2 ~@2 e2@4 b1@4 e2@4 d#2@4", P: "d2@9 ~@3 d2@3 ~ d2@4 a1@4 d2@4 a1@4",
  Q: "b1@8 ~@4 b1@3 ~ b1@5 ~@3 b1@4 c#2@3 ~", R: "e2@9 ~@3 e2@3 ~ e2@4 b1@4 e2@4 d2@4",
  S: "c2@9 ~@3 c2@3 ~ c2@3 ~ g1@4 c2@4 d2@4", T: "g1@8 ~@4 g1@3 ~ g1@4 e1@4 g1@3 ~ a1@4",
  U: "d2@8 ~@4 d2@3 ~ d2@7 ~ a1@7 ~", V: "g1@8 ~@4 g1@3 ~ g1@3 ~ e1@3 ~ g1@3 ~ a1@4",
  W: "d2@8 ~@4 d2@3 ~ d2@3 ~ a1@3 ~ d2@3 ~ c#2@4", X: "d2@8 ~@4 d2@3 ~ d2@3 ~ a1@3 ~ d2@3 ~ d#2@4",
  Y: "[e2@9 ~@4 e2@4 d2@11 ~@3 d2@4 g1@6 ~@3 f#1@5 g1@2 b1@2 e2@54 ~@21]/4",
})).s("gm_electric_bass_finger").gain(0.56)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A@8 B@8 C D@8 E@8 F@8 G@8 H@3 I J K L I J M L I J K L I J N@8 B@8 C D@8 E@8 F@8 G@8 H@3 I J K L I J M L I J K L I J M
  O@8 P@7 Q@3
>`.pickRestart({
  A: "[~@32 [e3,g3]@30 ~@2 [d3,a3]@30 ~@2 [e3,g3]@30 ~@2 [d#3,a3]@30 ~@2 e3@30 ~@2 [d3,a3]@30 ~@2 [e3,g3]@30 ~ [b3,f#4], ~@31 [b3,e4]@30 ~@2 [d4,f#4]@30 ~@2 [c4,e4]@30 ~@2 [b3,f#4]@30 ~ e4@30 ~@3 [d4,f#4]@30 ~@2 [c4,e4]@30 ~@3, ~@159 [g3,b3]@30 ~@67]/8", // Em D5 Em D#dim D5 Em B5 E5 …
  B: "[[d#3,a3]@30 ~@2 [e3,g3]@14 ~@2 e3@14 ~@2 [d3,g3]@14 ~@2 d3@14 ~@2 [e3,g3]@14 ~@2 d3@14 ~@2 [d3,g3]@14 ~@2 e3@14 ~@2 [e3,g3]@14 ~@2 e3@14 ~@2 [d3,g3]@14 ~@2 d3@14 ~@2 [e3,g3]@14 ~@2 d3@14 ~ [b3,g4], ~@31 [b3,e4]@15 e4@15 ~@17 f#4@15 ~@17 f#4@15 ~@17 e4@15 ~@17 e4@15 ~@17 f#4@15 ~@17 f#4@15 ~@3, ~@47 [g3,c4]@15 ~ [b3,g4]@15 ~ [a3,d4]@15 ~ [b3,e4]@15 ~ [a3,d4]@15 ~ [b3,g4]@15 ~ [g3,b3]@15 ~ [b3,e4]@15 ~ [g3,c4]@15 ~ [b3,g4]@15 ~ [a3,d4]@15 ~ [b3,e4]@15 ~ [a3,d4]@15 ~@2]/8", // D#dim Em G5 Em G5 Em G5 Em …
  C: "[d3,g3]@7 ~ e3@7 ~, ~@14 e4@15 ~@3, ~@15 [g3,b3]@15 ~@2", // G5 G
  D: "[~@32 [e3,g3]@31 ~ [e3,g3]@31 ~ [d3,a3]@31 ~ [e3,a3]@31 ~ [e3,g3]@31 ~ [e3,g3]@31 ~ [d3,a3]@31 [b3,f#4], ~@31 [b3,e4]@32 [b3,e4]@32 [d4,f#4]@32 [c4,e4]@32 [b3,e4]@32 [b3,e4]@32 [d4,f#4]@32 ~]/8", // Em D5 A5 Em D5 B5 E5 D …
  E: "[[d#3,a3]@31 ~ [e3,g3]@31 ~ [e3,g3]@31 ~ [d3,g3]@31 ~ [d3,a3]@31 ~ [d3,g3]@31 ~ [e3,g3]@31 ~ [d3,a3]@31 [b3,f#4], ~@31 [b3,e4]@32 [c4,e4]@32 [b3,g4]@32 [d4,f#4]@32 [b3,g4]@32 [b3,e4]@32 [d4,f#4]@32 ~]/8", // D#dim Em G5 D5 G5 Em D5 B5 …
  F: "[[d#3,a3]@31 ~ [e3,g3]@31 ~ [e3,g3]@31 ~ [d3,a3]@31 ~ [e3,a3]@31 ~ [e3,g3]@31 ~ [e3,g3]@31 ~ [d3,a3]@31 [b3,f#4], ~@31 [b3,e4]@32 [b3,e4]@32 [d4,f#4]@32 [c4,e4]@32 [b3,e4]@32 [b3,e4]@32 [d4,f#4]@32 ~]/8", // D#dim Em D5 A5 Em D5 B5 E5 …
  G: "[[d#3,a3]@31 ~ [e3,g3]@31 ~ [e3,g3]@31 ~ [d3,g3]@31 ~ [d3,a3]@31 ~ [d3,g3]@31 ~ [e3,g3]@31 ~ [d3,g3]@31 [d4,f#4], ~@31 [b3,e4]@32 [c4,e4]@32 [b3,g4]@32 [d4,f#4]@32 [b3,g4]@32 [c4,e4]@32 [b3,g4]@32 ~]/8", // D#dim Em G5 D5 G5 Em G5 D …
  H: "[[d3,a3]@31 ~ [d3,a3]@31 ~ g3 [g3,c4,e4]@8 [g3,c4,e4]@3 ~ [g3,c4]@7 ~ g3@3 ~@5 g3@3, ~@31 [d4,f#4]@32 [c4,e4]@2 ~@11 e4@8 [c4,e4]@4 g3@5 ~@3, ~@89 [c4,e4]@7]/3", // D5 C C5 D C
  I: "~ [b3,g4]@7 ~ [b3,g4]@4 [b3,g4]@7 [b3,g4]@4 [d3,b3,g4]@8, d3@7 ~ d3@4 ~ d3@10 ~@9", // Em G
  J: "~ [d4,f#4]@7 [a3,d4,f#4]@4 [a3,d4,f#4]@8 ~ a3@3 ~ f#4@7, a3@7 ~@13 [d4,f#4]@4 [a3,d4]@8", // D D5
  K: "~ [b3,g4]@6 ~ [d3,b3,g4]@4 ~ [d3,b3]@6 ~@2 [d3,b3]@3 ~ [b3,g4]@6 ~, d3@8 ~@4 g4@7 ~ g4@4 d3@7 ~", // Em G Em
  L: "~ [g3,c4,e4]@8 [g3,c4,e4]@3 ~ g3@7 ~ g3@3 ~@5 g3@3, ~@3 e4 ~@2 g3 ~, ~@13 c4@4 ~@3 [c4,e4]@5 [c4,e4]@7", // C
  M: "~ [a3,d4,f#4]@6 ~ [a3,d4,f#4]@4 ~ [a3,d4]@6 ~@2 [a3,d4]@3 ~ [d4,f#4]@6 ~, ~@12 f#4@7 ~ f#4@4 a3@7 ~", // D D5 D
  N: "[~ [a3,d4,f#4]@6 ~ [a3,d4,f#4]@4 ~ [a3,d4]@6 ~@2 [a3,d4]@3 ~ [d4,f#4]@6 ~ [e3,g3]@30 ~@2 [d3,a3]@30 ~@2 [e3,g3]@30 ~@2 [d#3,a3]@30 ~@2 e3@30 ~@2 [d3,a3]@30 ~@2 [e3,g3]@30 ~ [b3,f#4], ~@12 f#4@7 ~ f#4@4 a3@7 [b3,e4]@30 ~@2 [d4,f#4]@30 ~@2 [c4,e4]@30 ~@2 [b3,f#4]@30 ~ e4@30 ~@3 [d4,f#4]@30 ~@2 [c4,e4]@30 ~@3, ~@159 [g3,b3]@30 ~@67]/8", // D D5 D Em D5 Em D#dim D5 …
  O: "[e3@30 ~@2 [d3,a3]@30 ~@2 [e3,g3]@30 ~@2 [d#3,a3]@30 ~@2 e3@30 ~@2 [d3,a3]@30 ~@2 [e3,g3]@30 ~@2 [d#3,a3]@30 ~ [b3,e4], ~@31 [d4,f#4]@30 ~@2 [c4,e4]@30 ~@2 [b3,f#4]@30 ~ e4@30 ~@3 [d4,f#4]@30 ~@2 [c4,e4]@30 ~@2 [b3,f#4]@30 ~@3, ~@127 [g3,b3]@30 ~@99]/8", // D5 Em D#dim D5 Em D#dim E5 D …
  P: "[[e3,g3]@14 ~@2 e3@14 ~@2 [d3,g3]@14 ~@2 d3@14 ~@2 [e3,g3]@14 ~@2 d3@14 ~@2 [d3,g3]@14 ~@2 e3@14 ~@2 [e3,g3]@14 ~@2 e3@14 ~@2 [d3,g3]@14 ~@2 d3@14 ~@2 [e3,g3]@15 ~@2 d3@15, ~@14 e4@15 ~@17 f#4@15 ~@17 f#4@15 ~@17 e4@15 ~@17 e4@15 ~@17 f#4@15 ~@19 a3@16, ~@15 [g3,c4]@15 ~ [b3,g4]@15 ~ [a3,d4]@15 ~ [b3,e4]@15 ~ [a3,d4]@15 ~ [b3,g4]@15 ~ [g3,b3]@15 ~ [b3,e4]@15 ~ [g3,c4]@15 ~ [b3,g4]@15 ~ [a3,d4]@15 ~ [b3,e4]@16 [d4,f#4]@17]/7", // Em G5 Em G5 Em G5 Em C5 …
  Q: "[~@4 d3@15 ~@2 e3@54 ~@21, ~ g4@17 ~ e4@56 ~@21, ~@2 b3@17 ~@77, ~@3 g3@16 ~ [g3,b3]@56 ~@20]/3", // G
})).s("gm_electric_guitar_clean").gain(0.12).pan(0.7)

// other · pad choir
const pad_choir = note(`<
  ~@19 A B C D A B E F G H I J K L M N O B P Q A B E R S H T J U V W ~ X Y Z AA AB AC AD ~ X Y Z AA AE AF AD ~@19 A B AG
  D AH B AI AJ S H AK J K AL AM AN A B C Q A B AO R S H T J U V W ~ X Y Z AA AB AC AD ~ X Y Z AA AE AF AD ~@19
>`.pickRestart({
  A: "~@16 b3@5 c4@4 ~@2 b3@4 ~", B: "b3@4 ~ a3@3 ~@3 a3@3 ~@2 a3@4 ~ a3@4 ~@7", C: "~@16 c4@4 ~ d4@3 ~@3 e4@4 ~",
  D: "b3@9 ~@23", E: "~@12 b2@4 f#3@4 ~ e3@3 ~@3 d#3@4 ~", F: "e3@9 ~@23", G: "~@12 c4@2 ~@2 c4@4 ~@2 d4@4 ~ e4@4 ~",
  H: "d4@5 ~ b3@3 ~ b3@3 ~@3 b3@4 ~@2 b3@3 ~@7", I: "~@16 a3@3 ~@2 a3@4 ~@2 b3@4 ~", J: "b3@2 ~ b3@2 ~@11",
  K: "~@12 g3@3 ~ g3@5 ~ a3@4 ~@2 g3@3 ~", L: "g3@4 f#3@11 ~@17", M: "~@12 f#3@3 ~ f#3@4 ~@2 e3@4 ~@2 d#3@4",
  N: "e3@2 e3@5 ~@9", O: "~@12 b3@3 ~ b3@5 c4@4 ~@2 b3@4 ~", P: "~@12 c3@3 ~ c4@4 ~ d4@3 ~@3 e4@4 ~",
  Q: "b3@2 ~ b3@4 ~@9", R: "e3@2 ~ e3@2 ~@11", S: "~@16 c4@4 ~@2 d4@4 ~ e4@4 ~", T: "~@12 a3@4 a3@4 ~ a3@4 ~@2 b3@4 ~",
  U: "~@16 c4@4 ~ d4@4 ~@2 e4@4 ~", V: "d4@4 ~ b3@4 ~@2 b3@3 ~@2 b3@5 c4@5 ~ b3@4 ~", W: "b3@5 ~ a3@23 ~@3",
  X: "e4@13 ~@3 f#4@3 ~ g4@6 ~@2 d4@4", Y: "~@4 b3@7 ~@17 b3@3 ~", Z: "b3@7 ~ a3@6 ~@2 a3@4 b3@5 ~@3 b3@4",
  AA: "~@4 b3@5 ~@19 g3@3 ~", AB: "e4@5 ~@3 e4@2 ~@2 e4@2 ~@2 f#4@3 ~ g4@6 ~@2 d4@4",
  AC: "~@4 b3@10 ~@2 c4@7 ~ b3@3 ~ b3@4", AD: "~@4 a3@15 ~@13", AE: "e4@5 ~@3 e4@3 ~ e4@3 ~ f#4@3 ~ g4@10 ~@2",
  AF: "d4@6 ~@2 b3@4 c4@7 ~ b3@5 ~@3 b3@4", AG: "~@12 e3@4 c4@4 ~ d4@3 ~@3 e4@4 ~",
  AH: "~@12 b3@4 b3@4 ~ c4@4 ~@2 b3@4 ~", AI: "~@12 f#3@4 f#3@4 ~ e3@3 ~@3 d#3@4 ~", AJ: "e3@2 e3@3 ~@11",
  AK: "~@12 a3@3 ~ a3@3 ~@2 a3@4 ~@2 b3@4 ~", AL: "g3@4 ~ f#3@3 ~@3 f#3@3 ~@2 f#3@3 ~@2 f#3@3 ~@8",
  AM: "~@12 b2@3 ~ f#3@4 ~@2 e3@4 ~@2 d#3@4", AN: "e3@2 ~ e3@5 ~@8", AO: "~@4 f#3@4 ~@2 f#3@8 ~@3 e3@3 ~@3 d#3@4 ~",
})).s("gm_pad_choir").gain(0.25)

// other · tubular bells
const tubular_bells = note(`<
  ~ A ~@3 A ~@3 A ~@2 B A ~@2 B ~@50 A ~@3 A ~@3 A ~@2 B A ~@2 B ~@50 A ~@3 A ~@3 A ~@2 B A ~@2 C@3
>`.pickRestart({
  A: "e4@3 ~", B: "d4 ~ d#4 ~ e4@3 ~", C: "[~@3 d4@5 ~@4 d#4@5 ~@4 e4@54 ~@21]/3",
})).s("gm_tubular_bells").gain(0.56)

// other · accordion
const accordion = note(`<
  ~ A B C D A B C D E F G H E F G H ~@18 I J K I@2 J L I M N O P M N Q@2 M N O P M N Q@2 M N O P M N Q@2 A B C D A B C D
  E F G H E F G H ~@18 I J K I@2 J L I M N O P M N Q@2 M N O P M N Q@2 M N O P M N Q@2 A B C D A B C D E F G H E F R@4
>`.pickRestart({
  A: "b4 g4 b4 c5 b4 a4 g4 f#4", B: "a4 f#4 a4 b4 a4@3 ~", C: "g4 e4 g4 a4 g4 f#4 e4 d#4", D: "f#4 d#4 a4 f#4 b4@2 ~@2",
  E: "b4 g4 b4 e5 g5 e5 d5 c5", F: "b4 d5 c5 b4 a4@4", G: "g4 e4 g4 a4 b4 a4 g4 f#4", H: "g4 a4 f#4 d4 e4@2 ~@2",
  I: "[e4,g4,b4]", J: "[d4,f#4,a4]", K: "[c4,e4,a4]", L: "[d#4,f#4,b4]", M: "[e4,g4,c5]", N: "g4", O: "f#4", P: "b4",
  Q: "f#4/2", R: "[g4@4 e4@4 g4@5 a4@4 b4@5 a4@4 g4@5 f#4@4 g4@5 a4@4 f#4@5 d4@4 e4@54 ~@21]/4",
})).s("gm_accordion").gain(0.45)

// other · accordion · soft notes
const accordion_soft = note(`<
  ~@44 A B C ~ A D@2 ~ A B C ~ A D@2 ~ A B C ~ A D@2 ~@43 A B C ~ A D@2 ~ A B C ~ A D@2 ~ A B C ~ A D@2 ~@18
>`.pickRestart({
  A: "[d4,b4]", B: "[d4,a4]", C: "[d4,g4]", D: "[d4,a4]/2",
})).s("gm_accordion").gain(0.26)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A@2 B C A@2 B C D@2 E F D@2 E F G@2 H@2 I J H@2 K J L@2 M N H@2 K J H@2 I J H@2 K J L@2 M N O@2 P Q ~@16 A@2 B C A@2
  B C D@2 E F D@2 E F G@2 H@2 I J H@2 K J L@2 M N H@2 K J H@2 I J H@2 K J L@2 M N H@2 K J ~@16 A@2 B C A@2 B C D@2 E F
  D@2 R@4
>`.pickRestart({
  A: "[~ [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@3 ~ b3@4 [b3,e4]@3 ~ [e3,g3]@3 ~ [b3,e4]@3 ~@5 [d4,f#4]@3 ~ [d3,a3,d4]@3 ~ [a3,d4,f#4]@4 [d3,a3,d4,f#4]@3 ~ [d4,f#4]@3 [d4,f#4]@4 [d3,a3,d4,f#4]@4 ~ [d3,a3,d4]@3, ~@12 e4@4 ~@4 [b3,e4]@5 ~@3 [b3,e4]@5 ~@3 f#4@4 ~@9 a3@7 ~@4 f#4@4, ~@13 [e3,g3]@8 ~@3 [e3,g3]@4 ~ [e3,g3]@8 ~@3 d3@4 ~@4 d3@8 ~@8]/2", // Em E5 Em E5 D D5 D D5 …
  B: "~ [c4,e4]@3 ~ [e3,g3]@3 [e3,g3,c4,e4]@5 [e3,g3,c4,e4]@7 ~ [e3,g3,c4,e4]@3 ~ e4@4 [e3,g3,c4,e4]@3, [e3,g3] [c4,e4] ~@4 [e3,g3,c4] ~", // C Em C Em C
  C: "~ [a3,b3,f#4]@4 [d#3,a3,b3,f#4]@3 [d#3,a3,b3,f#4]@4 ~ [d#3,a3,b3]@3 ~ [a3,b3,f#4]@3 ~ [d#3,a3,b3]@3 ~ [b3,f#4]@3 ~ [d#3,a3]@3, d#3@5 ~@7 f#4@4 d#3@4 f#4@4 [d#3,a3]@4 [b3,f#4]@4", // B7 B5 D#dim B5
  D: "[~ [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@3 ~ b3@4 [c4,e4]@3 ~ [e3,g3]@3 ~ [c4,e4]@3 ~@5 [b3,g4]@3 ~ [d3,g3,b3]@3 ~ [g3,b3,g4]@4 [d3,g3,b3,g4]@3 ~ [d4,f#4]@3 [d4,f#4]@4 [d3,a3,d4,f#4]@4 ~ [d3,a3,d4]@3, ~@12 e4@4 ~@4 [c4,e4]@5 ~@3 [c4,e4]@5 ~@3 g4@4 ~@9 a3@7 ~@4 f#4@4, ~@13 [e3,g3]@8 ~@3 [e3,g3]@4 ~ [e3,g3]@8 ~@3 d3@4 ~@4 d3@8 ~@8]/2", // Em C Em C Em G D D5 …
  E: "~ [b3,e4]@3 ~ [e3,g3]@3 [e3,g3,b3,e4]@5 [e3,g3,b3,e4]@7 ~ [d3,a3,d4,f#4]@3 ~ f#4@4 [d3,a3,d4,f#4]@3, [e3,g3] [b3,e4] ~@4 [d3,a3,d4] ~", // E5 Em D Em E5 D5
  F: "~ [g3,b3,g4]@4 [d3,g3,b3,g4]@3 [d#3,a3,b3,f#4]@4 ~ [d#3,a3,b3]@3 ~ [g3,b3,e4]@3 ~ [e3,g3,b3]@3 ~ [b3,e4]@3 ~ [e3,g3]@3, d3@5 ~@7 f#4@4 e3@4 e4@4 [e3,g3]@4 [b3,e4]@4", // G B7 Em E5 Em E5
  G: "[~ [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@4 [e3,g3,b3,e4]@3 ~ b3@4 [b3,e4]@3 ~ [e3,g3]@3 ~ [b3,e4]@3 ~@5 [b3,e4]@3 ~ [e3,g3,b3]@3 ~ [g3,b3,e4]@4 [e3,g3,b3,e4]@3 ~ [b3,e4]@3 [b3,e4]@4 [e3,g3,b3,e4]@4 ~ [e3,g3,b3]@3, ~@12 e4@4 ~@4 [b3,e4]@5 ~@3 [b3,e4]@5 ~@3 e4@4 ~@9 g3@7 ~@4 e4@4, ~@13 [e3,g3]@8 ~@3 [e3,g3]@4 ~ [e3,g3]@8 ~@3 e3@4 ~@4 e3@8 ~@8]/2", // Em E5 Em E5 Em E5 Em E5 …
  H: "[~ [g3,b3,e4]@4 [g3,b3,e4]@4 [g3,b3,e4]@3 ~ b3@4 [b3,e4]@3 ~ g3@3 ~ [b3,e4]@3 ~@5 [d4,f#4]@3 ~ [a3,d4]@4 [a3,d4,f#4]@4 [a3,d4,f#4]@4 [d4,f#4]@3 [d4,f#4]@4 [a3,d4,f#4]@4 ~ [a3,d4]@3, ~@12 e4@4 ~@4 [b3,e4]@5 ~@3 [b3,e4]@5 ~@3 f#4@4 ~@20 f#4@4, ~@13 g3@8 ~@3 g3@4 ~ g3@8 ~@12 a3@7 ~@8]/2", // Em E5 D D5 D D5 E5
  I: "~ [c4,e4]@3 ~ a3@3 [a3,c4,e4]@4 ~ [a3,c4,e4]@7 ~ [a3,c4,e4]@3 ~ e4@4 [a3,c4,e4]@3, a3 [c4,e4] ~@4 [a3,c4] ~", // C Am C Am
  J: "~ [g3,b3,e4]@4 [g3,b3,e4]@3 [g3,b3,e4]@4 ~ [g3,b3]@4 [g3,b3,e4]@3 ~ [g3,b3]@3 ~ [b3,e4]@3 ~ g3@3, ~@12 e4@5 ~@3 e4@4 g3@4 [b3,e4]@4", // Em G Em G E5
  K: "~ f#4@3 ~ [d#3,a3]@3 [d#3,a3,f#4]@5 [d#3,a3,f#4]@7 ~ [d#3,a3,f#4]@3 ~ f#4@4 [d#3,a3,f#4]@3, [d#3,a3]@4 f#4@4 ~@16 [d#3,a3]@5 ~@3", // D#dim
  L: "[~ [g3,c4,e4]@4 [g3,c4,e4]@4 [g3,c4,e4]@3 ~ c4@4 [c4,e4]@3 ~ g3@3 ~ [c4,e4]@3 ~@5 [b3,g4]@3 ~ [d3,b3]@3 ~ [b3,g4]@4 [d3,b3,g4]@3 ~ [b3,g4]@3 [b3,g4]@4 [d3,b3,g4]@4 ~ [d3,b3]@3, ~@12 e4@4 ~@4 [c4,e4]@5 ~@3 [c4,e4]@5 ~@3 g4@4 ~@20 g4@4, ~@13 g3@8 ~@3 g3@4 ~ g3@8 ~@3 d3@4 ~@4 d3@8 ~@8]/2", // C Em G Em G Em G C
  M: "~ [d4,f#4]@3 ~ a3@3 [a3,d4,f#4]@4 ~ [a3,d4,f#4]@7 ~ [a3,d4,f#4]@3 ~ f#4@4 [a3,d4,f#4]@3, a3 [d4,f#4] ~@4 [a3,d4] ~", // D D5
  N: "~ [b3,g4]@4 [d3,b3,g4]@3 [d3,b3,g4]@4 ~ [d3,b3]@3 ~ [b3,g4]@3 ~ [d3,b3]@3 ~ [b3,g4]@3 ~ d3@3, d3@5 ~@7 g4@4 d3@4 g4@4 d3@4 [b3,g4]@4", // Em G Em G Em
  O: "[~ [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@3 ~ c4@4 [c4,e4]@3 ~ [e3,g3]@3 ~ [c4,e4]@3 ~@5 [b3,g4]@3 ~ [d3,g3,b3]@3 ~ [g3,b3,g4]@4 [d3,g3,b3,g4]@3 ~ [b3,g4]@3 [b3,g4]@4 [d3,g3,b3,g4]@4 ~ [d3,g3,b3]@3, ~@12 e4@4 ~@4 [c4,e4]@5 ~@3 [c4,e4]@5 ~@3 g4@4 ~@9 g3@7 ~@4 g4@4, ~@13 [e3,g3]@8 ~@3 [e3,g3]@4 ~ [e3,g3]@8 ~@3 d3@4 ~@4 d3@8 ~@8]/2", // C Em C Em G Em G C …
  P: "~ [d4,f#4]@3 ~ [d3,a3]@3 [d3,a3,d4,f#4]@5 [d3,a3,d4,f#4]@7 ~ [d3,a3,d4,f#4]@3 ~ f#4@4 [d3,a3,d4,f#4]@3, [d3,a3] [d4,f#4] ~@4 [d3,a3,d4] ~", // D D5 D D5 D D5
  Q: "~ [a3,d4,f#4]@4 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@4 ~ [d3,a3,d4]@3 ~ [a3,d4,f#4]@3 ~ [d3,a3,d4]@3 ~ [d4,f#4]@3 ~ [d3,a3]@3, d3@5 ~@7 f#4@4 d3@4 f#4@4 [d3,a3]@4 [d4,f#4]@4", // D D5 D D5 D D5 D
  R: "[~ [b3,e4]@3 ~ [e3,g3]@3 [e3,g3,b3,e4]@5 [e3,g3,b3,e4]@8 ~@2 d3@3 ~ [d4,f#4]@4 ~ d3@3 ~ [g3,b3,g4]@4 ~ [d3,g3]@3 ~ [b3,f#4]@4 ~ d#3@3 ~ [g3,b3,e4]@53 ~@21, [e3,g3]@4 [b3,e4]@4 ~@14 [a3,d4,f#4]@4 [d3,a3]@5 [a3,d4,f#4]@4 d3@5 [b3,g4]@4 [d#3,a3]@5 [a3,b3,f#4]@4 e3@54 ~@21]/4", // E5 Em D G G5 B5 Em E5 …
})).s("gm_acoustic_guitar_steel").gain(0.09).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~ A@7 B A@65 B A@57 B A@7 B A@6 C D ~@2>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x!2 ~@2 x", C: "x ~@12 x ~@3 x ~@14", D: "~@3 x ~@13 x ~@3 x ~@10",
})).gain(0.64)

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

// drums · low tom
const low_tom = s("lt").struct("<~@66 [~@14 x!2] ~@84>").gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@17 A B A B@7 A B@7 A B@7 A B@7 ~@32 A B A B@7 A B@7 A B@7 A B@7 ~@34>".pickRestart({
  A: "~ x!7", B: "x!8",
})).gain(0.32)

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

// drums · ride
const ride = s("rd").struct(`<
  ~ A B@3 A B@2 C A B@3 A B@2 D ~@34 A B@3 A B@3 A B@3 A B@3 A B@3 A B@2 C A B@3 A B@2 D ~@34 A B@3 A B@3 A B@3 A B@2 C
  A B@3 A B@2 C A B@3 A B E F ~@2
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!7 ~", D: "~ x!3 ~ x ~@2", E: "x ~@3 x ~@3 x ~@4 x ~@3 x ~@4 x ~@3 x ~@4 x",
  F: "~@8 x ~@3 x ~@4 x ~@14",
})).gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct("<~ A@16 B@34 A@32 B@34 A@30 C D ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@3 x", C: "~@4 x ~@8 x ~@2", D: "~@3 x ~@4",
})).gain(0.56)

stack(
  bass, electric_guitar_clean, pad_choir, tubular_bells, accordion, accordion_soft, acoustic_guitar_steel, kick, snare,
  low_tom, hihat, crash, ride, tambourine
)

More by Nomadi