Strudelify
Un'altra citta cover art

1996 · Quando Ci Sarai

Un'altra citta

Nomadi

KeyG majorTempo73 bpm
0:00/0:00
// Un'altra citta — Nomadi
// 73 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 30, 4/4 at bar 31, 2/4 at bar 59, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 73 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): guitar program 27.
setcpm(73/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(`<
  ~@22 A B C B D E F G H I J K L M N O P Q R S T U N O P Q R S T V N O P Q W X Y Z AA AB AC AD AE Z AA AB AC AD AF@2 ~
>`.pickRestart({
  A: "~@8 d1 ~@3 d1 ~ d1 ~", B: "g1", C: "b1@7 d1", D: "c1@7 g1", E: "c2@15 ~", F: "e1@8 d1@6 ~ d1", G: "~ e2",
  H: "b1@2 e2@2 e2 d2 b1@2 b1 ~ b1@3 ~ b1 a1", I: "b1 ~ b1@3 ~ b1@2 e2 ~ e2@6", J: "b1@2 e2@4 b1@2 b1 ~ b1@5 a1",
  K: "b1 ~ b1@4 b1!2 d2 ~ d2@5 a1", L: "d2 ~ d2@4 a1@2 d2@4 c2@4", M: "b1@4 a1@2 g1@2 g2@7 d2",
  N: "g2 ~ g2@4 d2@2 f#2@7 d2", O: "f#2 ~ f#2@4 d2 ~ g2@6 ~ g2", P: "d2@2 g2@4 d2 ~ c2@8", Q: "g1@6 d2 ~ c2@7 g1",
  R: "c2 ~ c2@3 g1 a1 ~ e2@7 b1", S: "e2 ~ e2@3 d2 b1 ~ a1@7 e2", T: "e2@2 a2@4 e2@2 d2@7 a1",
  U: "d2 a1@2 f#1 ~ f#1 a1@2 g2@7 d2", V: "d2 f#3@4 d3 c3 ~ g2@7 d2", W: "c2 ~ c2@3 g1 a1 ~ e1@8", X: "d1@3 ~ d1 ~@3",
  Y: "e2@8 b1@2 e2@2 e2 d2 b1@2", Z: "b1 ~ b1@3 ~ b1 a1 b1 ~ b1@3 ~ b1@2", AA: "e2 ~ e2@6 b1@2 e2@4 b1@2",
  AB: "b1 ~ b1@5 a1 b1 ~ b1@4 b1!2", AC: "d2 ~ d2@5 a1 d2 ~ d2@4 a1@2", AD: "d2@2 c2@2 b1@2 a1 g1",
  AE: "e1@8 b1@2 e2@2 e2 d2 b1@2", AF: "[g1@31 ~]/2",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@15 A B C D E F G H A B C D E I ~ J ~ K ~@4 L@2 ~@3 M N ~ L@2 ~@3 M N ~ L@2 ~@4 O P Q ~@4 P Q ~@5
>`.pickRestart({
  A: "~@3 g3 ~@3 g4", B: "~@6 b3@3 ~@5 f#4@2", C: "~@6 g3@2 ~@4 d4 ~ d4@2, ~@4 d4@6 ~@3 f4@3", D: "~@6 g3@3 ~@7",
  E: "~@6 g3@3 ~@5 g4@2", F: "~@3 g3 ~@3 e4", G: "~@6 a3@2 g2 ~@5 e4@2", H: "~@6 a3@3 ~@5 a3@2, ~@13 d4@3",
  I: "~@3 g3 ~@4", J: "~@4 d#4 ~@3", K: "~@5 b3 ~@2 e4 ~@7", L: "[~@12 d4@6 ~@2 d4 ~ d4@3 ~@7, ~@21 f4@3 ~@8]/2",
  M: "g2 ~@15", N: "~@5 d4@3 ~@8", O: "d#4 ~@7", P: "~@13 b3 ~@2", Q: "e4 ~@15",
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.3)

// other · flute
const flute = note(`<
  ~@6 A B C D E F G H@2 I@2 J K L M N O P Q R@2 S T U ~@5 V@2 W@2 X@2 Y Z AA@8 AB@2 AC@4 AD AE ~@14
>`.pickRestart({
  A: "~@7 d4", B: "d5!3 ~ d5 ~ d5 d5@2 c5 ~@5 d4", C: "d5!4 d5@2 e5 d5 ~@6 b4 c5",
  D: "d5 d5@3 d5@2 d5 d5@2 c5 ~ d5 e5@2 d5@2", E: "c5!4 c5@2 c5 c5@2 ~@5 a4 b4",
  F: "c5 c5@2 c5@2 c5@2 c5@2 c5@2 ~@2 c5@3", G: "b4@2 b4 b4@2 b4@2 b4@2 ~@6 e4",
  H: "[a4!2 a4@2 a4!2 ~ a4!3 ~@2 b4@2 b4 a4@2 a4@2 a4!3 ~ a4!2 ~@5 b4 c5]/2",
  I: "[d5!7 d5@2 c5 ~ b4 b4@2 c5 d5@2 d5 ~ d5 d5@2 d5 d5@2 c5 ~@4 b4 c5]/2", J: "d5!7 d5@2 c5 d5!2 e5@2 d5@2",
  K: "c5!3 c5@2 c5!3 c5@2 c5 ~@5", L: "c5!7 c5@2 c5@2 c5@2 c5!3", M: "b4@2 b4!4 ~ b4!3 ~@4 c5 b4",
  N: "a4@2 a4 a4@3 a4 a4@2 a4@2 a4@2 a4 c5 b4", O: "a4 ~ a4!2 b4@2 a4 a4@2 a4@2 ~@2 b4!2 c5",
  P: "d5!2 ~ d5!3 ~ d5!2 e5 ~ d5!2 b4!2 c5", Q: "d5!6 e5 d5@2 d5 ~@5 g4",
  R: "[d5!4 d5@2 d5 d5@2 d5@3 e5@2 d5 c5@2 c5!3 c5@2 d5 c5@2 c5 ~@3 a4!2 b4]/2",
  S: "c5@2 c5 ~ c5@2 c5@2 c5@2 c5 c5@2 d5!2 c5", T: "b4 b4@2 b4!2 a4 g4@2 a4@2 a4@2 ~@4",
  U: "~@2 b4!2 b4@2 a4 g4 g4@2 g4@2 ~@4", V: "[~@5 b4!2 c5 d5!4 e5!3 d5@2 c5@2 b4 b4@2 c5@2 d5!2 d5@2 d5@2 d5!2]/2",
  W: "[~@6 b4 c5 d5!4 d5@2 d5 d5@2 d5 ~@2 e5!2 d5 ~ c5@2 c5 ~ c5@2 c5!2]/2",
  X: "[~@5 a4!2 b4 c5 c5@3 c5@2 c5 c5@2 c5 ~ d5 d5@2 c5 b4@2 b4@2 b4@2 b4 ~ b4]/2", Y: "b4!2 ~@3 b4!3 a4 a4@2 ~ a4!4",
  Z: "a4!2 ~@3 b4!2 ~ a4 a4@3 ~@3 a4",
  AA: "[a4@2 ~@4 b4 c5 d5 d5@3 d5@2 d5 d5@2 c5@2 ~@2 b4!2 c5 d5 d5@2 d5 d5@2 e5 d5@2 ~@6 g4 d5 d5@2 ~ d5 ~ d5 d5@2 b4@2 ~@3 e5 d5 c5!4 c5@2 d5 c5@2 ~@6 g4 c5@2 c5@2 c5@2 c5 c5@2 c5 ~@2 c5@2 c5@2 b4!4 b4@2 b4 b4@2 b4@2 ~@4 e4 a4!4 a4@2 a4 a4@2 a4 ~ e4 b4@2 g4 a4@2 a4@2 a4!5]/8",
  AB: "[~ a4 ~@2 b4@2 c5@2 d5!4 d5@2 d5 d5@2 d5@2 b4 b4@2 c5 d5@2 d5 ~ d5!5]/2",
  AC: "[d5!2 ~@3 b4!2 c5 d5!7 d5@2 d5 ~ d5!2 e5@2 d5 c5 c5@2 c5!4 c5@2 c5 ~ a4 a4@2 b4@2 c5!2 c5@2 c5@2 c5 c5@2 c5!4 d5@2 c5 b4 b4@2 b4!2 a4 g4@2]/4",
  AD: "a4@2 a4@3 ~@5 b4!2 b4@2 a4 g4", AE: "g4!2 ~@6",
})).s("gm_flute").gain(0.25)

// chords · percussive organ
const percussive_organ = note("<~@15 A@3 B@2 C@3 A@3 B@2 D E@6 F@5 G@16 H I J@12 K@2 ~>".pickRestart({
  A: "[g4@15 ~ f#4@16 f4@15 ~, [b4,d5]]/3", B: "[e4 d#4, c5]/2", C: "[[g4,b4] c5 [f#4,d5], e4@2 ~, ~ a4@2]/3",
  D: "[e4,g4,b4]@8 [d4,f#4,a4]@7 ~", E: "[~ [e4,g4]@2 [d4,f#4]@2 [e4,g4]@2 ~@2 a4@2 c5, ~ b4@8 ~@3, ~@7 [d4,f#4]@5]/6",
  F: "[~@8 g4@15 ~ f#4@16 f4@15 ~ e4@16 d#4@8, ~ [b4,d5]@6 c5@3]/5", // Bm
  G: "[~@8 [g4,b4]@16 c5@16 [f#4,d5]@16 g4@15 ~ f#4@16 f4@15 ~ e4@16 d#4@8, ~ e4@4 ~@11, ~@3 a4@4 [b4,d5]@6 c5@3]/8", // G D Bm
  H: "~ [e4,g4,b4]", I: "[d4,f#4,a4]@5 ~@3", J: "[[e4,g4] [d4,f#4] [e4,g4] ~ a4 c5, b4@2 ~, ~ [d4,f#4]]/6",
  K: "[d4,g4,b4]/2", // G
})).s("gm_percussive_organ").gain(0.13).pan(0.7)

// chords · synth strings 1
const synth_strings_1 = note("<~@29 A@7 ~@22 B@12 C@2 ~>".pickRestart({
  A: "[~ [g3,e4]@2 [f#3,d4]@2 [g3,e4]@2 f#3@2 ~@2 c4@2 ~, ~ b3@8 [a3,f#4]@4 ~, ~@7 d4@4 ~@3]/7", // C D C D
  B: "[[g3,e4] [f#3,d4] [g3,e4] f#3 ~ c4, b3@2 [a3,f#4], ~@3 d4@2 ~]/6", C: "[b3,d4,g4]/2",
})).s("gm_synth_strings_1").gain(0.2).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C D E A F A B C D E G H F A B C D E G H F A B C D E I J K L K M N O P Q R S T U V W P Q R S T U V W P Q R S T X Y
  Z Y Z AA AB Y Z Y Z AA AB AC@2 ~
>`.pickRestart({
  A: "d3@2 [g3,b3]@2 g3@3 d3 d3@2 [g3,b3]@2 [g3,b3,g4]@3 [d3,g3,b3], [g2,b2]!2, ~@2 d3@5 g3@3 d3@5 ~, ~ g4@2 ~, ~@2 b3@3 ~@3", // G
  B: "f#3@2 [b3,d4]@2 d4@3 f#3 f#3@2 [b3,d4]@2 [b3,d4,f#4]@3 [f#3,b3,d4], b2!2, ~@2 f#3@5 d4@3 ~@6, ~ f#4@2 ~, ~@4 b3@6 f#3@5 ~", // Bm
  C: "d3@2 [g3,b3]@2 g3@3 d3 d3@2 [g3,b3]@2 [g3,b3,f4]@3 [d3,g3,b3], [g2,b2]!2, ~@2 d3@5 g3@3 d3@5 ~, ~ f4@2 ~, ~@2 b3@3 ~@3", // G G7 G
  D: "e3@2 [g3,c4]@2 g3@3 e3 e3@2 [g3,c4]@2 [g3,c4]@2 [g3,c4] [e3,g3,c4], [g2,c3]!2, ~@2 e3@5 g3@3 e3@5 ~, ~ e4@2 e4, ~@2 c4@3 ~@3", // C5 C C5
  E: "g3@2 [c4,d#4]@2 c4@3 g3 g3@2 [c4,d#4]@2 [c4,d#4,g4]@3 [g3,c4,d#4], c3!2, ~@2 g3@5 c4@3 g3@5 ~, ~ g4@2 ~, ~@2 d#4@3 ~@3", // Cm
  F: "~@2 [a3,d4]@2 a3@3 ~@3 [a3,d4]@2 [a3,d4,f#4]@3 [a3,d4], d3@7 a3@3 ~@6, ~ f#4@2 ~, ~@2 d4@3 ~@3, ~ d3", // D5 D D5
  G: "e3@2 [g3,b3]@2 g3@3 e3 e3@2 [g3,b3]@2 [g3,b3,e4]@3 [e3,g3,b3], [e2,b2]!2, ~@2 e3@5 g3@3 e3@5 ~, ~ e4@2 ~, ~@2 b3@3 ~@3", // G Em E5
  H: "e3@2 [a3,c4]@2 a3@3 e3 e3@2 [a3,c4]@2 [a3,c4,e4]@3 [e3,a3,c4], a2!2, ~@2 e3@5 a3@3 e3@5 ~, ~ e4@2 ~, ~@2 c4@3 ~@3", // Am
  I: "e3@2 [g3,b3]@2 [g3,b3,e4]@3 [e3,g3] ~@2 [a3,d4]@2 [a3,d4,f#4] [d3,a3,d4,f#4]!3, [e2,b2] ~, ~@2 e3@5 ~ d3@5 ~@3", // G Em D5 D E5
  J: "~@8 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]!2", // Em
  K: "[g3,b3,e4]!2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]!2 [b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]!2", // Em Bm
  L: "[b3,d4,f#4]!2 [b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]!2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]!2", // Bm Em
  M: "[b3,d4,f#4]!2 [b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]!2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2", // Bm D
  N: "[a3,d4,f#4]!2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2 [a3,c4,f#4]@2 [a3,c4,f#4]@2 [a3,c4,f#4]@2 [a3,c4,f#4]!2", // D F#dim
  O: "[a3,c4,f#4]!2 [a3,c4,f#4]@2 [a3,c4,f#4]@2 [a3,c4,f#4]!2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]!2", // F#dim G
  P: "[g3,b3,g4]!2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]!2 [b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]!2", // G Bm
  Q: "[b3,d4,f#4]!2 [b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]!2 [g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,f4]!2", // Bm G7
  R: "[g3,b3,f4]!2 [g3,b3,f4]@2 [g3,b3,f4]@2 [g3,b3,f4]!2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]!2", // G7 C
  S: "[g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]!2 [c4,d#4,g4]@2 [c4,d#4,g4]@2 [c4,d#4,g4]@2 [c4,d#4,g4]!2", // C Cm
  T: "[c4,d#4,g4]!2 [c4,d#4,g4]@2 [c4,d#4,g4]@2 [c4,d#4,g4]!2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]!2", // Cm Em
  U: "[g3,b3,e4]!2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]!2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]!2", // Em Am
  V: "[a3,c4,e4]!2 [a3,c4,e4]@2 [a3,c4,e4]@2 [a3,c4,e4]!2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2", // Am D
  W: "[a3,d4,f#4]!2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]!2", // D G
  X: "[a3,d4,f#4]!2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2 [a3,d4,f#4]@2 ~@6", // D
  Y: "[g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]!4 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]!2", // Em
  Z: "[b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]!4 [b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]!2", // Bm
  AA: "[a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2", // D
  AB: "[a3,c4,f#4]@2 [a3,c4,f#4]@2 [a3,c4,f#4]@2 [a3,c4,f#4]!4 [a3,c4,f#4]@2 [a3,c4,f#4]@2 [a3,c4,f#4]!2", // F#dim
  AC: "[g3,b3,g4]/2", // G
})).s("gm_acoustic_guitar_steel").gain(0.29)

// other · accordion
const accordion = note("<A B A C D A E A B A C D F G E A B A C D F G E A B A C D H ~@44>".pickRestart({
  A: "d3 b3 g3 b3 d3 b3 g3 b3", B: "d3 b3 f#3 b3 d3 b3 f#3 b3", C: "c3 g3 e3 g3 c3 g3 e3 g3",
  D: "c3 g3 d#3 g3 c3 g3 d#3 g3", E: "d3 a3 f#3 a3 d3 a3 f#3 a3", F: "e3 b3 g3 b3 e3 b3 g3 b3",
  G: "c3 a3 e3 a3 c3 a3 e3 a3", H: "e3 b3 g3 b3 d3 a3 f#3 a3",
})).s("gm_accordion").gain(0.17).pan(0.4)

// other · overdriven guitar
const overdriven_guitar = note("<~@29 A@2 B C@5 ~@21 D E F G@2 H@2 I J K@5 ~>".pickRestart({
  A: "[~@8 e5@4 e5@8 e5@4 d5 b4 b4@6]/2", B: "~ a#4 [f4,f#4,g4,g#4,a4] [e4,b4]@4 a4 [g4,a4] b4 g4@6",
  C: "[~ d4 b3@2 g3@2 ~ f#4 [f#4,g4] d4 b3 ~ d4@10 ~ f#5@2 d5 a4 d5 f#5 a5 ~ a5@6 [d#5,e5,f5,f#5,g5,g#5] ~ f#5@2 e5 ~ d5@2 c5 ~ b4@2 a4 ~ a4@2 g4@18 ~@9]/5", // Gmaj7
  D: "e5 e5@2 e5", E: "d5 b4 b4@7 [a4,a#4] [f4,f#4,g4,g#4] [e4,b4]@4 a4", F: "[g4,a4] b4 g4@6 ~ d4 b3@2 g3@2 ~ f#4",
  G: "[[f#4,g4] d4 b3 ~ d4@10 ~ f#4@2 d4 a3 [d4,a4] g3 f#3 g3 f#3 d3 a2@5 ~ a2]/2", // Gmaj7 D5
  H: "[b2 c3 d3 [e3,f#3] [g3,a3] f#3 g3 [a3,b3] c4 [b3,c4] d4 [a3,b3] [c4,d4] e4 [b3,d4] d4@10 ~@3 e4@4]/2", // Esus2 Gsus2 Asus2 Cmaj7 Asus2 Csus2 Bm
  I: "d4 b3 b3@7 a#3 [f3,f#3,g3,g#3,a3] [d4,a4]@3 ~ [g4,a4]", J: "a4@3 [g4,a4] a4@3 [g4,a4] a4@5 ~@2 f#4",
  K: "[[f#4,g4] d4 b3 ~ d4@10 ~ f#5@2 d5 a4 d5 f#5 a5 ~ a5@6 [d#5,e5,f5,f#5,g5,g#5] ~ f#5@2 e5 ~ d5@2 c5 ~ b4@2 a4 ~ a4@2 g4@30 ~@5]/5", // Gmaj7
})).s("gm_overdriven_guitar").gain(0.35)

// drums · kick
const kick = s("bd").struct(`<
  ~@29 A B@3 C B D B C B C B C B D B C B C B C B E B C B C B C F@3 G F D F@3 G F D H ~@2
>`.pickRestart({
  A: "~ x", B: "x!2 ~ x!2 ~@3", C: "x!2 ~@2 x ~@3", D: "x!2", E: "x!3 ~", F: "x ~@3 x!2 ~ x", G: "x ~@3 x!2 ~@2",
  H: "x",
})).gain(0.8)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@33 A ~ B ~ A ~@3 A ~ B ~ A ~@3 A ~@3 A ~@7 C ~ D ~@3 C ~ D ~@3>".pickRestart({
  A: "~@3 x ~@4", B: "~@3 x ~@12", C: "~@7 x", D: "~@11 x ~@4",
})).gain(0.48)

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

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

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@35 A B C@2 D B C E A B C@2 D B C E A B C@2 D B E ~@15>".pickRestart({
  A: "~@9 x ~@3 x ~ x", B: "~ x ~@3 x ~@3 x ~@3 x ~@2", C: "~ x ~@7 x ~@3 x ~@2", D: "~ x ~@7 x ~@3 x ~ x",
  E: "~ x ~@14",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@35 A ~@7 A ~@13 B ~@5 C ~@5 C ~@3>".pickRestart({
  A: "~@5 x ~@10", B: "~@3 x ~@4", C: "~@13 x ~@2",
})).gain(0.56)

// drums · high tom
const high_tom = s("ht").struct("<~@35 A ~@7 A ~@13 B ~@5 C ~@5 C ~@3>".pickRestart({
  A: "~ x ~@2", B: "~@5 x ~@10", C: "~@3 x",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@29 A@6 B C@3 D ~ C@2 B C@3 D ~ C@2 E C@3 D ~ D F@13 ~@2>".pickRestart({
  A: "~ x", B: "~@2 x!2", C: "~ x ~ x", D: "~ x!2 ~", E: "~ x!3", F: "x",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@29 A B@5 C ~@22 D@5 E D@5 E ~@3>".pickRestart({
  A: "~@5 x!3", B: "x!4 ~ x!3", C: "x!2 ~@6", D: "~ x!7", E: "~ x!5 ~@2",
})).gain(0.48)

stack(
  bass, electric_guitar_clean, flute, percussive_organ, synth_strings_1, acoustic_guitar_steel, accordion,
  overdriven_guitar, kick, kick_soft, snare, low_tom, hihat, hihat_soft, mid_tom, high_tom, crash, ride
)

More by Nomadi