Strudelify
Welcome Home (Sanitarium) cover art

1986 · Master Of Puppets

Welcome Home (Sanitarium)

Metallica

KeyE minorTempo98 bpm
0:00/0:00
// Welcome Home (Sanitarium) — Metallica
// 98 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 9, 4/4 at bar 10, 2/4 at bar 12, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 152 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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 · "A.BASS 2"
const bass = note(`<
  ~@5 A@3 B C D@2 E F C D@2 E F C D@2 G H C I@2 E J K L@2 G M N O P Q R S@2 T@2 S@2 U V@2 C D@2 E F C D@2 E M C I@2 E J
  K L@2 G M N O P Q R S@2 T@2 S@2 U V W X@2 Y@2 Z@2 AA AB AC AB AC AB AC AB AD AE AF AG AD AE AF AG AH AC AB AC AB AC AB
  AC AB AI AJ AK AL AF AG AK AL AF AG AK AL AF AG AK AL AF AG AK AL AF AG AK AL AF AG AM AN AO AG AP AQ AR AS AT AU Z@2
  AV
>`.pickRestart({
  A: "[~@8 a3@6 g3@5 ~ a3@3 ~ e3@24, ~@14 a3 ~@5 g3 ~@27]/3", B: "a3@6 b3@3 ~ e3@2 a3@3 ~, ~@6 a3 ~@5 g3 ~@3",
  C: "e2@3 e2 c3@3 c3", D: "[d3@3 d3 a2@3 g2@2 g2 a2@2 e2@3 e2]/2", E: "c3@3 c3 d3@3 d3", F: "a2@3 g2@2 g2 a2@2",
  G: "c3@6 b2 c3 d3@2 c3@2 b2@2 g2@2", H: "a2@3 g2@2 g2 f#2!2", I: "[d3@3 d3 a2@2 a2 g2@2 g2 a2@2 e2@3 e2]/2",
  J: "a2@2 a2 g2@2 g2 f#2!2", K: "e2@6 e2@2 c3@6 b2 c3", L: "[d3 c3 b2 g2 a2@3 g2@2 g2!2 f#2 e2@3 e2]/2",
  M: "a2!3 g2@2 g2 f#2!2", N: "e2!2 b2!2 e2!2 c3!2", O: "e2!2 d3!2 a2!3 g2", P: "g2!2 a2 f#2 e2!2 b2!2",
  Q: "e2!2 c3!2 e2!2 d3!2", R: "a2!3 g2!3 a2 f#2",
  S: "[e2@4 e2!2 g2 [f#2,g2] e2!2 c3 [b2,c3] e2!2 c3 b2@9 d3 [d3,e3] c3 b2 a2 g2 f#2 g2, ~@15 c3 ~@16]/2", // Gmaj7 Cmaj7 Dsus2
  T: "[e2@4 e2!2 g2 [f#2,g2] e2!2 c3 [b2,c3] e2!2 c3 b2@3 b2!6 c3 b2 g2@3 g2 f2@2, ~@15 c3 ~@16]/2", // Gmaj7 Cmaj7
  U: "e2@4 e2!2 g2 [f#2,g2] e2!2 c3 [b2,c3] e2!2 c3 ~", V: "b2",
  W: "d3 [d3,e3] c3 b2 a2 g2 f#2 g2 e2@4 e2!2 g2 [f#2,g2]", // Dsus2 Gmaj7
  X: "[e2!2 c3 [b2,c3] e2!2 c3@2 b2@16 d3 [d3,e3] c3 b2 a2 g2 f#2 g2]/2", Y: "e2/2", Z: "e2!16",
  AA: "a2 b2 ~ a2 b2 e2!11", AB: "a2 a#2 ~ a2 a#2 ~ a2 a#2 ~ a2 b2 e2!5", AC: "a2 a#2 ~ a2 a#2 e2!11",
  AD: "a2 b2@2 e2 e2@12", AE: "a2 b2 ~ d3 d3@12", AF: "a2 b2@2 f2 f2@12", AG: "a2 b2@2 c3 c3@4 c3 b2@2 b2 b2@4",
  AH: "e2!12 e3@3 [d3,d#3]", AI: "a2 b2 ~ e2 e2@4 e2 ~@7", AJ: "a2 b2 ~ d3 d3@4 d3 ~@7", AK: "a2 b2 ~ e2 e2@12",
  AL: "a2 b2@2 d3 d3@12", AM: "a2 b2@2 e2 e2@8 ~@4", AN: "a2 b2 ~ d3 d3@8 ~@4", AO: "a2 b2@2 f2 f2@8 ~@4",
  AP: "a2 b2@2 e2 e2@4 e2!2 ~ e2 e2@4", AQ: "a2 b2@2 d3 d3@4 d3!2 ~ d3 d3@4", AR: "a2 b2@2 f2 f2@4 f2!2 ~ f2 f2@4",
  AS: "a2 b2@2 c3 c3@4 b2!2 ~ b2 b2@4", AT: "b2!2 ~ b2 b2@4 b2!2 ~ b2 b2@4", AU: "b2 a2 g2 f#2",
  AV: "e3@3 [d3,d#3] c#3 ~@11", // D#maj7
})).s("gm_acoustic_bass").gain(0.57)

