Strudelify

Steamy Windows

Tina Turner

KeyE minorTempo134 bpm
0:00/0:00
// Steamy Windows — TURNER TINA
// 134 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 130 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(134/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 · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A@3 B C@6 D C@4 D C@3 E D C@4 D C@3 E F C E C F G@3 H@3 C@2 E D C@4 D C@3 E F C E C F C@2 E F C E C F C@8 I J C@2 I J
  K@4 H L@2 H C@3 D C@5 E F C E C F C@3 D C@2 E F C E C F C@10 I J M@2
>`.pickRestart({
  A: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", B: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2",
  C: "e1@4 e2 ~ e2@2 e1@4 e2 ~ e2@2", D: "g1 a1", E: "e1@4 e2 ~ e2@2 e1@4 e2 ~ e2 ~", F: "d1@5 ~ d1@2 a1@4 ~@2 a1@2",
  G: "e1/3", H: "~@4 e2 ~ e2@2 ~@4 e2 ~ e2@2, e1!2", I: "g1", J: "a1", K: "e1/4",
  L: "[~@4 e2 ~ e2@2 ~@4 e2 ~ e2@2 g1@8 a1@8, e1 e1@3]/2", M: "[e1@13 ~@3]/2",
})).s("gm_electric_bass_finger").gain(0.36)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@28 A@3 ~ B@3 ~@17 B@3 ~ B@3 ~ B@3 ~ B@3 ~@30 B@3 ~ B@3 ~@5 B@3 ~ B@3 ~@4 C@2 D ~ C@2 ~@3 E
>`.pickRestart({
  A: "[~@4 [b5,d6,e6,g6]@20 [b5,d6,e6,g6]@2 [d6,e6,g6]@2 f6 [f5,g5,a5] ~@18, ~@4 [e4,e5]@16 ~@6 b5@17 ~@5]/3", // Em7 F E
  B: "[~@4 [b5,d6,e6,g6]@20 [b5,d6,e6,g6]@2 [b5,d6,e6]@2 f6 [f5,g5,a5] ~@18, ~@2 [e4,e5]@8 ~@3 g6@9 ~@2]/3", // Em7 E7 F E
  C: "[~ [b4,d5,e5,g5]@7]/2", D: "b4 ~@7, e5 ~@15", E: "~@10 e5@2 c5 [e4,f4,g4,a4,b4] [c4,d4] ~",
})).s("gm_rock_organ").gain(0.33).pan(0.4)

// chords · rock organ · "ORGAN 3" · soft notes
const rock_organ_soft = note("<~@29 A ~@3 A ~@19 A ~@3 A ~@3 A ~@3 A ~@32 A ~@3 A ~@7 A ~@3 A ~@14 B>".pickRestart({
  A: "~@12 c6 ~@3", B: "~@12 d5 ~@3",
})).s("gm_rock_organ").gain(0.19).pan(0.4)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A@4 ~ B@2 C D E F G H I J F K L M N ~ O P Q R F S@2 Q T U V W@2 U X@4 Q Y@2 M N ~ O P Q R F S@2 Q T U V W@2 U Z Q T U
  V W@2 U K L M N ~ O P Q AA AB AC Q AA AB AD@4 D E F G H I J F K L S@2 Q T U V W@2 U H I J F AE Q T U V W@2 U H I J K L
  M N ~ O P AA AB ~@2
