Strudelify

Johnny B. Goode

Scorpions

KeyB majorTempo170 bpm
0:00/0:00
// Johnny B. Goode — Scorpions
// 170 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 110 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(170/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@3 A ~ B C D@2 E F G@2 H I J K L M N O P Q N R H I J K L M N O P Q N R H I J K L M N O P Q N R H I J K L M N O P Q N
  R A S T U L M N O P Q N R A S T U L M N O P Q N R H I J K L M N O P Q N R H I J K L M N O P Q N V@2
>`.pickRestart({
  A: "b2 ~@3", B: "b2!2 g#2!2 e2!2 f#2!2", C: "e2!2 f#2!2 e2 f#2 g#2 a2", D: "b2!2 f#2 g#2", E: "c#3 d#3 f#2 a#2",
  F: "b2 c#3 e2 g#2", G: "b2!2 d#3!2 f#3 f#2 g#2 a#2", H: "b2@4 g#2@4 f#2@3 ~ g#2@4", I: "d#2 e2 f#2 a#2",
  J: "b2 d#3 f#3 f#2", K: "b2@4 b2@4 f#2@4 b2@3 ~", L: "e2 g#2 b2 c#3", M: "e2 g#2 b2 g#2", N: "b2 g#2 f#2 g#2",
  O: "d#2@4 e2@4 f#2@4 g#2@3 ~", P: "c#3@3 ~ c#3@4 f#2@4 g#2@4", Q: "c#3@3 ~ c#3@4 f#2@4 g#2@3 ~", R: "d#2 e2 f#2 g#2",
  S: "e2 ~@3", T: "b2@3 ~@5 b2@3 ~@5", U: "b2@3 ~ b2@3 ~ b2@3 ~ b2@3 ~", V: "[b2@4 f#2@2 b2@21 ~@5]/2",
})).s("gm_acoustic_bass").gain(0.36)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@17 A@2 B C D E F G@2 H@2 I J K L M@4 N O P Q R S T U V W X@2 Y Z AA AB AC AD AE AF AG@2 AH@3 AI AJ AK AL AM T U V W
  X@2 AN AO AJ AK AP AQ AR AS AT@2 AU AV@3 P Q AW AX AY U V W X@2 Y AZ H@2 I J K L BA BB BC BD BE@2
>`.pickRestart({
  A: "[[e4,g#4,b4]@2 ~ [e4,g#4,b4]@2 ~ [e4,b4]@2 ~ [e4,g4,b4]@2 ~ [e4,g4,b4]@2 ~ b4@2 ~ g#4 ~ [e4,g4,b4]@2 ~@2 g#4 ~@2 g#4 ~@2 [e4,b4]@2, ~@6 [g4,g#4] ~@2 g#4 ~@2 g#4 ~ [e4,g4]@2 ~ [e4,g4,b4]@2 ~@4 [e4,g4,b4]@2 ~ [e4,g4,b4]@2 ~@2 g#4 ~, ~@15 g#4 ~@13 g4@2 ~]/2", // E E5 Em E5 G#maj7 Em
  B: "~@7 f#5 d6 d#6@2 f#5 [e6,g#6]@3 f#5, ~@8 f#6@3 ~@5", C: "d6 [d#6,f#6]@2 f#5 [c#6,e6]@2 ~ [b5,d#6]@6 ~ f#5 ~",
  D: "[d#6,f#6]@3 ~@11 f#5 ~", E: "[d#6,f#6]@3 f#5 f6@2 ~ [c#6,e6]@5 ~@3 f#5, ~@4 d6 ~@11",
  F: "[d6,f#6]@3 ~ [e6,g#6]@3 f#5 [d#6,f#6]@6 ~ f#5, d#6 ~@15", // D E D#m
  G: "[[d#6,f#6]@3 f#5 [c#6,e6]@3 b5@4 [d#5,f#5] ~@3 [f#5,a5]@2 d#5 [a5,b5] ~ d#5 [a5,b5] d#5 [a5,b5] d#5 ~ [f#5,a5,b5] d#5 [a5,b5] d#5 ~@2, ~@7 d#6@8 ~@17, ~@11 b5@4 [d#5,b5] ~@16]/2", // D#m C#m D#m F#m Asus2 B7 Asus2 G#m
  H: "[[f#5,b5]@2 ~ d#5 [e5,g#5]@2 ~ c#5 d5 d#5 ~ d#5 [f#5,a5,b5] ~@2 [d#5,f#5,a5,b5]@3 d#5 [f#5,b5] d#5 [f#5,b5] ~ d#5 [f#5,b5] d#5 ~ b5 d#5 ~ b5 d#5, d#5 ~@7 f#5@2 ~@22]/2", // B5 E B7 B5
  I: "[f#5,b5]@3 d#5 ~ g#5@2 ~ d#5 ~ [a5,b5] ~@3 [b5,f#6,a6] ~, a5 ~@3 e5@2 ~ [d5,f#5]@4 ~@5", // B5 Asus2 B7 D
  J: "[b5,f#6,a6] b5 [f#6,a6] [b5,f#6,a6]!2 ~ [b5,f#6,a6]!2 [f#6,a6] ~ [b5,f#6,a6]!3 ~ [b5,f#6,a6] b5", // B7 F#m B7 F#m B7
  K: "[f#6,a6]@2 ~ b5 [e6,g#6]@2 b5 ~@2 d#6 ~ b5!2 ~ [b5,f#6,b6] ~, ~@8 [d6,f#6]@3 ~@5", // F#m E B5 D
  L: "[b5,f#6,b6]!3 ~ [b5,f#6,b6]!2 ~ [b5,f#6,b6]!3 ~ [b5,f#6,b6]!2 b5 [f#6,b6] [b5,f#6,b6]", // B5
  M: "[[b5,f#6,b6]!2 ~ [b5,f#6,b6]!2 [b5,b6] f#6 [b5,f#6,b6]!3 ~ [b5,f#6] ~ d#6 ~@2 [d#6,f#6]@4 [d6,f6]@3 [c#6,e6]@5 ~@3 [f#5,a5,b5]@5 ~ d#6 ~ [e6,g#6] [d#6,f#6]@3 c#6 [c#6,e6]@2 ~@5 f#4 ~@3 f#4 d5 d#5@2 f#4 [c#5,e5]@3 f#4, ~@12 [d6,f#6]@2 ~ [e6,g#6]@2 ~@19 [d6,f#6]@2 ~@9 [b5,d#6]@8 ~ f#5@2 ~@6]/4", // B5 B B5 D#m Dm C#m B7 E …
  N: "[b4,d#5]@2 ~ f#4 [d#5,f#5] ~@2 [d#5,f#5]@6 ~@3", // B D#m
  O: "~@3 f#5 ~ d#6 ~@2 d#6 ~@6 f#5, ~@4 [d6,f#6]@2 ~ [d6,f#6]@8 ~", // D
  P: "[d#6,f#6]@2 ~ f#5 [e6,g#6]@2 [d#6,f#6]@7 ~@2 f#5", Q: "[d#6,f#6]@3 f#5 [e6,g#6]@2 ~ [d#6,f#6]@7 ~ f#5",
  R: "d6 ~ f#5 ~ [e6,g#6]@2 ~ d#6@4 ~@3 f#6 ~, f#6 ~@2 f#6@2 ~@3, ~ d#6@2 ~@13", // E
  S: "[g#6,b6]!3 ~ [g#6,b6]!3 ~ [g#6,b6]!3 ~ [g#6,b6]!2 ~ [g#6,b6]", // G#m
  T: "[g#6,b6]@2 ~@2 [e6,g#6]@3 c#6 d6 d#6@2 c#6 [c#6,e6]@2 ~ f#5, ~@4 f#6 ~@3", // G#m E C#m
  U: "[b5,d#6]@4 ~@3 f#5 [d#6,f#6]@2 ~ f#5 [c#6,e6]@3 f#5", V: "[b5,d#6]@2 ~ f#5 [d#6,f#6]@2 ~ [d#6,f#6]@5 ~@4",
  W: "~@4 [c#6,e6] ~@2 [c#6,e6]@8 a#5, ~@3 a#5@2 ~@2 [a#5,g#6]@6 ~@3, ~@2 g#6 ~@5", // C#m A#7
  X: "[~ d#6 ~ a#5 [c#6,e6,g#6]@3 a#5 ~ d#6 ~ a#5 [c#6,e6] ~@2 [b5,d#6]@6 ~@2 d#5 [f#5,a5]@3 d#5 [e5,g#5]@3 c#5, [d6,f#6]@3 ~@5 [d6,f#6]@3 ~@21]/2", // C#m B F#m E D
  Y: "d5 d#5 ~@2 f#4 ~@5 b6 ~ d7 ~@2 e7, f#5@3 ~@3 f#4@6 ~@4", Z: "[b6,f#7]!3 ~ [b6,f#7]!3 ~ [b6,f#7]!2 ~ [b6,f#7]!4 ~",
  AA: "[b6,f#7]@3 f#6 [b6,e7]@3 f#6 b6@2 ~ f#6 d7 ~@2 e7, ~@8 d7 ~@7", // B5 E5
  AB: "f#7@2 b6 [b6,f#7]!3 ~ [b6,f#7]!4 ~ [b6,f#7] b6 [f#6,b6] ~, b6 ~@12 f#7@2 ~", // B5
  AC: "[b6,f#7]@2 ~ f#6 [b6,e7]@2 ~ [f#6,b6,d7]@3 f#6 ~ b6@2 f#6 ~", // B5 E5 Bm
  AD: "[b6,f#7]!2 f#7 [a#6,f7] [b6,f7,f#7] ~ [b6,d7] ~ b6@2 [f#6,b6] ~ b6 ~ [b6,d7] ~", // B5 A#5 B Bm B5 Bm
  AE: "[f#6,f#7] f#6@2 f#7 [e6,e7] ~@2 [d6,d7] ~ [b5,b6]@3 b4@2 ~ b4, ~ f#7 ~@14", // F# E D B
  AF: "[f#5,a5]@3 b4 [e5,g#5]@2 b4 [d5,f#5]@4 ~@5, ~@7 d#5 ~@8", // F#m E D
  AG: "[~@2 d6 ~ d#6 [f#5,d6] ~ d#6 ~ d#6 ~@2 [e5,e6]@2 ~ [e6,g#6]@2 g#5 [e6,g#6] g#5 [e6,g#6] [g#5,e6,g#6] ~ [g#5,e6,g#6] g#5@2 ~@5 f#5, ~ f#6 ~ f#6 ~@12, ~@3 f#5@2 ~@3 [f#5,d6,f#6]@3 ~@4 g#5 ~@16]/2", // D E C#m D
  AH: "[d6 d#6 ~ f#5 [e6,g#6]@3 g#5 d6 d#6 ~ f#5 [c#6,e6] ~ [b5,d#6]@7 ~@2 d5 [d5,e5,b5]@3 d5 [d5,f5,b5]@2 ~ b5@3 [f#6,b6] ~ [b5,f#6,b6] ~ [b5,f#6,b6] ~ [b5,f#6,b6] ~ [b5,f#6,b6] ~ [b5,f#6,b6] ~ [d6,a6,d7] ~, f#6@2 ~@6 f#6@2 ~@21 [d#5,f#5]@6 ~@11, ~@17 b5 ~@6]/3", // E C#m B E7 Bdim B5 D5 D#m
  AI: "f7 c7 ~ f#6 ~@12, [d#4,f#4,a4,b4,f#6,c#7,f#7]@3 ~@13", AJ: "[d4,e4,g#4]@3 ~@13",
  AK: "[d#4,f#4,a4,b4]@3 ~@5 [d#4,f#4,a4,b4]@2 ~@6", // B7
  AL: "[d#4,f#4,a4,b4] ~ [d#4,f#4,a4,b4] ~ [d#4,f#4,a4,b4] ~ [d#4,f#4,a4,b4] ~", // B7
  AM: "~ [g#6,b6]!2 ~ [g#6,b6]!3 ~ [g#6,b6]!3 ~ [g#6,b6]!2 ~ [g#6,b6]", // G#m
  AN: "d5 d#5 ~@2 [f#4,f#5] ~ [f#4,f#5]@6 ~@4, f#5@3 ~@13", AO: "[d#4,f#4,a4,b4]@3 ~@13",
  AP: "[d#4,f#4,a4,b4]@2 ~ [d#4,f#4,a4] [d#4,f#4,a4,b4]@2 ~ [d#4,f#4,a4] [d#4,f#4,a4,b4]@2 ~ [d#4,f#4,a4]!2 ~ [d#4,a4]@2, ~@12 b4@2 f#4 ~", // B7 D#dim B7 D#dim B7 D#dim
  AQ: "~@4 [e5,g5]@3 ~ [f#5,a5]@3 [e5,g#5]@4 ~, ~@4 g#5 ~@11", // Em F#m E
  AR: "~ [f#5,g#5] ~@2 f#5@2 ~ [e5,g#5]@3 ~ [g#4,b4,d5] ~@4, [g5,b5]@3 ~ a5 ~@11", AS: "[f#4,a4,b4]@9 ~@5 [a4,b4] f#4",
  AT: "[~@7 [f#4,a4]@4 ~@4 [g#4,a#4,c#5,e5]@9 ~@2 [g#4,a#4,c#5] e5 ~@4, ~@3 b4@2 ~@11]/2", // F#m A#m7b5 A#m7
  AU: "~@6 [g#4,a#4,c#5,e5] ~@9", // A#m7b5
  AV: "[f#5 ~ d#6 ~ [e6,g#6]@3 g#5 ~ d#6 ~ f#5 ~ e6@2 ~@8 f#4 b4@3 f#4 c#5@2 ~@5 f#5 ~ d#6 ~@2 d#6 ~@6 f#5, ~ [d6,f#6]@3 ~@4 [d6,f#6]@3 ~@2 c#6 ~ [d#5,b5,d#6]@9 d#5@7 ~@5 [d6,f#6]@2 ~ [d6,f#6]@8 ~, ~@28 a4 ~@2 [b4,d#5]@7 ~@10]/3", // E D G#m D B
  AW: "d6 ~ f#5 ~ [e6,g#6]@2 ~ d#6@4 ~@5, f#6 ~@2 f#6@2 ~@3, ~ d#6@2 ~@13", AX: "[g#4,b4,d5]@9 ~@6 [b4,d5,e5]",
  AY: "~@4 [e6,g#6]@3 c#6 d6 d#6@2 c#6 [c#6,e6]@2 ~ f#5, ~@4 f#6 ~@3", // E C#m
  AZ: "~ d#5 [a5,b5] ~ d#5 [a5,b5] d#5 [a5,b5] d#5 ~ [f#5,a5,b5] d#5 [a5,b5] d#5 ~@2", // Asus2 B7 Asus2
  BA: "[b5,f#6,b6]!2 ~ [b5,f#6,b6]!2 [b5,b6] f#6 [b5,f#6,b6]!3 ~ [b5,f#6] [b5,f#6,b6] ~ [f#6,b6] ~", // B5 B B5
  BB: "[f#6,d#7,f#7]!2 [g#6,d7] [e7,f#7,g#7] [f#6,d#7,f#7]!2 g#7 [g#6,e7] [f#6,d#7,f#7]!2 ~ [g#6,e7,g#7] [f#6,d#7,f#7]!2 ~ [g#6,e7,g#7]", // D#m G#dim E D#m C#m D#m C#m D#m …
  BC: "[f#6,d#7,f#7]!2 ~ [g#6,e7,g#7] [f#6,d#7,f#7]!2 ~ [g#6,d7,e7,g#7] [f#6,d#7,e7]@2 ~ e7 [e7,g#7]@2 [c#7,d#7,f7,f#7] [f#6,g#6,a#6,c7], ~@8 g#7 ~@3 [g#6,d7] ~@3", // D#m C#m D#m E7 D#m E D#m7 G#7 …
  BD: "[c6,c#6,d#6,f6] [f#5,g#5,a#5] [c#5,d#5,f5] [f#4,g#4,a#4,c5] [d5,f#5]@2 d#5 f#4 d#5@3 f#4 e5@2 f#4 ~, ~@4 [f4,f#4] ~@11", // C#maj7 F# C# G#7 D F#maj7
  BE: "[[b4,d#5]@3 f#4 [a#4,d5]@2 ~ [a4,b4,d#5]@20 ~@5, ~@3 f#4@10 ~@3]/2", // B A# B7
})).s("gm_piano").gain(0.31).pan(0.4)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A B C D E F G F G H I J@2 ~@12 K ~ K ~ K ~ K ~ L@2 ~@14 M ~ M ~ M ~ M ~ N O ~ A P@2 Q R S T U V W@3 A P@2 Q X Y Z AA
  AB AC AD ~@14 AE AF AE AF AE AF AE AF AE AG AH AI@2
