Strudelify

All Around the World

Stansfield Lisa

KeyD♭ majorTempo89 bpm
0:00/0:00
// All Around the World — Lisa Stansfield
// 89 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 123 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(89/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.

// chords · epiano2
const epiano2 = note(`<
  A@6 B C D E D F G H I J K L I M K L I J K L I M K L I M N O N P Q E R S G H I J R T D E K L I M K L I M N O N P D U D
  V G H W X D Y R Z AA H W AB K AC W AD AE AF W M N O N AG D AH D AI AJ H W AK R AL AM AN AO H I J D AP R AN G H I J D
  AQ D AR G AS I J AT@3
>`.pickRestart({
  A: "[[d2,gb3,a3,db4]@3 [e2,ab3,b3,e4]]/2", B: "[f2,g3,bb3,eb4]", C: "[f2,bb3,eb4,g4] [f2,eb4,g4,bb4]",
  D: "[eb2,bb3,db4,f4]@2 ~ [eb2,bb3,db4,f4] ~@12", // Bbm
  E: "[eb2,bb3,db4,f4]@2 ~ [eb2,bb3,db4,f4] ~@2 [eb2,bb3,db4,f4]@2 [eb2,ab3,c4,eb4]@8", // Bbm Ab
  F: "[eb2,bb3,db4,f4]@2 ~ [eb2,bb3,db4,f4] ~@2 [eb2,bb3,db4,f4]@2 [eb2,ab3,c4,eb4]@5 ~ [eb2,gb3,bb3,db4]@2", // Bbm Ab Ebm7
  G: "[f2,ab3,c4,eb4]@3 [f2,ab3,c4,eb4] ~@10 [f2,ab3,c4,eb4]@2", // Fm7
  H: "[gb2,bb3,db4,f4]@3 [gb2,bb3,db4,f4] ~@10 [gb2,bb3,db4,f4]@2", I: "[db2,f3,ab3,c4]",
  J: "[c2,g3,bb3,eb4] [f2,a3,db4,f4]", K: "[eb2,gb3,bb3,db4]", L: "[eb2,ab3,c4,eb4]", M: "[bb2,ab3,db4,f4]",
  N: "[f2,bb3,eb4,g4]", O: "[d2,c4,f4,a4]", P: "[d2,c4,f4,a4] [f2,bb3,eb4,g4]",
  Q: "[eb2,bb3,db4,f4]@2 eb2 [bb3,db4,f4] ~@12", R: "[eb2,bb3,db4,f4]@3 [eb2,bb3,db4,f4] ~@12",
  S: "[eb2,bb3,db4,f4]@3 [eb2,bb3,db4,f4] ~@2 [eb2,bb3,db4,f4]@2 c4@4 ~@2 [gb3,bb3,db4]@2, ~ [eb2,ab3,eb4]", // Bbm Gb Ab5
  T: "[eb2,bb3,db4,f4]@3 [eb2,bb3,db4,f4] ~@2 [eb2,bb3,db4,f4]@2 [eb2,ab3,c4,eb4]@8", // Bbm Ab
  U: "[eb2,bb3,db4,f4]@3 [eb2,bb3,db4,f4] ~@2 [eb2,bb3,db4,f4]@2 [eb2,ab3,c4,eb4]@8, e4 ~@15", // Bbm Ab
  V: "[eb2,bb3,db4,f4]@3 [bb3,db4,f4] ~@2 [eb2,bb3,db4,f4]@2 [eb2,ab3,c4,eb4]@5 ~ [eb2,gb3,bb3,db4]@2", // Bbm Ab Ebm7
  W: "[db2,f3,ab3,c4]@15 ~", X: "[c2,g3,bb3,eb4]@7 ~ [f2,a3,db4,f4]@8",
  Y: "[eb2,bb3,db4,f4]@2 ~ [eb2,bb3,db4,f4] ~@2 [eb2,bb3,db4,f4] ~ [eb2,ab3,c4,eb4]@7 ~", // Bbm Ab
  Z: "[eb2,bb3,db4,f4]@3 [eb2,bb3,db4,f4] ~@2 [eb2,bb3,db4,f4] ~ [eb2,ab3,c4,eb4]@6 [eb2,gb3,bb3] ~, ~@7 db4", // Bbm Ab Ebm
  AA: "[f2,ab3,c4,eb4]@2 ~ [f2,ab3,c4,eb4] ~@10 [f2,ab3,c4,eb4] ~", AB: "[c2,g3,bb3,eb4]@8 [f2,a3,db4,f4]@7 ~",
  AC: "[ab2,ab3,c4,eb4]", AD: "[bb2,ab3,db4,f4]@9 ~ [ab2,ab3,c4,eb4]@4 [bb2,ab3,db4,f4] ~",
  AE: "[eb2,gb3,bb3,db4]@15 ~", AF: "[ab2,ab3,c4,eb4]@15 ~", AG: "[d2,c4,f4,a4]@8 [f2,bb3,eb4,g4]@7 ~",
  AH: "[eb2,bb3,db4,f4]@3 [eb2,bb3,db4,f4] ~@2 [eb2,bb3,db4,f4] ~ [eb2,ab3,c4,eb4]@7 ~", // Bbm Ab
  AI: "[eb2,bb3,db4,f4]@2 ~ [eb2,bb3,db4,f4] ~@2 [eb2,bb3,db4,f4] ~ [eb2,ab3,c4,eb4]@6 [eb2,gb3,bb3,db4] ~", // Bbm Ab Ebm7
  AJ: "[f2,ab3,c4,eb4]@3 [f2,ab3,c4,eb4] ~@10 [f2,ab3,c4,eb4] ~", AK: "[c2,g3,bb3,eb4]@7 ~ [f2,a3,db4,f4]@7 ~",
  AL: "[eb2,bb3,db4,f4]@3 [eb2,bb3,db4,f4] ~@2 [eb2,ab3,c4,eb4]@6 ~@4", AM: "[eb2,bb3,db4,f4]@2 [eb2,bb3,db4,f4] ~@13",
  AN: "[eb2,bb3,db4,f4]@2 ~ [eb2,bb3,db4,f4] ~@2 [eb2,bb3,db4,f4]@2 c4@4 ~@2 [gb3,bb3,db4]@2, ~ [eb2,ab3,eb4]", // Bbm Gb Ab5
  AO: "[f2,ab3,c4,eb4]@2 ~ [f2,ab3,c4,eb4] ~@10 [f2,ab3,c4,eb4]@2", // Fm7
  AP: "[eb2,bb3,db4,f4]@3 [bb3,db4,f4] ~@2 [eb2,bb3,db4,f4]@2 [eb2,ab3,c4,eb4]@8", // Bbm Ab
  AQ: "[eb2,bb3,db4,f4]@2 ~ [eb2,bb3,db4,f4] ~@2 [eb2,bb3,db4,f4]@2 [eb2,ab3,eb4]@8, ~@2 c4 ~", // Bbm Ab5
  AR: "[eb2,bb3,db4,f4]@2 ~ [eb2,bb3,db4,f4] ~@2 [eb2,bb3,db4,f4]@2 ~@6 [gb3,bb3,db4]@2, ~ [eb2,ab3,c4,eb4]", // Bbm Gb Ab
  AS: "[gb2,bb3,db4,f4]@2 ~ [gb2,bb3,db4,f4] ~@10 [gb2,bb3,db4,f4]@2", AT: "[[bb2,ab3,c4,db4,f4]@7 ~]/3",
})).s("gm_epiano2").gain(0.17)

