Strudelify
Sleepwalk cover art

History Records - British Edition 5

Sleepwalk

The Shadows

KeyC majorTempo102 bpm
0:00/0:00
// Sleepwalk — The Shadows
// 102 bpm, 6/8, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: coarse tuning (RPN 2) transposes the affected channels
// note: Full arrangement: all 107 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(102/3)

// 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 · "ACOU BASS"
const bass = note(`<
  ~@8 A B@5 C D@2 E F G@4 H I J K L M N O P Q R S T U V W X Y Z@8 AA@2 AB@8 AC@4 AD@8 AE@4 AF@4 AG@8 AH@4 AI@8 AJ@4 AK@4
>`.pickRestart({
  A: "~ c2@7", B: "[~@3 a1@15 ~@4 g1@4 ~ d2@15 ~@4 d2@4 ~ g#2@7 g1@3 ~@2 d2@7 ~ c#2@3 c2@19 ~ g#1@4 a1@11 ~ c#2@10]/5",
  C: "~@2 d2@13 ~@3 d2@4 g2@2", D: "[~@2 g#2@10 ~@2 a#2@4 g#2@3 ~ g1@4 c2@11 ~ b1@10]/2", E: "~ a1@6 c#2@5",
  F: "~ d2@6 f#2@4 d2", G: "[~@2 g2@12 ~@4 g1@4 d2@4 c2@16 ~@4 e2@4 a1@13 ~@3 a2@3 ~ e2@3 d2@14 ~@2 f#2@7]/4",
  H: "~@2 g1@5 ~@2 g1@3 ~ b1@10 ~", I: "~ c2@22 ~", J: "~ a1@15 ~ a2@3 ~ e2@3", K: "~ d2@11 ~ f1@7 ~ g1@3",
  L: "~ g#1@13 ~@3 a1@4 b1@3", M: "~ c2@15 ~ b1@3 ~ g1@3", N: "~ a1@17 ~@3 c#2@3", O: "~ d2@20 ~@3",
  P: "~ g#2@9 ~@3 g1@11", Q: "~ c2@10 ~@2 e2@11", R: "a1@10 ~@2 c#2@11 ~", S: "d2@7 ~ d2 ~ f2@2",
  T: "g2@13 ~@3 g1@2 ~@2 g1@3 ~", U: "c2@17 ~@3 c2@3 ~", V: "a#1@17 ~@3 a#1@4", W: "c2@14 ~@2 g2@2 ~@2 g2@3 ~",
  X: "c3@3 ~ g2 ~@3 c2@8 d2@3 ~ e2@3 ~", Y: "f2@17 ~@3 c2@3 ~",
  Z: "[f2@16 ~@4 c2@3 f2@17 ~@4 c2@2 ~ f2@8 a#1@4 g1@6 ~@2 b1@4 c2@19 ~ a1@4 g1@14 ~@2 a1@4 b1@4 c2@7 ~ c2@4 a#1@7 ~ a#1@4 a1@7 ~ a1@4 g1@3 ~ d2@3 ~ e2@4 f2@21 ~@3 c2]/8",
  AA: "[~@7 c2@7 ~ d2@3 ~ e2@4 f2@18 ~@2 d2@4 c2]/2",
  AB: "[~@7 e2@4 f2@6 ~@2 f#2@3 ~ g2@18 ~@2 g2@4 g#2@16 ~@3 f#2@4 ~ g2@35 ~@8 g1@4 c2@22 ~@2 a1@15 ~@5 g1@4 d2@15 ~@5 d2@4 g#2@2]/8",
  AC: "[~@6 g1@4 d2@7 ~ c#2@4 c2@19 g#1@4 ~ a1@11 ~ c#2@11 ~ d2@13 ~@3 d2@4 g2@3 ~ g#2@2]/4",
  AD: "[~@9 a#2@4 ~ g#2@3 ~ g1@4 c2@11 ~ b1@10 ~ a1@12 c#2@11 ~ d2@12 f#2@8 d2@3 ~ g2@12 ~@4 g1@4 d2@4 c2@16 ~@4 e2@4 a1@13 ~@3 a2@3 ~ e2@4 d2@14 ~@2 f#2@8 g1@3]/8",
  AE: "[~@5 g1@3 ~ b1@10 ~@2 c2@22 ~@2 a1@15 ~@4 g1@4 ~ d2@16 ~@3 d2@4 ~ g#2@3]/4",
  AF: "[~@4 g1@3 ~ d2@7 ~ c#2@4 c2@19 ~ g#1@4 a1@11 ~ c#2@11 ~ d2@13 ~@3 d2@4 g2@3 ~ g#2@4]/4",
  AG: "[~@8 a#2@4 g#2@3 ~ g1@4 c2@12 b1@10 ~@2 a1@11 ~ c#2@11 ~ d2@12 f#2@8 d2@3 ~ g2@12 ~@4 g1@3 d2@4 ~ c2@16 ~@4 e2@4 a1@13 ~@2 a2@3 ~ e2@4 d2@14 ~@2 f#2@8 ~ g1@4]/8",
  AH: "[~@3 g1@3 ~ b1@10 ~@2 c2@16 ~@4 g1@4 a1@16 ~@4 c#2@4 d2@15 ~@5 f1@4 g1@5]/4",
  AI: "[~@7 b1@4 g1@3 ~ b1@4 c2@18 ~@2 g1@4 a1@15 ~@5 c#2@4 d2@17 ~@3 f1@3 ~ g1@8 g1@3 ~ b1@7 b1@4 ~ c2@16 ~@3 g1@4 a1@16 ~@4 c#2@4 d2@15 ~@5 f1@4 g1@6]/8",
  AJ: "[~@6 b1@4 g1@3 ~ b1@4 c2@18 ~@3 g1@4 a1@17 ~@4 c#2@4 ~ d2@19 ~@4 f1@4]/4",
  AK: "[~@2 g1@12 g1@4 ~@2 b1@10 ~@2 b1@5 c2@59]/4",
})).s("gm_acoustic_bass").gain(0.32)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  A@7 B C@2 D E F G H I J K L M N O P Q R S T U R S T V W X Y Z AA AB AC@2 AD@2 AE AF@8 AG@8 AH@4 AI@6 AJ AK@5 AL@4 AM@5
  AN@2 AO@3 AP@4 AQ AR@2 AS AT AU AV AW AX AY AZ@4
