Strudelify

Mistreated

Deep Purple

KeyF♯ minorTempo135 bpm
0:00/0:00
// Mistreated — Deep Purple
// 135 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Guitar" named as a guitar, played on electric guitar clean (its violin patch is not one)
// note: duplicate parts dropped: ch 6 percussive organ (copy of ch 1 "Guitar" electric guitar clean)
// note: Full arrangement: all 259 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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.

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  ~ A B@2 C D E B C F E B C F E B C G@3 H B@2 C D E B C F E B C I E B C J K@2 L@2 M N O P Q@2 R@2 S T U V S W U X Y Z AA
  H B@2 C D E B C F E B C I E B C AB AC@2 AD@2 M AE AF AG Q@2 AH@2 AI AJ AK AL AI AJ AK AL AM AN AO ~ AP AQ AR AS AT AU
  AT ~ AV AW AV AW AV AW AV ~ AV AW AV AW AV AW AV ~ AV AW AV AW AV AW AV ~ AV AW AV AW AV AW AV ~ AV AW AV AW AV AW AV
  ~ AV AX AY AZ AY AX AV AW AV AX AY AZ AY AX AV BA BB BC BD BA BE BC BF@2 BG BH BI H B@2 C D E B C F E B C I E B C AB
  AC@2 AD@2 M AE AF AG Q@2 AH@2 BJ BK BL BM BN BK BL BM BO BP BQ BR BS BT BQ BR AI AJ AK X AI AJ AK X AI AJ AK X AI AJ
  AK X AI AJ AK X AI AJ AK X AI AJ AK X AI AJ AK X AI AJ AK X BU@2
