Strudelify
Sleeping Satelite cover art

1992 · Great Expectations

Sleeping Satelite

Tasmin Archer

KeyF minorTempo96 bpm
0:00/0:00
// Sleeping Satelite — Tasmin Archer
// 96 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/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 · "FINGERDBAS"
const bass = note(`<
  ~@13 A B C D A E F G H I J K L M N O P Q R S T U T S T U V H I J K L W N O P Q R X@2 Y Z X AA AB AC S T U T S T U V H
  I J K L M N O P Q R H I J K L W N O P AD H I J K L W N O P AD
>`.pickRestart({
  A: "f1", B: "eb1", C: "db1", D: "eb1@15 ~", E: "eb2", F: "db2", G: "c2@11 ~ c2@4", H: "f1@5 ~ f1@4 g1@4 ab1 f1",
  I: "bb1@5 ~ bb1@7 ~ bb1 f1", J: "c2@5 ~ c2@8 c2 g1", K: "c2@5 ~ c2@3 bb1 c2@2 eb2@2 c2@2",
  L: "f1@5 ~ f1@4 g1@4 ab1 f1, g1 ~@15", M: "bb1@5 ~ bb1@7 ~ f1 bb1", N: "c2@5 ~ c2@7 g1 bb1 g1",
  O: "c2@5 ~ c2@3 g1 bb1@2 c2@2 eb2@2", P: "db2@5 ab1 db2@7 ab1 db2 ab1", Q: "eb2@5 bb1 eb1@9 ~",
  R: "eb1@4 ~ eb1 eb1@8 ~@2", S: "f2@3 f1 f2 f1 f1@2 ~@6 f2 f1", T: "eb2@3 f1 eb2 f1 f1@2 ~@6 eb2 f1",
  U: "db2@3 f1 db2 f1 f1@2 ~@5 f1 db2 f1", V: "c2@2 c2 ~ c2 ~ c2 ~ c2@2 bb1 c2 eb2@2 c2 ~", W: "bb1@5 ~ bb1@8 f1 bb1",
  X: "f1@2 ~ f1 f2 f1 f1@2 ~@8", Y: "g1@2 ~ g1 g2 g1 g1@2 ~@7 g1",
  Z: "ab1@2 ~ ab1 ab2 ab1!2 ~ ab1@2 bb1 ab1 c2@2 eb2@2, ~@12 bb1 ~@3", AA: "f1@2 ~ f1 f2 f1 f1@2 ~@7 f1",
  AB: "g1@2 ~ g1 g2 g1 g1@2 ~@6 g2 g1", AC: "ab1 ~ ab1@2 ~@4 g1 ~ g1@2 ~@4", AD: "eb2@4 ~ bb1 eb1@9 ~",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  ~@13 A B C D A B C D E F G H I J G K ~@3 I B L B M B N O P Q R Q P R@3 ~@3 I S T U A@2 T V I B L B M B N O P Q R Q P
  R@3 ~@3 P Q R Q P R@3 ~@2 P Q R Q P R@3 ~@2
>`.pickRestart({
  A: "[f3,ab3,c4,f4]@15 ~", B: "[eb3,g3,bb3,f4]@15 ~", C: "[db3,f3,ab3,c4,f4]@15 ~", D: "[eb3,g3,bb3,f4]@7 ~",
  E: "[f3,ab3,c4,f4]@7 ~", F: "[bb2,bb3,f4]@13 c4 ~@2, c4@3 ~", G: "[c3,g3,bb3,c4,f4]",
  H: "[c3,g3,bb3,c4,f4]@10 [g3,bb3,c4,f4] c3 g3 [g3,bb3,c4,f4] c3 ~", I: "[f3,ab3,c4,f4]", J: "[bb2,bb3,c4,f4]@7 ~",
  K: "[c3,g3,bb3,c4,f4]@10 c3@2 [g3,bb3,c4]!2 c3 ~, ~@6 f4 ~", L: "[db3,ab3,c4,f4]", M: "[f3,ab3,c4,f4]@15 ~, eb4 ~@15",
  N: "[db3,f3,ab3,c4,f4]@7 ~", O: "[c3,g3,bb3,c4,f4]@5 ~ [c3,g3,bb3,c4,f4]@6 [c3,g3,bb3,c4,f4]@4", P: "[ab3,c4,f4]@3 ~",
  Q: "[bb3,c4,f4]@13 ~@3", R: "[bb3,c4,f4]@3 ~", S: "[ab3,c4,f4]@15 ~, f3@13 ~@3", T: "[g3,bb3,d4,g4]@7 ~",
  U: "[ab3,c4,eb4,ab4]@7 ~", // Ab
  V: "[ab3,c4]@2 [ab3,eb4,ab4] ~@5 [g3,d4]@2 [g3,d4,g4] ~@5, [eb4,ab4] ~ c4@2 ~@4 [bb3,g4] ~ bb3@2 ~@4", // Ab Ab5 G5 Ab5 Eb
})).s("gm_piano").gain(0.45)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@2 A B C D A B C D E@3 F@8 A B C D G H I J E@3 F@8 A B C D G H I J K@3 L M N O M@2 N P Q@4 F@4 A B C D G H I J E@3 A
  B C D G H I J R@3 B C D G H I J S@2
>`.pickRestart({
  A: "[c3,f3,ab3,c4,f4]@3 [c3,f3,ab3,c4,f4]@2 [c3,ab3,c4,f4] [c3,ab3,c4,f4]@3 [c3,ab3,c4,f4]!2 ~ [c3,f3,ab3,c4,f4] [c3,ab3,c4,f4] [c3,f3,ab3,c4,f4] [c3,ab3,f4]", // Fm
  B: "[bb2,f3,bb3,c4,f4]@2 ~ [bb2,f3,bb3,c4,f4]@2 [bb2,f3,bb3,c4,f4] [bb2,f3,bb3,c4,f4]@3 [bb2,f3,bb3,c4,f4] [bb2,f3,bb3,c4,f4]@2 [bb2,f3,bb3,c4,f4] [bb2,f3,bb3,c4] [bb2,f3,bb3,c4,f4]!2", // Bbsus2
  C: "[c3,f3,g3,c4,f4]@3 [c3,f3,g3,c4,f4]@2 [c3,f3,c4,f4] [c3,f3,g3,c4,f4]@3 [c3,f3,f4] [c3,f3,g3,c4,f4]@2 [c3,f3,g3,c4,f4]!2 [c3,f3,c4,f4]!2", // Csus4 F5 Csus4 F5 Csus4 F5
  D: "[c3,f3,g3,c4,f4]@3 [c3,f3,g3,c4,f4] ~ [c3,f3] [c3,f3,g3,c4,f4]@3 c3 [c3,f3,g3,c4,f4]@2 [c3,f3,g3,c4,f4] [c3,c4,f4] [c3,f3,g3,c4,f4] [c3,f4]", // Csus4 F5 Csus4 F5 Csus4 F5
  E: "[[f3,ab3,c4,f4]@2 ~ [f3,ab3,c4,f4]@2 ~ [f3,ab3,c4,f4]@4 db3@2 [f3,ab3,c4,f4] ~ db3 ~ [g3,bb3,c4,f4]@3 [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@4 eb3@2 [g3,bb3,c4,f4] ~@3 [bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@3 [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4] g3 ~ g3, db3@3 ~@2 db3@4 ~@4 [f3,ab3,c4,f4]@2 eb3@6 eb3@4 ~@5 eb3@6 ~ eb3@5 ~ eb3@2 ~ eb3@2, eb4 ~@28 [bb3,c4,f4]@2 g3@3 ~@11 [bb3,c4,f4]@3]/3", // Fm Gm7 Bbsus2 Gm7 Fm Bbsus2
  F: "[[ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~@3 f3 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~@3 eb3 ~ [ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~ ab3 ~ f3 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~@4 g3, f3@3 ~@2 f3@5 ~ f3@2 [c4,f4]@2 ~@13 g3@3 f3@11 ~ f3@2 [c4,f4]@2 ~@13 g3@2 eb3@2, ~@12 ab3@2 ~ eb3@5 ~ eb3@6 eb3@2 [bb3,c4,f4]@2 ~@6 db3@9 ~ eb3@5 ~ eb3@2 ~ eb3@2 ~ eb3@2 [bb3,c4,f4]@3]/4", // Fm Gm7 Fm Gm7 F5 Bbsus2
  G: "[c3,f3,ab3,c4,f4]@2 ~ [c3,f3,ab3,c4,f4] ~ [c3,ab3,c4,f4] [c3,ab3,c4,f4]@2 ~ [c3,ab3,c4,f4]!2 ~ [c3,f3,ab3,c4,f4] [c3,ab3,c4,f4] [c3,f3,ab3,c4,f4] [c3,ab3,f4]", // Fm
  H: "[bb2,f3,bb3,c4,f4]@2 ~ [bb2,f3,bb3,c4,f4] ~ [bb2,f3,bb3,c4,f4] [bb2,f3,bb3,c4,f4]@3 [bb2,f3,bb3,c4,f4]!2 ~ [bb2,f3,bb3,c4,f4] [bb2,f3,bb3,c4] [bb2,f3,bb3,c4,f4]!2", // Bbsus2
  I: "[c3,f3,g3,c4,f4]@2 ~ [c3,f3,g3,c4,f4] ~ [c3,f3,c4,f4] [c3,f3,g3,c4,f4]@2 ~ [c3,f3,f4] [c3,f3,g3,c4,f4] ~ [c3,f3,g3,c4,f4]!2 [c3,f3,c4,f4]!2", // Csus4 F5 Csus4 F5 Csus4 F5
  J: "[c3,f3,g3,c4,f4]@2 ~ [c3,f3,g3,c4,f4] ~ [c3,f3] [c3,f3,g3,c4,f4]@2 ~ c3 [c3,f3,g3,c4,f4] ~ [c3,f3,g3,c4,f4] [c3,c4,f4] [c3,f3,g3,c4,f4] [c3,f4]", // Csus4 F5 Csus4 F5 Csus4 F5
  K: "[[f3,ab3,c4,f4]@2 ~ [f3,ab3,c4,f4]@2 ~ [f3,ab3,c4,f4]@4 db3@2 [f3,ab3,c4,f4] ~ db3 ~ [g3,bb3,c4,f4]@3 [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@4 eb3@2 [g3,bb3,c4,f4] ~@3 [bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@3 [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4] g3 ~ g3, db3@3 ~@10 [f3,ab3,c4,f4]@2 eb3@6 eb3@4 ~@5 eb3@6 ~ eb3@5 ~ eb3@2 ~ eb3@2, eb4 ~@28 [bb3,c4,f4]@2 g3@3 ~@11 [bb3,c4,f4]@3]/3", // Fm Gm7 Bbsus2 Gm7 Fm Bbsus2
  L: "[f3,ab3,c4] ~ [f3,ab3,c4] ~ [f3,ab3,c4] ~ [f3,ab3,c4] ~ [f3,ab3,c4] ~ [f3,ab3,c4] ~ [f3,ab3,c4] ~ [ab3,c4] ~", // Fm Ab
  M: "[f3,ab3,c4] ~ [f3,ab3,c4] ~ [f3,ab3,c4] ~ [f3,ab3,c4] ~ [f3,ab3,c4] ~ [f3,ab3,c4] ~ [f3,ab3,c4] ~ [f3,ab3,c4] ~", // Fm
  N: "[g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~", // Gm
  O: "[ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~", // Ab
  P: "[ab3,c4,eb4] ~ [ab3,c4,eb4] ~@5 [g3,bb3,d4] ~ [g3,bb3,d4] ~@5", // Ab Gm
  Q: "[[ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~@3 f3 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~@3 eb3 ~ [ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~ [ab3,c4,f4]@2 ~ ab3 ~ f3 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~@4 g3, f3@3 ~@2 f3@5 ~ f3@2 [c4,f4]@2 ~@13 g3@3 f3@11 ~ f3@2 [c4,f4]@2 ~@13 g3@2 eb3@2, ~@12 ab3@2 ~ eb3@5 ~ eb3@5 ~ eb3@2 [bb3,c4,f4]@2 ~@6 db3@9 ~ eb3@5 ~ eb3@2 ~ eb3@2 ~ eb3@2 [bb3,c4,f4]@3]/4", // Fm Gm7 Fm Gm7 F5 Bbsus2
  R: "[[f3,ab3,c4,f4]@2 ~ [f3,ab3,c4,f4]@2 ~ [f3,ab3,c4,f4]@4 db3@2 [f3,ab3,c4,f4] ~ db3 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@4 eb3@2 [g3,bb3,c4,f4] ~@3 [c3,f3,ab3,c4,f4]@3 [c3,f3,ab3,c4,f4]@2 [c3,ab3,c4,f4] [c3,ab3,c4,f4]@3 [c3,ab3,c4,f4]!2 ~ [c3,f3,ab3,c4,f4] [c3,ab3,c4,f4] [c3,f3,ab3,c4,f4] [c3,ab3,f4], db3@3 ~@2 db3@4 ~@4 [f3,ab3,c4,f4]@2 eb3@6 eb3@4 ~@5 eb3@6 ~@12, eb4 ~@28 [bb3,c4,f4]@2 g3@3 ~@14]/3", // Fm Gm7 Fm Bbsus2
  S: "[[f3,ab3,c4,f4]@2 ~ [f3,ab3,c4,f4]@2 ~ [f3,ab3,c4,f4]@4 db3@2 [f3,ab3,c4,f4] ~ db3 ~ [g3,bb3,c4,f4]@3 [g3,bb3,c4,f4]@2 ~ [g3,bb3,c4,f4]@4 eb3@2 [g3,bb3,c4,f4] [bb3,c4,f4]@2 ~, db3@3 ~@2 db3@4 ~@4 [f3,ab3,c4,f4]@2 eb3@6 eb3@4 ~@7, eb4 ~@31]/2", // Fm Gm7 Bbsus2 Fm
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.7)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@2 A B C D A B C D ~ E ~@3 F ~@3 F ~ A B C D G B C D ~ E ~@3 F ~@3 F ~ A B C D G B C D ~ E ~ H ~@9 F ~@3 F ~ A B C D
  G B C D ~ E ~ A B C D G B C D ~ E A B C D G B C D ~ E
>`.pickRestart({
  A: "~@5 f3 f3@3 f3!2 ~@2 f3 ~ [f3,c4]", B: "~@13 f4 ~@2", C: "~@5 g3 ~@3 [g3,c4] ~@4 g3!2",
  D: "~@5 [g3,c4] ~@3 [f3,g3,c4] ~@3 [f3,g3] ~ [f3,g3,c4]", E: "~@13 g3@2 ~", F: "~@13 ab3@2 ~",
  G: "~@5 f3 f3@2 ~ f3!2 ~@2 f3 ~ [f3,c4]", H: "~@14 f3 ~",
})).s("gm_acoustic_guitar_steel").gain(0.15).pan(0.7)

// chords · acoustic guitar steel · "STEEL GTR" · Ab Gm Ab Gm
const acoustic_guitar_steel_3 = note(`<
  ~@51
  [~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4]]!2
  [~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4]]
  [~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4]]
  [~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4] ~ [ab3,c4]]!2
  [~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4]]
  ~@40
