Strudelify

Ti amo Maria

G. G. Anderson

KeyE♭ majorTempo122 bpm
0:00/0:00
// Ti amo Maria — G. G. Anderson
// 122 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 119 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(122/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 · synth bass 2 · "SYNTH BASS"
const bass = note(`<
  A B C D E F G F H F I J I J H F K L M F N J I F O H F I J I J H F N L P F N J Q F R S@2 T U V W U X S@2 Y Z AA AB U AC
  H F I J I AD H F N L M F AE J I F AF S@3 AG V AB U AH S@2 AI AH AJ AK U R S@2 AI U V W U@2 S@2 T Z AJ W U AL AJ AM U
  AN AO ~@7
>`.pickRestart({
  A: "~ eb2@9 eb3@2 c3@2 bb2 ~", B: "eb2@9 ~ eb3 ~ g3 f3 eb3 ~", C: "ab2@9 ~ ab3@2 f3 ~ eb3 ~",
  D: "f2@4 ~@2 bb2@3 ~ bb2 ~ bb3 a3 bb3 ~", E: "eb2@4 ~@2 eb2@2 eb2@3 bb1 eb2@4", F: "~ eb2 ~ g2 ~ bb2 c3 bb2",
  G: "eb2@4 ~@2 eb2@2 eb2@3 ~ eb2@4", H: "eb2@2 ~ eb2 eb2@4", I: "bb1@2 ~ bb1 ~ d2 f2 bb2", J: "~ ab2 ~ f2 ~ d2 ~ f2",
  K: "eb2@4 ~@2 eb2@2 eb2@7 c3", L: "~ ab1 ~ c2 ~ eb2 f2 eb2", M: "ab1@4 ~@2 ab1@2 ab1@7 bb1",
  N: "eb2@4 ~@2 eb2@2 eb2@7 ~", O: "~@7 eb3", P: "ab1@4 ~@2 ab1@2 ab1@7 [bb1,eb2]",
  Q: "bb1@4 ~@2 bb1@2 ~@2 d2@2 f2@2 bb2 g3", R: "~@2 eb3@3 ~ bb2 ~ eb3@2 g2 ~ bb2 gb2 g2 ~",
  S: "ab1@2 ab2!2 ab1@2 ab2!2 ab1@2 ab2!2 ab1@2 ab2!2", T: "ab1@2 ab2!2 ab1@2 ab2!2 ab1@2 ab2!2 ab1@2 ab2 [ab2,bb2]",
  U: "eb2@2 eb3!2 eb2@2 eb3!2 eb2@2 eb3!2 eb2@2 eb3!2", V: "bb1@2 bb2!2 bb1@2 bb2!2 bb1@2 bb2!2 bb1@2 d3!2",
  W: "bb1@2 bb2!2 bb1@2 bb2!2 bb1@2 bb2!2 bb1@2 c3!2", X: "eb2@2 eb3!2 eb2@2 eb3!2 eb2@2 eb3!2 eb2@2 eb3 [c3,eb3]",
  Y: "ab1@2 ab2!2 ab1@2 ab2!2 ab1@2 ab2!2 ab1@2 ab2 [ab2,eb3,g3]", // Abmaj7
  Z: "eb2@2 eb3!2 eb2@2 eb3!2 eb2@2 eb3!2 eb2@2 eb3 [eb3,f3]", AA: "f2@2 f3!2 f2@2 f3!2 f2@2 f3!2 f2@2 f3!2",
  AB: "bb1@2 bb2!2 bb1@2 bb2!2 bb1@2 bb2!2 bb1@2 c3 [bb2,c3]", AC: "eb2 ~@13 eb3@2",
  AD: "~@2 ab2@2 ~@2 f2@2 ~@2 d2@2 ~@2 f2 bb1", AE: "eb2@4 ~@2 eb2@2 eb2@7 bb1",
  AF: "~@2 eb3@3 ~ bb2 ~ c3@2 g2 ~ bb2 f2 g2 ~", AG: "eb2@2 eb3!2 eb2@2 eb3!2 eb2@2 eb3!2 eb2@2 eb3 [bb2,eb3]",
  AH: "eb2@2 eb3!2 eb2@2 eb3!2 eb2@2 eb3!2 eb2@2 eb3 [ab2,eb3]", // Ab5
  AI: "ab1@2 ab2!2 ab1@2 ab2!2 ab1@2 ab2!2 ab1@2 ab2 [ab2,bb2,eb3]", // Absus2
  AJ: "f2@2 f3!2 f2@2 f3!2 f2@2 f3!2 f2@2 f3 [bb2,f3]", AK: "bb1@2 bb2!2 bb1@2 bb2!2 bb1@2 bb2!2 bb1@2 c3 [bb2,c3,g3]",
  AL: "~@2 eb3@3 ~ bb2 ~ c3@2 g2 ~ bb2 f2 g2 f3", AM: "bb1@2 bb2!2 bb1@2 bb2!2 bb1@2 bb2!2 bb1@2 c3 [c3,eb3]",
  AN: "eb2@2 eb3@2 d3@2 eb3@4 bb2 ~ c3 ~@3", AO: "eb4 eb6 d6 c6 bb5 ab5 g5 f5 eb5 ~@7",
})).s("gm_synth_bass_2").gain(0.64)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B C D E F E F G@2 H I H I G@2 J K L F J I H F M G@2 H I H I G@2 J K N F J I H F O P Q R S T U V S R Q W S X U V Y
  G@2 H I H I G@2 J K L F J I H F Z R Q R S T U AA S R Q W S X U V AB R Q W S T U V S R Q R S X U V AC X U V AD AE ~@7