>`.pickRestart({
  A: "~@5 d#4 f#4 g#4", B: "[f#4,b4]!8", C: "[f#4,b4] a4 f#4 g#4 d4 d#4 b3!2",
  D: "[f#3,b3]!2 ~ [f#3,b3]!2 ~ [b3,d#4]!2", E: "~@2 [b3,f#4]@2 [b3,g#4]@2 [b3,f#4]@2 [b3,d#4]@2 b3@2 f#3@3 ~",
  F: "f#4@2 [f#4,b4] f#4@2 [f#4,b4] f#4@2", G: "[f#4,b4] f#4@2 [f#4,b4] f#4@2 [f#4,b4]@2",
  H: "f#4@2 b4 a4 g#4 f#4 c#5 b4", I: "a4 g#4 f#4 e4 d#4 b4 a4 g#4",
  J: "[f#4@4 f#4@2 [f#4,b4]@2 f#4@2 [f#4,b4]@2 e4@2 d#4@5 ~@13]/2", // B5
  K: "~@2 [f#4,a4]@2 [f#4,a4]@2 [f#4,a4]@2 [f#4,a4]@2 [f#4,b4]@5 ~", L: "[~ [f#4,a4]!4 [f#4,b4]@2 [e4,g#4]@2 ~@7]/2",
  M: "~ [f#4,b4]!6 ~", N: "~ [f#4,b4]!7", O: "[f#4,b4]!4 ~@4", P: "[f#4,b4]!5 f#4 d#4 b3",
  Q: "b4 f#4 d#4 b3 b4 f#4 d#4 b3", R: "b4 b3 b4 b3 b4 b3 [f#4,b4] b3", S: "~ d#4@2 b4 f#4 d#4 c#5 b4",
  T: "a4 g#4 f#4 e4 d#4 f#4 b4!2", U: "b4 g#4 f#4 d#4 b4!4", V: "b4 g#4 f#4 d#4 b4 g#4 f#4 d#4",
  W: "[b4!5 g#4 f#4 d#4@2 [f#4,a4]@2 [f#4,a4]@2 [f#4,a4]@2 [f#4,a4]@2 [d#4,f#4]@2 ~ [e4,g#4] [d#4,f#4] ~@2]/3", // F#m D#m E D#m
  X: "[d#4,f#4] [f4,g#4]@2 [f4,g#4]@2 [f4,g#4]@2 [f4,g#4]", Y: "~@2 [f#4,a#4]@2 [f#4,b4] [f#4,a#4] ~ [f#4,b4]",
  Z: "[f#4,a#4]@3 ~ [f#4,b4]@2 [f#4,a#4]@2 ~@2 [f#4,b4]@2 [f#4,a#4]@2 ~@2", // F# B5 F# B5 F#
  AA: "b4@3 ~ [f#4,a#4]@3 ~ [f#4,b4]@2 [f#4,a#4]@2 ~@2 [f#4,b4]@2", // F# B5 F# B5
  AB: "[f#4,a#4]@2 ~@2 [f#4,b4]@2 [f#4,a#4] ~@3 [f#4,b4]@2 [f#4,b4]@2 [f#4,b4]@2", // F# B5 F# B5
  AC: "[f#4,d#5] [f#4,b4] [g#4,c#5] [f#4,b4] [f#4,a4] [f#4,g#4] [d#4,f#4] [c#4,e4]", // D#m B5 C#5 B5 F#m F#sus2 D#m C#m
  AD: "[d#4,f#4] [f#4,b4] [d#4,f#4] [f#4,b4] [d#4,f#4]!2 [c#4,e4] [b3,d#4]", AE: "~@5 [f#4,a4]!3",
  AF: "[f#4,a4] [f#4,b4] [f#4,a4]@4 ~@2", AG: "[f#4,a4] [f#4,b4]@2 [e4,g#4]@2 ~@3",
  AH: "[f#3,b3] [f#3,b3]@3 [f#3,b3] [f#3,b3]@3", AI: "[[f#3,b3]@2 [f#3,b3]@4 [f#3,b3]@21 ~@5]/2",
})).s("gm_electric_guitar_clean").gain(0.36).pan(0.6)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note("<~@3 A B ~@56 C@2 D E ~@8 C@2 D ~@34>".pickRestart({
  A: "~@2 [f#3,b3] ~@2 [f#3,b3] ~@2", B: "[b3,d#4] ~@7", C: "~@5 d#4 b3 f#3", D: "f#4 d#4 b3 f#3 f#4 d#4 b3 f#3",
  E: "f#4 f#3 f#4 f#3 f#4 f#3 ~ f#3",
})).s("gm_electric_guitar_clean").gain(0.21).pan(0.6)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean_3 = note(`<
  ~@5 A@2 B C D A B C E@4 F@2 E@2 G@2 E@6 F@2 E@2 G@2 E@6 F@2 E@2 G@2 E@6 F@2 E@2 G@2 E@2 ~@4 F@2 E@2 G@2 E@2 ~@4 F@2
  E@2 G@2 E@6 F@2 E@2 G@2 E@6 F@2 E@2 G@2 E H@2