// bass · synth bass 2
const bass = note(`<
  ~@6 A B C D C E F G H I J K L M N O P Q N K R S J T H U A V A W X Y Z AA F AB AC AD ~@4 N AE L U N AF AC U A V A W C
  AG Z AH F G AC AI ~@8 J AJ AK AL J AM AC M A V A W C Y Z AN F AB AC I X Y AO AP AQ AR AS AT AU AV X E AW AX H I Z D C
  AH AW G P AY AZ ~@2
>`.pickRestart({
  A: "f1@13 ~@3", B: "f1@3 ~ f1@3 ~", C: "eb1@3 ~@4 eb1 ~ db1 eb1@2 db1@2 ~@2", D: "~@6 eb1 ~@2 db1 eb1@2 ~@2 db1 ~",
  E: "~@6 eb1 ~@2 db1 eb1 ~@3 eb1 ~", F: "f1@3 ~@4 f1 ~ eb1 f1@2 ~@2 f1 ~", G: "gb1@3 ~@4 gb1 ~ f1 gb1@2 f1 ~ eb1 ~",
  H: "db1@3 ~@4 db1 ~ c1 db1@2 ~@2 db1@2", I: "c1@3 ~ c2@2 c1@2 f1@3 ~ f2@2 f1@2", J: "eb1@3 ~@4 eb1 ~ db1 eb1 ~@5",
  K: "eb1@3 ~@4 eb1 ~ db1 eb1@2 ~@2 eb1@2", L: "db1@3 ~@4 db1 ~ c1 db1@2 ~ db1@2 ~",
  M: "bb1@3 ~@4 bb1 ~ ab1 bb1@2 ~@2 ab1 ~", N: "eb1@3 ~@4 eb1 ~ db1 eb1@2 ~@4", O: "eb1@3 ~@4 eb1 ~ db1 eb1 ~@3 db1 ~",
  P: "db1@3 ~@4 db1 ~ c1 db1@2 ~@2 db1 ~", Q: "c1@3 ~ c2@2 c1@2 f1@3 ~ f2 ~ f1 ~",
  R: "db1@3 ~@4 db1 ~ c1 db1 ~@3 db1 ~", S: "bb1@3 ~@4 bb1 ~ ab1 bb1@2 ~@2 ab1@2",
  T: "eb1@3 ~@4 eb1 ~ db1 eb1 ~@3 db1@2", U: "bb1@3 ~@4 bb1 ~ ab1 bb1 ~@3 ab1@2", V: "d1@13 ~@3", W: "d1@3 ~ f1@3 ~",
  X: "eb1@3 ~@4 eb1 ~ db1 eb1 ~ db1@2 ~@2", Y: "~@6 eb1 ~@2 db1 eb1@2 ~@2 db1@2",
  Z: "eb1@3 ~@4 eb1 ~ db1 eb1@2 db1 ~@3", AA: "~@6 eb1 ~@2 db1 eb1@2 ~@2 eb1@2",
  AB: "gb1@3 ~@4 gb1 ~ f1 gb1 ~ f1@2 eb1 ~", AC: "db1@3 ~@4 db1 ~ c1 db1 ~@3 db1@2",
  AD: "c1@3 ~ c2@2 c1@2 f1@3 ~ f2@2 f1 ~", AE: "eb1@3 ~@4 eb1 ~ db1 eb1@2 ~@2 eb1 ~",
  AF: "eb1@3 ~@4 eb1 ~ db1 eb1@2 ~@2 db1 ~", AG: "~@6 eb1@5 ~@3 db1 ~", AH: "~@6 eb1 ~@2 db1 eb1@2 ~@2 eb1 ~",
  AI: "c1@3 ~ c2@2 c1@2 f1@3 ~ f2 ~ f1@2", AJ: "ab1@3 ~@4 ab1 ~ gb1 ab1@2 ~@2 gb1@2",
  AK: "db1@3 ~@4 db1 ~ c1 db1@2 ~ db1 ~@2", AL: "bb1@3 ~@4 bb1 ~@2 ab1 ~@3 bb1 ~",
  AM: "ab1@3 ~@4 ab1 ~ gb1 ab1 ~@3 gb1@2", AN: "~@6 eb1 ~@2 db1 eb1 ~@3 eb1@2",
  AO: "eb1@3 ~@3 eb1 ~ db1 eb1@2 db1@2 ~@3", AP: "~@5 eb1 ~@2 db1 eb1@2 ~@3 eb1 ~", AQ: "f1@3 ~@3 f1 ~ eb1 f1 ~@4 f1 ~",
  AR: "gb1@3 ~@3 gb1 ~ f1 gb1@2 f1 ~ eb1 ~@2", AS: "db1@3 ~@3 db1 ~ c1 db1@2 ~@3 db1@2",
  AT: "c1@3 c2@2 ~ c1@2 f1@3 f2@2 ~@3", AU: "eb1@2 f1@2 ~@2 eb1 ~ db1 eb1@2 db1 ~@4",
  AV: "~@5 eb1 ~@2 db1 eb1 ~@3 db1@2 ~", AW: "f1@3 ~@4 f1 ~ eb1 f1 ~@3 f1 ~", AX: "gb1@3 ~@4 gb1 ~ f1 gb1@2 f1@2 eb1 ~",
  AY: "c1@3 ~ c2@2 c1 ~ f1@3 ~ f2 ~ f1@2", AZ: "bb1@13 ~@3",
})).s("gm_synth_bass_2").gain(0.48)

