Strudelify

Da Ya Think I'm Sexy

Rod Stewart

KeyD minorTempo116 bpm
0:00/0:00
// Da Ya Think I'm Sexy — Stewart Rod
// 116 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 12 alto sax (copy of ch 11 alto sax, 0.156 beats late)
// 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(116/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
const bass = note(`<
  A B@2 C D B@2 C D B@2 C D B@2 C D E F E F E F E F B@2 C D B@2 C D B@2 C D B@2 C D E F E F E F E F E F E F B@2 C D B@2
  C D B@2 C D B@2 C D G B G B H I J K L K M K N K O K P K O K M K Q R S T U V E F E F E F E F E F E F B@2 C D B@2 C D
  B@2 C D B@2 C D B@2 C D B@2 C W X@4
>`.pickRestart({
  A: "~@14 d2!2", B: "d2@2 d3!2 d2@2 d3!2 d2@2 d3!2 d2@2 d3!2", C: "f2@2 f3!2 f2@2 f3!2 f2@2 f3!2 f2@2 f3!2",
  D: "f2@2 f3!2 g2@2 g3!2 a2@2 a3!2 f2@2 f3!2", E: "g2@2 g3@2 a2@2 a3@2 bb2@2 bb3@2 ~@2 bb2 bb3",
  F: "bb2@2 bb3@2 ~@2 bb3!2 bb2@2 bb3@2 a2@2 a3@2", G: "a1@2 a2!2 a1@2 a2!2 a1@2 a2!2 a1@2 a2!2",
  H: "g1@2 g2!2 g1@2 g2!2 g1@2 g2!2 a1@2 a2!2", I: "bb1@2 bb2!2 bb1@2 bb2!2 bb1@2 bb2!2 bb1@2 bb2!2",
  J: "c2@2 c3!2 c2@2 c3!2 c2@2 c3 ~ c3@4", K: "d2@2 d3 ~ e2@2 e3 ~ f2@2 f3 ~@2 f3@3",
  L: "c2@2 c3 ~@2 c3!3 c2@2 c3 ~@2 c3@3", M: "c2@2 c3 ~@3 c3!2 c2@2 c3 ~@3 c3@2",
  N: "c2@2 c3 ~@3 c3!2 c2@2 c3 ~@2 c3@3", O: "c2@2 c3 ~@2 c3!3 c2@2 c3 ~@3 c3@2",
  P: "c2@2 c3 ~@3 c3@2 c2@2 c3 ~@3 c3@2", Q: "c2@2 c3 ~@3 c3@2 c2@2 c3 ~@2 c3@3",
  R: "c2@2 c3 ~ c2@2 c3 ~ c2@2 c3 ~@2 d3@2 ~", S: "g1@2 g2 ~ a1@2 a2 ~ bb1@2 bb2 ~@3 bb2!2",
  T: "bb1@2 bb2 ~@3 bb2!2 bb1@2 bb2 ~ a1@2 a2!2", U: "g1@2 g2 ~ a1@2 a2!2 bb1@2 bb2 ~@3 bb2!2",
  V: "bb1@2 bb2 ~@2 bb2!3 bb1@2 bb2 ~ a1@2 a2!2", W: "f2@2 f3!2 g2@2 g3!2 a2@2 a3!2 f2@2 ~ f3", X: "[f3 d2@55 ~@8]/4",
})).s("gm_electric_bass_finger").gain(0.45).pan(0.3)