>`.pickRestart({
  A: "[~@4 [c5,e5]@3 ~ b4@3 c5@9 ~@3 c5@4 [e4,c5]@4 [d4,b4]@4 e4@6 ~@6 c5@4 [d3,c4,f4,c5]@11 ~ [e3,d4,g4,c5]@12 [d#4,g#4]@12 [a#3,d4,g#4]@12 [d#4,g4]@3 ~ d4@2 ~@14 a#3@4 [g3,d#4]@4 [f3,d4]@2 ~@14 d#4@4 [f2,d#3,g#3,d#4]@11 ~ [g2,f3,a#3,d#4]@9, ~@4 c4@20 ~@3 a3@18 ~@30 f3@24 d#3@22 ~@2 c3@22 ~@23, ~@7 d5@3 ~ e5@14 ~@10 c5@12 ~@68 g3@8 ~@8 g3@15 ~@22, ~@20 g4@8 ~@16 g4@8 ~@51 f4 ~@3 [d#4,g4]@15 ~@9 d#4@12 ~@25, ~@139 a#3@8 ~@21]/7", // C G Dm7 C G#5 A#7 D# Cm …
  B: "~@3 [g#2,g#3,c4,d#4]@11 ~ [a#2,g#3,c4,f4]@9", C: "[~ [c4,e4,g4]@8 [a3,c4,g4]@7]/2", D: "~ [g#3,d4,f4]@7",
  E: "~@3 c5@7 ~ [e4,g4,c5]@7 [d4,f4,c5]@6, ~ [f4,g#4]@4 ~@7", F: "~ [c4,e4,g4]@11", G: "~ [a3,c4,g4]@11",
  H: "~ [g#3,d4,f4]@11", I: "~ [f4,g#4,c5]@4 [e4,g4,c5]@4 [d4,f4,c5]@3", J: "~ [e4,g4,b4]@11",
  K: "~@2 [g4,b4,e5]@15 ~ [g4,b4,d5]@6", L: "~ [f4,a4,c5]@11", M: "~ [b3,f4,b4,e5]@11",
  N: "~@2 g5@3 [g5,b5] ~@4 [e5,g5]@14, ~@2 e5@5 ~@17", O: "~@2 e5@3 g5@2 ~@3 [c5,e5]@14, ~@2 c5@5 ~@17, ~@5 e5 ~@18",
  P: "~@2 [f4,a4]@4 [a4,c5] ~@3 [f4,a4]@14", Q: "~@13 g4@11, ~ [f3,b3,e4]@23", R: "~ [c4,e4,g4]@23",
  S: "~ [a3,c4,g4]@23", T: "~ [g#3,d4,f4]@23", U: "~ [f4,g#4,c5]@7 ~ [e4,g4,c5]@7 ~ [d4,f4,c5]@7",
  V: "~ [f4,g#4,c5]@8 [e4,g4,c5]@7 ~ f4@7, ~@16 [d4,c5]@7 ~", W: "~ [e4,g4,b4]@23", X: "[g4,b4,e5]@15 ~ [g4,b4,d5]@8",
  Y: "~ [f4,a4,c5]@23", Z: "[b3,f4,b4,e5]", AA: "c5@19 ~ c5@4, [a3,d4,g4]@23 ~",
  AB: "g#4@4 c5@3 ~ d#5 ~@3 g5 ~@2 a5 a#5@4 g#5@2 ~@2, [g#3,c4,f4]", // Fm
  AC: "[g5@13 ~@3 e5@3 ~ b4 ~@3 a4@2 ~@2 [f4,g#4]@3 ~ e4@11 ~ d4@4, a3@47 ~, d4@43 ~@5, g4@31 ~ g4@15 ~]/2", // Fm
  AD: "[[a3,c4,c5]@23 [c4,e4,a4,c5]@8 ~ d4@8 [a3,c4,f4,c5]@8, ~@31 [a3,g4,c5]@8 ~@9]/2", AE: "[g#3,c4,f4,g#4]",
  AF: "[[c4,d#4,g#4]@7 [a#3,d#4,g#4]@7 ~ [c4,f4,g#4]@6 ~@2 [g3,b3,e4,g4]@24 [a3,c4,f4,a4]@23 ~@17 [c4,e4,a4]@3 ~ [a#3,e4,g#4] ~@3 [a#3,e4,g4]@15 ~@9 [a3,c4,c5]@23 ~ [c4,e4,a4,c5]@8 [a3,d4,g4,c5]@8 [a3,c4,f4,c5]@8 [g#3,c4,f4,g#4]@24 [c4,d#4,g#4,c5], ~@71 [e3,a3,d4]@35 ~@86, ~@71 g4@24 ~@97]/8", // G# D#sus4 Fm Em F Am A#m7b5 Edim …
  AG: "[~@6 [d#4,g#4,c5]@8 ~ g#4@6 ~@2 [g3,c4,f4,a4]@23 ~ [g#3,c#4,f#4,a#4]@22 ~@2 [f4,a4]@11 ~ a4@12 [a4,c5]@23 [c4,e4,g4]@24 [a3,c4,g4]@23 ~ [g#3,d4,f4]@23 ~ [f4,g#4,c5]@2, ~@14 [c4,f4,c5]@7 ~@50 [g3,c4]@41 ~@80, ~@82 f4@29 ~@81]/8", // G# F F# F Am C Am7 Ddim …
  AH: "[~@6 [e4,g4,c5]@8 [d4,f4,c5]@8 [c4,e4,g4]@23 ~ [a3,c4,g4]@24 [g#3,d4,f4]@23 ~ [f4,g#4,c5]@2]/4", // C Dm7 C Am7 Ddim Fm
  AI: "[~@6 [e4,g4,c5]@8 [d4,f4,c5]@7 ~ [g4,b4]@23 [g4,b4,e5]@15 ~ [g4,b4,d5]@8 ~ [f4,a4,c5]@23 [b3,f4,b4,e5]@24 e5@4 [g5,b5] ~@3 [e5,g5]@15 ~ [c5,e5]@3, ~@21 e4@23 ~@73 g5@3 ~@24]/6", // C Dm7 G Em G F E G …
  AJ: "~ g5@2 ~@2 [c5,e5]@15 ~ [f4,a4]@3, ~ e5 ~@22", // C F
  AK: "[~ [a4,c5] ~@3 [f4,a4]@15 ~@13 g4@12 [c4,e4,g4]@23 ~ [a3,c4,g4]@23 [g#3,d4,f4]@23 ~ [f4,g#4,c5]@4, ~@7 [f3,b3,e4]@8 ~@25]/5", // Am F C Am7 Ddim Fm E
  AL: "[~@4 [e4,g4,c5]@8 [d4,f4,c5]@8 [c4,e4,g4]@23 ~ [a3,c4,g4]@24 [g#3,d4,f4]@23 ~ [f4,g#4,c5]@4]/4", // C Dm7 C Am7 Ddim Fm
  AM: "[~@4 [e4,g4,c5]@8 [d4,f4,c5]@7 ~ [e4,g4,b4]@23 ~ [g4,b4,e5]@15 ~ [g4,b4,d5]@8 [f4,a4,c5]@23 ~ [b3,f4,b4,e5]@24 [e5,g5]@3 [g5,b5]]/5", // C Dm7 Em G F E Em G
  AN: "[~@4 [e5,g5]@15 [c5,e5]@4 g5@2 ~@3 [c5,e5]@15 ~ a4@3 [a4,c5], ~@23 e5 ~@19 f4@5]/2", // Em C Am
  AO: "[~@4 [f4,a4]@15 ~@12 g4@12 [g3,c4,e4]@4 [g3,d4] ~@3 [g3,c4,e4]@15 ~ [a3,c4,e4]@4 [g3,c4,e4], ~@19 [f3,b3,e4]@24 ~@4 b3@2 ~@23]/3", // F C G5 C Am C E
  AP: "[~@3 [a3,c4,e4]@15 ~ [a3,c4,f4]@4 [c4,e4] ~@3 [a3,c4,f4]@14 ~@2 [g3,b3,d4]@3 ~ [f3,a3,c4]@2 ~@2 [g3,b3,d4]@13 ~@3 [g3,c4,e4]@3 ~ [b3,d4]@2 ~@2 [g3,c4,e4]@15 ~ [a3,c4,e4]@4 [g3,b3,d4], ~@23 g3@2 ~@46 g3 ~@24]/4", // Am F C F G F G C …
  AQ: "~@3 [a3,c4,e4]@13 ~@3 [a3,c4,f4]@3 [c4,e4] ~, ~@11 g3", // Am F C
  AR: "[~@3 [a3,c4,f4]@14 ~@2 [g3,b3,d4]@24 [g3,c4,e4]@3 g3 [b3,d4]]/2", // F G C Bm
  AS: "~@2 [g3,c4,e4]@15 ~ [a3,c4,e4]@4 [g3,c4,e4] ~", AT: "~@2 [a3,c4,e4]@15 ~ [a3,c4,f4]@4 [g3,e4] ~, ~@11 c4",
  AU: "~@2 [a3,c4,f4]@14 ~@2 [g3,b3,d4]@3 ~ [f3,a3,c4]@2", // F G F
  AV: "~@2 [g3,b3,d4]@13 ~@3 [g3,c4,e4]@3 ~ [b3,d4]@2, ~@22 g3 ~", AW: "~@2 [g3,c4,e4]@16 ~ [a3,c4,e4]@4 [g3,b3,d4]",
  AX: "~@4 [c4,e4]@15 ~@2 [a3,c4,f4]@3, ~ a3@5 ~@2", AY: "~ [g3,c4,e4]@2 ~@3 [a3,c4,f4]@17 ~",
  AZ: "[~@2 d4@35 ~@20 e4@39, ~ [g3,b3]@36 c3@59, ~@13 e3@19, ~@5 g3@7, ~@7 d4@9]/4", // G
})).s("gm_epiano1").gain(0.2).pan(0.6)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@4 A B@3 C ~@11 D E F G H I@3 J@2 K L@8 ~ M@4 N O@2 P@8 ~@12 Q@5 R@4 S T@2 U@3 V@7 W@8 X@6 Y@4
>`.pickRestart({
  A: "~ [a#3,d#4,g4,d5]@7", B: "[~@2 [g3,c4,d#4,a#4]@25 [g#3,c4,d#4,g4]@34 ~ [g#3,c4,f4]@10]/3",
  C: "~ [e1,c#3,e3] ~@22, ~ c4@23", D: "~ g5@11", E: "~ d6@11 c6@12", F: "~ f5@23", G: "~ a5@11 ~ g5@11", H: "~ g3",
  I: "[c4@12 e4@10 ~ f4@29 ~@20]/3", J: "[~@12 g4@11 c5@11 ~@2 e5@11 ~]/2", K: "f5",
  L: "[~@24 g4@71 [b3,f4,b4,e5]@24 [c4,e4,a4,d5]@23 [g#3,c4,f4,c5]@23 ~ [c4,e4,g4,c5]@23 ~ [a#3,e4,g4]@2, ~@23 [c4,g5]@71 ~@98]/8", // E Am Fm C Edim C5
  M: "[[f4,a4,c5]@47 [f4,g#4,c5]@48 ~]/4", N: "[g3,g4]@23 [a3,a4]", O: "[~@23 [b3,b4]@24 [a#3,a#4]]/2",
  P: "[~@23 [f4,a4,c5]@47 [f4,g#4,c5]@48 [c4,f4,a4]@24 ~ [c#4,f#4,a#4]@23 ~ f4@25, ~@83 [c4,a4]@13]/8", // F Fm F F# F
  Q: "[~@21 g5@23 d6@12 c6@12 f5@24 a5@11 ~ g5@13 ~@3]/5", R: "[~@8 g3@12 c4@12 e4@10 ~ f4@30 ~@23]/4",
  S: "~@7 g4@12 c5@5", T: "[~@7 e5@11 ~ f5@29]/2", U: "[~@19 [c4,g4,g5]@53]/3",
  V: "[~@18 [b3,f4,b4,e5]@24 ~ [c4,e4,a4,d5]@24 [a3,e4,g4,c5]@24 [a3,c4,f4,c5]@23 ~ [b3,d4,g4,d5]@24 [c4,g4,c5]@29]/7", // E Am Am7 F G C5
  W: "[~@19 [c4,f4,c5]@24 [b3,f4,b4]@24 [c4,g4,c5]@48 [c4,f4,c5]@24 [b3,f4,b4]@23 ~ [g4,c5]@29, ~@27 c4@5]/8", // F5 Bdim C5 F5 Bdim C5
  X: "[~@18 [c4,f4,c5]@23 [b3,f4,b4]@25 [c4,g4,c5]@50 [c4,f4,c5]@28]/6", // F5 Bdim C5 F5
  Y: "[~@2 [b3,b4]@37 [c4,e4,a4,d5]@57, ~ f4@37 ~@58]/4", // B Am
})).s("gm_string_ensemble_1").gain(0.26)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A@4 B@9 C B@2 D@9 E@4 F@2 G F@2 H I J@9 K ~ L@9 M@5 N M@2 O@13 P Q@5 R Q@3 S T@3 U Q M ~ V W ~@2
>`.pickRestart({
  A: "~ x ~@6", B: "~ x ~@10", C: "~ x ~@9 x", D: "~ x ~@22", E: "x", F: "x ~@4 x", G: "x!2", H: "x ~@18 x ~@4",
  I: "x ~@18 x ~@3 x", J: "~@19 x ~@3 x", K: "~@18 x ~@4 x", L: "~@11 x", M: "~@7 x", N: "~@17 x ~@3 x ~@2", O: "~@5 x",
  P: "~@15 x ~@4 x ~@3", Q: "~@19 x ~@4", R: "~@11 x ~@7 x ~@4", S: "~@6 x ~@4 x ~@2 x ~@4 x ~@4", T: "~@3 x",
  U: "~@5 x ~@3 x ~@2", V: "~ x ~@8 x ~", W: "~@2 x ~@4 x ~@16",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A B A@2 B@10 C D C@8 E@7 ~ E@3 F@10 G ~@2 G@8 H@7 I H J H J@9 K@3 L K@6 M@7 J G N ~@3
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@7 x ~@4", C: "~@13 x ~@10", D: "~@13 x ~@3 x ~@6", E: "~ x", F: "~@11 x ~@12", G: "~@5 x ~@6",
  H: "~@3 x ~@4", I: "~@9 x ~@3 x ~@10", J: "~ x ~", K: "~@7 x ~@16", L: "~@7 x ~@3 x ~@12", M: "~ x ~@2", N: "~@5 x",
})).gain(0.32)

// drums · clap
const clap = s("cp").struct("<~@91 [~@7 x ~@16] ~@7 [~ x ~@2] ~@7>").gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@55 [~@3 x] ~@51>").gain(0.56)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@7 A B C D E F G F@8 H I J I J@3 I J@2 K L@6 M N@2 O P Q@3 R Q@2 S@3 T ~ U F V F@3 V F@2 W J@6 X J X Y L@2 Z L@5 AA
  AB AC B R B@2 AD AE B@2 AF AG F@2 AH AI AJ AK AL AM ~@3
>`.pickRestart({
  A: "~@15 x ~@3 x ~@4", B: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x", C: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4",
  D: "~@3 x ~@3 x ~@2 x ~@4 x ~@3 x ~@3 x", E: "~@3 x ~@3 x ~@3 x ~@2 x ~@4 x ~@3 x", F: "~ x ~ x ~ x ~ x ~ x ~ x",
  G: "~ x ~ x ~ x ~ x ~ x ~@2", H: "~ x ~@3 x ~@3 x ~@3 x ~@4 x ~@2 x ~@2", I: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@6",
  J: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", K: "~ x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3", L: "x!6", M: "x!5 ~",
  N: "x ~ x ~ x ~ x ~ x!3 ~", O: "x ~@3 x ~@3 x ~@2 x ~@4 x ~ x!2 ~@4", P: "x ~@3 x ~@2 x ~@3 x ~@3 x ~@2 x!2 ~@3 x",
  Q: "~@3 x ~@3 x ~@3 x ~@3 x ~@2 x!2 ~@3 x", R: "~@3 x ~@3 x ~@3 x ~@7 x ~@3 x",
  S: "~@3 x ~@3 x ~@3 x ~@3 x ~ x ~ x ~@3 x", T: "~@3 x ~@3 x ~@2 x ~@3 x ~@2 x!2 ~@5", U: "~@11 x",
  V: "~ x ~ x ~ x ~ x ~@3 x", W: "~ x ~@4 x ~@2 x ~@3 x ~@3 x ~@3 x ~@2", X: "~ x ~@3 x ~@3 x ~@3 x ~@7 x ~@2",
  Y: "x ~@3 x ~@4 x ~@2 x ~@3 x ~@3 x ~@3", Z: "x!4 ~ x", AA: "x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x",
  AB: "~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x", AC: "~@4 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x",
  AD: "~@3 x ~@7 x ~@3 x ~@3 x ~@3 x", AE: "~@15 x ~@3 x ~@3 x", AF: "~@2 x ~@3 x ~@4 x ~@3 x ~@3 x ~@4",
  AG: "~@19 x ~@3 x", AH: "~ x ~@3 x ~ x ~ x ~ x", AI: "~@7 x ~ x ~ x", AJ: "~@2 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x",
  AK: "~@3 x ~@4 x ~@3 x ~@4 x ~@3 x ~@2", AL: "~ x ~@4 x ~@3 x ~@4 x ~@4 x ~@3", AM: "~ x ~@10",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@55 [~@7 x ~@4] ~@51>").gain(0.48)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@7 A ~ A ~@3 B ~@9 C ~ C ~@3 C ~@9 D ~@7 E ~@6 B ~@2 F ~@3 F ~@9 G ~ H ~@3 H ~@9 E ~@2 I J ~@2 A K ~@2 L M ~@3 N@2
  ~@2
>`.pickRestart({
  A: "~@23 x", B: "~@11 x", C: "~@7 x", D: "~@5 x", E: "~@5 x ~@2", F: "~@3 x", G: "~@17 x ~@6", H: "~@2 x",
  I: "~@7 x ~@16", J: "~@3 x ~@7 x ~@12", K: "~@7 x ~@4", L: "~ x ~@2", M: "~ x ~@3 x ~@6", N: "~ x ~",
})).gain(0.24)

// drums · high tom
const high_tom = s("ht").struct("<~@55 [~@5 x ~@6] ~@51>").gain(0.56)

stack(bass, epiano1, string_ensemble_1, kick, snare, clap, low_tom, hihat, mid_tom, open_hat, high_tom)

More by The Shadows