Strudelify

Let's Stay Together

Tina Turner

KeyG♯ minorTempo105 bpm
0:00/0:00
// Let's Stay Together — TURNER TINA
// 105 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 137 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/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 · piano · "A.PIANO 3"
const piano = note("<~@67 A@2 B C D@2 E F ~@6 E F E F G@2 H@2 ~@18 E F ~@6 E F E F ~@6 E F E F ~@8>".pickRestart({
  A: "[[c#2,e4,g#4,b4,d#5]@15 ~]/2", B: "[d2,d4,f#4,a4,c#5]@7 ~", C: "[c#2,e4,g#4,b4,d#5]@7 ~",
  D: "[[d2,d4,f#4,a4,c#5]@31 ~]/2", // Dmaj7
  E: "~@2 [g#4,b4,d#5]@2 [e2,e4,g#4,b4,d#5] ~@5 [f#4,a#4,c#5]@2 [d#2,d#4,f#4,a#4,c#5] ~@3, ~@2 [e2,e4] ~@7 [d#2,d#4] ~@5", // G#m Emaj7 F# D#m7 E D#
  F: "~@2 [e4,g#4,b4]@2 [c#2,c#4,e4,g#4,b4] ~@5 [f#4,a#4,c#5]@2 [d#2,d#4,f#4,a#4,c#5] ~@3, ~@2 [c#2,c#4] ~@7 [d#2,d#4] ~@5", // E C#m7 F# D#m7 C# D#
  G: "[[b2,f#4,b4,d#5]@15 ~]/2", H: "[[g#2,f#4,a#4,c#5]@15 ~]/2",
})).s("gm_piano").gain(0.35)

// bass · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~@27 A@2 B C D@2 E F G H I J G H I K A@2 B C D@2 E F G H I J G H L C M N O P M N Q R M N S N T S Q U M N O@2 M N Q R Q
  R A@2 B C D@2 V W G H I J G H X C M N O P M N Q U M N O P M N Q R Q U Y N O Z M N Q R Q R M N O AA M AB ~@2
>`.pickRestart({
  A: "b1@6 c#2!2 d#2@4 f#1@4", B: "g#1@5 ~ b1@5 ~ d#2@4", C: "g#1@5 ~ g#1@2 g#1@3 ~ f#1@3 ~",
  D: "e1@6 f#1!2 g#1@4 b1@4", E: "g1@5 ~ g1@2 g1@5 ~ g1@2", F: "g1@5 ~ g1@2 g1@3 ~ g1@3 ~",
  G: "d#2@5 ~ d#2@2 c#2@5 ~ c#2@2", H: "b1@5 ~ b1@2 b1@3 ~ c#2@3 ~", I: "g#1@5 ~ g#1@2 g#1@5 ~ g#1@2",
  J: "g#1@5 ~ g#1@2 g#1@2 a#1@2 b1@2 c#2@2", K: "g#1@5 ~ g#1@2 g#1@3 ~ a#1@3 ~", L: "g#1@5 ~ g#1@2 g#1@6 ~ g#1",
  M: "c#1@6 ~ g#1 c#2 ~ c#2@3 ~ g#1@2", N: "c#1@6 ~ g#1 c#2 ~ c#2@5 ~", O: "d#1@6 ~ a#1 d#2 ~ d#2@3 ~ a#1@2",
  P: "d#1@6 ~ a#1 d#2 ~ d#2@5 ~", Q: "~@2 e1 ~@2 d#2 d#1 ~", R: "~@2 c#2@2 c#1@2 ~@4 d#2@2 d#1 f#1@3",
  S: "d1@6 ~ a1 d2 ~ d2@5 ~", T: "d1@6 ~ a1 d2 ~ d2@3 ~ a1@2", U: "~@2 c#2@2 c#1@2 ~@4 d#2@2 d#1 ~ c2@2",
  V: "g1 ~ g1@2 ~@2 g1@2 g1 ~ g1@2 ~@2 g1@2", W: "g1 ~ g1@2 ~@2 g1@2 g1@3 ~ g1@3 ~", X: "g#1@5 ~ g#1@2 g#1@5 ~ g#1 ~",
  Y: "c#2 ~ c2@2 c#2@2 ~ g#1 c#2 ~ c#2@3 ~ g#1@2", Z: "d#1@6 ~ a#1 d#2 ~ a#1@2 d#2@2 a#1@2",
  AA: "d#1@6 ~ a#1 d#2@2 a#1@2 d#1@3 ~", AB: "c#1@3 ~@5",
})).s("gm_synth_bass_1").gain(0.4)

// chords · pad metallic · "METAL PAD"
const pad_metallic = note(`<
  A@7 B@2 C@2 D E F@2 G@2 H@2 I@2 J@2 K@2 ~@2 L@2 M@2 N@2 O@2 P Q R@2 P Q S@2 T@2 U@2 B@2 C@2 V W X@2 V W H@2 Y@2 Z@2
  AA@2 ~@2 Y@2 AB AC AD@2 ~@2 Y@2 Z@2 AA@2 ~@4 T@2 U@2 B@2 C@2 V W X@2 V W H@2 Y@2 Z@2 AA@2 ~@2 Y@2 Z@2 AA@2 ~@4 Y@2 Z@2
  AA@2 ~@4 Y@2 Z@2 AA@2 ~@2
