Strudelify

Never Ever

All Saints

KeyD♭ majorTempo68 bpm
0:00/0:00
// Never Ever — All Saints
// 68 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 111 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(68/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@17 A B C D E F G H I J K L M N O P Q R S T Q U V W X Y Z AA X V AB AC ~@8 AD AE AF AG AH AI AJ AK AL AM AN AO AP@2
  AQ@2 AR AS AT AU AV AW AX AY AL AM AN AO AP@2 AQ@2 AR AS AT AU AV AW AX AY@2 AZ AV AZ AY AZ AY AZ AY BA AY@2 BB ~
>`.pickRestart({
  A: "db1@7 ~ db2 ~@2 db1 db1@11 ~", B: "db1@7 ~ db2 ~@2 db1 db1@6 eb1@3 f1@3",
  C: "gb1@9 ~@2 db1 ~@5 gb2 ~@2 db1 gb1@3, ~@3 gb1@2 ~", D: "db1@9 ~@2 db1 db1@6 eb1@3 f1@3",
  E: "db1@7 ~ db2 ~@2 db1 db1@9 ~@2 db1", F: "db1@18 gb1@5 ~", G: "ab1@9 ~@2 ab1 ab1@9 ~@2 ab1",
  H: "gb1@3 ab1@6 ~@2 ab1 gb1@3 ab1@5 ab2 ~@3", I: "db1@7 ~ db1 ~@2 db1 db1@9 ~@2 db1",
  J: "db1@8 db2 ~@2 db1 db1@6 eb1@3 f1@2 ~", K: "gb1@5 gb2 ~@5 gb1 gb1@5 ~@3 gb1@4",
  L: "db1@5 db2 ~@5 db1 db1@5 ~ bb0@6", M: "db1@5 db2 ~@5 db1 db1@11 ~", N: "ab1@9 ~@2 ab1 ab1@5 ~ gb1@5 ~",
  O: "gb1@5 gb2 ~@5 gb1 f1@5 ~ eb1@5 ~", P: "db1@6 db2 ~@4 db1 db1@11 ~",
  Q: "db1@8 db2 ~@3 db1@2 ~ db1@2 ~ db1@3 bb0@3", R: "db1@8 db2 ~@2 db1 db1@2 ~ db1@2 ~ db1@2 ~ db1@2 ~",
  S: "gb1@9 ~@2 gb1 gb1@2 ~ gb1@2 ~ gb1@2 ~ gb1@2 ~", T: "db1@9 ~@2 bb0 db1@2 ~ db1@2 ~ db1@3 bb0@3",
  U: "db1@9 ~@2 db1 db1@2 ~ db1@2 ~ db1@2 ~ db1@2 ~", V: "ab1@8 ab2 ~@2 eb1 ab1@2 ~ ab1@2 ~ ab1@2 ~ ab1@2 ~",
  W: "ab1@9 ~@2 eb1 ab1@2 ~ ab1@2 ~ ab1@2 ~ ab1@2 ~", X: "db1@8 db2 ~@2 bb0 db1@2 ~ db1@2 ~ db1@2 ~ db1@2 ~",
  Y: "db1@9 ~@2 bb0 db1@2 ~ db1@2 ~ db1@2 ~ db1@2 ~", Z: "gb1@9 ~@2 eb1 gb1@2 ~ gb1@2 ~ gb1@2 ~ gb1@2 ~",
  AA: "db1@8 db2 ~@2 bb0 db1@2 ~ db1@2 ~ db1@2 ~ bb0@3", AB: "gb1@7 ~ gb1 ~@2 db1 f1@6 eb1@5 ~",
  AC: "db1@9 ~@2 db1 ab0@3 ~ ab0@2 ab0@5 ~", AD: "db1@7 ~ db1 ~@2 bb0 db1@8 db2 ~@2 bb0",
  AE: "db1@9 ~@2 db1 db1@2 ~ db1@3 eb1@3 f1@2 ~", AF: "gb1@6 ~@2 gb1 ~@2 gb1 gb1@5 ~ gb1@5 ~",
  AG: "db1@6 ~@5 db1 db1@5 ~ bb0@5 ~", AH: "db1@6 ~@5 db1 db1@7 ~@5", AI: "ab1@7 ~@4 ab1 ab1@5 ~ gb1@5 ~",
  AJ: "gb1@7 ~@4 gb1 f1@6 eb1@5 ~", AK: "db1@6 ~@5 db1 db1@10 ~@2", AL: "db1@7 ~ db1 ~@3 db1@2 ~ db1@2 ~ db1@2 ~ bb0@3",
  AM: "db1@5 ~@3 db1 ~@3 db1@9 ~@3", AN: "gb1@6 ~@2 gb1 ~@2 db1 gb1@2 ~ gb1@2 ~ gb1@3 gb1@2 ~",
  AO: "db1@6 ~@2 db1 ~@2 bb0 db1@2 ~ db1@2 ~ db1@2 ~ db1@2 ~", AP: "db1@6 ~@6 db1@2 ~ db1@2 ~ db1@2 ~ db1@2 ~",
  AQ: "ab1@7 ~@4 eb1 ab1@2 ~ ab1@2 ~ ab1@2 ~ ab1@2 ~", AR: "db1@7 ~@4 bb0 db1@2 ~ db1@2 ~ db1@2 ~ db1@3",
  AS: "~@11 bb0 db1@2 ~ db1@2 ~ db1@2 ~ db1@2 ~", AT: "gb1@7 ~@4 db1 gb1@2 ~ gb1@2 ~ gb1@2 ~ gb1@2 ~",
  AU: "db1@7 ~@4 bb0 db1@2 ~ db1@2 ~ db1@2 db1 bb0@2 ~", AV: "db1@6 ~@5 bb0 db1@2 ~ db1@2 ~ db1@3 bb0@3",
  AW: "ab1@7 ~@4 eb1 gb1@6 ab1@3 ab1@2 ~", AX: "gb1@8 ~@3 eb1 f1@6 eb1@5 ~",
  AY: "db1@7 ~@4 bb0 db1@2 ~ db1@2 ~ db1@3 bb0@2 ~", AZ: "db1@6 ~@5 bb0 db1@2 ~ db1@2 ~ db1@4 ~@2",
  BA: "db1@7 ~@4 bb0 db1@2 ~ db1@2 ~ db1@4 ~@2", BB: "db1",
})).s("gm_electric_bass_finger").gain(0.66)

// chords · piano · "Piano Accoustique"
const piano = note(`<
  ~ A B C D E F G H I J K L@2 M N O ~@16 A B P D Q F G H I J K R@2 M N O A B C D Q F G H I J K R@2 M N O A B P D Q F G H
  I J K R@2 M N O A B P D Q F G H I J K R@2 M N S ~@14