// other · piano · "A.PIANO 3"
const piano = note("<~@13 [~@3 g2] ~@4 [~@3 g2] ~@33 [~@3 g2] ~@99>").s("gm_piano").gain(0.48)

// chords · overdriven guitar · "E.GUITAR 2"
const overdriven_guitar = note(`<
  ~@5 A@2 B C D E@2 B F D E@2 B F D E@2 B C D G@2 B C D G@2 B C D G@2 B C H@6 I@2 J D G@2 B C D G@2 B C D G@2 B C D G@2
  B C D G@2 B C H@6 I@2 K L@2 M@4 ~@8 N O P Q N O P Q ~@9 R O N O P Q N O P Q N O P Q N O P Q N O P Q N O P Q N O P Q N
  O P S@3 T@3
>`.pickRestart({
  A: "[[g3,b3,d4,e4]@4 [a3,c#4,e4]@3 [g3,b3,d4]@3 [a3,d4,e4]@2 [g3,b3,e4]@4]/2", B: "[g3,b3,c4,e4] [g3,d4,e4]",
  C: "[a3,c#4,e4]@3 [g3,b3,d4]@3 [a3,d4,e4]@2", D: "[g3,b3,e4] [g3,b3,c4,e4]",
  E: "[[g3,d4,e4]@4 [a3,d4,e4]@3 [g3,b3,d4]@3 [a3,d4,e4]@2 [g3,b3,e4]@4]/2", // Em7 Asus4 G Asus4 Em
  F: "[a3,d4,e4]@3 [g3,b3,d4]@3 [a3,d4,e4]@2", // Asus4 G Asus4
  G: "[[g3,d4,e4]@4 [a3,c#4,e4]@3 [g3,b3,d4]@3 [a3,d4,e4]@2 [g3,b3,e4]@4]/2", // Em7 A G Asus4 Em
  H: "[~@6 [g3,b3,d4] [f#3,a#3,c#4] ~@2 [g3,c4,e4] [f#3,b3,d#4] ~@2 [g3,c4,e4] [f#3,b3]@11 ~@6, ~@15 d#4@8 ~@9]/2", // G F# C B C B5
  I: "[~@6 [g3,b3,d4] [f#3,a#3,c#4] ~@2 [g3,c4,e4] [f#3,b3,d#4] ~@2 [g3,c4]@12 ~@6, ~@14 e4@9 ~@9]/2", // G F# C B C5
  J: "[f#3,b3,d#4]@15 ~", K: "~@14 [g3,b3,d4] [f#3,a#3,c#4]",
  L: "[~@2 [g3,c4,e4] [f#3,b3,d#4] ~@2 [g3,c4]@12 ~@14, ~@6 e4@9 ~@17]/2", M: "[g#3,b3,e4]/4",
  N: "~ [f#3,a3,d4]@2 [g#3,b3,e4]@13", O: "[f#3,a3,d4] [g#3,b3,e4] ~ [f#3,a3,d4]@13",
  P: "~ [g#3,b3,e4] ~ [a3,c4,f4]@12 ~", Q: "[f#3,a3,d4] [g#3,b3,e4] ~ [g3,c4,e4]@7 ~ [f#3,b3,d#4]@4 ~",
  R: "[f#3,a3,d4]@2 [g#3,b3,e4]@13 ~", // D E
  S: "[[f#3,a3,d4] [g#3,b3,e4] ~ [g3,c4,e4]@7 ~ [f#3,b3,d#4]@24 ~ [a3,c#4,e4]@4 [g3,b3,d4]@4 [f#3,a#3,c#4]@4]/3", // D E C B A G F#
  T: "[[g#3,b3,e4]@34 [g#3,a#3,d#4] [g3,a3,d4] ~@12]/3", // E G#sus2 Gsus2
})).s("gm_overdriven_guitar").gain(0.24)

