Strudelify
Simply the Best cover art

2005 · Double Happiness

Simply the Best

Tina Turner

KeyE majorTempo110 bpm
0:00/0:00
// Simply the Best — Tina Turner
// 110 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 1 electric bass finger (copy of ch 14 acoustic bass)
// note: Full arrangement: all 107 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: The whole transcription plays 26 ms behind the beat; the grid follows it, so its parts stay together.
setcpm(110/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, A@4 for four bars: edit a riff to change every repeat.

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@12 A B C D E F@7 G H@2 I J K@4 L@2 M N K@4 L@2 M N F@7 G H@2 I J K@4 L@2 M N K@4 L@2 M N O@2 P Q O@2 R S T@4 U@2 V W
  T@4 U@2 V W T@4 U@2 V W X ~
>`.pickRestart({
  A: "~@7 [b2,f#3]", B: "[c#3,g#3]@9 ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~",
  C: "[c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~", // C#5
  D: "[a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~", E: "[a3,b3,e4]@7 ~",
  F: "~@2 [e3,b3]!2 ~@2 [e3,b3]!2 ~@2 [e3,b3]!2 ~@2 [e3,b3]!2", G: "~@2 [e3,b3]!2 ~@2 [e3,b3]!2 ~@8",
  H: "[~@10 [g#3,c#4,d#4]@4 [g#3,c#4,e4]@17 ~]/2", I: "[a3,e4]", J: "[b3,f#4]@2 [b3,f#4] ~ [b3,f#4]@2 ~@10",
  K: "[b2,e3] ~ [b2,e3] ~ [b2,e3] ~ [b2,e3] ~ [b2,e3] ~ [b2,e3] ~ [b2,e3] ~ [b2,e3] ~", // E5
  L: "[g#2,c#3] ~ [g#2,c#3] ~ [g#2,c#3] ~ [g#2,c#3] ~ [g#2,c#3] ~ [g#2,c#3] ~ [g#2,c#3] ~ [g#2,c#3] ~", // C#5
  M: "[b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ b2@2", N: "c#3 b2 f#3 b2@5",
  O: "[a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3]@2 [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~", // A5
  P: "[c#3,g#3,c#4] ~ [c#3,g#3,c#4]@2 [c#3,g#3,c#4] ~ [c#3,g#3,c#4] ~ [c#3,g#3,c#4] ~ [c#3,g#3,c#4] ~ [c#3,g#3,c#4]@2 [c#3,g#3,c#4] ~", // C#5
  Q: "[c#3,g#3,c#4] ~ [c#3,g#3,c#4] ~ [c#3,g#3,c#4] ~ [c#3,g#3,c#4] ~ [c#3,g#3,c#4] ~ [c#3,g#3,c#4] ~ [c#3,g#3,c#4] ~ [c#3,g#3,c#4] ~", // C#5
  R: "[b2,f#3,b3]@2 [b2,f#3,b3] ~ [b2,f#3,b3]@2 [b2,f#3,b3] ~ [b2,f#3,b3]@2 [b2,f#3,b3] ~ [b2,f#3,b3]@2 [b2,f#3,b3] ~", // B5
  S: "[b2,f#3,b3] ~ [b2,f#3,b3] ~@3 [c#3,g#3,c#4]@4 [c#3,g#3,c#4]@2 [c#3,g#3,c#4]@4", // B5 C#5
  T: "[c#3,f#3] ~ [c#3,f#3] ~ [c#3,f#3] ~ [c#3,f#3] ~ [c#3,f#3] ~ [c#3,f#3] ~ [c#3,f#3] ~ [c#3,f#3] ~", // F#5
  U: "[a#2,d#3] ~ [a#2,d#3] ~ [a#2,d#3] ~ [a#2,d#3] ~ [a#2,d#3] ~ [a#2,d#3] ~ [a#2,d#3] ~ [a#2,d#3] ~", // D#5
  V: "[c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ c#3@2", // C#5
  W: "d#3 c#3 g#3 c#3@5", X: "[f#2,f#3], c#3 ~@15",
})).s("gm_distortion_guitar").gain(0.36).pan(0.6)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@13 A@2 ~@9 B C D E F G H@4 I J K G H@4 I J K ~@7 B C D E F G H@4 I J K G H@4 I J K L@2 M@2 L@2 N O P Q@4 R S T P Q@4
  R S T P Q@4 R S T U@2
>`.pickRestart({
  A: "[e4 d#4 c#4 e4@2 d#4@2 g#4@8 ~]/2", B: "~@7 [b2,f#3]", C: "[c#3,g#3]@9 ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~",
  D: "[c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~ [c#3,g#3] ~", // C#5
  E: "[a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~", F: "[b2,f#3,b3]!3 ~@5",
  G: "~@2 [b3,e4]@3 f#4@2 b3, ~@10 b3@3 ~@3", H: "[[b3,a4]@3 [b3,g#4]@7 [b3,e4]@3 f#4@2 b3, ~@26 b3@3 ~@3]/2",
  I: "[b3,a4]@3 [b3,g#4]@4 ~", J: "[b2,f#3,b3]@2 [b2,f#3,b3] ~@3 [b2,f#3,b3]@2 ~@2 [b2,f#3,b3]@4 b2@2",
  K: "c#3 b2 f#3 b2@5",
  L: "[a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4] ~", // A
  M: "[g#3,c#4,e4]@2 [g#3,c#4,e4] ~ [g#3,c#4,e4] ~ [g#3,c#4,e4]@3 ~ [g#3,c#4,e4] ~ [g#3,c#4,e4]@2 [g#3,c#4,e4] ~", // C#m
  N: "[b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4] ~", // B
  O: "[b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [c#4,f4,g#4]@3 ~ [c#4,f4,g#4] ~ [c#4,f4,g#4]@3 ~", // B C#
  P: "~@2 [c#4,f#4]@3 g#4@2 c#4, ~@10 c#4@3 ~@3", Q: "[[c#4,b4]@3 [c#4,a#4]@7 [c#4,f#4]@3 g#4@2 c#4, ~@26 c#4@3 ~@3]/2",
  R: "[c#4,b4]@3 [c#4,a#4]@4 ~", S: "[c#3,g#3,c#4]@2 [c#3,g#3,c#4] ~@3 [c#3,g#3,c#4]@2 ~@2 [c#3,g#3,c#4]@4 c#3@2",
  T: "d#3 c#3 g#3 c#3@5", U: "[f#2@9 ~@7]/2",
})).s("gm_electric_guitar_clean").gain(0.64).pan(0.4)