// chords · harpsichord
const harpsichord = note(`<
  ~ A B C D E@2 D F A B C D E@2 D F G H G H G H G H A B C D E@2 D F A B C D E@2 D F G H G H G H G H G H G H A B C D E@2
  D F A B C D E@2 D F I J I J K L M N I N O N I N O N I N O N I N P@2 ~@4 G H G H G H G H G H G H A B C D E@2 D F A B C
  D E@2 D F A B C D E@2 D@2 Q@4
>`.pickRestart({
  A: "~@4 [a3,d4,f4]@2 ~@2 [a3,d4,f4]@7 ~", B: "~@4 [a3,d4,f4]@3 ~ [a3,d4,f4]@6 ~@2",
  C: "~@4 [a3,c4,f4]@3 ~ [a3,c4,f4]@8", D: "~@4 [a3,c4,f4]@3 ~ [a3,c4,f4]@7 ~", E: "~@4 [a3,d4,f4]@3 ~ [a3,d4,f4]@7 ~",
  F: "~@4 [a3,c4,f4]@3 ~ [a3,c4,f4]@6 ~@2", G: "a4@3 bb4@2 c5@3 g4@7 ~, [d4,f4]@15 ~",
  H: "[bb3,d4,f4]@7 ~ [a3,c4,e4]@7 ~", I: "[g3,c4,e4]@15 ~", J: "[a3,c4,f4]@15 ~", K: "[bb3,d4,f4]@15 ~",
  L: "[bb3,db4,f4]@15 ~", M: "[bb3,d4,f4]@7 ~ [c4,e4,g4]@8", N: "[a3,d4,f4]@11 ~ [a3,d4,f4]@3 ~", O: "[g3,c4,e4]",
  P: "[[g3,c4,e4]@27 ~@2 [a3,d4,f4]@2 ~]/2", Q: "[~ [f3,a3,d4]@55 ~@8]/4",
})).s("gm_harpsichord").gain(0.4).pan(0.7)

// other · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@7 B@2 C@8 D E D E D E D F@7 G@8 B@2 D E D E D E D E D E D H@7 G@8 I@2 J K J K L M N O P O P O P O P O P O P O P O P
  Q ~@4 D E D E D E D E D E D F@7 R@16 S@6