>`.pickRestart({
  A: "~ [g4,f5]@3 [g4,bb4,f5]@2 [g4,bb4]@2 ~@2 bb4@2 c5@2 eb5 ~, bb4@3 ~@3 eb5@4 ~@6", // G7 Gm7 Gm
  B: "[g4,bb4,f5]@3 ~ [g4,bb4,f5]@2 [g4,bb4]@2 ~@4 g5 f5 eb5 ~, ~@6 eb5@5 ~@5", // Gm7 Gm
  C: "[ab4,c5,g5]@4 [ab4,c5]@2 [ab4,c5]@2 ~@2 bb4 ~ c5 ~ f5 ~, ~ g5 ~@2, ~@3 f5@2 ~@3", // Abmaj7 Ab
  D: "[ab4,c5,g5]@3 ~ [ab4,c5,g5]@2 [ab4,c5,f5]@2 ~@2 g5 ~ bb5 c6 bb5 ~", // Abmaj7 Fm
  E: "[g4,bb4,eb5]@3 ~ [g4,bb4,d5]@2 [g4,bb4,eb5]@2 ~@2 [g4,bb4,d5] ~@3 [ab4,bb4,eb5]@2", // Eb Gm Eb Gm Absus2
  F: "~@2 [g4,bb4,eb5]@2 [g4,bb4,d5]@2 [g4,bb4] ~@3 [g4,bb4,g5] ~ [g4,bb4,eb5]@2 [g4,bb4,d5] ~, ~@6 eb5@3 ~@7", // Eb Gm Eb Gm
  G: "[[g4,bb4,eb5]@3 ~ [g4,bb4,d5]@2 [g4,bb4,eb5]@2 ~@2 [g4,bb4,d5] ~@3 [g4,bb4,eb5]@4 [g4,bb4]@2 [g4,bb4,d5]@2 [g4,bb4] ~@3 [g4,bb4,g5] ~ [g4,bb4,eb5]@2 [g4,bb4,d5] ~, ~@18 eb5@4 eb5@3 ~@7]/2", // Eb Gm Eb Gm Eb Gm Eb Gm
  H: "~@2 [d4,f4,ab4,bb4]@2 [d4,f4,ab4,c5]@2 [d4,f4,ab4] ~@7 [c4,f4,ab4,c5] ~, ~@6 bb4@7 ~@3", // Bb7 Dm7b5 Ddim Fm
  I: "[g4,a4,db5] [ab4,bb4,d5] ~ [ab4,bb4,d5] ~ [ab4,bb4,d5] ~ bb3 [ab4,bb4,d5] ~ [ab4,bb4,d5] ~ [g4,a4,db5] [ab4,bb4,d5] ~@2", // A7 Bb7 A7 Bb7
  J: "[g4,bb4,eb5]@3 ~ [g4,bb4,d5]@2 [g4,bb4,eb5]@2 ~@2 [g4,bb4,d5] ~@3 [g4,bb4,eb5]@2", // Eb Gm Eb Gm Eb
  K: "~@2 [c4,eb4,ab4]@2 [c4,eb4,g4]@2 [c4,eb4] ~@3 [c4,eb4,c5] ~ [c4,eb4,ab4]@2 [c4,eb4,g4] ~, ~@6 ab4@3 ~@7", // Ab Cm Ab Cm
  L: "[c4,eb4,ab4]@3 ~ [c4,eb4,g4]@2 [c4,eb4,ab4]@2 ~@2 [c4,eb4,g4] ~@3 [c4,eb4,ab4]@2", M: "[eb4,f4,bb4]@7 eb5",
  N: "[c4,eb4,ab4]@3 ~ [c4,eb4,g4]@2 [c4,eb4,ab4]@2 ~@2 [c4,eb4,g4] ~@3 [c4,eb4,ab4] ~", // Ab Cm Ab Cm Ab
  O: "[eb4,eb5] ~ [eb4,g4,bb4,c5]@6 ~@6 bb4 db5", // Eb Cm7
  P: "[c4,eb4,ab4]!2 [c4,eb4,g4] ~ [c4,eb4,ab4] ~ [c4,eb4,bb4] [c4,eb4,ab4]", // Ab Cm Ab Cm7 Ab
  Q: "~@2 [c4,eb4,ab4] ~ [c4,eb4,g4] ~ [c4,eb4,g4] ~ [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,g4] ~@3", // Ab Cm Ab Cm
  R: "[c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,g4] ~@3 [c4,eb4,ab4]@2 ~@2 [c4,eb4,bb4]@2 [c4,eb4,ab4]@2", // Ab Cm Ab Cm7 Ab
  S: "~@2 [g4,bb4,eb5] ~ [g4,bb4,d5] ~ [g4,bb4,d5] ~ [g4,bb4,eb5]@2 [g4,bb4,eb5]@2 [g4,bb4,d5] ~@3", // Eb Gm Eb Gm
  T: "[d4,f4,ab4,bb4]@2 [d4,f4,ab4,bb4]@2 ~@2 [d4,f4,ab4,bb4]@7 ~ [d4,f4,ab4,c5] ~", // Bb7 Dm7b5
  U: "[d4,f4,ab4,bb4]@2 [d4,f4,ab4,bb4]@2 ~@2 [f4,ab4,bb4,d5] ~ [f4,ab4,c5,eb5]@2 [f4,ab4,bb4,d5] ~@3 [ab3,ab4] [bb3,bb4]", // Bb7 Fm7 Bb7 Ab Bb
  V: "[g4,bb4,eb5]@2 [g4,bb4,eb5]@2 [g4,bb4,d5] ~@3 [g4,bb4,eb5]@2 ~@2 [g4,bb4,f5]@2 [g4,bb4,eb5]@2", // Eb Gm Eb Gm7 Eb
  W: "[c4,eb4,ab4]@2 [c4,eb4,ab4]@2 [c4,eb4,g4] ~@3 [c4,eb4,ab4]@2 ~@2 [c4,eb4,bb4]@2 [c4,eb4,ab4] ~", // Ab Cm Ab Cm7 Ab
  X: "[c5,f5,ab5]@2 [c5,f5,ab5]@2 [c5,f5,g5] ~@3 [c5,f5,ab5]@2 ~@2 [c5,f5,bb5]@2 [c5,f5,ab5]@2", Y: "~@7 eb5",
  Z: "[eb4,eb5] ~ [eb4,g4,bb4,c5]@10 ~@2 bb4 c5", // Eb Cm7
  AA: "[g4,bb4,eb5]!2 [g4,bb4,d5] ~ [g4,bb4,eb5] ~ [g4,bb4,f5] [g4,bb4,eb5]", // Eb Gm Eb Gm7 Eb
  AB: "[eb4,eb5]@2 [eb4,g4,bb4,c5]@5 ~@7 bb4 db5", AC: "[eb4,eb5]@2 [eb4,g4,bb4,c5]@10 ~@2 bb4 c5",
  AD: "[g4,bb4,eb5]@2 [g4,bb4,eb5]@2 [f4,bb4,d5]@2 [g4,eb5]@3 ~ [eb4,g4,bb4] ~ [eb4,ab4,c5] [eb4,ab4,c5,eb5] ~ [eb4,ab4,c5], ~@6 bb4 ~@9", // Eb Bb Cm Eb Ab
  AE: "[eb4,g4,bb4,eb5] bb5 a5 bb5 b5 c6 db6 d6 eb6 ~ [eb2,eb3]@2 ~@4", // Eb
})).s("gm_electric_guitar_muted").gain(0.36).pan(0.3)

// chords · synth strings 1 · "SYN STRING"
const synth_strings_1 = note(`<
  ~@4 A@2 B@2 C@2 D@2 E@5 F@4 G H I@2 C@2 D@2 J@5 K@4 G L M@2 N@4 O@2 P@2 Q R@2 S T@4 U@2 V@2 W@2 X@2 Y F@4 G L Z@2 Q
  AA@2 AB O@2 AC AD Q R@2 AE AF@4 Q AG@3 O@2 P@2 Q AH@7 AI@2 AJ@3 ~@7