>`.pickRestart({
  A: "[ab3,db4]@18 f4@5 ~, db2@23 ~", B: "[ab3,b3,f4]@17 ~@4 db2@3, db2@3 [ab3,eb4]",
  C: "[gb2,gb3,bb3,db4]@18 ~@3 gb2@2 ~, ~@18 bb3@5 ~", D: "[ab3,db4]@17 ~ ab3@6, db2",
  E: "[f3,ab3,db4]@17 ~@5 ab3@2, db2, ~@3 f4", F: "[ab3,b3,f4]@18 b3@3 b3@2 ~, db2@23 ~, ~@18 [f4,ab4]@5 ~",
  G: "c4@3 c4, [ab2,ab3,eb4]", H: "[c4,eb4,gb4]@3 [eb4,ab4], ab2@23 ~, ~@9 c4@2 ~", I: "~@3 f4, [db2,f3,ab3,db4]",
  J: "db2@2 eb2 f2, [ab3,b3,f4]", K: "[gb3,bb3]@3 [gb3,bb3], [gb2,db4]",
  L: "[[db2,f3,ab3,db4]@16 ~@2 ab3@3 ~@3 [db4,f4]@12 ~@9 db2@3, ~@7 db2@6 db2@2 ~, ~ ab3, ~@6 [db4,f4]!2]/2", // Db
  M: "[ab3,c4,eb4]@12 ab3@3 ~ ab3@2 ab3@3 ~ ab3@2, ab2, ~@2 [c4,eb4]!2", // Ab Cm
  N: "[gb2,gb3,bb3,db4]@11 ~ [f2,ab3,db4]@6 [eb2,gb3,db4]@6", O: "[f3,ab3,db4]@16 ~@2 ab3@5 ~, db2@3 ~",
  P: "[gb2,gb3,bb3,db4]@9 bb3@2 gb2", Q: "[db2,f3,ab3,db4]@17 ~@5 ab3@2, ~@3 f4",
  R: "[[db2,f3,ab3,db4]@16 ~@2 ab3@3 ~@3 [db4,f4]@12 ~@10 db2@2, ~@21 db2@18 db2@7 ~@2, ~ ab3, ~@6 [db4,f4]!2]/2", // Db
  S: "[db2,f3,ab3,db4]@23 ~", // Db
})).s("gm_piano").gain(0.25)

// chords · epiano1 · "Piano Rhodes"
const epiano1 = note(`<
  ~@17 A B C D E F G H I J K L@2 M N I O P Q L R P S T U V W X U T Y Z ~@48 AA AB AC AD AE AF AG AH AE AH AC AI AJ ~