// other · drawbar organ · "ELEC ORG 2"
const drawbar_organ = note("<~@26 A B C ~ D@2 ~@2 E F@2 ~@7 G H ~@14 A B C ~ D@2 ~@2 E F@2 ~@7 G H ~@72>".pickRestart({
  A: "~@4 b4!3 g4", B: "a4@2 ~@2 b4@3 g4 d5@2 d5@2 d5@2 d5 c5", C: "d5@2 c5 b4@3 b4@6 ~@4",
  D: "[d5@2 d5@2 d5@2 d5 c5 d5@2 d5@4 b4@6 ~@12]/2", E: "~@11 b4@4 ~", F: "[b4@2 b4@2 b4!2 ~@2 b4@2 b4@4 e4@6 ~@12]/2",
  G: "~@2 g5 f#5", H: "f#5@2 g5 g5@5 ~@8",
})).s("gm_drawbar_organ").gain(0.37)

// other · drawbar organ · "ELEC ORG 2" · soft notes
const drawbar_organ_soft = note("<~@27 [~ b4 ~@6] [~@15 g4] ~@32 [~ b4 ~@6] [~@15 g4] ~@89>")
  .s("gm_drawbar_organ").gain(0.22)

// drums · kick
const kick = s("bd").struct(`<
  ~@6 A ~ B C@2 D E ~ C@2 D F@2 C@2 D G ~ C@2 H F I C@2 D J K C L D M N O P O B O Q O ~ R C@2 D F S C@2 H T ~ C@2 D F U
  C@2 D J K C L V M N O P O B O Q O W A X Y Z AA AB AC AD AE AF AG AH AI AJ AF AK AL AM AN AK AL AM AO ~ Z AE AP AG AQ
  AR AD AS AT@2 AU AV AW@2 T AW AV AW AX AY AZ AC BA AZ BB BC BD BE@6 BF I@4 BG@4 BH BI BJ BK R
>`.pickRestart({
  A: "~ x", B: "~@5 x ~ x", C: "x ~@2 x ~@3 x", D: "~ x ~ x!2 ~@2 x", E: "~@6 x ~@4 x ~@3 x", F: "~@3 x!2 ~@2 x",
  G: "~@3 x ~@4", H: "~ x!2 ~ x ~@2 x", I: "~ x ~@2", J: "~@3 x ~@2 x ~", K: "~ x ~@6", L: "x ~@2 x ~@2 x ~",
  M: "~@6 x ~ x ~ x!2 ~@4", N: "x ~ x!2 ~@4 x ~ x!2 ~@4", O: "x ~@7 x ~ x!2 ~@4", P: "x ~ x!2 ~@3 x ~@8",
  Q: "~@2 x!2 ~ x ~ x ~@8", R: "x", S: "~@3 x ~ x ~@2", T: "~@3 x!2 ~@3", U: "~@2 x ~@2 x ~@2", V: "x ~@2 x!2 ~@2 x",
  W: "~@3 x ~ x ~ x ~@3 x ~@4", X: "x ~ x!2 ~@7 x ~ x ~ x", Y: "~@3 x ~@12", Z: "x ~@3 x!2 ~ x ~ x ~@2 x!2 ~@2",
  AA: "x ~@3 x!2 ~@10", AB: "x ~@3 x!2 ~@2 x!2 ~@2 x!2 ~@2", AC: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2",
  AD: "x!2 ~@2 x!2 ~ x ~ x ~@2 x!2 ~@2", AE: "x!2 ~ x ~ x ~ x ~ x ~@6", AF: "x!2 ~ x ~ x ~ x ~ x ~@4 x ~",
  AG: "x ~@3 x!2 ~ x ~ x ~@6", AH: "x!2 ~ x ~ x ~@10", AI: "x ~@3 x!2 ~ x ~ x ~@3 x ~@2",
  AJ: "x!2 ~ x ~ x ~@2 x ~ x ~ x!2 ~@2", AK: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2", AL: "x ~ x!2 ~ x ~@2 x ~@2 x ~ x ~@2",
  AM: "x ~ x!2 ~@4 x ~@2 x ~ x ~@2", AN: "x ~@2 x ~@3 x ~@3 x ~@4", AO: "x ~ x!2 ~@3 x ~@3 x ~@4",
  AP: "x!2 ~@3 x ~@4 x ~ x ~ x ~", AQ: "x!2 ~@3 x ~@3 x!6 ~", AR: "x ~@3 x!2 ~ x ~ x ~@3 x!2 ~",
  AS: "x!2 ~ x ~ x ~ x ~ x ~@2 x!2 ~@2", AT: "~ x!2 ~", AU: "~@4 x ~@3 x ~@2 x ~ x ~@2",
  AV: "x ~@2 x ~@4 x ~@2 x ~ x ~@2", AW: "x ~@2 x ~@4 x ~@2 x ~@4", AX: "~@8 x ~@2 x ~ x ~ x",
  AY: "~ x ~@2 x!2 ~@2 x ~@2 x ~ x ~ x", AZ: "~ x ~@2 x!2 ~@2 x ~@2 x ~ x ~@2", BA: "~@6 x!3 ~@2 x ~ x ~ x",
  BB: "x!2 ~@2 x!2 ~@2 x ~@2 x ~ x ~ x", BC: "~ x ~@2 x!2 ~@2 x!2 ~ x ~ x ~@2", BD: "~@4 x!4", BE: "x!8", BF: "x!7 ~",
  BG: "~@4 x ~@3 x!2 ~ x!2 ~@3", BH: "x!2 ~ x!2 ~@3 x!2 ~ x!2 ~@3", BI: "x!4", BJ: "x!16", BK: "~@5 x!4 ~ x!6",
})).gain(0.7)

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A B@2 C D E B@2 C E F B@2 C G E B@2 H E I B@2 C E ~ J K L M N O P N Q N R N E S B@2 C E T B@2 ~ U V B@2 C E W B@2
  C E ~ J X Y M N O P N Q N R N Z AA AB AC AD AE AD@3 AF AG AF AH AF AD AF O@3 AI O@3 AI AJ AD AF AK AF AL AF AD@2 ~@2
  AM O AN O AO O AP AN AQ AD@3 AR AD@3 AQ AD@2 AS AT AD@3 ~@10 AU AV ~
