Strudelify

Yes I Know My Way

Daniele

KeyA majorTempo103 bpm
0:00/0:00
// Yes I Know My Way — Daniele
// 103 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 84 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(103/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 · acoustic bass · "AC/SLPBASS"
const bass = note(`<
  ~@2 A B C D E@2 F E F G H I J K L B C D E@2 F G H I J K L B M@6 N@6 O@3 P Q@8 R@3 P S@4 T@6 U@8 V@8
>`.pickRestart({
  A: "e3@4 b2@3 ~ e3@3 ~ b2@3 ~", B: "e3 ~ e3 ~ b2@3 ~ e3@3 ~ b2@4", C: "e3@2 ~@2 e3@2 ~@2 b2@6 ~@2 e3@7 ~ b2@6 ~@2",
  D: "e3@6 ~@2 b2@8 e3 ~@3 e3@2 ~@2 b2@6 ~@2", E: "e3@7 ~ b2@8 e3 ~@3 e3@2 ~@2 b2@8",
  F: "e3@8 b2@8 e3 ~@3 e3@2 ~@2 b2@5 ~@3", G: "c3@5 ~@3 g2@8 c3@2 ~@2 c3@2 ~@2 g2@6 ~@2",
  H: "c3@6 ~@2 g2@7 ~ c3@2 ~@2 c3@2 ~@2 g2@6 ~@2", I: "b2@3 ~ f#2@3 ~ b2 ~ b2 ~ f#2@3 ~",
  J: "b2@6 ~@2 f#2@6 ~@2 b2 ~@3 b2@2 ~@2 f#2@6 ~@2", K: "a2@7 ~ e2@7 ~ a2@8 e2@4 a2@3 ~",
  L: "c3@4 c4@4 b2 b3@3 b2 a3@2 ~",
  M: "[e3@2 ~@2 e3@2 ~@2 b2@6 ~@2 e3@7 ~@59 e2@2 f#2 ~ g2@2 a2@2 a#2@2 c3 ~ a#2@30 ~@2 a2@3 ~@63, ~ b2@7]/6",
  N: "[~@18 e2@2 f#2@2 g2@2 a2@2 ~@2 c3@2 a#2@31 ~ a2@4 ~@14 f#2@8 g2@5 ~@3 e3@6 ~@10 e3 ~@3 e3@2 ~@10 e3@7 ~@9 e3 ~@3 e3@2 ~@10 e3@7 ~@9 e3 ~@3 e3@2 ~@2 b2@8, ~@13 b2@39 b2@8 b2@8 b2@8 b2@8 b2@8 ~@4]/6",
  O: "[e3@8 ~@8 e3 ~@3 e3@2 ~@10 c3@5 ~@3 g2@8 c3@2 ~@2 c3@2 ~@2 g2@6 ~@2 c3@6 ~@2 g2@7 ~ c3 ~@3 c3@2 ~@2 g2@6 ~@2, ~ b2@2 b2@9]/3",
  P: "~@4 f#2@3 ~ b2@2 ~@2 f#2@3 ~, b2@4 ~ b2@3",
  Q: "[~@8 f#2@6 ~@2 b2@4 ~@4 f#2@6 ~@2 a2@7 ~ e2@7 ~ a2@8 e2@4 a2@3 ~ c3@8 c4@8 ~@2 b3@6 ~@2 a3@4 ~@2 e3@6 ~@10 e3 ~@3 e3@2 ~@10 e3@7 ~@9 e3 ~@3 e3@2 ~@10 e3@7 ~@9 e3 ~@3 e3@2 ~@10 e3@8 ~@8 e3 ~@3 e3@2 ~@10 e3@7 ~@9 e3 ~@3 e3@2 ~@2 b2@8, b2@4 ~ b2@15 b2@2 b2@4 b2@4 b2@4 b2@4 b2@4 b2@4 b2@4 b2@4 b2@4 b2@4 ~@2]/8",
  R: "[e3@8 ~@8 e3 ~@3 e3@2 ~@10 c3@5 ~@3 g2@8 c3@2 ~@2 c3@2 ~@2 g2@6 ~@2 c3@6 ~@2 g2@7 ~ c3@2 ~@2 c3@2 ~@2 g2@6 ~@2, ~ b2@2 b2@9]/3",
  S: "[~@8 f#2@6 ~@2 b2@4 ~@4 f#2@6 ~@2 a2@7 ~ e2@7 ~ a2@7 ~ e2@4 a2@3 ~ c3@8 c4@8 ~@2 b3@6 ~@2 a3@4 ~@2 e3@2 ~@2 e3@2 ~@10 e3@6 ~@2 b2@8, b2@4 ~ b2@15 b2@2 b2@4 b2@4 ~@2]/4",
  T: "[e3@2 ~@2 e3@2 ~@10 e3@7 ~@59 e2@2 f#2 ~ g2@2 a2@2 a#2@2 c3 ~ a#2@30 ~@2 a2@3 ~@63, ~ b2@2 b2@21]/6",
  U: "[~@18 e2@2 f#2@2 g2@2 a2@2 ~@2 c3@2 a#2@31 ~ a2@4 ~@14 f#2@8 g2@5 ~@3 e3@6 ~@10 e3 ~@3 e3@2 ~@10 e3@7 ~@9 e3 ~@3 e3@2 ~@10 e3@7 ~@9 e3 ~@3 e3@2 ~@10 e3@8 ~@8 e3 ~@3 e3@2 ~@10 e3@6 ~@10 e3 ~@3 e3@2 ~@2 b2@8, ~@13 b2@39 b2@8 b2@8 b2@8 b2@8 b2@8 b2@8 b2@8 b2@8 b2@8 ~@4]/8",
  V: "[e3@7 ~@9 e3 ~@3 e3@2 ~@10 e3@7 ~@9 e3 ~@3 e3@2 ~@10 e3@8 ~@8 e3 ~@3 e3@2 ~@10 e3@6 ~@10 e3 ~@3 e3@2 ~@10 e3@7 ~@9 e3 ~@3 e3@2 ~@10 e3@7 ~@9 e3 ~@3 e3@2 ~@10 e3@8 ~@8 e3 ~@3 e3@2 ~@8 e3@4 ~@30, ~@8 b2@16 b2@16 b2@16 b2@16 b2@16 b2@16 b2@16 b2@16 b2@16 b2@16 b2@16 b2@37 ~@35]/8",
})).s("gm_acoustic_bass").gain(0.8)