// chords · pad poly
const pad_poly = note(`<
  ~@7 A B ~@2 A B ~@6 A B ~@2 A B ~@4 C D@4 E F@2 C D@4 E F@2 ~@2 A B ~@2 A B ~@4 C D@4 E F@2 C D@4 E F@2 ~@8 G H@4 I
  J@2 G H@4 I J@2 G H@4 I J@2 K ~
>`.pickRestart({
  A: "[e3,b3]@3 [e3,c#4]@5", B: "[e3,d#4]@3 [e3,e4]@5", C: "~@2 [b3,e4]@3 b3@2 b3, ~@5 f#4@3",
  D: "[[b3,a4] b3 [b3,a4] [b3,g#4]@7 [b3,e4]@3 b3@2 b3, ~@2 a4 ~@23 f#4@6]/2", // B7 E E5
  E: "[b3,a4]@2 [b3,a4] ~ [b3,a4]@2 [b3,g#4]@10", F: "[~@7 b2 c#3 b2 f#3 b2@5, [b3,f#4]]/2",
  G: "~@4 f#4@6 c#4@4 c#4 ~, ~@4 c#4@5 ~ g#4@6",
  H: "[[c#4,b4]@2 c#4@2 [c#4,b4]@2 [c#4,a#4]@14 f#4@6 c#4@4 c#4 ~, ~@2 b4 ~@17 c#4@5 ~ g#4@6]/2", // C#7 F#
  I: "[c#4,b4]@2 [c#4,b4] ~ [c#4,b4]@2 [c#4,a#4]@10", J: "[~@7 c#3 d#3 c#3 g#3 c#3@5, [c#4,g#4]]/2", K: "[f#3,c#4]",
})).s("gm_pad_poly").gain(0.7)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@4 A@3 ~ B@3 ~ C@2 D@2 E F@2 ~ G H@2 ~ I@2 J@2 K ~ L@4 M N O P Q R S T S U V W X ~ V Y X ~ Z AA AB AC K ~ AD AE AD AE
  AF@2 O P Q R S T S U ~ AG AH AI@2 AJ AH AK AL ~@7 AM@2 AN AO AN AO AP@2 AQ@2 AR AS AR AS AT@2 AU@3