>`.pickRestart({
  A: "[[bb4,eb5,g5]@11 ~ f5@3 ~ eb5@14 ~@2, ~@11 ab5@4 g5@14 ~@3, ~@6 bb4@9 ~]/2", // Eb
  B: "[[bb4,eb5,g5]@12 [f5,ab5]@3 ~ g5@12 ~@4, ~@3 bb4@4 ~, ~@15 eb5@12 ~@5]/2", C: "[eb4@6 f4 g4@5 f4@2 eb4@2]/2",
  D: "d4/2", E: "[f4@12 g4@2 ab4@10 bb4@4 ab4@3 g4@48 ~]/5", F: "[ab4@22 bb4@5 ab4@4 g4@33]/4", G: "f4@3 g4",
  H: "ab4@3 g4@3 f4@2", I: "[eb4@9 ~@7]/2", J: "[f4@12 g4@2 ab4@10 bb4@4 ~@3 g4@48 ~, ~@28 ab4@5 ~@47]/5",
  K: "[ab4@22 bb4@5 ~ ab4@3 g4@32 ~]/4", L: "ab4@6 g4@5 f4@4 ~", M: "[eb4@25 ~@3 eb4@4]/2",
  N: "[[ab4,c5]@12 [bb4,d5]@3 ~ eb5@6 [bb4,d5]@6 ab4@4 eb5@6 [bb4,d5]@6 [ab4,c5]@3 [g4,bb4]@17, ~@15 c5@7 ~@6 c5@11 ~@25]/4", // Ab Bb Ab Gm
  O: "[[f4,ab4]@6 [eb4,g4] [d4,f4]@7 [ab4,c5]@2]/2", P: "[[g4,bb4]@12 [f4,ab4]@2 ~ eb4@12 ~ eb4@4, ~@14 g4@13 ~@5]/2",
  Q: "[ab4,c5]@3 [bb4,d5]", R: "[[c5,eb5]@3 [bb4,d5]@3 ab4@2 eb5@3 [bb4,d5]@3 [ab4,c5]@2, ~@12 c5@11 ~@9]/2",
  S: "bb4@13 bb4@3, g4", T: "[[f4,ab4]@12 eb5@2 d5@13 ~ f5@3 ~ g4@24 ~@8, ~@14 f4@17 eb5@24 ~@9]/4",
  U: "[eb4@11 f4@3 g4@10 f4@4 eb4@4]/2", V: "[d4@31 ~]/2", W: "[f4@6 g4 ab4@5 bb4@2 ab4@2]/2", X: "g4/2", Y: "g4@15 ~",
  Z: "[eb4@13 ~ eb4@2]/2", AA: "[c5,eb5]@3 [bb4,d5]@3 [ab4,c5]@2", AB: "[g4,bb4]@3 [g4,bb4]", AC: "[g4,bb4]@3 [f4,ab4]",
  AD: "[eb4,g4]@11 ~ eb4@4", AE: "[g4,bb4]",
  AF: "[[f4,ab4]@12 eb5@2 d5@13 ~ f5@3 ~@2 g4@25 ~@2 eb4@4, ~@12 f4@21 ~@31, ~@31 eb5@26 ~@7]/4", // Fm
  AG: "[[c5,eb5]@3 [bb4,d5]@3 ab4@2 eb5@3 [bb4,d5]@3 ab4@2 [g4,bb4]@8, ~@3 c5@4 c5@4 ~]/3", // Cm Bb Gm
  AH: "[[c5,eb5]@6 [bb4,d5]@6 ab4@4 eb5@6 [bb4,d5]@6 [ab4,c5]@2 [g4,bb4]@16 ab4@14 eb5@2 d5@13 ~ f5@2 [g4,eb5]@30 ~@2 bb4 ~, ~@12 c5@11 ~@23 f4@31 ~@35]/7", // Cm Bb Ab Gm Cm
  AI: "[[f4,ab4]@6 eb5 [f4,d5]@7 f5@2]/2", AJ: "[[g4,eb5]@11 ~@5]/3",
})).s("gm_synth_strings_1").gain(0.36)

// chords · synth brass 2 · "SYNTHBRASS"
const synth_brass_2 = note(`<
  ~@4 A@2 B@2 C@2 D@2 E@2 F@4 G@2 H I@2 J@2 C@2 D@2 K@2 L@7 I M@2 N@5 E@2 O@7 P@3 C@2 D@2 Q@8 R@2 I S@2 T@3 U@3 V@6 W@8
  X@2 Y@8 Z AA@4 AB ~@8