// other · slap bass 1 · "AC/SLPBASS"
const slap_bass_1 = note("<~@30 A@2 ~@2 B C ~@26 A@2 ~@2 B C ~@16>".pickRestart({
  A: "[~@15 c5@2 ~@12 c5 ~ b4]/2", B: "~@15 c5", C: "~@13 c5 ~ b4",
})).s("gm_lead_8_bass_lead").gain(0.8)

// chords · piano · "AC/EL.PNO"
const piano = note(`<
  ~ A B C D E F G H G I J K L M N O C D P Q G H J K L M R O C S@8 ~ T@3 U@8 V@4 W@8 X@8 ~ Y@8 Z@4 ~
>`.pickRestart({
  A: "[b3,d4,e4,g4] ~@3 [b3,d4,e4,g4] ~@7 [b3,d4,e4,g4] ~@3 [b3,d4,e4,g4]@4 ~@2 [c#4,e4,f#4,a4]@10", // Em7 F#m7
  B: "~@4 [b3,d4,e4,g4]@3 ~ [b3,d4,e4,g4]@2 ~@6 [b3,d4,e4,g4]@4 ~@2 [c#4,e4,f#4,a4]@10", // Em7 F#m7
  C: "~@4 [d4,e4,g4]@2 ~@2 [b3,d4,e4,g4] ~@7 [b3,d4,e4,g4]@4 ~@2 [c#4,e4,f#4,a4]@10, ~@4 b3 ~@27", // Em7 F#m7
  D: "~@4 [b3,d4,e4,g4] ~@3 [d4,e4,g4]@2 ~@6 [b3,d4,e4,g4]@4 ~@2 [c#4,e4,f#4,a4]@7 ~ e3 ~, ~@8 b3 ~@23", // Em7 F#m7
  E: "~@4 [f#4,g4]@2 ~@6 e3 ~@3 [b3,d4,f#4,g4]@4 ~@2 [c#4,e4,a4]@8 e3 ~, ~@3 e3@2 ~@11 e3 ~@5 e3 ~@9, ~@4 [b3,d4] ~@27", // Gmaj7 A Bm
  F: "~@4 [b3,d4,f#4,g4]@2 ~@6 e3 ~@3 [b3,d4,f#4,g4]@4 ~@2 [c#4,e4,a4]@8 e3 ~, ~@3 e3@2 ~@11 e3 ~@5 e3 ~@9", // Gmaj7 A
  G: "~@3 e3 [d4,f#4,g4]@2 ~@6 e3 ~@3 [b3,d4,f#4,g4]@5 ~ [c#4,e4,a4]@8 e3 ~, ~@4 b3 ~@11 e3 ~@5 e3 ~@9", // Gmaj7 A
  H: "~@4 [b3,d4,f#4,g4]@2 ~@6 e3 ~@3 [b3,d4,f#4,g4]@5 ~ [c#4,e4,a4]@4 e3 ~@5, ~@3 e3@2 ~@11 e3 ~@5 e3 ~@9", // Gmaj7 A
  I: "~@4 [b3,d4,f#4,g4]@2 ~@6 e3 ~@3 [b3,d4,f#4,g4]@5 ~ [c#4,e4]@4 e3 ~@5, ~@3 e3@2 ~@11 e3 ~@5 [e3,a4] ~@9", // Gmaj7 C#m A5
  J: "~@3 c3 [b3,d4,e4,g4,d5]@2 ~@6 c3 ~@3 [c3,b3,d4,e4,g4,d5]@5 ~@2 c3@2 ~@7, ~@4 c3 ~@11 c4 ~@5 [a3,c4,e4,g4,d5]@5 ~@5", // Em7 Cmaj7 Am7
  K: "~@3 c3 [b3,d4,e4,g4,d5]@2 ~@6 c3 ~@3 [c3,b3,d4,e4,g4,d5]@5 ~@2 c3@3 ~@6, ~@4 [c3,c4] ~@11 c4 ~@5 [a3,c4,e4,g4,d5]@5 ~@5", // Em7 Cmaj7 C Am7
  L: "~@3 b2 [a3,e4,a4,c#5,e5]@2 ~@6 b2 ~@3 [a3,e4,a4,c#5,e5]@5 ~@2 b2@2 ~@2 b2!2 ~@3, ~@4 b2 ~@11 b2@3 ~@3 [g#3,e4,g#4,b4,e5]@8 ~@2", // A E
  M: "~@3 b2 [e4,a4,c#5,e5]@2 ~@6 b2 ~@3 [b2,a3,e4,a4,c#5,e5]@5 ~@2 b2@2 ~@7, ~@4 [b2,a3] ~@17 [g#3,e4,g#4,b4,e5]@6 ~@4", // A B7 E
  N: "~@3 a2 [a2,c4,e4,g4] ~@6 a2 ~@4 [a2,e3,c4,e4,g4,a4,c5]@5 ~@2 a2 ~@8, ~@4 [e3,a4,c5]@2 ~@10 b4 ~@5 [d3,c4,d4,f#4,a4,c5]@6 ~@4", // Am7 Am D7
  O: "c2@7 ~ [c3,g3,a#3,d4,e4]@6 ~@2 b2 ~ [a3,d4,d#4,g4,a4]@6 b2 ~ [a3,d4,d#4,g4,a4]@5 ~, ~@9 b3 ~@6", // C7 Dsus4
  P: "~@3 e3 [f#4,g4]@2 ~@6 e3 ~@3 [b3,d4,f#4,g4]@4 ~@2 [c#4,e4,a4]@8 e3 ~, ~@4 [b3,d4] ~@11 e3 ~@5 e3 ~@9", // Gmaj7 A Bm
  Q: "~@3 e3 [b3,d4,f#4,g4]@2 ~@6 e3 ~@3 [b3,d4,f#4,g4]@4 ~@2 [c#4,e4,a4]@8 e3 ~, ~@16 e3 ~@5 e3 ~@9", // Gmaj7 A
  R: "~@3 a2 [a2,e3,c4,e4,g4] ~@6 a2 ~@4 [a2,e3,c4,e4,g4,a4,c5]@5 ~@2 a2 ~@8, ~@4 [a4,c5]@2 ~@10 b4 ~@5 [d3,c4,d4,f#4,a4,c5]@6 ~@4", // Am7 Am D7
  S: "[~@4 [b3,d4,e4,g4] ~@3 [d4,e4,g4]@2 ~@6 [b3,d4,e4,g4]@4 ~@2 [c#4,e4,f#4,a4]@234, ~@8 b3 ~@247]/8", // Em7 F#m7
  T: "[~@3 e3 [b3,d4] ~@7 e3 ~@3 [b3,d4,g4]@4 ~@2 e3 ~@7 e3 ~@4 e3 [b3,d4,g4]@2 ~@6 e3 ~@3 [b3,d4,g4]@4 ~@2 e3 ~@7 e3 ~@4 e3 [d4,g4]@2 ~@6 e3 ~@3 [b3,d4,g4]@5 ~ [c#4,e4,a4]@8 e3 ~, ~ f#4@3 f#4@5 f#4@3 f#4@5 f#4@3 f#4@4, ~@4 g4@2 ~@10 e3 ~@5 [c#4,e4,a4]@32 [c#4,e4,a4]@32 ~@10, ~@48 e3 ~@19 b3 ~@11 e3 ~@5 e3 ~@9]/3", // Bm G G5 G A
  U: "[~@3 e3 [b3,d4,g4]@2 ~@6 e3 ~@3 [b3,d4,g4]@5 ~ e3 ~@3 e3 ~@8 c3 [b3,d4,g4,d5]@2 ~@6 c3 ~@3 [c3,b3,d4,e4,g4,d5]@6 ~ c3@2 ~@10 c3 [b3,d4,g4,d5]@2 ~@6 c3 ~@3 [c3,b3,d4,e4,g4,d5]@6 ~ c3@3 ~@9 b2 [a3,c#5,e5]@2 ~@6 b2 ~@3 [a3,e4,c#5,e5]@6 ~ b2@2 ~@2 b2!2 ~@6 b2 [c#5,e5]@2 ~@6 b2 ~@3 [b2,a3,e4,c#5,e5]@6 ~ b2@2 ~@10 a2 [a2,e3,c4,g4] ~@6 a2 ~@4 [a2,e3,c4,g4,a4,c5]@6 ~ a2 ~@8 c2@7 ~ [c3,g3,a#3,d4]@6 ~@2 b2 ~ [a3,d4,d#4,g4,a4]@6 b2 ~ [a3,d4,d#4,g4]@5 ~@4 e3 [b3,d4] ~@7 e3 ~@3 [b3,d4,g4]@4 ~@2 [c#4,e4,a4]@8 e3 ~, ~@2 f#4@6 f#4@83 f#4@23 [f#4,g4]@6 f#4@8, ~@16 e3 ~@5 c#4@218 e3 ~@5 e3 ~@9, ~@22 a4@64 [a3,c4,g4,d5]@5 ~@9 b2 ~@11 b2@3 ~@3 [g#3,e4,g#4,b4,e5]@14 [b2,a3] ~@17 [g#3,e4,g#4,b4,e5]@14 c5@2 ~@10 b4 ~@5 a4@28 b3@3 ~@5 a4@28 ~@10, ~@22 e4@14 [c3,e4]@12 c4 ~@5 [a3,c4,e4,g4,d5]@14 [c3,c4,e4]@12 c4 ~@5 e4@14 [e4,a4]@12 a4@20 [e4,a4]@12 a4@20 [e4,a4]@12 e4@6 [d3,c4,d4,c5]@6 ~@12 e4@46 ~@10]/8", // G Cmaj7 G Cmaj7 A C#m A Am7 …
  V: "[~@3 e3 [b3,d4,g4]@2 ~@6 e3 ~@3 [b3,d4,g4]@4 ~@2 e3 ~@7 e3 ~@4 e3 [d4,g4]@2 ~@6 e3 ~@3 [b3,d4,g4]@5 ~ e3 ~@7 e3 ~@4 e3 [b3,d4,g4]@2 ~@6 e3 ~@3 [b3,d4,g4]@5 ~ e3 ~@3 e3 ~@8 e3 [d4,g4]@2 ~@6 e3 ~@3 [b3,d4,g4]@5 ~ [c#4,e4,a4]@8 e3 ~, ~ f#4@3 f#4@5 f#4@3 f#4@5 f#4@3 f#4@5 f#4@3 f#4@4, ~@16 e3 ~@5 [c#4,e4,a4]@32 [c#4,e4,a4]@32 [c#4,e4,a4]@32 ~@10, ~@36 b3 ~@11 e3 ~@31 e3 ~@19 b3 ~@11 e3 ~@5 e3 ~@9]/4", // G G5 G G5 G A
  W: "[~@4 [b3,d4,g4]@2 ~@6 e3 ~@3 [b3,d4,g4]@5 ~ e3 ~@3 e3 ~@8 c3 [b3,d4,g4,d5]@2 ~@6 c3 ~@3 [c3,b3,d4,e4,g4,d5]@6 ~ c3@2 ~@10 c3 [b3,d4,g4,d5]@2 ~@6 c3 ~@3 [c3,b3,d4,e4,g4,d5]@6 ~ c3@3 ~@9 b2 [a3,c#5,e5]@2 ~@6 b2 ~@3 [a3,e4,c#5,e5]@6 ~ b2@2 ~@2 b2!2 ~@6 b2 [c#5,e5]@2 ~@6 b2 ~@3 [b2,a3,e4,c#5,e5]@6 ~ b2@2 ~@10 a2 [a2,e3,c4,g4] ~@6 a2 ~@4 [a2,e3,c4,g4,a4,c5]@6 ~ a2 ~@8 c2@7 ~ [c3,g3,a#3,d4]@6 ~@2 b2 ~ [a3,d4,d#4,g4,a4]@6 b2 ~ [a3,d4,d#4,g4]@5 ~@5 [d4,g4]@2 ~@2 [b3,d4,g4] ~@7 [d4,e4,g4]@6 [c#4,e4,f#4,a4]@10, ~@3 e3@2 ~@11 e3 ~@5 c#4@224 ~@10, ~@2 f#4@6 f#4@83 f#4@32 ~@5, ~@22 a4@64 [a3,c4,g4,d5]@5 ~@9 b2 ~@11 b2@3 ~@3 [g#3,e4,g#4,b4,e5]@14 [b2,a3] ~@17 [g#3,e4,g#4,b4,e5]@14 c5@2 ~@10 b4 ~@5 a4@28 b3@3 ~@5 a4@28 ~@10, ~@22 e4@14 [c3,e4]@12 c4 ~@5 [a3,c4,e4,g4,d5]@14 [c3,c4,e4]@12 c4 ~@5 e4@14 [e4,a4]@12 a4@20 [e4,a4]@12 a4@20 [e4,a4]@12 e4@6 [d3,c4,d4,c5]@6 ~@12 e4@28 [b3,e4]@4 e4@8 b3@3 ~@13]/8", // G Cmaj7 G Cmaj7 A C#m A Am7 …
  X: "[~@4 [b3,d4,g4] ~@3 [d4,g4]@2 ~@6 [b3,d4,e4,g4]@6 [c#4,e4,f#4,a4]@234, ~ e4 e4@2 ~@60, ~@8 b3 ~@247]/8", // G G5 Em7 F#m7
  Y: "[~@4 [b3,d4,g4,d5] ~@3 [b3,d4,g4,d5] ~@7 [b3,d4,g4,a4,d5]@6 [a3,c#5]@8 ~@6 [b3,d4,g4,d5] ~@3 [b3,d4,g4,d5] ~@7 [b3,d4,g4,a4,d5]@6 [a3,c#5]@9 ~@5 [b3,d4,g4,d5] ~@3 [b3,d4,d5]@2 ~@6 [b3,d4,g4,a4,d5]@6 [a3,c#5]@9 ~@5 [b3,d4,g4,d5] ~@3 [f#4,a4]@8 [b3,d4,g4,a4,d5]@6 [a3,c#5]@7 ~@7 [b3,d4,g4,d5] ~@3 [b3,d4,g4,d5] ~@7 [b3,d4,g4,a4,d5]@6 [a3,c#5]@8 ~@6 [b3,d4,g4,d5] ~@3 [b3,d4,g4,d5] ~@7 [b3,d4,g4,a4,d5]@6 [a3,c#5]@9 ~@5 [b3,d4,g4,d5] ~@3 [b3,d4,d5]@2 ~@6 [b3,d4,g4,a4,d5]@6 [a3,c#5]@9 ~@5 [b3,d4,g4,d5] ~@3 [f#4,a4]@8 [b3,d4,g4,a4,d5]@6 [c#4,e4,a4]@10, ~@2 [f#4,a4]@2 c#4@7 [c#4,e4]@16 e4@16 ~@9 [d4,d5] ~@6 e4@16 ~@16 e4@16 ~@9 [d4,d5] ~@11, ~@8 [f#4,a4]@8 f#4@20 [f#4,a4]@4 [f#4,a4]@8 f#4@20 [f#4,a4]@4 [f#4,a4]@8 f#4@20 [f#4,a4]@4 [b3,g4] ~@13 a4@14 ~@18 a4@14 ~@18 a4@14 ~@4 g4 ~@7 c5 ~@5 a4@14 ~@12 f#4@16, ~@11 a4@7 ~@9 c#4@9 c#4@7 [c#4,e4]@16 c#4@9 c#4@7 [c#4,e4]@16 c#4@9 c#4@7 [c#4,e4]@16 ~@5, ~@54 a4@14 ~@4 g4 ~@7 c5 ~@5 a4@14 ~@12 f#4@20 [f#4,a4]@4 [f#4,a4]@8 f#4@20 [f#4,a4]@4 [f#4,a4]@8 f#4@20 [f#4,a4]@4 [f#4,a4]@8 f#4@20 [f#4,a4]@4 [b3,g4] ~@13 [a3,c#5]@7 ~@3]/8", // G A G A G Bm G A …
  Z: "[~@4 [b3,d4,g4,d5] ~@3 [b3,d4,g4,d5] ~@7 [b3,d4,g4,a4,d5]@6 [a3,c#5]@8 ~@6 [b3,d4,g4,d5] ~@3 [b3,d4,g4,d5] ~@7 [b3,d4,g4,a4,d5]@6 [a3,c#5]@9 ~@5 [b3,d4,g4,d5] ~@3 [b3,d4,d5]@2 ~@6 [b3,d4,g4,a4,d5]@6 [a3,c#5]@9 ~@5 [b3,d4,g4,d5] ~@3 [d4,d5]@2 ~@6 [b3,d4,g4,d5]@5 ~ [a3,c#5]@7 ~ [e3,b4,e5]@2, ~@4 [f#4,a4]@4 c#4@14 [c#4,e4]@32 e4@71 ~@3, ~@8 [f#4,a4]@8 f#4@20 [f#4,a4]@4 [f#4,a4]@8 f#4@20 [f#4,a4]@4 [f#4,a4]@8 f#4@20 f#4@4 [b3,g4] ~@23, ~@22 a4@14 ~@18 c#4@18 c#4@53 ~@3, ~@54 a4@14 ~@4 g4 ~@7 c5 ~@5 a4@14 a4@4 a4@21 ~@3]/4", // G A G A G Bm G A …
})).s("gm_piano").gain(0.48)