>`.pickRestart({
  A: "~ [a4,e5] [f#4,c#5]@5 [f#3,c#4]", B: "[e4,b4] [f#4,c#5]@5 ~ [f#3,c#4]", C: "[e4,b4] [f#4,c#5]@5 ~@2",
  D: "[e4,a4,c#5]@3 ~ [f#4,b4,d5]@3 ~", E: "[a4,e5] [f#4,c#5]@5 ~ [f#3,c#4]", F: "[e4,a4,c#5]@3 ~ [g#4,b4,e5]@3 ~",
  G: "[[b3,e4]@2 [c#4,g#4]@31 ~@15]/3", H: "~@7 [f#3,c#4]", I: "[a4,c#5,e5,a5]@3 ~ [b4,d5,f#5,b5]@3 ~",
  J: "[c#5,e5,a5,c#6]@3 ~ [b4,e5,g#5,b5]@3 ~", K: "[[c#5,e5,a5,c#6]@31 ~]/2", L: "[[d5,f#5,b5,d6]@9 ~@7]/2",
  M: "[f#4,a4,c#5,f#5]", N: "[d5,f#5,b5,d6]@6 [b4,e5,g#5] ~", O: "[c#5,f#5,a5]@3 ~ [e5,a5] g#5 [c#5,f#5] [e5,g#5]",
  P: "~ [e5,a5] ~ [e5,g#5] ~ [c#5,f#5,a5]@2 ~", Q: "[[a4,c#5,e5,a5]@31 ~]/2", R: "[[g#4,b4,e5,g#5]@9 ~@7]/2",
  S: "~@8 [c#5,f#5,a5]@7 ~, f#4@15 ~", T: "~@8 [g#5,b5]@7 ~, g#4@15 ~, ~@3 [b4,e5]@5",
  U: "~@4 [f#5,a5]@3 ~, a4@7 ~, ~@3 d5@4 ~", V: "~@6 f#5 ~ [f#5,b5]@7 ~, b4@15 ~, ~@3 d5@4 ~",
  W: "~@8 [g#5,b5]@7 ~, g#4@15 ~, ~@6 [b4,e5]@9 ~", X: "[b4,d5,f#5,b5]", Y: "[c#5,f5,g#5]", Z: "[c#5,f#5,g#5]",
  AA: "[c#5,f5,g#5]@3 ~@13", AB: "[a4,c#5,e5,a5,c#6]@3 ~ [b4,e5,g#5,b5]@3 ~", AC: "[[a4,c#5,e5,a5,c#6]@31 ~]/2",
  AD: "[[b4,d5,f#5,b5,d6]@9 ~@7]/2", AE: "[b4,d5,f#5,b5,d6]@6 [b4,e5,g#5] ~",
  AF: "[c#5,f#5,a5]@3 ~ [e5,a5] [e5,g#5] [c#5,f#5] [e5,g#5]", AG: "~ [e5,a5] ~ [e5,g#5] ~ [c#5,f#5]@2 ~",
  AH: "[[e4,g#4,b4,e5,g#5]@9 ~@7]/2", AI: "[f#5,a5,c#6,f#6]", AJ: "[e5,g#5,b5,e6]", AK: "[d5,f#5,a5,d6]",
  AL: "[b4,f#5,b5,d6]", AM: "[c#5,f#5,g#5,c#6]", AN: "[c#5,d#5,g#5,c#6,f#6]", AO: "[c#5,f5,g#5,c#6,f6]@3 ~@13",
  AP: "[f#4,c#5,a5]", AQ: "~ [e4,b4,g#5]", AR: "[f#4,c#5,f#5]", AS: "~ [e4,b4,e5]", AT: "[f#4,a4,c#5]",
  AU: "~ [e4,g#4,b4]", AV: "[c#4,f#4]", AW: "~ [b3,e4]", AX: "~ [b3,e4,g#4]", AY: "[c#4,f#4,a4]", AZ: "~ [b3,e4,b4]",
  BA: "~@4 c#5@3 ~ f#5@3 ~ g#5@3 g#5", BB: "a5@4 ~@3 g#5 a5@4 ~@4", BC: "~@4 a5@3 ~ g#5@3 ~ a5 ~ g#5 ~",
  BD: "d5@5 ~@11", BE: "a5@4 ~@4 g#5 a5@4 ~@3", BF: "[d4,f#4,a4,d5]/2", BG: "[c#4,f4,g#4,c#5]", BH: "[b3,d4,f#4,b4]",
  BI: "[c#4,f4,g#4,c#5] ~@7", BJ: "~ [f#5,a5,c#6]", BK: "~ [e5,g#5,b5,e6]", BL: "~@6 d5!2 [d5,f#5,a5,d6]@8",
  BM: "~@6 b4!2 [b4,d5,f#5,b5]@8", BN: "~ [f#5,a5,c#6,f#6]", BO: "~@2 [f#5,a5,c#6] ~ [f#5,a5,c#6]@4",
  BP: "~@2 [e5,g#5,b5] ~ [e5,g#5,b5]@4", BQ: "~@2 [d5,f#5,a5,d6] ~ [d5,f#5,a5,d6]@4",
  BR: "~@2 [b4,d5,f#5,b5] ~ [b4,d5,f#5,b5]@4", BS: "~@2 [f#5,a5,c#6,f#6] ~ [f#5,a5,c#6,f#6]@4",
  BT: "~@2 [e5,g#5,b5,e6] ~ [e5,g#5,b5,e6]@4", BU: "[c#5,f5,g#5,c#6]/2",
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.2)

// bass · synth bass 2 · "Bass"
const bass = note(`<
  ~@17 A@2 B C D E D F G E D H D E D F G E D H I J K L M N O P Q R S T U V W X Y V W X Z AA AB ~ D E D F G E D H AC E D
  F G E D H I J K L AD N O P Q R AE T U V W X Y V W X Z AA AB ~ AF AG AH AI AF AJ AF AK AL AG AL AJ AF AG AF AM AL AG AL
  AJ AF AG AF AM AL AG AL AJ AF AG AF AK AF AG AH AI AF AJ AF AK AF AG AH AI AF AJ AF AK AF AG AH AI AF AJ AF AK AF AG
  AH AI AF AJ AN AO AP AQ AR AS AP AQ AT AU Z AA AB ~ D E D F G E D H AC E D F AV E D H I J K L AD N O P Q R AE T U V W
  X Y V W X U V W X Y V W X AW AX AY AZ AW AX AY AZ AW AX AY AZ AW AX AY AZ BA BB BC BD BA BB BC BD BA BB BC BD BA BB BC
  BD BA BB BC BD BE@2