>`.pickRestart({
  A: "[e3,b3]!2 [e3,c#4] c#4 [e3,b3]!2 [e3,c#4]!2", B: "[b2,f#3] b2 [b2,g#3]!2 [b2,f#3]!2 [b2,g#3]!2",
  C: "[b2,f#3] b2 [b2,g#3]!2 [b2,f#3]!2 [b2,g#3] [b2,f#3]", D: "[f#3,c#4]!2 [f#3,d#4] d#4 [f#3,c#4]!2 [f#3,d#4]!2",
  E: "[b2,f#3] b2 [b2,g#3] [b2,f#3]!3 [b2,g#3] [b2,f#3]", F: "[e3,b3]!2 [e3,c#4] b3 [e3,b3]!2 [e3,c#4] [e3,b3]",
  G: "[f#3,c#4]!2 [f#3,d#4] c#4 [f#3,c#4]!2 [f#3,d#4] [f#3,c#4]", H: "[[b2,f#3]@2 b2@2 [b2,g#3]@2 [b2,f#3]@21 ~@5]/2",
})).s("gm_electric_guitar_clean").gain(0.31).pan(0.4)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_4 = note(`<
  ~@5 A@2 B@2 C A B@6 A@2 B@2 C@2 B@6 A@2 B@2 C@2 B@6 A@2 B@2 C@2 B@6 A@2 B@2 C@2 B@2 ~@4 A@2 B@2 C@2 B@2 ~@4 A@2 B@2
  C@2 B@6 A@2 B@2 C@2 B@6 A@2 B@2 C@2 B@2 ~