// chords · epiano1 · "AC/EL.PNO"
const epiano1 = note("<~@30 A B@6 C@8 ~@17 A D@8 ~@13>".pickRestart({
  A: "~@15 d6",
  B: "[~@24 g5@6 ~@26 f#5@5 ~ c6@7 ~@19 e5@6 b5@10 d5@8 g5@8 e5@6 ~@26 g5@6 ~@26 f#5@5 ~ [f3,a3,d4,c6]@2, [g3,b3,c4,e4]@29 ~ [f#3,a3,d4]@15 a5 e5@2 a5@12 ~@10 a5@2 c5@24 ~@40 e5@4 b5 g5 d5@2 b5@13 ~@11 c#5@5 a5 e5@2 a5@12 ~@4, ~@8 e5@6 d5@15 ~@11 c#5@20 ~@2 [f3,a3,d4]@31 ~ [e3,b3]@32 ~ [g3,e4]@30 ~ [f#3,a3,d4]@30 ~@4, ~@11 d6@18 ~ c#6@14 c#6@16 ~@9 c6@22 ~@35 d6@10 ~@3 d6@18 ~ c#6@14 c#6@16 ~@4, ~@12 b5 g5@3 b5@13 ~@14 e6@18 ~@10 e5@9 a5@11 ~@3 g3@29 ~@3 [b3,c4]@31 ~@14 e6@18 ~@3]/6", // Dm7 Cmaj7 D Dm E5 C D Cmaj7
  C: "[~@24 e5@6 b5@10 d5@9 ~@207, ~@5 c6@22 ~@229, ~@6 a5@10 a5@11 ~@3 [g3,b3]@30 ~@196, ~@7 e5@17 ~@6 e3@226, ~ c5@3 ~@28]/8", // G
  D: "[~@24 g5@6 ~@26 f#5@5 ~ c6@7 ~@19 e5@6 b5@10 d5@8 g5@8 e5@6 ~@26 g5@6 ~@26 f#5@5 ~ c6@7 ~@19 e5@6 b5@10 d5@9 ~@15, [g3,b3,c4,e4]@29 ~ [f#3,a3,d4]@15 a5 e5@2 a5@12 ~@10 a5@2 c5@24 ~@31 [g3,e4]@17 b5@13 ~@14 e6@18 ~@10 e5@9 a5@11 ~@37, ~@8 e5@6 d5@15 ~@11 c#5@20 ~@2 [f3,a3,d4]@31 ~ [g3,b3]@30 ~@2 [b3,c4]@31 ~ [f#3,a3,d4]@15 a5 e5@2 a5@12 ~@10 a5@2 c5@24 ~@32, ~@11 d6@18 ~ c#6@14 c#6@16 ~@9 c6@22 ~@35 d6@10 ~@3 d6@18 ~ c#6@14 c#6@16 ~@9 c6@22 ~@37, ~@12 b5 g5@3 b5@13 ~@14 e6@18 ~@10 e5@9 a5@11 ~@45 e5@4 b5 g5 d5@15 ~@11 c#5@20 ~@2 [f3,a3,d4]@31 ~ [g3,b3]@30 ~@4]/8", // Cmaj7 D C Dm G Cmaj7 D Dm …
})).s("gm_epiano1").gain(0.38)