>`.pickRestart({
  A: "[~@7 c5@2 a4!2 f4 a4@2 d4 c5@2 a4!2 f4 a4@2 d4 c5@2 f4!2 d4 f4@2 d4 a4@7 ~ c5@2 a4!2 f4 a4@2 d4 c5@2 a4!2 f4 a4@2 d4 c5]/7",
  B: "[~ f4!2 d4 f4@2 d4 a4@9]/2",
  C: "[~ a4!2 f4 a4@2 d4 c5@2 a4!2 f4 a4@2 d4 c5@2 f4!2 d4 f4@2 d4 a4@7 ~ c5@2 a4!2 f4 a4@2 d4 c5@2 a4!2 f4 a4@2 d4 c5@2 f4!2 d4 f4@2 d4 a4@8 ~]/8",
  D: "[bb3,d4,f4]@15 ~", E: "[d4,f4,a4]@7 ~ [a3,c4,e4]@7 ~",
  F: "[[d4,f4,a4]@7 ~ [a3,c4,e4]@6 c5@4 a4@2 a4@2 f4@2 a4@4 d4@2 c5@4 a4@2 a4@2 f4@2 a4@4 d4@2 c5@4 f4@2 f4@2 d4@2 f4@4 d4@2 a4@14 ~@2 c5@4 a4@2 a4@2 f4@2 a4@4 d4@2 c5@4 a4@2 a4@2 f4@2 a4@4 d4@2 c5@2]/7", // Dm Am
  G: "[~ f4!2 d4 f4@2 d4 a4@7 ~ c5@2 a4!2 f4 a4@2 d4 c5@2 a4!2 f4 a4@2 d4 c5@2 f4!2 d4 f4@2 d4 a4@7 ~ c5@2 a4!2 f4 a4@2 d4 c5@2 a4!2 f4 a4@2 d4 c5]/8",
  H: "[[d4,f4,a4]@7 ~ [a3,c4,e4]@5 ~ c5@4 a4@2 a4@2 f4@2 a4@4 d4@2 c5@4 a4@2 a4@2 f4@2 a4@4 d4@2 c5@4 f4@2 f4@2 d4@2 f4@4 d4@2 a4@14 ~@2 c5@4 a4@2 a4@2 f4@2 a4@4 d4@2 c5@4 a4@2 a4@2 f4@2 a4@4 d4@2 c5@2]/7", // Dm Am
  I: "[~@2 f4@2 f4@2 d4@2 f4@4 d4@2 a4@17 ~]/2", J: "[a3,c4]@2 ~ [a3,c4] ~@12", K: "[a3,d4]@2 ~ [a3,d4] ~@12",
  L: "[bb3,d4]@2 ~ [bb3,d4] ~@12", M: "[bb3,db4]@2 ~ [bb3,db4] ~@12", N: "[bb3,d4]@2 ~ [bb3,d4] ~@2 [c4,e4]@8 ~@2",
  O: "~@2 [a3,d4,f4] ~@3 [a3,d4,f4] ~", P: "~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~", Q: "~@4 [g3,c4,e4]@2 ~@7 [a3,d4,f4]@3",
  R: "[~ f4!2 d4 f4@2 d4 ~@8 c5@2 a4!2 f4 a4@2 d4 c5@2 a4!2 f4 a4@2 d4 c5@2 f4!2 d4 f4@2 d4 a4@7 ~ c5@2 a4!2 f4 a4@2 d4 c5@2 a4!2 f4 a4@2 d4 c5, ~@7 a4@9 ~@48]/8",
  S: "[~@2 f4@2 f4@2 d4@2 f4@4 d4@2 a4@19 d4@53 ~@10]/6",
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.2)

// other · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  A@7 B@8 C@2 ~@7 A@7 B@8 C@2 ~@11 A@7 B@8 C@2 ~@39 A@7 D@16 C@2 E@4
>`.pickRestart({
  A: "[~@7 g4@2 f4!2 d4 f4@2 d4 g4@2 f4!2 d4 f4@2 d4 g4@2 f4!2 d4 f4@2 d4 f4@7 ~ g4@2 f4!2 d4 f4@2 d4 g4@2 f4!2 d4 f4@2 d4 g4]/7",
  B: "[~ f4!2 d4 f4@2 d4 f4@8 g4@2 f4!2 d4 f4@2 d4 g4@2 f4!2 d4 f4@2 d4 g4@2 f4!2 d4 f4@2 d4 f4@7 ~ g4@2 f4!2 d4 f4@2 d4 g4@2 f4!2 d4 f4@2 d4 g4]/8",
  C: "[~ f4!2 d4 f4@2 d4 f4@9]/2",
  D: "[~ f4!2 d4 f4@2 d4 f4@7 ~ g4@2 f4!2 d4 f4@2 d4 g4@2 f4!2 d4 f4@2 d4 g4@2 f4!2 d4 f4@2 d4 f4@7 ~ g4@2 f4!2 d4 f4@2 d4 g4@2 f4!2 d4 f4@2 d4 g4]/8",
  E: "[~ a3@55 ~@8]/4",
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.8)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A ~ B C D E F G H ~ B C D I J K L M N O P Q R S T ~ B C D E F G H ~ B C D I J K L M N M N M N O P Q R S T ~ B C D E F
  G H ~ B C D I J K L U V W X Y Z AA ~@21 M N M N M N O P Q R S T ~ B C D E F G H ~ B C D I J K L ~ B C D I J K AB AC@4
>`.pickRestart({
  A: "~@12 [a4,d5,f5]!3 ~", B: "~@10 [a4,d5,f5]!3 ~@3",
  C: "[a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5] ~ [a4,c5,f5]!3 ~@3", // F
  D: "[a4,c5,f5] ~@3 [a4,c5,f5] ~ [a4,c5,f5]@4 ~@2 [a4,c5,f5]!3 ~", E: "~@4 [a4,c5,d5]@3 [a4,d5,f5] ~@4 [a4,c5,f5] ~@3",
  F: "[a4,d5,f5] ~@3 [a4,d5,f5]@2 ~ [a4,c5,f5] ~@2 [a4,d5,f5]!2 [a4,c5,f5] ~@3", // Dm F Dm F
  G: "[a4,c5,f5] ~@3 [a4,c5,f5] ~@3 [a4,c5,f5]@2 ~ [a4,c5,f5] ~@2 [a4,c5,f5] ~", // F
  H: "~@4 [a4,c5,f5] ~@3 [f4,a4,c5] ~@2 [a4,c5,f5]@2 ~ [a4,c5,f5]!2", // F
  I: "[a4,d5,f5] ~ [a4,d5,f5] [d5,f5,a5] ~@2 [a4,d5,f5] [d5,f5,a5] [a4,d5,f5]!2 [d5,f5,a5] ~@3 [a4,d5,f5]!2", // Dm
  J: "[d5,f5,a5]!2 [a4,d5,f5] ~@3 [d5,f5,a5]!2 [a4,d5,f5] [d5,f5,a5] [a4,d5,f5] ~@3 [d5,f5,a5]!2", // Dm
  K: "[a4,c5,f5] [c5,f5,a5]!2 ~@3 [a4,c5,f5] [c5,f5,a5]!2 [a4,c5,f5] [c5,f5,a5] ~ [c5,f5,a5] ~ [a4,c5,f5]!2", // F
  L: "[a4,c5,f5] [c5,f5,a5] [a4,c5,f5] [c5,a5] [c5,f5,a5] ~ [a4,c5,f5] [c5,f5,a5] ~ [c5,f5,a5] ~ [a4,c5,f5]!2 [c5,f5,a5]!2 ~", // F
  M: "[d4,g4,bb4]@2 [d4,f4,bb4] [d4,g4,bb4] ~ [d4,a4,c5] ~ [f4,a4,c5] ~@2 [f4,bb4,d5] ~ [f4,a4,c5] [f4,bb4,d5]!2 ~", // Gm Bb Gm D7 F Bb F Bb
  N: "[f4,bb4,d5]@2 ~ [f4,a4,d5] ~@2 [f4,a4,d5] ~ [e4,a4,c5] ~ [e4,a4,c5]!2 ~ [e4,a4,c5] [a4,c5,e5] ~", // Bb Dm Am
  O: "[d4,a4,c5]!2 [f4,a4,c5] [d4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] [d4,a4,c5] ~ [f4,a4,c5] ~ [f4,bb4,d5] [f4,a4,c5]!2 ~", // D7 F D7 F D7 F Bb F
  P: "[f4,bb4,d5]@2 ~ [f4,a4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] [e4,a4,c5] ~ [e4,a4,c5] ~ [a4,c5,e5]@2 [e4,a4,c5] ~", // Bb Dm Bb Am
  Q: "[d4,f4,a4]!3 [f4,a4,c5] ~ [d4,f4,a4] ~ [d4,f4,a4] [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5]@2 [d4,f4,a4] ~", // Dm F Dm F Dm
  R: "[d4,f4,bb4]!3 [d4,f4,a4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] [e4,g4,a4] [g4,a4,c5]!2 [e4,a4,c5] [g4,a4,c5]@2 [g4,a4,c5] ~", // Bb Dm Bb A7 Am7 Am Am7
  S: "[f4,a4,c5] ~ [f4,a4,c5] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [f4,a4,c5]@3 [f4,a4,c5] ~ [d4,f4,a4] ~@2", // F Dm F Dm
  T: "[d4,f4,a4] [d4,f4,bb4]!2 [d4,f4,a4] ~ [f4,bb4,d5] ~ [f4,a4,d5] [e4,a4,c5] ~ [g4,a4,c5] ~ [e4,g4,c5]@2 [g4,a4,c5] ~", // Dm Bb Dm Bb Dm Am Am7 C …
  U: "[a4,c5,e5]@2 [g4,c5,e5] [a4,c5,e5] ~@2 [a4,c5,e5] ~ [g4,c5,e5] ~ [a4,c5,e5] ~ [g4,c5,e5]@2 [a4,c5,e5] ~", // Am C Am C Am C Am
  V: "[a4,d5,f5]@2 [a4,c5,f5] [a4,d5,f5] ~@2 [a4,d5,f5] ~ [a4,c5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5]@2 [a4,c5,f5] ~", // Dm F Dm F Dm F
  W: "[g4,c5,e5]@2 [a4,c5,e5]!2 ~@2 [g4,c5,e5] ~ [a4,c5,e5] ~ [g4,c5,e5] ~ [a4,c5,e5]@2 [a4,c5,e5] ~", // C Am C Am C Am
  X: "[a4,c5,f5]@2 [a4,d5,f5]!2 ~@2 [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,d5,f5] ~ [a4,c5,f5]@2 [a4,d5,f5] ~", // F Dm F Dm F Dm
  Y: "[bb4,d5,f5]@2 [a4,d5,f5] [g4,bb4,d5] ~@2 [g4,a4,d5] ~ [f4,a4,d5] ~ [g4,bb4,d5] ~ [bb4,d5,f5]@2 [g4,bb4,d5] ~", // Bb Dm Gm Gsus2 Dm Gm Bb Gm
  Z: "[f4,bb4,db5]@2 [f4,bb4,db5] [f4,a4,db5] ~@2 [f4,bb4,db5] ~ [f4,bb4,db5] ~ [f4,a4,db5] ~ [f4,bb4,db5]@2 [f4,bb4,db5] ~", // Bbm Faug Bbm Faug Bbm
  AA: "[f4,bb4,d5] ~ [f4,bb4,d5]!2 ~@2 [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [e4,g4,c5]@2 [g4,c5,e5] ~", // Bb C
  AB: "[a4,c5,f5] [c5,f5,a5] [a4,c5,f5] [c5,a5] [c5,f5,a5] ~ [a4,c5,f5] [c5,f5,a5] ~ [c5,f5,a5] ~ [a4,c5,f5]!2 ~ [c5,f5,a5]!2", // F
  AC: "[~ [a3,d4,f4]@55 ~@8]/4", // Dm
})).s("gm_electric_guitar_clean").gain(0.3)

// chords · overdriven guitar
const overdriven_guitar = note("<~@75 A B A B A B A B A C A C A C A D E F G ~@43>".pickRestart({
  A: "~@14 [d4,f4,a4]!2", // Dm
  B: "[d4,f4,a4]@2 [d4,f4,a4]!2 [d4,f4,a4]@2 [d4,f4,a4]!2 [d4,f4,a4]@2 [d4,f4,a4]!2 [d4,f4,a4]@2 ~@2", // Dm
  C: "[d4,f4,a4]@2 [d4,f4,a4]!2 [d4,f4,a4]@2 [d4,f4,a4]!2 [d4,f4,a4]@2 ~@6", // Dm
  D: "[d4,f4,a4]@2 [d4,f4,a4]!2 [d4,f4,a4]@2 [d4,f4,a4]!2 ~@8", E: "~@14 [c4,e4,g4]!2",
  F: "[c4,e4,g4]@2 [c4,e4,g4]!2 [c4,e4,g4]@2 ~@8 [d4,f4,bb4]!2", // C Bb
  G: "[d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~", // Bb
})).s("gm_overdriven_guitar").gain(0.25).pan(0.2)

// chords · overdriven guitar · soft notes
const overdriven_guitar_soft = note("<~@84 A ~ A ~ A ~ B ~ C ~@44>".pickRestart({
  A: "~@10 [d4,f4,a4]!2 [d4,f4,a4]@2 ~@2", B: "~@8 [d4,f4,a4]@2 [d4,f4,a4]!2 [d4,f4,a4]@2 ~@2",
  C: "~@6 [c4,e4,g4]!2 [c4,e4,g4]@4 ~@4", // C
})).s("gm_overdriven_guitar").gain(0.15).pan(0.2)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@9 A B C D A B C D ~@16 A B C D A B C D ~@20 A B C D A B C D E F E G H I J K J L M K J L M K J L M K J L N@2 ~@24 A B
  C D A B C D A B C D A B C D O@4
>`.pickRestart({
  A: "~ d5 f5 a5", B: "c6 a5", C: "~@2 bb5 a5 bb5 a5 f5 d5 f5@8", D: "~@2 g5 f5 g5 f5 d5 c5 d5@8",
  E: "c5@2 e5@2 a5 c6@3", F: "a5", G: "d6@6 a5 c6", H: "d5@8 a5@6 bb5 c6", I: "db5 c6 bb5@2", J: "c6", K: "d5 f5@2 a5",
  L: "d5 f5@2 f5", M: "e5", N: "[e5@7 ~]/2", O: "[~ d4@55 ~@8]/4",
})).s("gm_string_ensemble_1").gain(0.4).pan(0.3)