>`.pickRestart({
  A: "[[d#4,f#4,g#4,a#4,c#5]@3 [f#4,g#4,a#4,c#5,d#5]@4, [b1,b2]]/7", B: "[e3,f#4,g#4,b4,e5]/2",
  C: "[b3@6 c#4 d4, [g3,g4,b4,d5,f#5]]/2", D: "[f#3,a#3,f#4,a#4,c#5] [e3,g#3,e4,g#4,b4]",
  E: "~ c#5, [d#3,f#3,d#4,f#4,a#4]", F: "[f#3 g#3, [a#3,d#4,f#4,g#4,a#4,c#5]]/2",
  G: "[[f#3,f#4,a#4,c#5]@2 [e3,g#3,e4,g#4,b4]@2 ~@3 g#3, a#3, ~ [d#3,d#4,f#4,a#4], ~@4 f#3@3 ~, ~@3 c#5]/2", // F# E D#m
  H: "[[a#3,a#4] [b3,b4], [g#3,d#4,f#4,g#4,c#5]]/2", I: "[d#5@3 e5, [e3,b3,d#4,g#4,b4]]/2",
  J: "[d#3,a#3,c#4,f#4,a#4,c#5]/2", K: "[c#3,g#3,b3,e4,g#4,b4,d#5]/2", L: "[b3@7 a#3]/2", M: "[g#3@7 f#3]/2", N: "e3/2",
  O: "[b3@6 c#4 d4, g3]/2", P: "[a#3,c#4] [g#3,b3]", Q: "f#3@3 g#3, a#3", R: "[g#3,a#3,d#4]/2",
  S: "[a#3 b3, [g#3,d#4]]/2", T: "[b3@7 a#3, [f#4,b4,d#5]]/2", U: "[g#3@7 f#3, [f#4,g#4,c#5,d#5]]/2",
  V: "[a#3,c#4,f#4,a#4,c#5] [g#3,b3,e4,g#4,b4]", W: "~@3 g#3, [a#3,d#4,f#4,a#4], f#3@3 ~, ~ c#5",
  X: "[g#3,a#3,d#4,f#4,g#4,a#4,c#5]/2", Y: "[d#5@3 e5, [b3,d#4,g#4,b4]]/2", Z: "[a#3,c#4,f#4,a#4,c#5]/2",
  AA: "[g#3,b3,e4,g#4,b4,d#5]/2", AB: "[a3,d4,f#4,a4,c#5]", AC: "[b3,d#4,g#4,b4,d#5]", AD: "[a3,d4,f#4,a4,c#5]/2",
})).s("gm_pad_metallic").gain(0.13)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@9 A@2 B C D@2 B E F G H@2 I@2 J@2 ~@2 K@2 L@2 M@2 N@2 O P Q@2 O P R@2 K@2 L@2 M@2 N@2 O P Q@2 O P R@2 S@2 T@2 U@2
  ~@2 S@2 V W X@2 ~@2 S@2 T@2 U@2 ~@4 K@2 L@2 M@2 N@2 O P Q@2 O P R@2 S@2 T@2 U@2 ~@2 S@2 T@2 U@2 ~@4 S@2 T@2 U@2 ~@4
  S@2 T@2 U@2 ~@2
>`.pickRestart({
  A: "[b3@6 c#4 d4]/2", B: "a#3 g#3", C: "f#3", D: "a#3/2", E: "f#3@3 g#3", F: "a#3", G: "b3", H: "[e3,b3,d#4]/2",
  I: "[d#3,a#3,c#4]/2", J: "[c#3,g#3,b3]/2", K: "[b3@7 a#3]/2", L: "[g#3@7 f#3]/2", M: "e3/2", N: "[b3@6 c#4 d4, g3]/2",
  O: "[a#3,c#4] [g#3,b3]", P: "f#3@3 g#3, a#3", Q: "[g#3,a#3,d#4]/2", R: "[a#3 b3, [g#3,d#4]]/2", S: "[b3,d#4]/2",
  T: "[a#3,c#4]/2", U: "[g#3,b3]/2", V: "[a3,c#4]", W: "[b3,d#4]", X: "[a3,c#4]/2",
})).s("gm_synth_strings_1").gain(0.25).pan(0.6)