>`).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.7)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~@10 A B C ~@16 A B C D E@4 ~ F ~@9 A B C ~@24 A B C ~@8 A B ~@8 A B>".pickRestart({
  A: "~ eb4@14 ~, [db3,f3,c4], ab3@7 ~", B: "[eb3,g3,bb3,eb4]", C: "~@4 f5@4 f5@4 eb5@3 ~", D: "[f4,c5,f5]",
  E: "[~ [c5,f5], ~@15 f4@17]/2", F: "[f4,c5,f5]@13 ~@3",
})).s("gm_electric_guitar_jazz").gain(0.2).pan(0.3)

// chords · rock organ · "ORGAN 3"
const rock_organ = note("<~@67 A B C D E F G H I J K ~@20>".pickRestart({
  A: "~@2 [ab5,c6] f5 [ab5,c6]@2 f5 [bb5,d6]@2 f5 [ab5,c6] ~ [ab5,c6] ~@3", // Ab Bb Ab
  B: "~@2 [bb5,d6] f5 [bb5,d6]@2 f5 [d6,f6]@2 f5 [bb5,d6] ~ [bb5,d6] ~ bb5 c6", // Bb Dm Bb
  C: "~@2 [c6,eb6] g5 [c6,eb6] ~ g5 [d6,f6]@2 g5 [c6,eb6] ~ [c6,eb6] ~ c6 eb6", // Cm Dm Cm
  D: "c6 g5 eb5 c6 g5 eb5 c5 eb5 d5 g4 c5@5 ~", E: "~@2 ab4 f4 ab4 c5 ab4 c5 f5 c5 f5 ab5 f5 ab5 [c6,eb6] ~",
  F: "~ f5 [bb5,d6] ~ [bb5,d6]@2 f5 [d6,f6]@2 f5 [c6,eb6] ~ [c6,eb6]@2 c6 eb6", // Bb Dm Cm
  G: "f6 eb6 c6 bb5 c6 bb5 ab5 bb5 g5 c5 f5@6",
  H: "~@2 [c5,eb5] bb4 ~ [c5,eb5] ~ bb4 [c5,eb5]!2 ~ bb4 [c5,eb5] ~ [c5,eb5]@2", // Cm
  I: "~@2 ab4 c5 f5 c5 f5 ab5 f5 ab5 c6 ab5 f5 c5 ab4!2",
  J: "~@2 [eb4,g4,bb4] ~@2 [eb4,g4,bb4] ~ g4 [eb4,bb4]@2 ~ [eb4,g4,bb4]@2 ~ [eb4,g4,bb4] ~, ~@8 g4 ~@7", // Eb Eb5 Eb
  K: "g4 eb4 g4 bb4 g4 bb4 eb5 bb4 eb5 g5 eb5 g5 bb5 eb5 [g5,bb5,eb6]@2", // Eb
})).s("gm_rock_organ").gain(0.4).pan(0.7)

// chords · percussive organ · "ORGAN 2" · F5
const percussive_organ = note(`<
  ~@36
  [~@3 [f5,c6]!10 ~@3]
  ~@14
  [f5@10 eb5 c5 eb5 f5 eb5 c5, e5 ~@15]
  [bb4 ab4 f4@2 ab4 bb4@3 f4@7 ~]
  ~@45