>`.pickRestart({
  A: "[~@4 e3 ~@3 d3 ~ e3 ~@3 g3@6 e3@2 b2 ~ d3 ~ d3@4 e3@5 ~ d3 ~ b2 ~ g3 ~ e3 ~@3 e3@6 d3@2 b2 ~ d3 ~ g2@6, ~@6 e2@5 ~@53]/4",
  B: "[~@6 a3 ~ [d3,g3]@2 [b2,e3] ~ b2 ~ [b2,e3]@6 ~@4 e3 ~ e3@2 ~@4]/2", C: "~@4 e3 ~@3 [e2,e3] ~ e3@2 ~@4",
  D: "~@4 e3 ~@3 e3 ~ e3@3 ~ e2@2", E: "~@2 e2@2 e3 ~@3 e3 ~ e3@2 e2@2 ~@2", F: "[g2,d3]@8 [a2,e3]@7 ~",
  G: "~@4 e3@2 e2@2 ~@2 e3@3 ~ e2@2", H: "~@2 e3 ~ e3@2 e2@2 e3 ~ e3@4 e2@2", I: "~@4 e3@2 e2@2 e3 ~ e3@4 e2@2",
  J: "~ e2 e3 e2 e3!2 ~ e3", K: "~@4 e3@2 e2 ~ e3 ~ e3@2 e2@2 ~@2", L: "~@2 e2@2 e3@2 e2@2 e3 ~ e3@3 ~@3",
  M: "~@4 e3@2 e2@2 e3 ~ e3@3 ~@3", N: "~@2 e2@2 e3@2 e2@2 e3 ~ e3@3 ~ e3 ~", O: "~@4 e3@2 e2 ~@3 e3@3 ~ e2@2",
  P: "~@2 e2@2 e3@2 e2 ~ e3 ~ e3@2 e2@2 e3@2", Q: "~@4 e3@2 e2@2 e3 ~ e3@3 ~ e2@2",
  R: "~@2 e2@2 e3@2 e2@2 e3 ~ e3@2 e2@3 ~", S: "[~@4 e3@2 e2 ~ e3 ~ e3 ~@3 e3@4 e2@2 e3@2 e2@2 e3 ~ e3@3 ~@3]/2",
  T: "e3@2 e3 ~ e3@2 e2@2 e3 ~ e3@3 ~ e3 ~", U: "[a2,d3,a3] [a2,e3]", V: "~@4 e3@2 e2@2 e3 ~ e3@2 e2@2 e3@2",
  W: "[~@2 e2@2 e3@2 e2 ~ e2@2 e3@2 ~@2 e3@4 e2@2 e3@2 e2 ~ e3 ~@3 e2@3 ~, ~@8 e3 ~@17 e3@4 ~@2]/2",
  X: "[~@6 e3@2 d3@2 e3 ~@3 g3@4 ~@2 e3 ~ e3@2 d3 ~@5 e3@6 d3@2 b2 ~ d3 ~ g2@4 e2@8 ~@10, e2@11 ~ e2@6 e2@10 e2@12 ~@24, ~@13 d3@2 ~@17]/4",
  Y: "[~@6 a3 ~ [d3,g3]@2 [b2,e3] ~ b2 ~ [b2,e3]@6 ~@12]/2", Z: "~@2 e2@2 ~@2 e2@2 e3 ~ e3@3 ~@3, e3!2 ~@2",
  AA: "[g2,d3]", AB: "[a2,e3]@7 ~", AC: "e2 ~ e2@2 e3@2 e2 ~ e3 ~ e3@2 e2@2 e3@2",
  AD: "[e2@4 e3@2 b2 ~ d3 ~ e3 ~@3 g3@5 ~ a3 ~ e2 ~ g3 ~ e3@2 d3@2 e3@4 e2@2 d3@2 b2 ~ g3 ~ [e2,e3] ~ d3@2 e2@4 ~@2 d3@2 b2 ~ d3 ~ g2@6, ~@12 e2@6 ~@28 e3 ~@17]/4", // E
  AE: "e3@2 e2@2 e3@2 e2@2 e3 ~ e3@3 ~@3",
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.3)

// other · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note(`<
  A B@2 ~@2 C ~ D E F G ~@3 H G I J K ~ L M ~ N O G P Q R Q S ~ Q ~ S ~@4 N C ~ K ~ L M ~ N O G P Q R Q S ~ Q ~ S Q R Q
  S ~ Q ~ S I J K ~ L M ~ N ~@3 N ~@2 T U T V E F G ~@3 H G I J P Q R Q S ~ Q ~ S ~@2 H G Q R Q S ~ Q ~ S ~@2 H I J K ~
  L M ~@5