>`.pickRestart({
  A: "[~@14 g#3 b3@2 b3@4 b3!2 c#4@2 c#4@4 c#4!2 d#4@4 d#4@2 e4@6 b3@4 ~]/3",
  B: "[~@14 g#3 b3@4 b3@2 b3@2 c#4@4 c#4@2 c#4@2 d#4@4 d#4@2 e4@6 b3@4 ~]/3", C: "[~@9 e4@2 e4@2 e4@2 e4@4 ~@13]/2",
  D: "[~@3 g#4@2 f#4@2 f#4@2 e4@2 e4@2 g#3@2 a3@14 ~@3]/2", E: "~@13 b3 b3@2",
  F: "[~ b3@4 b3@2 c#4@2 c#4@4 c#4!2 d#4@4 d#4@2 e4@6 b3@4 ~]/2", G: "~@11 b3!2 b3@3",
  H: "[~ b3@2 b3@2 c#4@2 c#4@2 c#4@2 c#4@4 d#4@2 d#4@2 f#4@2 e4@6 b3@4 ~]/2",
  I: "[~@5 e4@4 e4@2 e4@2 e4@2 e4@4 ~@13]/2", J: "[~ g#4@2 f#4@2 f#4@2 e4@2 e4@2 e4@2 e4@2 e4@2 a3@8 ~@7]/2",
  K: "~@5 b3@2 a4@2 a4@2 a4@2 g#4@3", L: "[~@7 g#4@2 g#4@2 g#4@4 g#4@2 e4@2 e4@2 e4@4 ~@7]/2",
  M: "~@7 e4@2 e4@2 e4@2 e4@3", N: "~ b3@2 ~ b3@2 b3@4 ~@6", O: "~@3 a4!2 a4@2 g#4", P: "g#4 ~@3", Q: "~@3 e4 g#4!4",
  R: "g#4@2 e4 e4@2 ~@3", S: "~@4 e4!4", T: "c#4 ~@3", U: "c#4 b3@2 c#4 b3 b3@3", V: "~@15 g#3",
  W: "b3@2 b3@4 b3!2 c#4@2 c#4@4 c#4!2", X: "d#4@2 d#4 e4@3 b3@2", Y: "b3@2 b3!2 c#4@2 c#4!2", Z: "~@5 e4!3",
  AA: "e4 ~@3", AB: "~@2 g#4 f#4!2 e4!2 g#3", AC: "a3@7 ~", AD: "~@4 g#4!2 g#4@2", AE: "g#4 e4!2 e4@2 ~@3",
  AF: "[~@4 e4!3 e4@2 b3!2 b3@2 ~@3]/2", AG: "~ a4!7", AH: "a4 g#4 f#4 a4@3 ~@2",
  AI: "[g#4!3 g#4@2 f#4 e4 g#4@2 f#4 e4 g#4@2 ~@3]/2", AJ: "~@2 a4!6", AK: "~ b4@2 b4@2 g#4 ~@2", AL: "~ b4!2 c#5@5",
  AM: "[~ c#5@4 b4!2 a#4@2 ~@7]/2", AN: "~@4 a#4!2 a#4@2", AO: "a#4 f#4!2 f#4@2 ~@3",
  AP: "[~@4 f#4!3 f#4@2 c#4!2 c#4@2 ~@3]/2", AQ: "[~@4 c#5@6 b4@2 b4@2 a#4 a#4@4 ~@13]/2", AR: "~@9 a#4@2 a#4@2 a#4@3",
  AS: "~ a#4@2 f#4@2 f#4@2 f#4@4 ~@5", AT: "[~@9 f#4@2 f#4@2 f#4@2 f#4@4 c#4@2 c#4@2 c#4@4 ~@5]/2",
  AU: "[~@5 c#5@6 b4@2 b4@2 a#4@19 ~@14]/3",
})).s("gm_string_ensemble_2").gain(0)

// chords · synth brass 1
const synth_brass_1 = note(`<
  ~ A@3 ~ B@2 C D B@2 C D ~@4 B@2 C D B@2 C D ~@4 E F E F G H I@2 E F E F G H I@2 B@2 C D B@2 C D ~@4 E F E F G H I@2 E
  F E F G H I@2 ~@16 J K J K L M N@2 J K J K L M N@2 O ~