>`.pickRestart({
  A: "[f3,ab3,db4]@3 [db4,f4]", B: "[ab3,b3,db4,f4]@17 ~ [ab3,b3,eb4]@6", C: "[gb3,bb3,db4]@17 ~ [gb3,b3,eb4]@6",
  D: "[f3,ab3,db4]@2 ~", E: "[f3,ab3,db4]@17 ~ [ab3,db4]@6", F: "[ab3,b3,db4,f4]@17 ~@7", G: "[gb3,c4,eb4]@3 [c4,f4]",
  H: "[c4,gb4]@17 ~ [c4,f4]@6", I: "[f3,ab3,db4]@23 ~", J: "f3@18 f3@5 ~, [ab3,b3,db4]@23 ~",
  K: "[gb3,bb3,db4]@10 ~@2 [gb3,b3,eb4]@5 ~ [gb3,bb3,db4]@6", L: "[f3,ab3,db4]@11 ~",
  M: "[ab3,c4,eb4]@17 ~ [g3,b3,d4]@5 ~", N: "[gb3,bb3,db4]@12 [f3,ab3,db4]@5 ~ [eb3,gb3,db4]@5 ~",
  O: "[f3,ab3,db4]@18 [db4,f4]@5 ~", P: "[ab3,b3,f4]@18 [ab3,b3,f4]@5 ~", Q: "[gb3,bb3,db4]@3 [gb3,bb3,db4]",
  R: "[ab3,db4]@6 [f3,ab3] ~, f3@16 ~@2 db4@5 ~", S: "[ab3,c4]@18 ~@3 c4 ~@2, eb4@7 ~",
  T: "[ab3,c4,eb4]@3 [ab3,eb4], ~@9 c4@2 ~", U: "[f3,ab3,db4]@18 [f3,ab3,db4]@5 ~",
  V: "[ab3,b3,f4]@17 ~ [ab3,b3,f4]@5 ~", W: "[bb3,db4]@17 ~ [gb3,bb3,db4]@5 ~, gb3@5 ~@3", X: "[f3,ab3,db4]@3 f3",
  Y: "[gb3,bb3,db4]@12 [ab3,db4]@5 ~ [eb3,gb3,db4]@5 ~", Z: "[ab3,db4]@19 ~@5, f3@17 ~@7",
  AA: "[gb3,b3]@4 ~ [gb3,b3] ~@3 [e3,bb3] ~@2 [gb3,b3] ~@2 [e3,bb3]@2 ~ gb3@2 ~@4, ~@18 b3 ~@5", // B5 Edim B5 Edim
  AB: "[gb3,b3]@5 [gb3,b3] ~@3 [e3,bb3] ~@2 [gb3,b3]@2 ~@4 gb3@2 ~@4, ~@18 b3 ~@5", // B5 Edim B5
  AC: "[gb3,b3]@4 ~ [gb3,b3] ~@3 bb3@2 ~ [gb3,b3]@2 ~ [e3,bb3]@2 ~ gb3@2 ~@4, ~@18 b3 ~@5", // B5 Edim
  AD: "[gb3,b3]@4 ~ [gb3,b3] ~@6 [gb3,b3] ~@5 [gb3,b3] ~@5", // B5
  AE: "[gb3,b3]@4 ~ [gb3,b3] ~@3 bb3@2 ~ gb3@2 ~ [e3,bb3]@2 ~ [gb3,b3]@2 ~@4, ~@12 b3 ~@11", // B5 Edim B5
  AF: "[gb3,b3]@4 ~ [gb3,b3] ~@3 [e3,bb3]@2 ~ [gb3,b3]@8 ~@4", // B5 Edim B5
  AG: "[gb3,b3]@4 ~ [gb3,b3] ~@3 bb3@2 ~ [gb3,b3]@2 ~@2 bb3 ~ [gb3,b3]@2 ~@4", // B5
  AH: "[gb3,b3]@4 ~ [gb3,b3] ~@3 bb3@2 ~ [gb3,b3]@5 ~@7", AI: "[gb3,b3]@4 ~ [gb3,b3] ~@3 bb3@2 ~ [gb3,b3]@2 ~@10",
  AJ: "[gb3,b3]", // B5
})).s("gm_epiano1").gain(0.48)

// chords · epiano1 · "Piano Rhodes" · soft notes
const epiano1_soft = note("<~@23 A ~@3 B ~@5 C ~@2 D ~@2 C ~@3 A ~@3 E ~@49 F G H I J K L M@2 J M N ~@2>".pickRestart({
  A: "~@17 gb3 ~@6", B: "~@11 gb3 ~@12", C: "~@6 ab3 ~", D: "~@23 f3", E: "~@14 f3@3 ~@7", F: "~@8 e3 ~@14 e3",
  G: "~@8 e3 ~@8 e3 ~@6", H: "~@8 e3 e3@2 ~@12 e3", I: "~@17 e3 ~@5 e3", J: "~@8 e3 e3@2 ~@13", K: "~@8 e3 ~@15",
  L: "~@8 e3@3 ~@4 e3@2 ~@7", M: "~@8 e3@3 ~@13", N: "~@8 e3@3 ~@12 e3",
})).s("gm_epiano1").gain(0.24)

// chords · drawbar organ · "Orgue"
const drawbar_organ = note(`<
  ~@9 A@4 B C D E ~@32 F@4 G@2 H@2 I@2 J K@2 L M N O@6 P@2 Q@4 R S T R O@6 P@2 Q@4 R S T R ~ U V U W X Y Z ~ AA AB AC
  ~@2
