Strudelify

I Can't Stand the Rain

Tina Turner

KeyB♭ majorTempo108 bpm
0:00/0:00
// I Can't Stand the Rain — TURNER TINA
// 108 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(108/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 · harpsichord
const harpsichord = note(`<
  A@2 ~ B ~ C ~ D ~ E F C ~ G C ~@7 D ~ E F C ~ G C ~@15 D ~ E F C ~ G C ~@9 B ~ C ~ B ~ C ~ B ~ C ~ B ~ C ~ B
>`.pickRestart({
  A: "[~@15 [f5,bb5]@12 ~@5, ~@14 [bb4,d5]@13 ~@5]/2", B: "[bb4,d5,f5] ~@15", C: "[d5,f5,bb5] ~@15",
  D: "[f5,bb5] ~@7, d5 ~@15", E: "[g4,bb4,eb5] ~@15", F: "[d5,f5] ~@15, bb4 ~@7", G: "[g4,bb4,eb5] ~@7",
})).s("gm_harpsichord").gain(0.22)

// bass · electric bass finger
const bass = note(`<
  ~@7 A B C D E F G H I J E@2 K L M A B C D E F G H N O P Q R S T U V W X Y ~@3 A B C D E F G H N O P Q R S T Y ~@7 A@10
  Z
>`.pickRestart({
  A: "bb1 ~ bb1@2 d2@2 bb1 ~@3 [bb2,c3] d3@4 ~", B: "bb1 ~ bb1 ~ d2@2 bb1 ~@3 [f2,g2] bb2@4 ~",
  C: "eb2 ~ eb2 ~ g2@2 eb2@2 ~@2 [bb1,c2] d2@2 c2@2 ~", D: "bb1 ~ bb1 ~ d2@2 bb1 ~@3 [bb2,c3] d3@3 ~@2",
  E: "bb1 ~ bb1 ~ d2@2 bb1 ~@3 [bb2,c3] d3@4 ~", F: "bb1 ~ bb1 ~ d2@2 bb1 ~@3 [f2,g2] bb2@3 ~@2",
  G: "eb2 ~ eb2 ~ g2@2 eb2@2 ~@2 [bb1,c2] ~ d2@2 c2@2", H: "bb1 ~ bb1 ~ d2 ~ bb1 ~@3 bb1 ~ c2@2 bb1 ~",
  I: "ab1!2 ~@4 ab1@3 ~ eb1 ~ ab1 ~ ab1@2", J: "~@2 ab1 ~@3 ab1@3 ~ eb1@2 ab1 eb1 ~@2",
  K: "db2@2 db3@2 db2@2 db3 ~ db2@2 db3 ~ db2@2 db3@2", L: "c2 c3 c2 c3 c2 c3 c2 c3",
  M: "f1 f1@2 ~@2 f2 ~@2 f1@2 eb1@2 f1 ~ ab1@2", N: "ab1 ab1@2 ~@3 ab1@2 ~@2 ab1@2 ~@2 ab1@2",
  O: "~@2 ab1@2 ~@2 ab1 ~ ab1@2 eb1@2 f1@2 ab1@2", P: "bb1 ~ bb1@2 ~@2 bb1@3 ~ f1@2 bb1 ~ bb1@2",
  Q: "~@2 bb1@2 ~@2 bb1@2 f1 eb1@2 ~ f1@2 bb1 ~", R: "db2 ~ db2 ~@3 db2@2 ~@2 db2@2 db1@2 db2@2",
  S: "c1 c1@2 ~ c2@2 c1 ~ c1@2 c2@2 c1 c2@2 ~", T: "f1 f2 f1 f2 eb1 eb2 ab1 ab2",
  U: "bb1 ~ bb1@2 d2@2 bb1@2 ~@2 bb1@2 d2@2 bb1 ~", V: "ab1 ~ ab1@2 c2@2 ab1@2 ~@2 ab1@2 c2@2 ab1@2",
  W: "bb1 ~ bb1@2 d2@2 bb1@2 ~@2 bb1@2 d2@2 bb1@2", X: "db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~", Y: "bb1 ~@3",
  Z: "bb1 ~ bb1@2 d2@2 bb1 ~@3 [bb2,c3] d3@2 ~@3", // Bbsus2
})).s("gm_electric_bass_finger").gain(0.49)