// chords · pad new age · "FANTASIA"
const pad_new_age = note(`<
  A@3 B@4 C@2 D@2 E F G@2 E F H@2 I@2 J@2 K@2 ~@18 L@2 M@2 C@2 D@2 E F N@2 E F O@2 P@2 Q@2 R@2 ~@2 P@2 S T U@2 ~@2 P@2
  Q@2 R@2 ~@4 L@2 V@2 C@2 D@2 E F N@2 E F O@2 P@2 Q@2 R@2 ~@2 P@2 Q@2 R@2 ~@4 P@2 Q@2 R@2 ~@4 P@2 Q@2 R@2 ~@2
>`.pickRestart({
  A: "[d#4,f#4,g#4,a#4,c#5]/3", B: "[f#4,g#4,a#4,c#5,d#5]/4", C: "[f#4,g#4,b4,e5]/2", D: "[g4,b4,d5,f#5]/2",
  E: "[f#4,a#4,c#5] [e4,g#4,b4]", F: "~ c#5, [d#4,f#4,a#4]", G: "[d#4,f#4,g#4,a#4,c#5]/2",
  H: "[a#4 b4, [d#4,f#4,g#4,c#5]]/2", I: "[d#5@3 e5, [d#4,g#4,b4]]/2", J: "[c#4,f#4,a#4,c#5]/2",
  K: "[b3,e4,g#4,b4,d#5]/2", L: "[f#4,b4,d#5]/2", M: "[f#4,g#4,b4,c#5,d#5]/2", N: "[f#4,g#4,a#4,c#5]/2",
  O: "[a#4 b4, [f#4,g#4,c#5]]/2", P: "[d#5@3 e5, [g#4,b4]]/2", Q: "[f#4,a#4,c#5]/2", R: "[e4,g#4,b4,d#5]/2",
  S: "[f#4,a4,c#5]", T: "[g#4,b4,d#5]", U: "[f#4,a4,c#5]/2", V: "[f#4,g#4,c#5,d#5]/2",
})).s("gm_pad_new_age").gain(0.32).pan(0.3)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note("<~@65 A B C D E F G H@2 I J K L M N O ~@56>".pickRestart({
  A: "~@8 [g#6,a#6] d#6 [a#5,b5] g#5 [b4,d#5] a#4 [g#4,a#4] b4", // G#sus2 Bmaj7 B G#sus2
  B: "d#5 [g#5,a#5] [b5,c#6] d#6 f#6 g#6 d#6 ~ c#7@4 b6 g#6 b6!2", C: "~ b6!4 c#7 ~ b6 ~ g#6@3 ~@2 f#6 d#6",
  D: "[c#6,d6] d#6 f#6 [c#6,d6] d#6 c#6@2 ~ b5 ~ c#6 d#6 ~ b5@2 ~", // Dmaj7
  E: "~ [g#4,a4] [b4,c#5,d5] [e5,f#5] [g5,g#5] [c#5,d5,e5,f#5] [a4,b4] [g#4,a4] [b4,c#5,d5,e5] [f#5,g5,g#5] g5 [d#5,f#5] [f#4,g#4] g#4!3", // Amaj7 Bm Esus2 G#maj7 Dmaj7 Asus2 Amaj7 C#m7 …
  F: "g#4!7 d#5@3 g#5 ~@5", G: "~@2 c#5!2 ~ d5!2 ~ e5!2 ~ f#5!2 ~ g5!2",
  H: "[~ a5!2 ~ b5!2 ~ c#6 c#6@2 d6 c#6 ~ b5 ~ b6@7 ~@4 c#6 d#6 f#6 g#6 c#6 d#6]/2",
  I: "~@2 c#6 d#6 f#6 g#6 c#6 d#6 c#6 ~ c#6 [c#6,d#6] b5 [b5,c#6] g#5 [f#5,g#5]", // C#sus2 Bsus2 F#sus2
  J: "[d#5,f#5] g#5 [b4,c#5] d#5 [g#4,b4] c#5 [d#5,f#5] [f#5,g#5] g#5 [b5,c#6] b5 [c#6,d6] d#6 [b5,c#6] [f#6,g#6] b6", // D#m Bsus2 G#m D#m F#sus2 Bsus2 Dmaj7 Bsus2 …
  K: "c#7@8 ~@2 b6 c#7 b6 c#7 b6 ~", L: "a#6 b6 [g#6,a#6] f#6 ~ d#6 ~ [g#6,a#6] ~ [f#6,g#6] f#6 ~ d#6 f#6 d#6 f#6",
  M: "[g#6,a#6] ~ [g#6,a#6] f#6 ~ d#6 ~ a#6@2 g#6 f#6 ~ d#6 f#6 d#6 f#6, ~@7 g#6 ~@8", // G#sus2
  N: "~@2 a#6 b6 a#6 g#6 d#6 b5 a#5 g#5 c#6 ~ d6!2 [a#5,b5,c#6] [d#5,g#5], ~@6 d#6 ~", // A#m G#5
  O: "[a#4,b4] g#4 [a#4,b4] c#5 d#5 f#5 [g#5,a#5] c#6 a#6@6 ~@2", // Bmaj7 G#sus2
})).s("gm_lead_2_sawtooth").gain(0.48)