>`.pickRestart({
  A: "[~@24 b4@23 ~ [gb4,bb4]@24 [f4,ab4]@24, db5, [f4,ab4]@47 ~@49]/4", B: "[f4,ab4,db5]@23 ~", C: "[ab4,c5,eb5]@23 ~",
  D: "[gb4,bb4]@2 ab4 [eb4,gb4], db5, ~@12 f4@5 ~@7", E: "~ f4@23, [ab4,db5]",
  F: "[ab4@24 [ab5,b5]@23 ~ bb5@24 [f5,ab5]@24, db5, f5@23 ~ gb5@11 ~@13]/4", // Abm Fm
  G: "[bb4 db5@23 [f5,ab5,b5]@18 [ab5,b5]@6, ab4@47 ~, f5@23 ~@19 f5@4 ~@2]/2", H: "[[eb5,gb5,ab5,c6]@47 ~, b5 ~@47]/2",
  I: "[[db5,f5]@24 [b4,db5,f5]@23 ~, ab4@47 ~]/2", J: "[bb4,db5,gb5]@23 ~",
  K: "[[ab4,db5]@24 [ab4,db5]@20 [b3,c4] [d4,e4,f4] [g4,a4,b4] [c5,d5], f5@15 ~]/2", L: "[eb5,ab5,c6], e5 ~@23",
  M: "[db5,gb5,bb5]@12 [f5,ab5]@6 [eb5,gb5]@5 [d3,e3], ~@12 bb5@11 ~", N: "[ab4,db5,f5], [f3,g3,a3] ~@23",
  O: "[[ab4,f5]@24 [f5,ab5,b5]@24 gb5@17 ~ gb5@6 ~@66 [db5,f5]@5 ~, db5@95 ~ db5@41 ~@7, ~@48 bb5@24 f5@65 ~@7, ~@72 ab4@48 [ab5,b5]@23 ~]/6", // Db Fdim Db Abm
  P: "[b5 ~@23 gb5@23 ~, [eb5,ab5,c6]@47 ~]/2", Q: "[ab4@24 [ab5,b5]@23 ~ [gb5,bb5]@24 [ab4,f5]@24, db5, f5@23 ~@25]/4",
  R: "[ab4,db5,f5]", S: "[eb5,ab5,c6]", T: "[db5,gb5,bb5]@12 [f5,ab5]@6 [eb5,gb5]@5 ~",
  U: "~@11 [f5,f6] [ab5,bb5,ab6,bb6] ~ [f5,f6] [ab5,bb5,ab6,bb6] ~ [f5,f6] [bb5,bb6]@2 ~ [bb5,bb6]@2 [ab5,ab6], ~@12 [db6,db7]@2 ~ [db6,db7]@2 ~ [ab5,ab6] ~@2 [ab5,ab6] ~@2", // F Absus2 F Absus2 F Bb Ab Db …
  V: "~@15 f5 eb5 ~ f5@2 ~@4", W: "~@17 eb5 f5 ~ f5 ~@3",
  X: "~@11 [f5,f6] [ab5,bb5,ab6,bb6] ~ [f5,f6] [ab5,bb5,ab6,bb6] ~ [f5,f6] [bb5,bb6]@3 [ab5,bb5,ab6,bb6] [ab5,ab6] [f5,f6], ~@12 [db6,db7]@2 ~ [db6,db7]@2 ~ [ab5,ab6] ~@5", // F Absus2 F Absus2 F Bb Absus2 Ab …
  Y: "~@18 [ab5,ab6] ~ [f5,f6] ~@3", // Ab F
  Z: "~@11 [f5,f6] [ab5,bb5,ab6,bb6] ~ [f5,f6] [ab5,bb5,ab6,bb6] ~ [f5,f6] [ab5,ab6] [bb5,bb6] [f5,ab5,f6,ab6] [ab5,ab6]@2 [f5,f6], ~@12 [db6,db7]@2 ~ [db6,db7]@2 ~@7", // F Absus2 F Absus2 F Ab Bb Fm …
  AA: "~@14 [f5,f6] [ab5,bb5,ab6,bb6] ~@2 [db6,db7]@2 [f5,f6] [ab5,bb5,ab6,bb6] [ab5,ab6] ~, ~@15 [db6,db7]@2 ~ [bb5,bb6] ~@5", // F Absus2 Db F Absus2 Ab Db Bb
  AB: "[bb5,bb6] ~@23", // Bb
  AC: "~@11 [f5,f6] [ab5,bb5,ab6,bb6] ~ [f5,f6] [ab5,bb5,ab6,bb6] ~ [f5,f6] [ab5,ab6] [bb5,bb6] [f5,ab5,f6,ab6] [bb5,bb6]@2 ~, ~@12 [db6,db7]@2 ~ [db6,db7]@2 ~@7", // F Absus2 F Absus2 F Ab Bb Fm …
})).s("gm_drawbar_organ").gain(0.14)

// chords · electric guitar clean · "Guitare Funk Acc."
const electric_guitar_clean = note(`<
  ~@17 A@2 B C A D E F D@2 A@2 G@2 ~ H I J@5 ~@2 K L M N@2 O P N ~@8 Q R S T U V W X ~@32 Y@8 Z AA AB AC ~@2