// chords · french horn · "FR.HORN"
const french_horn = note("<~@17 A@3 ~@9 B@2 ~@30 B@2 ~@21>".pickRestart({
  A: "[[d4,g4,b4]@31 [e2,b2]@2 ~@15]/3", B: "[[d4,g4,b4]@31 b2, ~@62 e2 ~]/2",
})).s("gm_french_horn").gain(0.39)

// chords · french horn · "FR.HORN" · soft notes
const french_horn_soft = note("<~ A@4 ~@13 B ~@11 B ~@31 B ~@21>".pickRestart({
  A: "[d4@117 ~@11, e4@53 ~@11, g4@91 ~@37, b3 ~@127]/4", B: "~@30 e3 ~",
})).s("gm_french_horn").gain(0.06)

// chords · acoustic guitar steel · "EL.GUITAR"
const acoustic_guitar_steel = note(`<
  ~ A@10 B@2 C D E ~ A@6 B@2 C D E ~ A F@2 ~@19 A@4 B@2 C D E ~ A F@2 ~@20
>`.pickRestart({
  A: "e4 ~@3 [b4,d5,f#5] ~@3 e4 ~@2 [b4,d5,f#5] ~@4 e4 ~@6 e4 ~@3 e4 [b4,d5,f#5]@3 ~", // Bm
  B: "~@8 e4 ~@2 [b4,d5,e5] ~@11 c4 ~@3 c4 [b4,d5,e5]@3 ~", // E7
  C: "b3 ~@7 b3 ~@2 [b4,d5,f#5] ~@11 b3 ~@3 b3 [b4,d5,f#5]@3 ~", // Bm
  D: "~@8 b3 ~@2 [b4,d5,f#5] ~@11 b3 ~@3 b3 [b4,d5,f#5]@3 ~", // Bm
  E: "e4 ~@7 e4 ~@2 [c5,e5,g5] ~@11 e4 ~@3 e4 [c5,d5,g5]@3 ~", // C Csus2
  F: "[e4 ~@3 [b4,d5,f#5] ~@3 e4 ~@2 [b4,d5,f#5] ~@4 e4 ~@6 e4 ~@3 e4 [b4,d5,f#5]@3 c4@2 ~@31]/2", // Bm
})).s("gm_acoustic_guitar_steel").gain(0.31)