>`.pickRestart({
  A: "[e2,b2,e3]/3", B: "[e2,b2,e3]/2", C: "~@3 [e2,c#3]@5", D: "[e2,d#3]@3 [e2,e3]@5", E: "[e3,b3]@5 [e3,b3]@3",
  F: "[e3,b3]@5 ~ [e3,b3]@10", G: "[g#3,b3]@9 ~ [g#3,b3]@6", H: "[g#3,b3]@5 ~ [g#3,b3]@9 ~", I: "[[f#3,b3]@31 ~]/2",
  J: "[f#3,c#4]@5 [f#3,c#4]@3", K: "[f#3,c#4]@5 ~ [f#3,c#4]@9 ~", L: "[a#3,c#4]@9 ~ [a#3,c#4]@6",
  M: "[a#3,c#4]@6 [a#3,c#4]@9 ~", N: "[[g#3,c#4]@31 ~]/2", O: "[c#4,f#4]",
})).s("gm_synth_brass_1").gain(0.56).pan(0.6)

// chords · pad new age
const pad_new_age = note("<~@13 A@2 B@2 ~@8 A@2 C ~@25 A@2 C ~@51>".pickRestart({
  A: "[c#4,e4,g#4]/2", B: "[e4@2 ~@14 b3@15 ~, a3, [c#4,a4]@2 c#4@2 e4@2 a4@9 ~, ~ e4@2 a4@2 c#4@2 e4@8 ~]/2",
  C: "[a3,c#4,e4]", // A
})).s("gm_pad_new_age").gain(0.4).pan(0.4)

// chords · pad choir
const pad_choir = note(`<
  ~@29 A@4 B@2 C@2 A@4 B@2 C@2 ~@12 A@4 B@2 C@2 A@4 B@2 C@2 D@2 E@2 D@2 F@2 G@4 H@2 I@2 G@4 H@2 I@2 G@4 H@2 I@2 J ~
>`.pickRestart({
  A: "[[b3,e4,b4]@31 ~]/2", B: "[c#4,e4,b4]/2", C: "[b3,f#4,b4]/2", D: "[a2,e3,a3]/2", E: "[c#3,g#3,c#4]/2",
  F: "[[b2,f#3,b3]@22 [c#3,g#3,c#4]@9 ~]/2", G: "[[c#4,f#4,c#5]@31 ~]/2", H: "[d#4,f#4,c#5]/2", I: "[c#4,g#4,c#5]/2",
  J: "[f#3,c#4]", // F#5
})).s("gm_pad_choir").gain(0.56).pan(0.6)

// other · alto sax
const alto_sax = note("<~@80 A@6 B@4 ~@17>".pickRestart({
  A: "[~@10 d#4@2 f#4@2 c#5@10 g#4 [g#4,a4] ~@16 a#4@2 a#4@2 a#4@5 ~ g#4@2 f#4 ~ d#4@2 c#4 ~ d#4@2 f#4@6 ~@6 a#4@2 a#4 ~ a#4@6 g#4@2 f#4 ~ d#4@2 f#4 ~@3 a#4@2, ~@25 f#4@10 ~@61]/6", // Amaj7
  B: "[~@2 c#5@2 d#5@4 g#4 [g#4,a#4] f#4@3 ~ c#5@4 c#4@2 c#5@2 c#5@4 c#4@2 c#5@2 c#5@5 c#4 ~@2 c#5 ~ c#5@2 d#5 ~ f#5 d#5 f#5@15 ~@3]/4", // G#sus2
})).s("gm_alto_sax").gain(0.64).pan(0.4)

// other · piano
const piano = note("<~ A@12 B@2 C D A@8 B@2 C E ~@16 A@8 B@2 C E ~@50>".pickRestart({
  A: "e1 ~@5 e1 ~@9", B: "c#2 ~@5 c#2 ~@9", C: "a1 ~@5 a1 ~@9", D: "a1@7 ~",
  E: "[b1,f#3]@2 [b1,b2,f#3,b3] ~ [b1,b2,f#3,b3]@2 ~@10, [b2,b3] ~@15", // B5 B
})).s("gm_piano").gain(0.64)

// bass · acoustic bass
const bass = note(`<
  ~ A@12 B@2 C D A@7 E B@2 C F A@3 G B@2 H@2 A@3 G B@2 H I A@7 E B@2 C F A@3 G B@2 H@2 A@3 G B@2 H I C J B K C@2 L M N@3
  O P@2 B Q N@3 R S@2 B@2 N@3 R S@2 B@2 T ~