>`.pickRestart({
  A: "~@18 [ab3,db4]@5 ~", B: "~@17 f3 [ab3,db4]@5 ~", C: "~@18 [f3,db4]@5 ~", D: "~@17 ab3 [ab3,db4]@5 ~",
  E: "~@18 [ab3,c4]@5 ~", F: "~@15 ab3 ~@4 f3 ~@3", G: "[~@18 f4@2 ab3 eb4@5 ~@16 eb4@5 ~]/2", H: "[b3,f4,ab4]@11 ~",
  I: "~@3 [ab3,db4]@2 ~@7", J: "~@6 [ab3,db4]@5 ~@13", K: "~@6 [ab3,db4]@2 [ab3,db4] ~@15", L: "~@2 [ab3,db4] ~@5",
  M: "~@6 [e3,db4]@2 db4 ~@15", N: "~@6 [ab3,db4]@2 db4 ~@15", O: "~@6 eb4@2 eb4 ~@2 bb3 eb4 ~@4 eb4 eb4@2 db4 ~@3",
  P: "~@8 db4 ~@3 db4 ~@2 db4 ~@4 db4 ~@3", Q: "~@17 ab3 [ab3,db4]@3 ~@3", R: "~@17 ab3 [ab3,db4]@2 ~@4",
  S: "~@18 [ab3,db4]@2 ab3 ~@3", T: "~@18 [eb4,e4]@2 db4 e4@2 db4", U: "~@18 e4 ~@2 e4 ~@2",
  V: "~@14 ab3 ~@3 bb3 ~@2 ab3 ~@2", W: "~@8 db4 ~@2 bb3 db4 ~@5 eb4@2 db4 ~@3", X: "~@9 [ab3,db4]@2 ~",
  Y: "~ [b3,e4] ~ [b3,e4] ~ [b3,e4] ~ [b3,e4]", Z: "~@2 b3 [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 [b3,e4]@3",
  AA: "~@3 [b3,e4]@2 ~@4 [b3,e4]@3 ~@3 [b3,e4]@3 ~@2 b3 [b3,e4]@2 ~", // E5
  AB: "~@3 [b3,e4]@3 ~@3 [b3,e4]@2 ~@4 [b3,e4]@3 ~@2 b3 [b3,e4]@2 ~", // E5
  AC: "~@3 [b3,e4]@3 ~@3 [b3,e4]@2 ~@4 [b3,e4]@2 ~@4 [b3,e4]@2 ~", // E5
})).s("gm_electric_guitar_clean").gain(0.33)

// chords · distortion guitar · "Guitare Wha"
const distortion_guitar = note("<~@33 A@7 B A@7 ~@17 A@7 B A@7 ~ A@7 B A@7 ~@15>".pickRestart({
  A: "[ab4,db5]@5 ~@19", B: "[ab4,eb5] ~@5",
})).s("gm_distortion_guitar").gain(0.3)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@33 A B A C D@4 E@2 F@4 G H ~@16 I@2 J K@3 L@2 M@2 N@3 O G P Q@6 R@2 S@3 T@2 U V P ~@14
>`.pickRestart({
  A: "db4@18 eb4@5 ~", B: "f4@3 eb4", C: "f4@23 ~",
  D: "[[ab4,f5]@23 ~ f5@24 c5@24 [c5,gb5,ab5]@23 ~, db5@47 ~ eb5@48, ~ ab5@2 ~]/4", // Db Ab7
  E: "[~ ab4@7 ab5@8, ~ [db5,f5]@47]/2", F: "[[gb5,bb5]@22 ~@2 [ab4,f5]@47 ~ [eb5,ab5,c6]@24, db5@70 ~ c5@25]/4",
  G: "[gb5,bb5]@12 ab5@6 gb5@5 ~, db5", H: "~ a4 ab4@21 ~, [db5,f5]", I: "[ab4,db5,f5]/2", J: "[bb4,db5,gb5]",
  K: "[[db5,f5]@23 ~@25 b4@23 ~, ab4@71 ~, ~@24 [db5,f5]@47 ~]/3", L: "[ab4@12 ~@13 gb5@23, [c5,eb5]@47 ~, ~ ab5@3]/2",
  M: "[f5@24 ~@9 b4@13 ~@2, ab5, db5@23 ~, ~@26 f5@21 ~]/2",
  N: "[bb5@24 f5@20 ~@2 f5@2 [db5,f5]@23 ~, db5@23 ~@13, gb5@11 ~ ab5@24]/3", O: "[c5,eb5,ab5]", P: "[ab4,db5,f5]",
  Q: "[~@24 b5@23 ~ [gb5,bb5]@24 ~@48 b5@23 ~, db6@143 ~, [f5,ab5]@47 ~@25 [f5,ab5]@71 ~]/6", // Gb Fm
  R: "[~@6 f6 eb6, [ab5,c6]@47 ~, eb6@7 ~]/2", S: "[~@24 b5@23 ~@19 eb6@6, db6@11 ~, [ab5,f6]@47 ~ [gb5,bb5]@23 ~]/3",
  T: "[[ab5,db6,f6]@23 eb6]/2", U: "[ab5,c6,eb6]", V: "[gb5,bb5]@2 ab5 gb5, db6",
})).s("gm_string_ensemble_1").gain(0.11)