// drums · kick
const kick = s("bd").struct(`<
  A B@2 C B@3 C B@6 C@2 D C B@3 C B@4 C@2 D C E F G@3 F G@2 ~ B@2 C B@4 C@2 D B@2 C B@6 C@2 D C E F G@3 F G@2 ~ B@2 C
  B@3 C B@3 C H ~
>`.pickRestart({
  A: "~ x", B: "x!2", C: "x ~@15 x ~@14 x", D: "x ~ x!2", E: "x ~@7 x ~@6 x", F: "~@13 x ~ x", G: "~@15 x",
  H: "x ~@7 x ~@5 x!2",
})).gain(0.68)

// drums · snare
const snare = s("sd").struct("<A@16 B A C A@9 B A@2 ~@7 D A@9 B A@11 B A@2 ~@7 D A@12 ~>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@4 x ~@3 x ~@2", C: "~@2 x ~@2 x!3", D: "~@5 x!3",
})).gain(0.68)

// drums · low tom
const low_tom = s("lt").struct("<~@32 A ~@3 A ~@27 A ~@3 A ~@13 B ~>".pickRestart({
  A: "~@13 x!2 ~", B: "~@27 x ~@4",
})).gain(0.41)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A B C D E A B C D E ~ A B C D ~ C D E A B C ~ A B C D ~ C D F G F G F G F G E A B C ~ H I C J ~ E A B C D E ~ A B C
  D ~ C D F G F G F G F G E A B C E A B C E A B C ~