>`.pickRestart({
  A: "e2@4 ~@8 e2@3 ~", B: "[~@2 e2@5 ~@3 e2@2 ~@2 e2@4 e2@4 ~@4 e2 ~ e2@2 e2@2]/2", C: "~@4 [d3,g3] ~ e3 ~@9",
  D: "~@14 e2 ~", E: "e2!2 ~@6", F: "~@3 e2 ~@4", G: "g3@8 a3@7 ~", H: "~@8 e2@2 ~@2 e2@3 ~", I: "~@2 e2@2 ~@10 e2 ~",
  J: "~@12 e2 ~ e2@2", K: "~@2 e2@3 ~@7 e2@2 e2 ~", L: "e2 ~@7", M: "~@8 e3 ~@3 e2@2 ~@2", N: "~@2 e2@3 ~@7 e2 ~@3",
  O: "~@8 e2 ~@7", P: "~@6 e2 ~", Q: "~@12 e2@3 ~", R: "~ e2 ~@6", S: "~ a3", T: "~@6 e2 ~@9", U: "~@5 e2!2 ~",
  V: "~ e2@2 ~@5",
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.3)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@4 A B C A B A D E B@2 F D G A B A D H B@2 F D B A@2 C I J K@2 I ~@3 A B C A L A D H B@2 F D B A@2 C I J K@2 I G A C
  I J K@2 I A B C A B A@2 B M N A B M N O@4 P A D E B@2 F D G A B A@2 C I J K@2 I P B F D G A C I J K@2 I P B F A B C A
  B A@2 M N Q ~
>`.pickRestart({
  A: "~@4 e3@2 ~@2 e3 ~ e3@3 ~ e2@2", B: "~@4 e3 ~@3 e3 ~ e3@3 ~ e2@2", C: "~@4 e3@2 ~@2 e3 ~ e3@4 e2@2",
  D: "[g2,d3,g3,b3,d4]@7 [g#2,a2,d#3,d#4] [a2,e3,a3,c#4,e4]@8", E: "e2@2 ~@2 e3@2 ~@2 e3 ~ e3@3 ~ e2@2",
  F: "~@4 e3 ~@3 e3 ~ e3@3 ~@3", G: "e2 ~@3 e3@2 ~@2 e3 ~ e3@3 ~ e2@2", H: "e2@2 ~@2 e3@2 ~@2 e3 ~ e3@4 e2@2",
  I: "[a2,d3,f#3,a3,d4]@7 [g#2,a2,d#3,d#4] [a2,e3,a3,c#4,e4]@8", J: "e2 ~@3 e3 ~@3 e3 ~ e3@4 e2@2",
  K: "~@4 e3 ~@3 e3 ~ e3@4 e2@2", L: "e2@2 ~@2 e3 ~@3 e3 ~ e3@3 ~ e2@2", M: "[g2,d3,g3]", N: "[a2,e3,a3]",
  O: "[[e2,b2]@59 ~@5, e3 ~@3]/4", P: "e2 ~@3 e3 ~@3 e3 ~ e3@3 ~ e2@2", Q: "[b2,e3]",
})).s("gm_distortion_guitar").gain(0.24).pan(0.7)

// chords · distortion guitar · "DISTORTION" · soft notes
const distortion_guitar_soft = note(`<
  ~@10 A ~@4 A ~@4 A ~@4 A ~@4 B ~@3 B ~@9 A ~@4 A ~@4 B ~@3 B ~@3 B ~@3 B ~@20 A ~@4 A ~@6 B ~@3 B ~@3 A ~@3 B ~@3 B
  ~@14
>`.pickRestart({
  A: "g4@7 [a3,c4,c#4] a4 a4@7, ~@9 g#4 ~@6", B: "a4@7 [a3,c4,c#4] a4 a4@7, ~@9 g#4 ~@6",
})).s("gm_distortion_guitar").gain(0.15).pan(0.7)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  A@3 B C@6 D E@4 F G@4 D E@4 F H@2 I J K ~ I J K ~@3 L@4 M@2 D E@4 F H@2 I J K ~ I J K N I J K ~ I J K O@2 P@2 Q@2 R@2
  S T R@2 S T U@4 V@2 D E@4 F W@2 H@2 I J K ~ I J K X@3 F ~ I J K ~ I J K X@3 O@2 P@2 Q@2 Y S T Z@2