// chords · pad poly
const pad_poly = note(`<
  ~@4 A@2 B@2 C@2 D@3 E@2 F ~@16 G H G I C@2 J@3 K@2 F ~@12 G H G L C@2 J@3 M@2 F ~@7 N O P@2 Q R S@2 T G H G L C@2 J@3
  U@5 J@3 V@2 W C@2 J@3 K@2 W X@2 J@3 Y@2 Z AA@2 ~
>`.pickRestart({
  A: "[[gb3,a3,db4]@23 ~ [ab3,b3]@7 ~, e4]/2", B: "[g3,bb3,eb4]/2", C: "[[gb3,bb3,db4]@3 [ab3,c4,eb4]]/2",
  D: "[[gb3,bb3,db4] [ab3,c4,eb4], ~@24 d4 ~@23]/3", E: "[[bb3,db4]@16 ~@2 ab3@13 ~, f4, ~@17 c4@13 ~@2]/2",
  F: "[bb3,eb4] [a3,db4], g3", G: "[eb4,g4,bb4]", H: "[a4,c5], f4@7 ~", I: "[f4,a4,c5] [eb4,g4,bb4]",
  J: "[[gb3,bb3,db4] [ab3,c4,eb4]]/3", K: "[[bb3,db4]@16 [ab3,c4]@15 ~, f4]/2", L: "[f4,a4,c5] [g4,bb4,eb5]",
  M: "[[bb3,db4]@16 [ab3,c4]@15 ~, f4@31 ~]/2", N: "[bb3,eb4]@7 ~ [a3,db4]@8, g3@15 ~", O: "[db4,f4,bb4]",
  P: "[~ [eb4,ab4]@15 [f4,ab4]@15 ~, ~ c4@30 ~]/2", Q: "[db4,f4,bb4]@10 [c4,eb4,ab4]@3 [db4,f4,bb4]@2 ~",
  R: "[db4,f4,bb4]@15 ~", S: "[eb4@15 ~ f4@15 ~, ab4, c4@15 ~]/2",
  T: "[f4,bb4]@10 [f4,ab4,c5] ~ [f4,ab4,db5]@2 ~@2, db4 ~", // Bb5 Fm Db
  U: "[[bb3,db4]@16 [ab3,c4]@15 ~ bb3@7 ~ a3@7 ~ [gb3,bb3]@23 ~ [ab3,c4,eb4]@8, f4@31 eb4@8 ~ db4@33 ~@7, ~@32 g3@15 ~@33]/5", // Bbm Ab Gb Ab
  V: "[[bb3,db4]@15 ~ [ab3,c4]@16, f4]/2", W: "[bb3,eb4] [a3,db4], g3@15 ~",
  X: "[~ [gb3,db4]@23 [ab3,c4,eb4]@8, ~ bb3@22 ~@9]/2", Y: "[db4@16 [ab3,c4]@15 ~, f4@31 ~, bb3@7 ~@9]/2",
  Z: "[g3,bb3,eb4] [g3,a3,db4]", AA: "[~ [db4,f4,bb4]@17 ~@14]/2",
})).s("gm_pad_poly").gain(0.17)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@44 A@3 B ~@4 C D ~ E ~ F G H ~@8 A@4 I J I K L@2 M N O@2 P Q R@2 S T ~@35
>`.pickRestart({
  A: "[bb4,bb5] ~@2 [bb4,bb5] ~@2 [bb4,bb5] ~@3 [bb4,bb5] [f4,f5] [ab4,ab5] [bb4,bb5] ~@2", // Bb F Ab Bb
  B: "[bb4,bb5] ~@2 [bb4,bb5] ~@2 [bb4,bb5] ~@3 [f5,f6] [eb5,eb6] f5@2 ~@2, ~@12 f6 ~@3", C: "~@8 f4@3 db4@3 bb3@2",
  D: "eb4@5 ~@3", E: "~@10 ab5 ~@2 ab5 ~@2", F: "f5@15 ~", G: "g5", H: "a5@8 bb5@7 ~",
  I: "ab5 ~@2 ab5 ~@2 ab5 ~@3 ab5 ~@3 ab5 ~", J: "bb5 ~@2 bb5 ~@2 bb5 ~@3 bb5 ~@3 bb5 ~",
  K: "c5 db5 eb5 f5 eb5 f5 g5 ab5 g5 ab5 bb5 c6 bb5 c6 db6 eb6", L: "[f6@6 db6 bb5 db6@12 eb6@4 f6@4 gb6@4]/2",
  M: "ab6@3 bb6", N: "db6@5 eb6@2 f6", O: "[db6@6 bb5 ab5 bb5@10 ab6@4 bb6@2 ab6@2 gb6@3 ~ f6 gb6]/2",
  P: "f6@10 [db6,f6] [c6,eb6] [db6,f6] ~@3", // Db Cm Db
  Q: "[bb5,db6] [ab5,c6] [bb5,db6] ~@3 [gb5,bb5] [f5,ab5] [gb5,bb5] ~ [ab5,c6] ~ [bb5,db6] ~@3", R: "f5/2",
  S: "g5@15 ~", T: "c4 d4 f4 c4 d4 f4 c4 d4 g4 c4 d4 g4 c4 d4 f4 ~",
})).s("gm_string_ensemble_1").gain(0.27).pan(0.1)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@3 A B@2 C D E@2 F@2 G H I J ~@7 K L@2 M@2 N@2 O@2 ~@3 P E@2 F@2 G H I J ~@4 L@2 M@2 N@2 Q@2 ~@4 E@2 F@2 G H I J ~@20
  E@2 F@2 G H I J R@2 F@2 G H I J E@2 F@2 G H I J E@2 F@2 G H I J S ~@2
>`.pickRestart({
  A: "~@3 db4@4 ~ d4@4 e4@3 ~", B: "e4/2", C: "g4", D: "bb4 eb5", E: "[f5@6 db5 bb4 db5@12 f5@4 gb5@4 ab5@4]/2",
  F: "[f5@6 db5 bb4 db5@12 f5@4 gb5@4 ab5@3 ~]/2", G: "ab5@9 ~@3 bb5@4", H: "db5@12 eb5@3 ~", I: "ab4@13 ~@3",
  J: "bb4 c5 db5 eb5", K: "~ f5 eb5 c5", L: "[bb4@6 c5 db5]/2", M: "[ab4@6 eb5 f5]/2", N: "[db5@5 eb5 f5 bb5]/2",
  O: "[ab5@7 ~]/2", P: "~@4 g5@3 ~", Q: "[ab5@5 ~@3]/2", R: "[f5@6 db5 bb4 db5@12 f5@4 gb5@3 ab5@5]/2", S: "f5",
})).s("gm_string_ensemble_2").gain(0.15).pan(0.7)