>`.pickRestart({
  A: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", B: "c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~",
  C: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", D: "a1@7 ~", E: "e1 ~ e1 ~ e1 ~ e1 ~ g#1@2 b1 ~ c#2@2 e2 ~",
  F: "b1@2 b1 ~ b1 ~@11", G: "e1 ~ e1 ~ e1@2 e1 ~ e1@2 e1 ~ g#1@2 b1@2", H: "b1 ~ b1 ~ b1@2 b1 ~ b1@2 b1 ~ b1@2 b1 ~",
  I: "b1@2 b1 ~ b1@2 b1 ~ b1 c#2 e2@4 b1 ~", J: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ b1 ~",
  K: "c#2@2 c#2 ~ c#2@2 c#2 ~ c#2 ~ c#2 ~ f#1@2 g#1 ~", L: "b1@2 b1 ~ b1@2 b1 ~ b1@2 b1 ~ b1 ~ b1 ~",
  M: "b1@2 f#1@2 b1 ~ c#2@4 c#2 ~ c#2@2 c#2@2", N: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~",
  O: "f#1 ~ f#1 ~ a#1@2 c#2 ~ d#2@2 f#2 ~ f2@2 c#2 ~", P: "d#2 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~",
  Q: "c#2 ~ c#2 ~ c#2 ~ c#2 ~ d#2@2 f#2 ~ f2@2 c#2@2", R: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1@2 a#1@2 c#2@2",
  S: "d#2 ~ d#2@2 d#2@2 d#2 ~ d#2@2 d#2 ~ d#2@2 d#2 ~", T: "f#1",
})).s("gm_acoustic_bass").gain(0.64)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@16 A B@7 C B@2 D E B@23 C B@2 F E B@7 G B@7 H B@7 I B@3 J B@3 K B@7 G B@7 K L M
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@2 x ~@3 x!2", D: "~@4 x ~@7 x ~@2 x", E: "x!3 ~@3 x ~", F: "~@4 x ~@7 x ~ x!2",
  G: "~@4 x ~@6 x!2 ~ x!2", H: "~@4 x ~@2 x!2 ~@2 x!4 ~", I: "~@4 x ~@5 x!6", J: "~@4 x ~@6 x!2 ~ x ~",
  K: "x!2 ~@2 x ~@3 x!2 ~@2 x!2 ~@2", L: "x ~@14 x", M: "x",
})).gain(0.74)

// drums · low tom
const low_tom = s("lt").struct("<~@28 [~@11 x!2 ~@3] ~@27 [~@11 x!2 ~@3] ~@50>").gain(0.59)

// drums · hihat
const hihat = s("hh").struct("<~ A@3 B A@3 C A@3 C A@3 D A@11 E F@16 A@11 E F@33 G F@14 H@2>".pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x!3 ~@3", C: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", D: "~ x!2 ~", E: "x!3 ~@5",
  F: "x!2 ~ x!3 ~ x", G: "x ~ x!2 ~@2 x ~ x ~ x ~@3 x ~", H: "x",
})).gain(0.44)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A ~@11 B ~@11 C D@16 ~@11 C D@48 ~@2>".pickRestart({
  A: "~@7 x", B: "x ~@6 x", C: "~@3 x", D: "~ x ~ x",
})).gain(0.52)

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 [~@5 x ~@2] ~@27 [~@5 x ~@2] ~@50>").gain(0.59)

// drums · crash
const crash = s("cr").struct(`<
  ~@25 A ~@3 A ~@7 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A@2
>`.pickRestart({
  A: "x",
})).gain(0.52)

// drums · high tom
const high_tom = s("ht").struct("<~@28 [~@8 x!2 ~@6] ~@27 [~@8 x!2 ~@6] ~@50>").gain(0.59)

// drums · ride
const ride = s("rd").struct(`<
  ~@53 A B@2 ~ A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 C D@3 C D@3 C D@3 C D@3 C D@3 C D@3 ~@2
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "~ x!7", D: "x!8",
})).gain(0.59)

// drums · shaker
// … 6 more lines

More by Tina Turner