// chords · alto sax
const alto_sax = note(`<
  ~@25 A B ~@31 C D E F ~@3 A B ~@6 A G D E F ~@3 A B A B ~@15 C D E F ~@3 A G D E F ~@3 A B A G H E F I ~@2 A B A B C D
  E F J ~@3
>`.pickRestart({
  A: "~@2 d#4@2 [b3,d#4] ~@5 [a#3,c#4]@2 [a#3,c#4] ~@3, ~@2 b3 ~@13", // B A#m
  B: "~@2 [g#3,d#4]@2 [g#3,d#4] ~@5 a#3@2 [a#3,c#4] ~@3, ~@10 c#4 ~@5", C: "~@7 [a#3,d4]", D: "[b3,d#4] ~@15",
  E: "~@7 [a3,c4]", F: "[a#3,c#4] ~@15", G: "~@2 [g#3,d#4]@2 [g#3,d#4] ~@5 a#3@2 [a#3,c#4] ~ [a#3,d4]@2, ~@10 c#4 ~@5",
  H: "[b3,d#4] ~ [a#3,d4]@2 [b3,d#4] ~@11", I: "~@10 [b3,d#4]@2 [a#3,c#4] ~@3", J: "~@10 [b3,d#4]@2 [b3,d#4] ~@3",
})).s("gm_alto_sax").gain(0.56)

// other · tenor sax
const tenor_sax = note(`<
  ~@25 A B ~@31 C D E F ~@3 A B ~@6 A G D E F ~@3 A B A B ~@15 C D E F ~@3 A G D E F ~@3 A B A G H E F I ~@2 A B A B C D
  E F J ~@3
>`.pickRestart({
  A: "~@2 g#3@2 g#3 ~@5 f#3 ~ f#3 ~@3", B: "~@2 [e3,b3]@2 [e3,b3] ~@5 f#3@2 f#3 ~@3", C: "~@7 g3", D: "g#3 ~@15",
  E: "~@7 f3", F: "f#3 ~@15", G: "~@2 [e3,b3]@2 [e3,b3] ~@5 f#3@2 f#3 ~ g3@2", H: "g#3 ~ g3@2 g#3 ~@11",
  I: "~@10 [e3,g#3]@2 f#3 ~@3", J: "~@10 [e3,g#3]@2 [e3,g#3] ~@3",
})).s("gm_tenor_sax").gain(0.48).pan(0.8)