>`).s("gm_percussive_organ").gain(0.3).pan(0.2)

// chords · percussive organ · "ORGAN 2" · soft notes · F5
const percussive_organ_soft = note("<~@36 [f5 [f5,c6]!2 ~@10 [f5,c6]!3] ~@61>")
  .s("gm_percussive_organ").gain(0.15).pan(0.2)

// chords · pad sweep · "SWEEP PAD"
const pad_sweep = note("<A@2 B@8 ~@6 C@3 D@2 ~@31 E@6 ~@40>".pickRestart({
  A: "[[f2,f4,c5,f5]@31 ~]/2", B: "[~@3 c5, f5@127 ~]/8", C: "[eb4 ~@3 eb4@44]/3", D: "[f4@29 ~@3]/2",
  E: "[~ f6@90 ~@5]/6",
})).s("gm_pad_sweep").gain(0.25)

// chords · pad warm · "WARM PAD"
const pad_warm = note("<~@2 A@4 ~ B C@2 D ~@67 E@2 F@6 G H E@2 F@6 G H>".pickRestart({
  A: "f5/4", B: "bb4", C: "[c5@31 ~]/2", D: "db2", E: "[c4 bb3, f4]/2",
  F: "[~@3 bb3 ~ c5, c4@48 ~@16 [c4,g4]@31 ~, g4 ~@3, ~ f4@4 ~]/6", G: "[f4,ab4,c5]", H: "[eb4,g4,bb4]@15 ~",
})).s("gm_pad_warm").gain(0.22).pan(0.3)

// chords · pad warm · "WARM PAD" · soft notes
const pad_warm_soft = note("<~@5 A@3 B@2 ~ C@2 ~@85>".pickRestart({
  A: "[~@16 f4@31 ~, c5@2 ~]/3", B: "[~@16 bb4@15 ~, g4@31 ~]/2", C: "[eb2@7 ~]/2",
})).s("gm_pad_warm").gain(0.12).pan(0.3)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@13 A B@2 A@2 B@2 C B@3 D@2 B@2 E B F ~ A B@2 A@2 B@2 C B@3 D@2 B@2 E B F ~ A@7 G A B@2 A@2 B@2 C B@3 D@2 B@2 E B F ~
  B@3 D@2 B@2 E B F B@3 D@2 B@2 E B ~
>`.pickRestart({
  A: "~@9 x ~@6", B: "~@9 x ~@5 x", C: "~@7 x ~@8", D: "~@9 x ~ x ~@4", E: "~@11 x ~@4", F: "~@15 x",
  G: "~@7 x ~ x ~@4 x!2",
})).gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<~@20 A ~@7 B ~@10 A ~@7 B ~@18 A ~@7 B ~@10 B ~@9 B ~@2>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~@13 x!2 ~",
})).gain(0.6)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@13 A B C D E F G H I J K L M N K O P K Q A B C D E F G H I J K L M N K O P K Q R S T U V W X Y A B C D E F G H I J K
  L M N K O P K Q I J K L M N K O P K I J K L M N K O P L