// chords · brass section
const brass_section = note(`<
  ~@19 A B C D ~@2 E F@2 G@2 H@4 A B I J K L M ~@4 N@2 O F@2 P@3 H@4 A B I ~@12 Q R S T U R V
>`.pickRestart({
  A: "[db2,db3,ab3]", B: "[c2,c3,g3]@15 ~", C: "~@3 [eb4,ab4], [f2,f3,c4]", D: "bb3 ~@7, d3 ~@15",
  E: "~@2 [f4,bb4] [eb4,ab4] [f4,bb4] ~ [f4,bb4] [eb4,ab4] [f4,bb4] ~ [f4,bb4]@2 [ab4,db5]@4", // Bb5 Ab5 Bb5 Ab5 Bb5 Db5
  F: "[[f4,bb4] ~@11 [eb4,d5,g5]@2 [f4,bb4,db5,f5]@12 ~@6, ~@12 g4 ~@19]/2", // Bb5 Ebmaj7 Bbm
  G: "[~@2 [d4,d5]@2 [eb4,eb5] ~@11 [bb2,bb3]@11 ~@5, ~@3 [bb4,bb5]@6 ~@7]/2", // D Eb Bb
  H: "[[ab3,eb4,ab5]@25 ~ [ab3,eb4,ab5] ~ [e4,a5]@2 [bb3,f4,bb5]@22 [d3,bb4,bb5]@2 ~@2 [d3,bb4,bb5]@2 [b4,b5] ~ [e3,c4,c5]@2 ~@2, ~@28 a3 ~@29 eb3@2 ~@4]/4", // Ab5 A5 Bb5 Gm B C
  I: "[f2,f3,c4]", J: "~@6 [d4,bb4,bb5] [e4,c5,c6] [f4,d5,d6]!2 ~ [f4,c5,c6] ~ [bb4,d5,bb5] ~@2",
  K: "~@6 [ab4,d5,ab5] [bb4,d5,bb5] [c5,e5,c6] [c4,c5,c6] ~ [bb3,bb4,bb5] ~ [ab3,ab4,ab5] ~@2", // Abdim Bb C Bb Ab
  L: "~@6 [d4,bb4,bb5] [e4,c5,c6] [f4,d5,d6] [bb4,d5,d6] ~ [e4,c5,c6] ~ [bb3,bb4,bb5] ~@2", M: "[f3,bb3,c4,f4,bb4,f5]",
  N: "[~@6 [eb4,eb5] [d4,d5]@5 ~ [f4,f5] [eb4,eb5] [db4,db5], ~@14 eb4 ~@17]/2", // Eb D F Eb Db
  O: "[eb4,eb5]@2 [f4,bb4] [eb4,ab4] [f4,bb4] ~ [f4,bb4] [eb4,ab4] [f4,bb4] ~ [f4,bb4]@2 [ab4,db5]@4", // Eb Bb5 Ab5 Bb5 Ab5 Bb5 Db5
  P: "[~@2 [d4,d5]@2 [eb4,eb5] ~@11 [bb2,bb3]@28 ~@4, ~ [bb4,bb5]@2 ~@5]/3", // D Eb Bb
  Q: "[ab3,ab4]@2 [bb3,bb4] ~@3 [ab3,ab4]@2 [bb3,bb4] ~@3 [ab3,ab4]@2 [bb3,bb4] ~", R: "~@10 [db4,ab4,db5]@5 ~",
  S: "[ab3,ab4]@2 [bb3,bb4] ~@3 [ab3,ab4]@2 [bb3,bb4] ~@3 [ab3,ab4]@2 [bb3,bb4]@2", // Ab Bb Ab Bb Ab Bb
  T: "~@2 db4 ~@3 eb4 ~, ~@4 db5 ~@7 eb5 ~@3",
  U: "[ab3,ab4]@2 [bb3,bb4] ~@3 ab3@2 [bb3,bb4] ~@3 [ab3,ab4]@2 bb3@2, ~@6 ab4 ~@7 bb4 ~", // Ab Bb Ab
  V: "[ab3,ab4]@2 [bb3,bb4] ~@3 ab3@2 [bb3,bb4] ~@3 [ab3,ab4]@2 ~@2, ~@6 ab4 ~@9", // Ab Bb Ab
})).s("gm_brass_section").gain(0.29)