>`.pickRestart({
  A: "~@19 x ~@3 x ~@4 x ~@2 x", B: "~@23 x ~@3 x ~@4", C: "~@7 x ~@7 x ~@7 x ~@7 x", D: "~@15 x ~@7 x!3 ~@6",
  E: "x ~@6 x ~@7 x ~@7 x ~ x ~ x ~@4", F: "~@18 x!2 ~@7 x ~@4", G: "~ x ~ x ~ x!3 ~ x!2 ~@3 x!2",
  H: "~@19 x ~@8 x ~@3", I: "~@23 x ~@8", J: "~@15 x ~@7 x ~@8",
})).gain(0.27)

// drums · mid tom
const mid_tom = s("mt").struct("<~@30 A ~ B ~ C ~ B ~@25 A ~ B ~ C ~ B ~@13 D ~>".pickRestart({
  A: "~@7 x", B: "~@3 x", C: "~@6 x!2", D: "~@24 x ~@2 x ~@4",
})).gain(0.68)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@32 A ~@3 A ~@27 A ~@3 A ~@15>".pickRestart({
  A: "~@11 x ~@4",
})).gain(0.34)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@16 A ~@11 A ~ B C ~ B@2 C ~ B ~@10 A ~@11 A ~ B C ~ B@2 C ~ B ~@12 B ~
>`.pickRestart({
  A: "~@9 x ~@3 x ~@2", B: "~@15 x", C: "~@13 x ~ x",
})).gain(0.68)