>`.pickRestart({
  A: "~ x ~ x ~@4", B: "~ x", C: "~ x ~@2", D: "x ~ x!2", E: "x", F: "x ~@4 x!3", G: "x ~@7 x ~ x ~ x!4",
  H: "~@3 x ~@4", I: "x ~ x ~@3 x ~ x ~ x ~ x!3 ~", J: "~@4 x!2 ~@2", K: "~@4 x!4", L: "x!3 ~@5", M: "x!2 ~@4 x ~",
  N: "~@2 x ~@3 x!2", O: "~ x ~ x", P: "~@4 x ~@3 x!4 ~@4", Q: "~@8 x!2 ~@2 x!2 ~@2", R: "x ~@3 x ~@3 x!4 ~@4",
  S: "~@4 x!3 ~@9", T: "x ~@5 x!2", U: "x!2 ~@3 x!2 ~", V: "x!4 ~@12", W: "x ~ x ~@3 x ~ x ~@3 x!3 ~", X: "~@4 x!2 ~ x",
  Y: "~ x!2 ~@5", Z: "x ~ x ~ x ~ x!2", AA: "x!4 ~@8 x ~@3", AB: "~ x!3", AC: "x ~@3 x ~ x ~ x!4 ~@4",
  AD: "~ x ~ x ~ x ~ x", AE: "~@2 x ~@3 x ~ x!4 ~@2 x!2", AF: "~ x ~ x ~ x!3", AG: "~@2 x ~@3 x ~@3 x ~@2 x!2 ~",
  AH: "~@2 x ~@3 x ~@2 x!2 ~ x!4", AI: "~@2 x ~ x ~ x!2", AJ: "x!16", AK: "~@2 x ~@3 x ~@2 x ~@3 x!2 ~",
  AL: "~ x ~ x!5", AM: "~@3 x", AN: "~@2 x!2 ~@2 x!2", AO: "~@4 x!2 ~@6 x ~ x ~", AP: "~@2 x!2 ~@2 x ~",
  AQ: "~ x!7 ~@2 x ~@3 x ~", AR: "~ x!5 ~@4 x ~@3 x ~", AS: "~@2 x ~@3 x ~@6 x!2 ~", AT: "x!8 ~@2 x ~@3 x ~",
  AU: "~@8 x!7 ~", AV: "x!4 ~@5 x!7",
})).gain(0.54)

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

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@13 A ~@9 B ~@9 C ~@8 D ~@4 E ~@9 B ~@9 C ~@8 D ~@36 F@3 ~@23 F@8 ~@3 G ~
>`.pickRestart({
  A: "~@4 x!2 ~@2", B: "~@8 x!3 ~@5", C: "x!2 ~@6", D: "x!8 ~@8", E: "~@12 x!2 ~@2", F: "x!2 ~ x ~@12",
  G: "~@4 x!2 ~@10",
})).gain(0.54)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@13 A ~@9 B ~@8 C ~@7 D ~@3 D ~@12 B ~@8 C ~@7 D ~@3 D ~@2 E ~ F ~ G ~@64 H ~
>`.pickRestart({
  A: "~@2 x ~@2 x!2 ~@9", B: "~@2 x!2 ~@4", C: "~@4 x!4", D: "~@13 x!3", E: "~@4 x!4 ~@8", F: "~@12 x!4",
  G: "~@12 x!2 ~@2", H: "~@3 x!2 ~@11",
})).gain(0.62)

// drums · high tom · soft notes
const high_tom_soft = s("ht").struct("<~@13 A ~@9 B ~@16 C ~@3 C ~@29 C ~@3 C ~@73>".pickRestart({
  A: "~ x ~@2", B: "~ x ~@6", C: "~@3 x",
})).gain(0.39)

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

// drums · ride
const ride = s("rd").struct("<~@3 [~@4 x!3 ~ x!5 ~ x ~] x ~@147>").gain(0.23)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@4 [~ x!3] x ~@146>").gain(0.16)

stack(
  bass, piano, overdriven_guitar, drawbar_organ, drawbar_organ_soft, kick, snare, low_tom, hihat, mid_tom, high_tom,
  high_tom_soft, crash, ride, ride_soft
)

More by Metallica