>`.pickRestart({
  A: "[~@4 e3@2 e3@2 e3@2 e3@2 ~@2 e3@6 e3@2 e3@2 d3 ~ e3@4 e3@6 d3 ~@3 d3@2 e3 ~ d3 ~ e3@2]/3", B: "g#3",
  C: "[e3@4 [g#3,d4] ~@3 d3@2 [e3,g#3] ~@3 [g#3,d4]@6 d4 ~@3 d3@2 ~@2 d4 ~ e3@6 d4 ~@3 d3@2 e3@2 c#4 ~ d4@4 ~@4 g#3@4 d4 ~@5 e3@4 g#3 ~ e3 ~ d3@2 ~@2 d4 ~ e4@6 d4 ~@3 d3@4 [e3,g#3,d4]@2 e3@2, ~@14 e4@8 ~@24 e4@11 ~@21 d4@5 ~@13, ~@50 d4@7 ~@5 [g#3,d4]@6 ~@28]/6", // G#dim E G#dim E7 G#dim
  D: "[d3,g3]@8 [e3,a3]@7 ~", // G5 A5
  E: "[d3@3 ~@3 d4@2 ~@2 d3@2 ~@2 e4@6 d4 ~@3 d3@2 ~@2 d4 ~ e3@4 [g#3,d4] ~@3 [g#3,d4] ~@3 d3@2 ~@2 e4@6 [g#3,d4] ~@3 d3@2 e3@2 d4 ~ e3 ~, ~@12 e3@9 ~@23 e3@10 ~@2 g#3@5 ~@3, ~@14 d4@5 ~@45]/4", // G#dim
  F: "g3@5 ~ g3 ~ [e3,a3]@7 ~, d3 ~", // A5
  G: "[e3@4 d4 ~@3 d3@2 e3@2 c#4 ~ d4@4 ~@4 g#3@4 d4 ~@5 e3@4 g#3 ~ e3 ~ d3@2 ~@2 d4 ~ e4@6 d4 ~@3 d3@4 [e3,g#3,d4]@2 e3@2, ~@14 e4@11 ~@21 d4@5 ~@13, ~@18 d4@7 ~@5 [g#3,d4]@6 ~@28]/4", // E7 G#dim
  H: "[e3@4 [g#3,d4] ~@3 d3@2 [e3,g#3] ~@3 [g#3,d4]@6 d4 ~@3 d3@2 ~@2 d4 ~ e3@2, ~@7 e4@4 ~@5]/2", // G#dim E G#dim
  I: "~@4 [e3,g3]@2 b2 ~@3 [e3,g3]@2 b2 ~ [e3,g3]@2", J: "~@2 b2 ~ [e3,g3]@2 b2 ~ d3 ~ [e3,g3]@2 b2 ~@3",
  K: "[d2,a2,d3] [a2,e3,a3]", // D5 A5
  L: "[e3@4 [g#3,d4] ~@3 d3@2 [e3,g#3] ~@3 [g#3,d4]@6 d4 ~@3 d3@2 ~@2 d4 ~ e3@6 d4 ~@3 d3@2 e3@2 c#4 ~ d4@4 ~@4 g#3@4 d4 ~@3 [g#3,d4]@2, ~@14 e4@8 ~@24 e4@11 ~@7, ~@50 d4@7 ~@7]/4", // G#dim E G#dim
  M: "[[g#3,d4]@2 ~@2 g#3 ~ e3 ~ d3@2 ~@2 d4 ~ e4@6 d4 ~@3 d3@4 [e3,g#3,d4]@2 e3@2, e3@4 ~@10 d4@5 ~@13]/2", // G#dim E7
  N: "[g#3,d4]@4 d4 ~@3 d3@2 ~@2 d4 ~ e3@2, e4@3 ~@5", // G#dim
  O: "[~@4 [b3,d4,e4] ~@3 e3 ~ [b3,d4,e4] ~ e3 ~ [b3,d4,e4]@6 ~@6 [b3,d4] ~@5]/2", // E7 Bm
  P: "[~@4 [b3,d4,e4] ~@5 [b3,d4,e4] ~ e3 ~ [b3,d4,e4]@6 ~@6 [b3,d4] ~@5]/2", // E7 Bm
  Q: "[~@2 e3@2 [b3,d4] ~@5 [b3,d4,e4] ~@3 [b3,d4,e4]@6 ~@6 [b3,d4] ~@3 [b3,d4] ~]/2", // Bm E7 Bm
  R: "[~@4 [b3,d4] ~@5 [b3,d4] ~@3 [b3,d4,e4]@6 ~@6 [b3,e4] ~@5]/2", S: "[g2,d3,g3]@15 ~", T: "[a2,e3,a3]",
  U: "[e3@59 ~@5]/4",
  V: "[[e3,g#3,d4]@4 g#3 ~ e3 ~ d3@2 ~@2 d4 ~ e4@6 d4 ~@3 d3@4 [e3,g#3,d4]@2 e3@2, ~@14 d4@5 ~@13]/2", // E7
  W: "[e3@4 d4 ~@3 d3@2 e3@2 c#4 ~ d4@4 ~@4 g#3@4 d4 ~@3 [g#3,d4]@2, ~@14 e4@11 ~@7, ~@18 d4@7 ~@7]/2", // G#dim
  X: "[e4@4 d4 ~@3 d3@2 ~@2 d4 ~ e3@4 [g#3,d4] ~@3 [g#3,d4] ~@3 d3@2 ~@2 e4@6 [g#3,d4] ~@3 d3@2 e3@2 d4 ~ e3 ~, e3@8 ~@20 e3@10 ~@2 g#3@5 ~@3, d4 ~@15]/3", // G#dim
  Y: "~@4 [b3,d4] ~@5 [b3,d4] ~@3 [b3,d4,e4]@2", Z: "[e3@27 ~@5]/2",
})).s("gm_overdriven_guitar").gain(0.12).pan(0.1)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note(`<
  A ~@4 B C ~ D@2 E F@2 G@2 H C ~ D@2 E F@2 G@2 H ~ I ~ J ~@3 J ~@5 B C ~ D@2 E F@2 G@2 H ~ I ~ J ~@3 J ~ I ~ J ~@3 J ~
  K ~ L ~@2 M N ~ O ~ N ~ O ~ P@4 D@2 E F@2 G@2 H C ~@2 I ~ J ~@3 J ~ Q G@2 H ~@2 J ~@3 J ~ Q G@2 K ~ L ~@2 M N O ~ R@2