>`.pickRestart({
  A: "[~@12 [ab4,eb5]@3 ~ [g4,eb5]@15 ~, ~@11 bb4@19 ~@2]/2", // Ab5 Cm
  B: "[[g4,bb4,eb5]@3 [ab4,eb5] [g4,eb5]@3 ~, ~@3 bb4@4 ~]/2", C: "[[g4,bb4,eb5]@31 ~]/2", D: "[[ab4,bb4,d5]@29 ~@3]/2",
  E: "[[ab4,bb4,d5]@31 ~]/2", F: "[[g4,bb4,eb5]@47 ~ ab4@15 ~, ~@47 [c5,eb5]@16 ~]/4",
  G: "[[ab4,c5,eb5]@15 ~ [g4,eb5]@15 ~, ~@15 bb4@15 ~@2]/2", H: "[g4,bb4,eb5]@15 ~", I: "[ab4,bb4,d5]@15 ~",
  J: "[bb4@17 ~@6 g4@5 ~@4, eb5@7 ~, g4@13 ~@9 bb4@6 ~@4]/2", K: "[[ab4,bb4,d5]@15 ~]/2",
  L: "[[g4,bb4]@47 ~ [ab4,c5]@31 [g4,bb4,eb5]@32 ~, eb5@79 ~@33]/7", // Gm Ab Eb
  M: "[[ab4,bb4,d5]@15 ~ eb5@14 ~@2, ~@15 [g4,bb4]@14 ~@3]/2", // Bb7 Gm
  N: "[~@8 [g4,bb4,db5]@7 ~ [ab4,c5]@46 ~@2 [g4,eb5]@15 ~, ~@8 eb5@54 ~ bb4@15 ~@2]/5", // Gdim Ab Cm
  O: "[[bb4,eb5]@31 ~ ab4@46 ~ [g4,bb4,eb5]@14 ~@2 [f4,ab4,c5]@16 ~, g4@29 ~@2 [c5,eb5]@46 ~@35]/7", // Eb5 Eb Fm Cm
  P: "[[ab4,d5]@15 ~ [g4,eb5]@27 ~@5, bb4@43 ~@5]/3", // Abdim Cm
  Q: "[[ab4,bb4,d5]@31 ~ g4@46 ~@2 [ab4,c5]@31 ~ [g4,eb5]@15 ~, ~@31 bb4@47 ~@33 bb4@15 ~@2, ~@32 eb5@79 ~@17]/8", // Bb7 Ab Cm
  R: "[[g4,bb4,eb5]@15 ~ [ab4,d5]@15 ~, ~@15 bb4@15 ~@2]/2", S: "[[g4,bb4]@3 ~@5, eb5@29 ~@3]/2",
  T: "[[c5,eb5]@47 ~, ab4@15 ~]/3", U: "[[g4,bb4,eb5]@15 ~ [ab4,d5]@31 ~, ~@5 bb4@11]/3",
  V: "[g4@30 ~ [ab4,c5]@46 ~@2 [g4,bb4,eb5]@15 ~ ab4, eb5@13 ~@3]/6", // Ab Eb
  W: "[[f4,c5]@14 ~ [ab4,d5]@15 ~@25 [g4,bb4,db5]@7 ~ [ab4,c5]@47 ~@2 g4@14 ~@2, ~@15 bb4@25 ~@71 [bb4,eb5]@15 ~@2, ~@31 g4@9 ~@88, ~@16 eb5@39 ~@9]/8", // F5 Abdim Gdim Ab Eb5
  X: "[[ab4,bb4,d5]@4 [ab4,bb4,d5]@27 ~]/2", // Bb7
  Y: "[[g4,bb4]@31 ~ [ab4,c5]@47 ~ [g4,eb5]@14 ~ [f4,ab4,c5]@14 ~@2 [ab4,bb4,d5]@16 ~, eb5@79 bb4@14 ~@35]/8", // Gm Ab Cm Fm Bb7
  Z: "[g4,bb4,eb5]@3 ~", AA: "[~@15 [f4,ab4,c5]@15 ~ [ab4,bb4,d5]@14 ~@2 [g4,bb4,eb5]@10 ~@7]/4",
  AB: "[g4,bb4,eb5] ~@15", // Eb
})).s("gm_synth_brass_2").gain(0.42).pan(0.2)

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

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!3 [~ x ~@2] [~ x ~ x]!20 ~ [~ x ~ x]!16 ~@17 [~ x ~ x]!16 ~@45>").gain(0.8)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@3 A ~@20 B ~@16 C D E D E D E D E D E D E D E D B ~@16 C D E D E D E D E D E D E D E D C D E D E D E D E D E D E D E
  D C D E D F G ~@7
>`.pickRestart({
  A: "~@14 x!2", B: "~ x", C: "~@8 x!4 ~@4", D: "~ x ~ x", E: "~@4 x ~@7 x ~@2 x", F: "~@10 x ~ x!2 ~ x", G: "x",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct("<A B@23 C B@16 D B@15 E B@16 D B@15 D B@15 D B@3 F ~@8>".pickRestart({
  A: "~ x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~", B: "x!8", C: "~@10 x!4 ~@2", D: "~@3 x ~ x ~@3 x ~ x ~ x ~@2",
  E: "x ~@9 x!4 ~@2", F: "x ~ x!3 ~ x!3 ~ x!4 ~ x",
})).gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@2 A B ~@20 C ~@16 D ~@15 C ~@16 D ~@15 D ~@15 D ~@3 E ~@8>".pickRestart({
  A: "~ x ~@2", B: "~ x ~ x", C: "~@5 x ~@10", D: "~@4 x!4 ~@8", E: "~@12 x!2 ~ x",
})).gain(0.72)