// drums · high tom
const high_tom = s("ht").struct("<~@32 A ~ B ~ A ~@27 A ~ B ~ A ~@13 C ~>".pickRestart({
  A: "~@9 x!2 ~@5", B: "~@19 x ~@12", C: "~@8 x!4 ~ x ~@2",
})).gain(0.54)

// drums · crash
const crash = s("cr").struct("<~@16 A B ~@10 A ~@3 C ~@3 C ~@11 A ~@11 A ~@3 C ~@3 C ~@15>".pickRestart({
  A: "~ x ~@2", B: "x", C: "~@15 x",
})).gain(0.48)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~ A B C D E C@3 F G ~ A B C D E C D E C@3 ~ A B C D E C D ~@8 E C@3 ~ A B C D E@2 C@3 F G ~ A B C D E C D ~@8 E C@3 E
  C@3 E C@3 ~
>`.pickRestart({
  A: "~ x ~@3 x ~@2", B: "~@4 x ~@15 x ~@3 x!2 ~@6", C: "~@4 x ~@15 x ~@2 x ~@8", D: "~@4 x ~@15 x ~@4 x ~@6",
  E: "~@7 x ~@12 x ~@2 x ~@8", F: "~@4 x ~@2 x ~@24", G: "~@4 x ~@14 x ~@3 x ~@8",
})).gain(0.54)

// drums · bongos · soft notes
const bongos_soft = s("bongo:4").struct(`<
  ~@2 A B C D E ~ F G H ~@2 A B C D B C D E ~ F ~@2 A B C D B C ~@8 D E ~ F ~@2 A B C D@2 E ~ F G H ~@2 A B C D B C ~@8
  D E ~ F D E ~ F D E ~ F ~