>`.pickRestart({
  A: "e3 ~@7", B: "~@6 e3 ~@3 e3@3 ~ g#3 ~, ~@2 g#3 ~", C: "~@9 g#3@3 ~@4",
  D: "[~@10 e3@3 ~ g#3@6 ~@12, ~@2 g#3 ~@5]/2", E: "~@15 [d#3,g#3]",
  F: "[~@3 e3@3 g#3@2 ~@2 g#3@11 ~@5 e3@3 ~@3, ~@6 g#3 ~]/2", G: "[~@14 d4@5 ~@13]/2", H: "~@9 c#4@5 ~@2",
  I: "~@6 e3 ~@3 e3@3 ~ g#3@2, ~@2 g#3 ~", J: "b2 ~@15", K: "~ e3 ~@6", L: "~@2 e3@2 ~@4 e3 ~@7", M: "~@10 e3 ~@5",
  N: "~@4 e3 ~@7 e3 ~@3", O: "~@15 [d#3,g#3,a3]", P: "[[e2,b2]@59 ~@5]/4", Q: "g#3@5 ~@5 e3@3 ~@3, ~@2 g#3 ~",
  R: "[[e2,b2]@27 ~@5]/2", // E5
})).s("gm_overdriven_guitar").gain(0.04).pan(0.1)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~@69 A@2 B C@2 D E F@3 G H I@3 ~@46>".pickRestart({
  A: "[~@14 d5@3 ~ d5@3 d5@3 d5@3 d5@2 ~ d5@2, ~@7 b4@5 b4@4, ~@24 c5 ~@7]/2", B: "c5 d5@8 ~@3 g4 ~ a4@2, b4@9 ~@7",
  C: "[a4@4 g4 ~ e4@15 ~@11]/2", D: "~@5 a#4 d5 e5", E: "~ e5@5 ~@4 g5@3 g5@2 a5",
  F: "[a5@7 ~ g5 a5 g5 ~ e5 ~ e5@11 ~ d5@2 ~ a4@6 ~ g4@2 ~@2 g4@5 ~@3]/3", G: "a4@7 ~ g4@2 e4 ~ d4@2 b3 ~",
  H: "d#4@2 ~ [e4,g4] d4@2 b3 ~ a#3@2 d4 ~ a3@2 g3@2", I: "[e4@23 ~]/3",
})).s("gm_electric_guitar_jazz").gain(0.48).pan(0.4)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@4 A B C@3 D E C@3 F G C@3 D E C@3 F G A B A B H C@2 D H ~@3 A B C@3 D E C@3 F G A B A B H C@2 D H B A B H C@2 D H A
  B C@3 D A B I J A B I J ~@4 C D E C@3 F G C@2 A B A B H C@2 D H C@2 F G B A B H C@2 D H C@2 F A B C@3 D A K J ~@2
>`.pickRestart({
  A: "e2 ~ e2 ~@3 e3@2 e2 ~ e2@2 ~@2 e3@2", B: "e2 ~ e2@2 ~@2 e3@2 e2 ~ e2 ~@3 e3@2",
  C: "e2 ~ e2 ~@3 e3@2 e2 ~ e2 ~@3 e3@2", D: "e2 ~ e2 ~@3 e3@2 e2@2 e3 ~@3 e3 ~", E: "~ d3 ~ e3, g2 a2",
  F: "e2 ~ e2@2 ~@2 e3@2 e2 ~ e2@2 ~@2 e2@2", G: "~@4 d3@4 ~@4 e3@3 ~, g2 a2", H: "~ a2!2 e3, d2@9 ~@7",
  I: "[g2,d3]@3 ~ [g2,d3]@3 ~ [g2,d3]@3 ~ [g2,d3]@4, e2 ~@15", J: "[a2,e3]@3 ~ a2@3 ~ a2@3 ~ [a2,e3]@4, ~ e3@2 ~",
  K: "[g2,d3]@3 ~ [g2,d3]@3 ~ [g2,d3]@3 ~ [g2,d3]@4", // G5
})).s("gm_electric_guitar_muted").gain(0.3)