// other · string ensemble 1
const string_ensemble_1_2 = note(`<
  ~@44 A@3 B ~@4 C D ~ E ~ F G H ~@8 A@4 I J I K L@2 M N O@2 P Q R@2 S T ~@35
>`.pickRestart({
  A: "[bb3,bb4] ~@2 [bb3,bb4] ~@2 [bb3,bb4] ~@3 [bb3,bb4] [f3,f4] [ab3,ab4] [bb3,bb4] ~@2", // Bb F Ab Bb
  B: "[bb3,bb4] ~@2 [bb3,bb4] ~@2 [bb3,bb4] ~@3 [f4,f5] [eb4,eb5] f4@2 ~@2, ~@12 f5 ~@3", C: "~@8 f3@3 db3@3 bb2@2",
  D: "eb3@5 ~@3", E: "~@10 ab4 ~@2 ab4 ~@2", F: "f4@15 ~", G: "g4", H: "a4@8 bb4@7 ~",
  I: "ab4 ~@2 ab4 ~@2 ab4 ~@3 ab4 ~@3 ab4 ~", J: "bb4 ~@2 bb4 ~@2 bb4 ~@3 bb4 ~@3 bb4 ~",
  K: "c4 db4 eb4 f4 eb4 f4 g4 ab4 g4 ab4 bb4 c5 bb4 c5 db5 eb5", L: "[f5@6 db5 bb4 db5@12 eb5@4 f5@4 gb5@4]/2",
  M: "ab5@3 bb5", N: "db5@5 eb5@2 f5", O: "[db5@6 bb4 ab4 bb4@10 ab5@4 bb5@2 ab5@2 gb5@3 ~ f5 gb5]/2",
  P: "f5@10 [db5,f5] [c5,eb5] [db5,f5] ~@3", // Db Cm Db
  Q: "[bb4,db5] [ab4,c5] [bb4,db5] ~@3 [gb4,bb4] [f4,ab4] [gb4,bb4] ~ [ab4,c5] ~ [bb4,db5] ~@3", R: "f4/2",
  S: "g4@15 ~", T: "c3 d3 f3 c3 d3 f3 c3 d3 g3 c3 d3 g3 c3 d3 f3 ~",
})).s("gm_string_ensemble_1").gain(0.27).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  ~@6 A B A@7 C A@17 D A E A@7 C A@3 C A@9 D A E A@7 C A@7 C A@7 C A D A E A@7 C A D A D A D A@9 C A@3 C A@4 F ~@2
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~@3 x ~@5", B: "x ~@2 x ~@2 x ~@4 x ~@2 x ~", C: "x ~@2 x ~@2 x ~ x ~ x ~@5",
  D: "x ~@2 x ~@2 x ~@3 x ~@3 x ~", E: "x ~@2 x ~@2 x ~ x ~ x ~@3 x ~", F: "x",
})).gain(0.44)