>`.pickRestart({
  A: "~@27 x ~@4", B: "~@11 x ~@7 x ~@12", C: "~@23 x!2 ~@2 x ~@4", D: "~@3 x!2 ~@6 x ~@20", E: "~@25 x ~ x ~@4",
  F: "~@24 x!2 ~ x ~@4", G: "~@3 x ~@28", H: "~@3 x ~@20 x!2 ~ x ~@4",
})).gain(0.18)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@9 [~@19 x ~@12] ~@43 [~@19 x ~@12] ~@30>").gain(0.54)

// drums · bongos · soft notes
const bongos_soft_2 = s("bongo:18").struct("<~@9 [~@21 x ~ x!3 ~@6] ~@43 [~@21 x ~ x!3 ~@6] ~@30>").gain(0.18)

// drums · congas
const congas = s("conga:18").struct(`<
  ~ A B C B C B A B C@2 ~ A B C B C@2 B C B A B ~ A B C B C@2 B ~@8 C B A B ~ A B C B C@2 B A B C@2 ~ A B C B C@2 B ~@8
  C B A B C B A B C B A B ~
>`.pickRestart({
  A: "~@15 x ~@15 x", B: "~@15 x ~@12 x ~@2 x", C: "~@12 x ~@2 x ~@12 x ~@2 x",
})).gain(0.87)
// … 14 more lines

More by Daniele