// other · pad poly
const pad_poly = note(`<
  ~@9 A B C D A B C D E F E F E F E F ~@8 A B C D A B C D E F E F E F E F E F E F ~@8 A B C D A B C D G H G H I J K ~@21
  E F E F E F E F E F E F ~@8 A B C D A B C D A B C D A B C D L@4
>`.pickRestart({
  A: "~ d5 f5 a5", B: "c6 a5", C: "~@2 bb5 a5 bb5 a5 f5 d5 f5@8", D: "~@2 g5 f5 g5 f5 d5 c5 d5@8",
  E: "a4@2 ~ bb4@2 c5@2 ~ g4@8", F: "f4 e4", G: "c5@2 e5@2 a5 c6@3", H: "g5 f5 e5 d5", I: "d5@8 a5@6 bb5 c6",
  J: "db5 c6 bb5@2", K: "c6", L: "[~ d4@55 ~@8]/4",
})).s("gm_pad_poly").gain(0.4).pan(0.7)

// other · alto sax
const alto_sax = note(`<
  ~@76 A B C D E F G H I J K L M N O P Q ~@19 R ~@3 S T U V W T U V W T U V W T U V W X Y Z@2
>`.pickRestart({
  A: "~@3 a4@5", B: "~ c5@2 a4 c5@3 a4 d5@2 d5@2 c5@3 ~", C: "~@10 g4@3 a4@3",
  D: "~ g4 ~ g4@2 f4 g4 a4 g4 e4 c4@2 e4 [c4,d4] ~@2", E: "~@6 g4 a4@7 c5@2",
  F: "e5 d5 a4 c5@3 e5 d5 c5@3 a4 c5@2 a4 ~, ~@8 a4 ~@7", G: "~@5 a5@3, ~@10 g5 ~@5",
  H: "g5 e5 d5 c5@3 bb4 a4!2 g4!2 a4 e4 d4 c4 ~", I: "~@7 d5@7 e5@2, ~@7 c5 ~@8",
  J: "d5 [d5,e5] c5@4 a4 a5 ~ g5 f5 e5 c5@2 a4 ~", K: "~@4 a5@9 a4 c5 ~, ~@4 g5 ~@11",
  L: "e5 f5 g5 ~ e5@3 [d5,e5] c5 g4 f4 d4 e4 g4@2 ~", M: "~@6 c6@7 ~ a5 ~",
  N: "bb5 ~ bb5 a5 ~ a5 g5 e5@2 c5 d5 c5 d5 c5@2 ~", O: "~@2 a4 c5 ~ c5 ~ a4 c5 a4 e4 d4 c4 d4 [a3,c4] ~",
  P: "c5 a4 e4 d4 c4 ~@2 c5 ~ a4 e4 d4 c4@2 a4 ~", Q: "c5@2 a4 ~ c5@2 c5!2 e5 g5 a5 g5@3 a5 ~",
  R: "~@2 a4 ~ c5@2 a4 ~ c5 ~ d5 a4@3 f4@2", S: "~@2 a4@3 a4@2 a4@2 bb4 b4 c5 a4@2 a4 ~", T: "~ d4 f4 a4", U: "c5 a4",
  V: "~@2 bb4 a4 bb4 a4 f4 d4 f4@8", W: "~@2 g4 f4 g4 f4 d4 c4 d4@8", X: "~@4 a4 ~ a4@2 c5 ~ c5@2 a4 ~ a4@2",
  Y: "f4@2 f4@3 g4@3 ~ g4@4 d4@3", Z: "[~@2 d4@25 ~@5]/2",
})).s("gm_alto_sax").gain(0.7).pan(0.3)

// other · pizzicato strings · A5 Gsus2 A5 Gsus2
const pizzicato_strings = note(`<
  ~@94
  [~@10 c6 [e5,a5] c5 [e4,a4] c4 [g3,a3]]
  ~
  [~@10 c6 [e5,a5] c5 [e4,a4] c4 [g3,a3]]
  ~@40
>`).s("gm_pizzicato_strings").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!91 [x ~ x ~ x ~@2 x] [x!4]!40 [~ x ~@14] ~@3>").gain(0.5)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@96 [~@15 x] ~@40>").gain(0.5)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A ~@3 B ~@3 C ~@3 B ~@3 D ~@7 A ~@3 B ~@3 C ~@5 B ~ B ~ D ~ E ~@3 D ~@3 D ~@3 B ~@3 C ~@5 D F G@2 H@14 ~@10 B ~ B
  ~ D ~ E ~@3 D ~@3 D ~@3 B ~@3 C ~@3 B ~@3 C ~@4
>`.pickRestart({
// … 35 more lines

More by Rod Stewart