// other · harmonica
const harmonica = note("<~@35 A@2 B C ~@28 D@2 E F ~@7 G H I J ~@46 K@2>".pickRestart({
  A: "[~@2 a4@26 a4 ~ b4@2]/2", B: "g#4 ~@10 d4 e4 ~ e4 ~", C: "e3 ~@15",
  D: "[~@4 b4@2 d5@13 ~ a4@2 b4 ~ g4@2 e4 ~@3 e4 ~, ~@24 f#4 ~@7]/2", E: "~@4 e4 ~@3 e4 ~ e4 ~@3 e4 ~",
  F: "~@2 e4 ~ e4 ~@11", G: "~@5 a4 b4 ~", H: "[b4,d5]@15 ~",
  I: "~@4 b4@2 d5 ~ g4@2 e4 ~ d4@2 ~@2, ~@4 a#4 ~@3 f#4 ~@7", J: "e4@2 b3@11 ~@3",
  K: "[~@4 b4@2 d5@13 ~ a4@2 b4 ~ g4@2 e4 ~@5, ~@24 f#4 ~@7]/2",
})).s("gm_harmonica").gain(0.36).pan(0.6)

// chords · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note("<~@29 A ~@3 A ~@19 A ~@3 A ~@3 A ~@3 A ~@32 A ~@3 A ~@7 A ~@3 A ~@15>".pickRestart({
  A: "~@8 [b4,d5,e5,g5]@2 [b4,d5,e5,g5] ~@5", // Em7
})).s("gm_synth_brass_1").gain(0.22).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  A@30 B A@3 B A@19 B A@3 B A@3 B A@3 B A@17 C A@14 B A@3 B A@3 B A@3 B A@3 B A@9 D@3 E F
>`.pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~@3", C: "x ~ x!2 ~ x ~@2", D: "x ~@3 x!2 ~ x", E: "x", F: "~@5 x ~@2",
})).gain(0.52)

// drums · snare
const snare = s("sd").struct("<~@4 A@31 ~@3 A@36 B A@6 ~@2 A C A@40 D A@2 E F>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~ x ~@2 x ~ x ~", D: "~ x!3", E: "x", F: "~@5 x ~@2",
})).gain(0.59)

// drums · low tom
const low_tom = s("lt").struct("<~@74 [~@6 x!2] ~@55>").gain(0.52)

// drums · hihat
const hihat = s("hh").struct(`<
  A@3 B C@6 D C@4 D C@4 D C@4 D C@2 ~@7 A@2 B C@6 D C@4 D C@2 ~@29 A@2 C E F C D C@4 D C@4 ~@21 G C@7 H ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "x!8", D: "~ x!3 ~ x!3", E: "x ~ x ~@2 x ~@2", F: "~ x!7", G: "~@5 x!3", H: "x",
})).gain(0.26)

// drums · mid tom
const mid_tom = s("mt").struct("<~@74 [~@4 x!2 ~@2] ~@55>").gain(0.39)

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

// drums · crash
const crash = s("cr").struct(`<
  ~@10 A ~@4 A ~@4 A ~@4 A ~@2 B ~ A ~@3 A B ~@8 A ~@4 A ~@2 B ~ A ~@3 A ~@3 A ~@3 A ~@7 C B@2 ~@2 B@2 ~@4 B ~ A ~@4 A
  ~@4 B ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@10 B@3 ~
// … 26 more lines

More by Tina Turner