// drums · rim
const rim = s("rim").struct("<A ~@16 B@15 C B@16 ~@8 B@7 D B@19 C B@3 C B@7 C B@11 E ~@2>".pickRestart({
  A: "x!4", B: "~ x ~ x", C: "~@3 x ~@3 x ~ x ~@2", D: "~@7 x ~ x ~@2", E: "~@6 x ~@7 x ~@3 x ~@2 x ~ x",
})).gain(0.6)

// drums · kick
const kick = s("bd").struct("<~@17 A@15 B A@16 ~@8 A@51 C D ~>".pickRestart({
  A: "x ~@10 x!2 ~@11", B: "x ~@10 x!2 ~@2 x ~ x ~@2 x ~@3", C: "x ~@10 x!2 ~@4 x ~@2 x ~@3", D: "x",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@17 [x!8]!32 ~@8 [x!8]!52 ~@2>").gain(0.6)

// drums · crash
const crash = s("cr").struct("<~@65 x ~@43 x ~>").gain(0.54)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@33
  [x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2 x ~@2 x ~ x]!15
  [x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2 x ~@2 x ~@2]
  ~@16
  [x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2 x ~@2 x ~ x]!44
  ~@2
>`).gain(0.36)

stack(
  bass, piano, epiano1, epiano1_soft, drawbar_organ, electric_guitar_clean, distortion_guitar, string_ensemble_1, rim,
  kick, hihat, crash, tambourine
)

More by All Saints