// other · string ensemble 2
const string_ensemble_2 = note("<~@15 A@4 B@3 ~@8 C@4 B@3 ~@16 C@4 B@3 ~@8 D@7 E@4>".pickRestart({
  A: "[[ab4,ab5]@31 [bb4,bb5]@32 ~]/4", B: "[[f5,f6]@11 ~]/3", C: "[[ab4,ab5]@31 bb4@32 ~]/4",
  D: "[[bb4,bb5]@25 ~ [bb4,bb5] [c5,c6] [d5,d6]@2 [c5,c6] [bb4,bb5]@26 ~ [bb4,bb5] [c5,c6] [d5,d6]@2 [c5,c6] [bb4,bb5]@26 ~ [bb4,bb5] [c5,c6] [d5,d6]@2 [c5,c6] bb4@17]/7", // Bb C D C Bb C D C …
  E: "[~@10 [bb4,bb5] [c5,c6] [d5,d6]@2 [c5,c6] [bb4,bb5]@26 ~ bb4 [c5,c6] [d5,d6]@2 c6 [bb4,bb5]@13 ~@4, ~@47 c5 ~@16]/4", // Bb C D C Bb C D Bb
})).s("gm_string_ensemble_2").gain(0.18)

// other · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@31 A@3 ~@20 A@3 ~@16 B@3 ~ C ~>".pickRestart({
  A: "[~@15 bb5@31 ~@2]/3", B: "[~@15 bb5@26 ~@7]/3", C: "~@10 bb5 ~@5",
})).s("gm_string_ensemble_2").gain(0.11)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@7 A B C@6 D@8 E@8 F@5 G@8 ~ H I J@3 K@2 L M@2 N@4 O@7 P@4 Q@4 R@2 S@2 T
>`.pickRestart({
  A: "[f2,bb2,f3,bb3,d4,f4]@2 [bb2,f3,bb3,d4] [bb2,d4,f4] [f2,bb2,d4,f4]@12, ~@3 [f3,bb3]@13", // Bb Bb5
  B: "[f3,bb3,d4,f4]@3 [bb3,d4,f4] [f3,bb3,d4,f4]@12, [f2,bb2]", // Bb Bb5
  C: "[ab3@2 ab3 [eb3,ab3,c4] [eb3,ab3,c4]@2 ab4@2 ~ c4 [ab3,c4]@2 [ab3,c4,ab4]@4 [f3,bb3,d4,f4]@3 [f3,bb3,d4,f4] [f3,bb3,d4,f4]@12 [f3,bb3,d4,f4]@3 [d4,f4] [d4,f4]@12 [d4,f4]@2 ~ [bb3,d4,f4]!2 [bb3,d4,f4]@11 [f3,ab3,c4,ab4]@2 [c4,ab4] [eb3,ab3,c4,ab4] [ab3,c4] c4 [eb3,ab3] [eb3,ab3,c4,ab4]@9 [ab3,c4,ab4]@2 [d4,f4] [bb3,d4,f4] [bb3,d4,f4]@2 [bb3,d4,f4]@10, [f2,bb2,f3,c4,ab4]@3 ab4@3 [eb3,ab3,c4]@4 eb3@6 ~@19 [f3,bb3]@16 ~ f3@12 ~@4 [eb3,ab4]@3 ~@9 eb3@16, ~ ab2@23, ~@2 c3@3 c3@5 bb2@38, ~@2 ab4 ~@21]/6", // Ab Bb Dm Bb Fm Ab Ab5 Ab …
  D: "[[eb3,ab3,c4,ab4]@2 [ab3,c4] [eb3,ab3,c4]@2 [ab3,c4] [eb3,ab3,c4,ab4]@4 [eb3,ab3,c4,ab4]@2 [c4,ab4]@2 [c4,ab4]@2 [eb3,ab3,c4,ab4]@2 [ab3,c4] [eb3,ab3,c4,ab4]@2 [eb3,ab3,c4] [c3,eb3,ab3,c4,ab4]@2 ab4 [eb3,ab3,c4,ab4]@2 ab4 [ab3,c4] [eb3,ab3,c4,ab4]@3 [bb3,d4,f4]@2 [bb3,d4,f4]!3 [f3,bb3]@2 bb3@2 ~ [bb3,d4,f4]@2 [d4,f4]@2 [d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4] [f3,bb3,d4,f4] [f3,bb3,d4,f4]@2 [f3,bb3,d4,f4]@3 [bb3,d4,f4] [f3,bb3,d4,f4]@2 [bb2,f3,bb3,d4,f4]@3 d4 [eb3,ab3,c4,ab4]@3 [eb3,ab3,c4,ab4] [eb3,ab3,c4,ab4]@2 [eb3,ab3,c4]@3 ~ [eb3,ab3]@2 [ab3,c4]@4 [ab3,c4,ab4]@2 [ab3,c4,ab4] [ab3,c4] [eb3,ab3,c4]@2 [ab3,c4,ab4]@3 [ab3,c4,ab4]!2 [eb3,ab3,c4,ab4] [eb3,ab3,c4,ab4]@2 ~ ab3 [a3,c4,f4]@3 [c4,f4] [c4,f4]@2 [a3,c4,f4]@3 [a3,c4,f4] ~ c4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [c3,f3,bb3,d4,f4]@2 [f3,bb3,d4,f4] [bb2,f3,bb3,d4,f4] [bb2,f3,bb3,d4,f4]@12, ab2, c3@16 c3@6 ~@3 c3@22 ~ [bb2,f3]@4 bb2@8 ~@4 bb2@10 c3@10 c3@24 c3@4 ~@16, ~@2 ab4@4 ~@6 [eb3,ab3]@4 ~@16 f3@5 [d4,f4]@4 ~@29 ab4@10 ~@3 ab4@3 ~@9 eb3@10 ~ [f3,a3,c4,f4]@2 ~@20, ~@39 f3@5 [f3,bb3]@4 ~@25 c4@2 ~ eb3@7 ~@3 eb3@5 ~@3 [eb3,ab3,c4,ab4]@2 ~@3 a3@3 ~@26]/8", // Ab Fm Ab Bb Bb5 Bb Dm Bb …
  E: "[[bb3,d4,f4]@3 [bb3,d4,f4] [bb3,d4,f4]@12 [c4,ab4]@2 c4 ~ ab3@2 [ab3,c4,ab4]@10 f4@2 f4 [bb3,d4] [f3,bb3,d4]@2 [f3,bb3,d4,f4]@10 [f3,bb3,d4,f4]@4 [bb3,d4,f4]@12 [bb3,d4,f4]@2 ~ [bb3,d4,f4] [f3,bb3,d4,f4]@12 [f3,ab3,c4,ab4]@2 [c4,ab4] [eb3,ab3,c4,ab4] [eb3,ab3,c4,ab4]@2 [ab3,c4,ab4]@10 [d4,f4]@2 [d4,f4] [bb3,d4,f4] [bb3,d4,f4]@2 [bb3,d4,f4]@10 [eb3,ab3,c4,ab4]@2 ab3 [ab3,c4,ab4] [eb3,ab3,c4,ab4]@2 [eb3,ab3,c4,ab4]@3 ab3 [c3,eb3,ab3]@2 [c3,ab3,c4,ab4]@2 [ab3,c4,ab4]!2, f2@61 ab2@2 [ab2,c3], bb2@18 bb2@6 bb2@33 c3@4 ~@3, f3@16 [eb3,ab3]@3 [c4,ab4]@3 ~@13 f4@3 ~@58 ab3@4 ~@21 [c4,ab4]@3 ~@4, ~@20 eb3@12 [eb3,bb3,d4]@4 ~@16 f3@16 ~@18 eb3@13 ~ f3@13 ~ eb3@2 ~@8 eb3@4]/8", // Bb Fm Ab Bb Fm Ab Dm Bb …
  F: "[[c3,eb3,ab3,c4,ab4]@2 [c3,eb3,ab3,c4,ab4] [eb3,ab3,c4,ab4] c4!2 [eb3,ab3,c4,ab4]@2 [ab3,ab4] [eb3,ab3,c4] c4!2 [ab3,c4,ab4]@2 [ab3,c4,ab4]@2 [f3,bb3,d4,f4]@2 f4 [bb3,d4,f4] [bb3,d4,f4]@2 [f3,bb3,d4,f4]@10 [bb3,d4,f4]@2 [bb3,d4,f4] [f3,bb3,d4,f4] [f3,bb3,d4,f4]@2 [f3,bb3,d4,f4]@10 [eb3,ab3,c4,ab4]@2 [ab3,c4,ab4]!2 [ab3,c4,ab4]@2 [eb3,ab3,c4,ab4]@3 [ab3,c4,ab4] ~ [ab3,c4] [eb3,ab3,c4,ab4]@2 [ab3,c4,ab4] [ab3,c4] [ab3,c4,ab4]@2 [c4,ab4] [ab3,c4,ab4] [eb3,ab3,c4,ab4]@2 ab4@2 ab4 [ab3,c4,ab4] [eb3,ab3,c4,ab4] [ab3,c4,ab4] [eb3,ab3,c4,ab4]@2 ~ [ab3,c4], ~@2 c3@3 ab2@35, ~@4 [eb3,ab3,ab4]@2 ~@3 ab4@3 ~@68, ~@10 c3@22 [bb2,f3]@4 bb2@27 c3@15 [c3,eb3,ab3,c4,ab4]@2, ~@10 [eb3,ab3]@2 eb3@4 ~@3 f3@3 ~@29 eb3@3 ~@4 [eb3,ab3,c4,ab4]@2 ~@3 eb3@4 ~@3 [eb3,ab3,c4]@4 ~@6]/5", // Ab Bb Ab Fm Ab Ab5 Bb5 Ab …
  G: "[[c3,eb3,a3,c4,f4]@3 [f3,a3,c4,f4] [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] [a3,c4,f4] [a3,c4,f4]@2 [a3,c4,f4]@2 ~ f4 [f3,bb3,d4,f4]@2 [bb3,d4,f4] [d4,f4] [d4,f4]@12 [f3,ab3,c4,ab4]@2 [c4,ab4]!2 [c4,ab4]@12 [eb3,bb3,d4,f4]@2 [bb3,d4,f4]!2 [bb3,d4,f4]@22 [f3,bb3,d4,f4]@2 [ab3,c4,ab4] [eb3,ab3,c4,ab4]@51, ~ f2@31, ~ c3!2 c3@29, ~@9 f3@3 f3@4 ~@3 [f3,bb3]@13 ~@3 [eb3,ab3]@13 ~@3 f3@22 ~@55, ~@7 [a3,c4,f4] ~@56]/8", // F7 F Bb Dm Fm Bb Ab Bb5 …
  H: "f4@2 f4 [bb3,d4,f4] [f3,bb3,d4,f4]@12, bb2, [f3,bb3,d4] ~@3", // Bb
  I: "[f3,bb3,d4,f4]@3 ~ f3@12, bb2, ~@3 [bb3,d4,f4]@13", // Bb
  J: "[[ab3,c4,ab4]@2 [ab3,c4,ab4]!2 [c3,eb3,ab3,c4,ab4]@2 [c3,eb3,ab3,c4,ab4]@10 [c3,eb3,ab3,d4,f4]@3 [f3,bb3,d4,f4] [f3,bb3,d4,f4]@12 [bb3,d4,f4]@2 d4 [bb3,d4,f4] [bb3,d4,f4]@2 [bb3,d4,f4]@10, f2, [bb2,f3] ~@4 bb2@7, ~@2 f3]/3", // Ab Fm7 Bb Bb5
  K: "[f4@2 f4 [f3,bb3,d4,f4] [bb2,f3,bb3,d4,f4]@2 [bb2,f3,bb3,d4,f4]@10 [c3,eb3,ab3,c4,ab4]@3 [ab3,c4] [ab3,c4]@2 [ab3,c4,ab4]@10, f2, [bb2,f3,bb3,d4]@4 ~@15 ab4@3 ~@10, ~@5 [c3,eb3]@3]/2", // Bb Ab Bb Cm
  L: "[bb3,d4,f4]@2 [bb3,d4,f4] [f3,bb3] [bb2,f3,bb3]@2 [bb2,f3,bb3,d4,f4]@10, ab2, [bb2,f3]@3 [d4,f4]@3 ~@10", // Bb Bb5 Bb Bb5 Dm
  M: "[[c3,eb3,ab3,c4,ab4]@2 [c3,eb3,ab3,c4] [eb3,ab3,c4,ab4] [c3,eb3,ab3,c4,ab4]@2 [eb3,ab3,c4,ab4]@3 [ab3,c4,ab4] [ab3,c4,ab4]@2 [ab3,c4,ab4]@2 ~ [eb3,ab3,c4] [eb3,ab3,c4,ab4]@2 [c4,ab4] [eb3,ab3,c4,ab4]@3 [eb3,ab3,c4,ab4]@3 [eb3,ab3,c4,ab4] [c3,eb3,ab3,c4,ab4]@2 [c3,eb3,ab3,c4,ab4]@4, ab2, ~@3 c3@4 [c3,ab4] c3@5 ~@3, ~@10 eb3@5 ~@17]/2", // Ab Fm Ab Fm
  N: "[[bb2,f3,bb3,d4,f4]@3 [bb3,d4,f4] [f3,bb3,d4,f4]@2 [bb3,d4,f4]@10 [bb3,d4,f4]@2 [d4,f4] [bb3,d4,f4] [f3,bb3,d4,f4]@2 [bb2,f3,bb3,d4,f4]@10 [bb2,eb3,ab3,c4,ab4]@2 [eb3,ab3] [ab3,c4,ab4] [ab3,c4,ab4]@2 [eb3,ab3,c4,ab4]@3 [ab3,c4,ab4] [eb3,ab3,c4,ab4]@2 [eb3,ab3,c4,ab4]@2 [eb3,ab3,c4,ab4]@2 [eb3,ab3,c4,ab4]@2 [c4,ab4] [eb3,ab3,c4,ab4] [eb3,ab3,c4,ab4]@2 [ab3,c4,ab4]@2 ab4 [ab3,c4,ab4] ~ c4 [ab3,c4,ab4]@2 [ab3,c4,ab4]@2, f2, ~@2 bb2@9 ~@6 c3@9 c3@6, ~@6 f3@13 ~@16 eb3@3 ~@16 eb3@6 eb3@4, ~@29 [ab3,c4,ab4] ~@2]/4", // Bb Dm Bb Ab Ab5 Ab Fm Ab
  O: "[[f3,a3,c4,f4]@2 [f3,a3,c4,f4] f4 ~@3 [f2,c3,f3,a3,c4]@2 [f3,a3,c4,f4] [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 f4@2 f4!2 [bb3,d4,f4]@2 [bb3,d4,f4]@90, c3@7 ~@2 c3@103, ~@3 [f3,a3,c4]@4 ~@2 f2@4 ~@3 [a3,c4]@4 ~@92, ~@4 f4@5 ~ f3@6 f3@96]/7", // F Bb F Am
  P: "[[bb3,d4,f4]@3 [bb3,d4,f4] [bb3,d4,f4]@28 f4@2 f4 [bb3,d4,f4] [bb2,f3,bb3,d4,f4]@28, bb2@9 ~@7, f3@8 [f3,bb3,d4] ~@7]/4", // Bb
  Q: "[[bb3,d4,f4]@3 [bb3,d4,f4]@29 [bb3,d4,f4]@2 d4 f4 [bb3,d4,f4]@28, [bb2,f3]]/4", // Bb Bb5
  R: "[[bb3,d4,f4]@2 ~ [bb3,d4,f4] f4 f4@27, bb2, f3@3 ~ [f3,bb3,d4]@28]/2", // Bb
  S: "[[bb3,d4,f4]@3 [d4,f4] [bb3,d4,f4]@28, [bb2,f3]]/2", // Bb Dm Bb Bb5
  T: "[bb3,d4,f4]@2 ~ [bb3,d4,f4] [f3,bb3,d4,f4]@8 ~@4, [bb2,f3]@3 ~@13", // Bb Bb5
})).s("gm_electric_guitar_clean").gain(0.11).pan(0.8)

// other · flute
const flute = note("<~@22 A B C D E B C F ~@49>".pickRestart({
  A: "bb4@6 c5 d5", B: "eb5 d5@2 bb4", C: "ab5 g5@2 eb5", D: "f5", E: "bb4@11 ~ c5@2 d5@2", F: "f5@9 ~@7",
})).s("gm_flute").gain(0.13).pan(0.7)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~ A@6 B C D E F G H I J K L M N O P B C D E F G H I J K L M N O P Q ~@2 R A@4 B C D E F G H I J K L M N O P S T U V S
  T U V S T U V S T U V S T W
>`.pickRestart({
  A: "bb3 c4 d4 f4 bb4 ~ bb4 ~@3 bb5 ~ bb5 ~@3",
  B: "bb2 ~ [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [f3,bb3] ~ g3 f3 d3", // Bb5
  C: "bb2 ~ [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 ~ g3 f3 d3 bb2, ~@11 [f3,bb3]@2 ~@3", // Bb5
  D: "~@2 [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [f3,bb3]@2 g3 f3 d3", // Bb5
  E: "bb2@2 [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [eb3,ab3]@2", // Bb5 Ab5
  F: "bb2 ~ [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [f3,bb3]@2 g3 [d3,f3] ~", // Bb5 Dm
  G: "bb2@2 [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [f3,bb3]@2 g3 f3 d3", // Bb5
  H: "eb3@2 [bb3,eb4] ~ eb3 [bb3,eb4] ~ eb3 [bb3,eb4] ~ eb3 [bb3,eb4] ~ f4 eb4 d4", // Eb5
  I: "bb2 ~ [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [eb3,ab3] ~", // Bb5 Ab5
  J: "ab2 ~ [eb3,ab3] ab2 ~ [eb3,ab3] ab2 ~ [eb3,ab3] ~ ab2 f3@2 [c3,eb3] ~ ab2", // Ab5 Cm
  K: "~@2 [eb3,ab3] ~ ab2 [eb3,ab3] ~ ab2 [eb3,ab3] ~ ab2 f3@2 eb3 c3@2", // Ab5
  L: "bb2@2 [eb3,ab3] ~ bb2 [eb3,ab3] ~ bb2 [eb3,bb3] ~ bb2 bb3@2 f3 d3 c3", // Ab5 Eb5
  M: "bb2 ~ [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 [f3,bb3] ~ bb2 g3@2 f3 d3 c3", // Bb5
  N: "db3@2 [ab3,db4] ~ db3 [ab3,db4] ~ db3 [ab3,db4] ~ db3 [ab3,db4] ~ db3 [ab3,db4]@2", // Db5
  O: "c3 ~ [g3,c4] ~ c3 [g3,c4] c3 ~ [g3,c4] ~ c3 [g3,c4] ~ c3 [g3,c4] ~", // C5
  P: "f2@2 [c3,f3] ~ f2 [c3,f3] f2 ~ [c3,f3] f2 c3 f3 ~ ab2 [ab3,db4]@2", Q: "[f3,bb3]@3 ~@13",
  R: "~@7 f3 bb3 ~ ab3 ~ f3 eb3 c3 ~",
  S: "[bb2,bb3] c4 [f3,bb3,d4] f4 [bb2,bb4] [f3,bb3] bb4 bb2 [f3,bb3] ~ [bb2,bb5] [f3,bb3] bb5 g3 f3 d3", // Bb Bb5 Bb Bb5
  T: "[bb2,bb3] c4 [f3,bb3,d4] f4 [bb2,bb4] [f3,bb3] bb4 bb2 [f3,bb3] ~ [bb2,bb5] ~ [g3,bb5] f3 d3 bb2, ~@11 [f3,bb3]@2 ~@3", // Bb Bb5 Bb Gm Bb5
  U: "bb3 c4 [f3,bb3,d4] f4 [bb2,bb4] [f3,bb3] bb4 bb2 [f3,bb3] ~ [bb2,bb5] ~ bb5 g3 f3 d3, ~@11 [f3,bb3]@2 ~@3", // Bb Bb5 Bb Bb5
  V: "~ c4 [f3,bb3,d4] f4 [bb2,bb4] [f3,bb3] bb4 bb2 [f3,bb3] ~ [bb2,bb5] [f3,bb3] bb5 bb2 [eb3,ab3]@2, [bb2,bb3] ~@7", // Bb Bb5 Bb Bb5 Ab5 Bb
  W: "bb3 c4 [f3,bb3,d4] f4 [bb2,bb4] [f3,bb3] bb4 bb2 [f3,bb3] ~ [bb2,bb5] ~ bb5 ~@3, ~@11 [f3,bb3]@2 ~@3", // Bb Bb5 Bb Bb5
})).s("gm_electric_guitar_muted").gain(0.22).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!78>").gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A@3 B A@3 C A@3 D A@3 E A@2 B A@3 C A@3 D A@3 C A@8 B A F A@3 C A@3 D A@3 C A@3 ~@8 A@11
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@5 x ~ x ~ x!2", C: "~@4 x ~@3 x ~ x ~ x ~@2 x", D: "~@4 x ~@7 x ~ x!2", E: "~ x ~@2",
  F: "~@2 x ~ x ~@2 x ~ x!2 ~ x ~ x!2",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@18 [~@11 x ~ x ~@2] ~@60>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@3 A B@11 A B@2 C A B@10 A B@3 A B@6 A B A B@9 A B@3 A B@2 A B@18>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "x!2 ~ x ~ x ~ x", C: "x!2 ~@6",
})).gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<~@18 [~@9 x!2 ~@3 x!2] ~@60>").gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@3 [~@15 x]!15 ~ [~@15 x]!59 ~>").gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@18 [~@6 x!2 ~@8] ~@60>").gain(0.32)

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

// drums · woodblocks
const woodblocks = s("woodblock:4").struct("<~@22 A@14 B A@7 B A@14 B C@8 A@11>".pickRestart({
  A: "x!4", B: "x!3 ~", C: "~ x ~ x",
})).gain(0.58)

// drums · bell tree
const bell_tree = s("marktrees:0").struct(`<
  A ~@2 B ~ B ~ B A ~ A ~ A@2 ~@8 B A ~ A ~ A@2 ~@4 A ~@9 B ~ B A ~ A ~ A@2 ~@4 A ~@5 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B
>`.pickRestart({
  A: "~@15 x", B: "x",
})).gain(1.91)

stack(
  harpsichord, bass, brass_section, string_ensemble_2, string_ensemble_2_soft, electric_guitar_clean, flute,
  electric_guitar_muted, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash, woodblocks, bell_tree
)

More by Tina Turner