// drums · rim
const rim = s("rim").struct(`<
  A@7 B A@7 B A C A C A C A C A C A C A C A C A B A B A@7 B A@3 B A C A C A C A C A B A B A@7 B A@7 B A@7 B A B A B A@7
  B A@15 B A@3 B A@4 ~@3
>`.pickRestart({
  A: "~ x ~ x ~@4 x ~@2 x ~@4", B: "~ x ~ x ~@12", C: "~ x ~ x ~@7 x ~@4",
})).gain(0.39)

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

// drums · clap
const clap = s("cp").struct("<~@6 A@2 ~@24 A@4 ~@20 A@4 ~@24 A@4 ~@35>".pickRestart({
  A: "~ x ~ x",
})).gain(0.44)

// drums · hihat
const hihat = s("hh").struct(`<
  A B A B A B A C A B A B A B A B A B A B A B A B A B A B A B A B A C A C A B A B A B A B A B A B A B A B A B A B A C A
  C A B A B A B A B A B A B A B A B A B A B A B A B A C A C A B A B A B A B A D A D A D A E A B A B A B A B A B A B A B
  A@2 ~@3
>`.pickRestart({
  A: "x!14 ~@2", B: "x!10 ~@2 x!2 ~@2", C: "x!10 ~@3 x ~@2", D: "x!9 ~@2 x!2 ~@2 x", E: "x!9 ~@2 x!2 ~@3",
})).gain(0.2)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A C A C A C A D A B A B A B A B A B A B A B
  A@2 ~@3
>`.pickRestart({
  A: "~@13 x!2 ~", B: "~@5 x ~ x", C: "~@9 x ~@3 x ~@2", D: "~@9 x ~@3 x!2 ~",
})).gain(0.2)

// drums · splash
const splash = s("cr").struct("<~@120 x ~@2>").gain(0.34)

stack(
  epiano2, bass, pad_poly, string_ensemble_1, string_ensemble_2, string_ensemble_1_2, kick, rim, snare, clap, hihat,
  open_hat, splash
)

More by Stansfield Lisa