>`.pickRestart({
  A: "[e2 c#2@15]/2", B: "c#2 ~@7", C: "~@3 e2", D: "f#2 ~ f#2 ~", E: "f#2@4 ~@2 f#2 ~ f#3@2 ~@2 e3@2 c#3@2",
  F: "a2@3 ~ b2@3 ~", G: "f#2@4 ~@4 f#2@4 ~@2 f#2 ~", H: "a2@3 ~ e3@3 ~", I: "a2 ~ a2 ~ f#2 e2 f#2@2",
  J: "a2 ~@3 b2 ~ c3 ~ c#3@6 ~@2", K: "b2@2 ~@2 b2@2 ~@2 d3@2 e3@2 ~ a3@3, ~@6 f#3 ~", L: "b3 ~@15",
  M: "f#2@6 f#2 ~ f#3@2 ~@2 e3 ~ c#3 ~", N: "d3@2 ~@2 d4@3 ~ d4@2 ~@2 e4@2 e2@2", O: "f#2@6 f#2@2 f#3@4 ~@2 f#2 ~",
  P: "f#2@3 f#2 f#3@2 ~@2", Q: "a2@2 ~@2 a2@4 b2 ~ c3 ~ c#3@2 ~@2", R: "a2@2 ~@2 a2@4 a3 ~ e3 ~ c#3@2 ~@2",
  S: "e2@2 ~@2 e2@4 f#2@2 g2@2 ~ b2@3, ~@6 g#2 ~", T: "e3 ~@7", U: "f#3@7 f#3", V: "g#3!2", W: "a3@7 a3", X: "b3!2",
  Y: "f#4 ~ c#4 ~ f#3@9 ~ f#3@2", Z: "c#3!2", AA: "f#2 g#2", AB: "c#3 ~@7", AC: "e2 ~ f#2 ~ f#2 ~ e2 ~ f#2 ~ f#2 ~@5",
  AD: "f#2@6 f#2 ~ f#3@2 ~@4 c#3 ~", AE: "e2 ~@2 f#2 ~ g2 ~@2 g#2 ~ a2 ~@2 b2 ~@2", AF: "f#2 ~@2 e2 f#2!2 ~ e2",
  AG: "f#2 ~ f#2 ~ e2@3 ~", AH: "f#3 ~ c#3 ~ f#2 ~ e2@2 f#2@2 f#2@2 ~@2 e2@2", AI: "f#2 ~ f#2@2 e2@3 ~",
  AJ: "f#2 f#2@3 e2@3 ~", AK: "f#2@2 ~@2 c3 ~ c#3 ~ e3@8", AL: "f#2 ~@3 f#2 ~@2 e2",
  AM: "f#2@2 ~@4 c#3 ~ a3@2 f#3@2 c#3@4", AN: "f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~",
  AO: "f#2 ~ c#3@2 f#3@2 g#3@2", AP: "f#2@2 ~@6 f#2@2 ~@4 c#3 ~", AQ: "f#3 c#3 f#2@4 ~@2", AR: "b2@5 f#3 b3 c#4",
  AS: "c#4 b3!2 a3!2 g#3 e3@2", AT: "d3@8 d3@2 ~@4 a3 ~", AU: "d4 a3 d3@4 ~@2", AV: "~@14 f#2 ~", AW: "f#2!2",
  AX: "g#2@4 g#2@3 g#2", AY: "a2@4 a2@3 a2", AZ: "b2!2", BA: "f#2!2 f#3@2 f#2!2 f#3@2", BB: "g#2!2 g#3@2 g#2!2 g#3@2",
  BC: "a2!2 a3@2 a2!2 a3@2", BD: "b2!2 b3@2 b2!2 b3@2", BE: "c#3/2",
})).s("gm_synth_bass_2").gain(0.8).pan(0.6)

// chords · drawbar organ · "Organ 2"
const drawbar_organ = note(`<
  ~@17 A@3 ~ B@3 C B@3 D B@3 E B@3 F G@2 H@2 I J K L M@2 N@2 O P Q R O S Q T U V W ~ B@3 C B@3 D B@3 E B@3 X Y@2 Z@2 I
  AA AB AC M@2 AD@2 AE AF AG AH AE AF AG AH AI AJ AK ~ AL AM AN AO AP AQ AP ~ AR AS AR AS AR AS AR ~ AR AS AR AS AR AS
  AR ~ AR AS AR AS AR AS AR ~ AR AS AR AS AR AS AR ~ AR AS AR AS AR AS AR ~ AR AT AU AV AU AT AR AS AR AT AU AV AU AT AR
  ~ AW@2 AX@2 AW@2 AY@2 AZ BA BB ~ B@3 C B@3 D B@3 E B@3 X Y@2 Z@2 I AA AB AC M@2 AD@2 BC BD BE BF BG BD BE BF BH BI BJ
  BK BL BM BJ BK AE AF AG T AE AF AG T AE AF AG T AE AF AG T AE AF AG T AE AF AG T AE AF AG T AE AF AG T AE AF AG T BN@2