// drums · high tom
const high_tom = s("ht").struct("<~@3 A ~@20 B ~@16 C ~@15 B ~@16 C ~@15 C ~@15 C ~@3 D E ~@7>".pickRestart({
  A: "~@5 x ~@2", B: "~ x ~@6", C: "x!4 ~@12", D: "~@10 x ~@2 x ~@2", E: "x",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@3 A ~@20 B ~@16 B ~@32 B ~@15 B ~@15 B ~@4 B ~@7>".pickRestart({
  A: "~@15 x", B: "x",
})).gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 A@20 ~ A@16 ~ B@15 ~ A@16 ~ B@15 ~ B@15 ~ B@3 ~@9>".pickRestart({
  A: "~@3 x", B: "~ x ~ x",
})).gain(0.64)

// drums · congas
const congas = s("conga:13").struct("<[~ x ~@2]!4 ~@115>").gain(2.05)

// drums · congas
const congas_2 = s("conga:18").struct("<~@3 [~ x] ~@115>").gain(2.05)

// drums · congas
const congas_3 = s("conga:33").struct("<[~@6 x!2]!4 ~@115>").gain(2.05)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@43 A ~ A ~ A ~ A ~ A ~ A ~ A ~@20 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~@10
>`.pickRestart({
  A: "~@14 x!2",
})).gain(3.24)

stack(
  bass, electric_guitar_muted, synth_strings_1, synth_brass_2, kick, rim, snare, low_tom, hihat, mid_tom, high_tom,
  crash, tambourine, congas, congas_2, congas_3, cabasa
)

More by G. G. Anderson