>`.pickRestart({
  A: "~@3 e3 ~@4", B: "~ f#3 ~@6", C: "~@3 f#3 ~@4",
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.4)

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

// drums · clap
const clap = s("cp").struct("<~@3 A B C@56 A@2 D E C@8 A@2 D E C@31 F ~>".pickRestart({
  A: "x", B: "~@12 x ~@2 x", C: "~ x ~ x", D: "x!2", E: "x!4", F: "~@2 x!2 ~@4",
})).gain(0.58)

// drums · hihat
const hihat = s("hh").struct("<~@3 A ~@57 A@2 B C ~@8 A@2 B C ~@32 D>".pickRestart({
  A: "x", B: "x!2", C: "x!4", D: "~ x ~@6",
})).gain(0.39)

// drums · open hat
const open_hat = s("oh").struct("<~@4 [~@3 x] ~@103 [~@3 x] ~>").gain(0.39)

// drums · ride
const ride = s("rd").struct(`<
  ~@5
  [x ~@3 x ~@2 x!2 ~@3 x ~@2 x]!56
  ~@4
  [x ~@3 x ~@2 x!2 ~@3 x ~@2 x]!8
  ~@4
  [x ~@3 x ~@2 x!2 ~@3 x ~@2 x]!31
  [x ~ x!2 ~@4]
  ~
>`).gain(0.45)

stack(
  bass, piano, electric_guitar_clean, electric_guitar_clean_2, electric_guitar_clean_3, electric_guitar_clean_4, kick,
  clap, hihat, open_hat, ride
)

More by Scorpions