>`.pickRestart({
  A: "[[b3,e4]@2 [c#4,g#4]@31 ~@15]/3", B: "[e4,b4] [f#4,c#5]@5 ~@2", C: "[e4,a4,c#5]@3 ~ [f#4,b4,d5]@3 ~",
  D: "[e4,a4,c#5]@3 ~ [g#4,b4,e5]@3 ~", E: "[a4,c#5,e5,a5]@3 ~ [b4,d5,f#5,b5]@3 ~",
  F: "[c#5,e5,a5,c#6]@3 ~ [b4,e5,g#5,b5]@3 ~", G: "[[c#5,e5,a5,c#6]@31 ~]/2", H: "[[d5,f#5,b5,d6]@9 ~@7]/2",
  I: "[f#4,a4,c#5,f#5]", J: "[d5,f#5,b5,d6]@6 [b4,e5,g#5] ~", K: "[c#5,f#5,a5]@3 ~ [e5,a5] g#5 [c#5,f#5] [e5,g#5]",
  L: "~ [e5,a5] ~ [e5,g#5] ~ [c#5,f#5,a5]@2 ~", M: "[[a4,c#5,e5,a5]@31 ~]/2", N: "[[g#4,b4,e5,g#5]@9 ~@7]/2",
  O: "~@8 [c#5,f#5,a5]@7 ~, f#4@15 ~", P: "~@8 [g#5,b5]@7 ~, g#4@15 ~, ~@3 [b4,e5]@5",
  Q: "~@4 [f#5,a5]@3 ~, a4@7 ~, ~@3 d5@4 ~", R: "~@6 f#5 ~ [f#5,b5]@7 ~, b4@15 ~, ~@3 d5@4 ~",
  S: "~@8 [g#5,b5]@7 ~, g#4@15 ~, ~@6 [b4,e5]@9 ~", T: "[b4,d5,f#5,b5]", U: "[c#5,f5,g#5]", V: "[c#5,f#5,g#5]",
  W: "[c#5,f5,g#5]@3 ~@13", X: "[a4,c#5,e5,a5,c#6]@3 ~ [b4,e5,g#5,b5]@3 ~", Y: "[[a4,c#5,e5,a5,c#6]@31 ~]/2",
  Z: "[[b4,d5,f#5,b5,d6]@9 ~@7]/2", AA: "[b4,d5,f#5,b5,d6]@6 [b4,e5,g#5] ~",
  AB: "[c#5,f#5,a5]@3 ~ [e5,a5] [e5,g#5] [c#5,f#5] [e5,g#5]", AC: "~ [e5,a5] ~ [e5,g#5] ~ [c#5,f#5]@2 ~",
  AD: "[[e4,g#4,b4,e5,g#5]@9 ~@7]/2", AE: "[f#5,a5,c#6,f#6]", AF: "[e5,g#5,b5,e6]", AG: "[d5,f#5,a5,d6]",
  AH: "[b4,f#5,b5,d6]", AI: "[c#5,f#5,g#5,c#6]", AJ: "[c#5,d#5,g#5,c#6,f#6]", AK: "[c#5,f5,g#5,c#6,f6]@3 ~@13",
  AL: "[f#4,c#5,a5]", AM: "~ [e4,b4,g#5]", AN: "[f#4,c#5,f#5]", AO: "~ [e4,b4,e5]", AP: "[f#4,a4,c#5]",
  AQ: "~ [e4,g#4,b4]", AR: "[c#4,f#4]", AS: "~ [b3,e4]", AT: "~ [b3,e4,g#4]", AU: "[c#4,f#4,a4]", AV: "~ [b3,e4,b4]",
  AW: "[f#4,a4,c#5,f#5]/2", AX: "[d4,f#4,b4,d5]/2", AY: "[d4,f#4,a4,d5]/2", AZ: "[c#4,f4,g#4,c#5]",
  BA: "[b3,d4,f#4,b4]", BB: "[c#4,f4,g#4,c#5] ~@7", BC: "~ [f#5,a5,c#6]", BD: "~ [e5,g#5,b5,e6]",
  BE: "~@6 d5!2 [d5,f#5,a5,d6]@8", BF: "~@6 b4!2 [b4,d5,f#5,b5]@8", BG: "~ [f#5,a5,c#6,f#6]",
  BH: "~@2 [f#5,a5,c#6] ~ [f#5,a5,c#6]@4", BI: "~@2 [e5,g#5,b5] ~ [e5,g#5,b5]@4",
  BJ: "~@2 [d5,f#5,a5,d6] ~ [d5,f#5,a5,d6]@4", BK: "~@2 [b4,d5,f#5,b5] ~ [b4,d5,f#5,b5]@4",
  BL: "~@2 [f#5,a5,c#6,f#6] ~ [f#5,a5,c#6,f#6]@4", BM: "~@2 [e5,g#5,b5,e6] ~ [e5,g#5,b5,e6]@4",
  BN: "[c#5,f5,g#5,c#6]/2", // C#
})).s("gm_drawbar_organ").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@16 B ~ C D C E C@2 F E C@3 E C@2 F C F C@2 G C ~ E@2 C F C G C F E@9 H C ~ C E C@2 F E C@2 H E C@2 F C F C@2 G C ~
  E@2 C F C G C F E@2 I E@3 I@2 E H C ~ E H E H E H E J C@2 F C E C E K C@2 F C E C E K C@2 F C E C E J E H E H E H E J
  E H E H E H E J E H E H E H E J E H E H E H ~ C E H E H E H E H E H C ~ C E C@2 F E C@2 H E C@2 F C F C@2 G C ~ E@2 C
  F C G C F E@2 I E@3 I@2 E@8 L@15 M N@3 M N@3 M N@3 M N@3 M N@2 O ~@3
>`.pickRestart({
  A: "~ x", B: "x!2 ~@6", C: "x", D: "~ x!2 ~ x!2 ~@2", E: "x ~@2 x ~@3 x", F: "x ~@6 x", G: "~@7 x", H: "x ~@2 x ~@4",
  I: "x ~@2 x ~ x!3", J: "x ~ x ~@3 x!2 ~@8", K: "x!2 ~@4 x ~", L: "~@3 x ~@3 x", M: "~ x ~ x ~ x ~@2",
  N: "~ x ~ x ~ x ~ x", O: "~@2 x ~@3 x ~@3 x ~@3 x!2",
})).gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@18 A ~ B ~@18 C D ~@6 A E ~@11 C ~@8 F ~@9 C G ~@6 H E ~@11 C ~@63 I ~@11 C ~@8 F ~@9 C G ~@6 H E ~@54
>`.pickRestart({
  A: "~@15 x", B: "x ~@2 x ~@2 x!2", C: "~@7 x", D: "~@3 x", E: "x ~@2 x", F: "~@2 x ~@2 x ~@2", G: "~@6 x!2",
  H: "~@13 x ~@2", I: "x",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@17 A B@2 C D E@2 F E@3 F E@3 F E@3 F D E G ~ D E G ~ D E@2 H D E D E D E D@3 E A B E@3 F E@3 F I D E F E@3 F D E G ~
  D E G ~ D E ~ H D@9 E A B D E D E D E D E ~@2 J E@4 K ~@2 J E@4 K ~@2 J E@5 ~@2 J E D E D E D E D E D E D E D E D E D
  E D E D E D E D E ~@2 D E D E D E D E D E B@2 E@3 F E@3 F I D E F E@3 F D E G ~ D E G ~ D E ~ H L@3 F L@4 M@8 F@15 N
  ~@22
>`.pickRestart({
  A: "~ x", B: "x!2", C: "x ~ x!2", D: "~ x!3", E: "x!4", F: "~ x ~ x", G: "x!3 ~", H: "x", I: "~ x!2 ~", J: "~@2 x!2",
  K: "x!2 ~@2", L: "x!2 ~ x", M: "x ~@2 x", N: "~ x ~@2",
})).gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<A ~@108 B C D ~@5 B C D ~@5 B C D ~@5 B C E ~@123>".pickRestart({
  A: "x!2", B: "~ x!3", C: "x!4", D: "x!2 ~@2", E: "~ x ~@2",
})).gain(0.25)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@40 A ~@3 B ~@3 A ~@20 C ~@10 A ~@3 B ~@2 A@2 ~@27 D ~@7 D ~@38 E ~@21 C ~@10 A ~@3 B ~@2 A@2 ~@31 F ~@22
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@9 x ~@6", C: "~ x ~@2 x ~@3", D: "~@5 x ~ x", E: "~@15 x", F: "~@7 x",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@43 A ~@16 B ~@22 A ~@3 C ~@12 B ~@15 D ~@7 D ~@38 E ~@12 B ~@22 A ~@3 C ~@55
>`.pickRestart({
  A: "~@6 x!2", B: "~@3 x", C: "~@5 x ~@2 x ~@7", D: "~@3 x!2 ~@3", E: "~@12 x!3 ~",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@17 A ~@3 B ~@2 C ~@3 C ~@3 C ~@3 C B ~@3 B ~ D ~ B ~@3 B@3 ~ B ~ B@3 ~ B ~@4 B ~@3 B@3 ~ B ~@3 B@2 ~@3 B ~ D ~ B ~@3
  B@9 ~ B ~ B ~ B ~ B ~ B E B ~@6 F B ~@6 F B ~@6 E B ~ B ~ B ~ B E B ~ B ~ B ~ B E B ~ B ~ B ~ B E B ~ B ~ B ~@3 B ~ B
  ~ B ~ B ~ B ~@6 B ~@3 B@3 ~ B ~@3 B@2 ~@3 B ~ D ~ B ~@3 E@4 G E@3 H@8 C@15 B I@19 ~@3
>`.pickRestart({
  A: "x!2 ~@6", B: "x", C: "x!2", D: "~@7 x", E: "~ x", F: "~@3 x", G: "~@7 x ~@8", H: "~ x!2 ~", I: "x!4",
})).gain(0.4)

// drums · congas
const congas = s("conga:18").struct("<~@257 x ~>").gain(1.27)

stack(
  electric_guitar_clean, bass, drawbar_organ, kick, snare, low_tom, hihat, hihat_soft, mid_tom, high_tom, crash, congas
)

More by Deep Purple