// bass · baritone sax · "BARITONSAX"
const bass_2 = note(`<
  ~@25 A B ~@31 C D E F ~@3 A B ~@6 A G D E F ~@3 A B A B ~@15 C D E F ~@3 A G D E F ~@3 A B A G H E F I ~@2 A B A B C D
  E F J ~@3
>`.pickRestart({
  A: "~@2 e2@2 e2 ~@5 d#2@2 d#2 ~@3", B: "~@2 c#2@2 c#2 ~@5 d#2@2 d#2 ~@3", C: "~@7 d#2", D: "e2 ~@15", E: "~@7 d2",
  F: "d#2 ~@15", G: "~@2 c#2@2 c#2 ~@5 d#2@2 d#2 ~ d#2@2", H: "e2 ~ d#2@2 e2 ~@11", I: "~@10 c#2@2 d#2 ~@3",
  J: "~@10 c#2@2 c#2 ~@3",
})).s("gm_baritone_sax").gain(0.56).pan(0.3)

// chords · electric guitar clean · "+CHORUS GT"
const electric_guitar_clean = note(`<
  ~@27 A@2 B C D@2 E@2 F G H I F G J K L ~ M N O@2 P Q F G H I F G R S T U V W X U ~@20 Y Z AA@2 AB AC AD AE F G H I F G
  R S T U V W X U ~@2 T U V W X U ~@4 T U V AF X U ~@4 T U V W AG AH ~@2
>`.pickRestart({
  A: "[~@2 [f#3,b3]@2 [c#4,f#4] ~ [c#4,f#4]@4 [f#3,b3]@2 [c#4,f#4]@2 [d#4,f#4]@10 ~@8]/2", // B5 F#5 B5 F#5 D#m
  B: "~@10 [a#4,c#5]@2 [a#4,c#5]@2 ~ [g#4,a4,c5], ~@7 [a#4,c#5]", C: "[g4,a#4,b4] ~ [f#4,a#4]@2 [f#4,a#4]@9 ~@3",
  D: "[~@10 [g#4,c#5] ~ [g#4,c#5]@14 ~@6]/2", // C#5
  E: "[~@2 [d5,f#5] [c5,c#5,e5,f5] [b4,d#5] ~ [f#4,b4] [a4,d5] [f#4,b4]@4 [d4,f#4] [e4,g4] [d4,f#4]@4 [e4,g4] ~ [e4,g4]@2 [f4,f#4,g#4,a4]@2 [f#4,a4]@7 ~]/2", // D C#maj7 B B5 D5 B5 D Em …
  F: "[c#4,c#5]@5 ~@2 [c4,c5] [b3,b4]@5 ~ [b3,b4]@2, ~@3 [c#4,c#5] ~@4", G: "[a#3,a#4]@7 ~@9, b4 ~@15",
  H: "~@2 [d#4,a#4] ~@2 [d#4,a#4] ~@2 [d#4,a#4]@3 [d#4,a#4] ~ [d#4,a#4] ~@2", // D#5
  I: "~@2 [d#4,a#4] ~@2 [d#4,a#4] ~@2 [d#4,a#4]@2 [d#4,a#4]!2 ~ [d#4,a#4] ~@2", // D#5
  J: "[d#4,a#4]@2 d#4 [d#4,a#4] ~ [d#4,a#4] a#3 ~ [d#4,a#4] ~ d#4 [d#4,a#4] ~ [d#4,a#4] ~ [d#4,a#4]", // D#5
  K: "[d#4,a#4]!4 ~ [d#4,a#4] a#3 ~ [d#4,a#4] ~ [d#4,a#4] ~ d#4 [d#4,a#4] ~@2", L: "~ [b3,d#4,f#4] ~@6",
  M: "~@6 [f#4,a#4] ~ [f#4,a#4]@2 [g#4,b4]@2 [g#4,b4]@2 [a#4,c#5]@2", N: "[a#4,c#5]@11 ~@5",
  O: "[~@3 [c#5,f#5] ~ [f#4,b4]@7 ~@4]/2", P: "~ [f#5,a5]!2 [f5,f#5,a5] e5 [e5,g5]!3 ~ [d5,f#5]!3 [c5,c#5] [f#4,b4]!3",
  Q: "[e4,f4] [d4,f#4]!3 ~@12", // Fmaj7 D
  R: "~ a#4!2 [a#4,c#5] ~ [a#4,c#5] g#4 ~ [a#4,c#5] ~ [g#4,c#5] ~ [a#4,c#5] ~@2 [a#4,c#5], [g#4,c#5] ~@7", // A#m C#5 A#m C#5
  S: "~ a#4 [a#4,c#5]!2 ~ [a#4,c#5] g#4 ~ [a#4,c#5] ~ [g#4,c#5] ~ [a#4,c#5] ~@3, [g#4,c#5] ~@7", // A#m C#5 A#m C#5
  T: "[g#4,b4]!2 [e4,g#4] [g#4,b4] ~ [e4,g#4] ~ [g#4,b4] ~@6 [e4,g#4]!2", // G#m E G#m E G#m E
  U: "[g#4,b4]!2 [e4,g#4] [g#4,b4] ~ [a#4,c#5] ~ [b4,d#5] ~ [g#4,b4] ~ [e4,g#4] ~@4", // G#m E G#m A#m B G#m E
  V: "[a#4,c#5] ~ [f#4,a#4] [a#4,c#5] ~ [f#4,a#4] ~ [a#4,c#5] ~@6 [f#4,a#4]!2", // A#m F# A#m F# A#m F#
  W: "[a#4,c#5]!2 [f#4,a#4] [a#4,c#5] ~ [b4,d#5] ~ [c#5,f#5] ~ [a#4,c#5] ~ [f#4,a#4] ~@4", // A#m F# A#m B F#5 A#m F#
  X: "[g#4,b4] ~ [e4,g#4] [g#4,b4] ~ [e4,g#4] ~ [g#4,b4] ~@8", Y: "~@5 [b3,c#4]@11, ~ f#4@3", Z: "[b3,c#4,f#4]@7 ~",
  AA: "[~@9 a#4 ~ a#4 ~@2 g#4 ~ a#4@13 ~@3, ~@10 c#5@2 g#4@2 ~ f#4@13 ~@4, ~@13 b4@2 ~@17]/2",
  AB: "~@10 [c#5,f#5] ~ [c#5,f#5]@2 [b4,e5]@2", // F#5 E5
  AC: "[b4,e5]@2 [f#4,b4] ~ [f#4,b4] ~ [f#4,b4]@8 ~@2, ~@5 [g#4,c#5]@2 ~@9", // E5 B5 C#5
  AD: "~@2 [d5,f#5] ~@2 [f#5,a5] ~@2 [d5,f#5] ~@2 [b4,d5] ~@2 [a4,d5] [d5,f#5]", // D F#m D Bm D5 D
  AE: "~@2 [d4,f#4] ~@2 [e4,g4] ~ [e4,g4] [d4,f#4]@8", AF: "[a#4,c#5]!2 [f#4,a#4] [a#4,c#5] ~ [b4,d#5] ~ [c#5,f#5] ~@8",
  AG: "[g#4,b4] ~ [e4,g#4] [g#4,b4] ~ [e4,g#4] ~ [g#4,b4] ~@5 [a#4,c#5]!3", // G#m E G#m E G#m A#m
  AH: "~ [b4,d#5]!3 ~ [c#5,e5]!3 [d#5,f5,f#5] [c#5,d5,e5] c5 ~@5", // B C#m D#m C#m
})).s("gm_electric_guitar_clean").gain(0.48).pan(0.8)