>`.pickRestart({
  A: "~ x!4 ~ x ~ x ~ x!6", B: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~", C: "x!11 ~ x ~ x ~", D: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2",
  E: "x!11 ~ x!4", F: "x!16", G: "x ~ x!11 ~ x ~", H: "x ~ x ~ x!5 ~ x!6", I: "~ x!4 ~ x ~ x!2 ~@2 x!4",
  J: "x!5 ~ x ~ x!2 ~@2 x!4", K: "x!10 ~@2 x!3 ~", L: "x!10 ~@2 x!2 ~@2", M: "~ x!9 ~@2 x!4", N: "x!10 ~@2 x!4",
  O: "x!9 ~ x ~@5", P: "~ x!4 ~ x ~ x!2 ~@2 x!3 ~", Q: "x ~ x!5 ~ x!3 ~ x!2 ~@2", R: "~ x!2 ~@3 x!3 ~@3 x ~ x!2",
  S: "x ~ x ~@3 x ~ x!2 ~@2 x!4", T: "x ~ x ~@3 x!4 ~@2 x ~ x ~", U: "x ~ x ~@3 x!3 ~@3 x ~ x!2",
  V: "x!4 ~@4 x!2 ~@2 x!3 ~", W: "x ~ x ~@3 x ~ x!2 ~@2 x ~ x ~", X: "x ~ x ~@3 x ~ x ~@3 x ~ x!2",
  Y: "x ~ x!2 ~@2 x ~ x ~ x ~@5",
})).gain(0.42)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@13 A B C D E ~ F G H I ~@4 J K I ~ L A B C D E ~ F G H I ~@4 J K I ~ L M N O P J Q R N A B C D E ~ F G H I ~@4 J K I
  ~ L H I ~@4 J K I ~ H I ~@4 J K I ~
>`.pickRestart({
  A: "~@5 x ~ x ~ x ~@6", B: "~@3 x ~ x ~ x ~ x ~ x ~ x ~ x", C: "~@11 x ~ x ~ x", D: "~ x ~ x ~ x ~ x ~ x ~@3 x ~@2",
  E: "~@11 x ~@4", F: "~ x ~@11 x ~ x", G: "~ x ~ x ~@5 x ~@6", H: "~@5 x ~@10", I: "~@5 x ~ x ~@8", J: "~@15 x",
  K: "~@9 x ~@6", L: "~ x ~@9 x ~@4", M: "~@3 x ~@5 x ~@3 x ~@2", N: "~ x ~@5 x ~@8", O: "~ x ~ x ~@9 x ~ x",
  P: "~ x ~ x ~@5 x ~@3 x ~@2", Q: "~ x ~ x ~@3 x ~@5 x ~ x", R: "~ x ~ x ~@3 x ~ x ~@3 x ~@2",
})).gain(0.24)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@21 A@3 B A@3 ~ C@2 ~@9 A@3 B A@3 ~ C@2 ~ D@7 E ~@8 A@3 B A@3 ~ C@2 ~ A@3 B A@3 ~ C@2 A@3 B A@3 ~ C A
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@5 x ~ x", C: "~@10 x ~@4 x", D: "~@2 x ~@2 x ~@2", E: "~ x ~@2",
})).gain(0.6)
// … 45 more lines

More by Tasmin Archer