// other · electric guitar muted · "+FUNK GTR"
const electric_guitar_muted = note(`<
  ~@117
  [~ b3 g#3 b3 ~ b3 g#3 b3 ~ b3 g#3 b3 ~ b3 g#3 b3]!2
  ~@6
  [~ b3 g#3 b3 ~ b3 g#3 b3 ~ b3 g#3 b3 ~ b3 g#3 b3]!4
  ~@8
>`).s("gm_electric_guitar_muted").gain(0.64).pan(0.8)

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

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

// drums · clap
const clap = s("cp").struct("<~@119 [~ x!2 ~@3 x ~]!6 [~ x!2 ~@2 x!2 ~]!4 [~ x!2 ~@3 x ~]!5 [~ x!2 ~@5] ~@2>")
  .gain(0.48)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@25 A B C D C D C D C D C D C D C D C E C D C D C D C D C D C D C D C E C D C D C D A@2 C D C D C D A@2 C D C D C D
  A@4 C D C D C D C D C D C D C D C E C D C D C D A@2 C D C D C D A F A F C E C E C E A F A F C E C E C G ~@2
>`.pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", B: "x ~ x!3 ~ x!3 ~ x!3 ~ x ~", C: "x!13 ~ x!2", D: "x!5 ~ x!7 ~ x!2",
  E: "x!5 ~ x!7 ~@3", F: "x ~ x!3 ~ x!3 ~ x!3 ~@3", G: "x!5 ~@11",
})).gain(0.48)

// drums · hihat · soft notes
// … 41 more lines

More by Tina Turner