Strudelify

Bad Girls

Donna Summer

KeyD minorTempo120 bpm
0:00/0:00
// Bad Girls — Donna Summer
// 120 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 137 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · "Bass"
const bass = note(`<
  ~@4 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 M ~ N@2 O ~ P Q E@2 F@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 M ~ N@2 O
  ~ P Q C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 M ~ N@2 O ~ P Q ~@8 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 C@2 D@2 E@2
  F@2 R ~@8
>`.pickRestart({
  A: "[~@2 d1@12 ~ c2@2 db2@2 d2@2 ~@2 a1@3 ~@4 g1@13 ~@3 f1 ~ gb1@2 g1@3 ~@5 a1@6]/2",
  B: "[~@2 d1@11 ~ c2 ~ db2@2 d2@2 ~@2 a1@2 ~@6 g1@12 ~@3 f1 ~ gb1@2 ~ g1@4 ~@4 a1@4 ~@2]/2",
  C: "[~@2 d1@11 ~ c2 ~ db2@2 d2@2 ~@2 a1@4 ~@4 g1@13 ~@3 f1 ~ gb1@2 g1@4 ~@4 a1@5 ~]/2",
  D: "[~@3 d1@11 c2 ~ db2@2 d2@3 ~ a1@5 ~@3 g1@12 ~@4 f1@2 gb1@2 g1@5 ~@3 a1@5 ~]/2",
  E: "[~@2 d1@11 ~ c2 ~ db2@2 d2@2 ~@3 a1@4 ~@3 g1@13 ~@3 f1@2 gb1@2 g1@5 ~@3 a1@5 ~]/2",
  F: "[~@3 d1@11 c2 ~ db2@2 d2@2 ~@3 a1@3 ~@5 g1@13 ~@2 f1@2 gb1@2 g1@4 ~@4 a1@4 ~@2]/2",
  G: "[~@2 d1@11 ~ c2@2 db2@2 d2@2 ~@2 a1@4 ~@4 g1@12 ~@4 f1@2 gb1@2 g1@4 ~@4 a1@4 ~@2]/2",
  H: "[~@2 d1@10 ~@2 c2 ~ db2@2 d2@2 ~@2 a1@4 ~@4 g1@12 ~@4 f1@2 gb1@2 g1@5 ~@3 a1@3 ~@3]/2",
  I: "[~@2 d1@11 ~ c2@2 db2@2 d2@2 ~@2 a1@3 ~@5 g1@12 ~@4 f1@2 gb1@2 g1@4 ~@4 a1@3 ~@3]/2",
  J: "[~@2 d1@11 ~ c2@2 db2@2 d2@2 ~@3 a1@2 ~@6 g1@12 ~@3 f1@2 gb1@2 g1@2 ~@2 g1 ~@3 a1@3 ~@3]/2",
  K: "[~@2 d1@11 ~ c2@2 db2@2 d2@2 ~@3 a1@3 ~@4 g1@12 ~@4 f1@2 gb1@2 g1@4 ~@4 a1@4 ~@2]/2",
  L: "[~@2 d1@11 ~ c2@2 db2@2 d2@2 ~@2 a1@3 ~@6 g1@11 ~@4 f1@2 gb1 ~ g1@4 ~@4 a1@4 ~@2]/2",
  M: "~@2 bb1@3 ~@2 bb1@3 ~@8 a1@3 ~ a1@3 ~@5 bb1@2",
  N: "[~@2 bb1@3 ~ bb1@3 ~@9 a1@3 ~ a1@3 ~@5 g1@4 ~@20 d1 ~@3 f1@3 ~ g1@2]/2",
  O: "~@2 bb1@3 ~ bb1@2 ~@10 a1@3 ~ a1@3 ~@5 bb1@2", P: "~@6 a1@3 ~ a0@3 ~ a0@2 ~@2 a0@2 ~@2 a0@3 ~ a0@2 ~@2 a0@2",
  Q: "~ a0 ~ a0 ~ a0 ~ a0 ~ a0 ~@6", R: "~ d1@2 ~@13",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · electric guitar clean · "Strat Guitar"
const electric_guitar_clean = note(`<
  A B C D E B C D E B C D E B C D E B C D E B C D E B C D F@2 G@2 H ~ I J E B C D E B C D E B C D E B C D E B C D F@2
  G@2 H ~ I J E B C D E B C D E B C D E B C D E B C D F@2 G@2 H ~ I J ~@4 E B C D E B C D E B C D E B C D E B C D E B C
  D E B C D E B C D K ~@8
>`.pickRestart({
  A: "~@2 c4@2 [a3,c4]@2 c4 ~@3 c4@2 ~@2 c4 ~ c4 ~ c4 ~@13", // Am
  B: "~@2 g3@2 bb3 ~ [g3,bb3] ~@3 bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~@13, ~@2 bb3 ~@29", // Gm
  C: "~@2 a3@2 c4 ~ [a3,c4] ~ c4 ~ c4 ~ [a3,c4] ~ c4 ~ c4 ~ c4 ~@13, ~@2 c4 ~@29", // Am
  D: "~@2 [g3,bb3] ~ [g3,bb3] ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ [g3,bb3] ~ bb3 ~ [g3,bb3] ~@13", // Gm
  E: "~@2 [a3,c4]@2 [a3,c4]@2 c4 ~@3 c4@2 ~@2 c4 ~ c4 ~ c4 ~@13", // Am
  F: "[~@2 [a3,bb3,d4,f4]@3 ~@2 [a3,bb3,d4]@2 ~@9 [g3,a3,c4,e4]@3 ~@2 [g3,a3,c4,e4]@3 ~@5 [a3,bb3,d4,f4]@3 ~@30, ~@6 f4@3 ~@55]/2", // Bbmaj7 Am7 Bbmaj7
  G: "[~@3 bb3@3 ~ [a3,bb3,d4,f4]@2 ~@9 [g3,a3,c4,e4]@3 ~@2 [g3,a3,c4]@2 ~@6 [a3,bb3,d4,f4]@3 ~@30, ~@2 [a3,d4,f4]@3 ~@17 e4@3 ~@39]/2", // Bbmaj7 Am7 Bbmaj7 Dm
  H: "~@2 [a3,bb3,d4,f4]@3 ~@2 [bb3,d4,f4]@2 ~@9 [g3,a3,c4,e4]@3 ~ [g3,a3,c4,e4]@3 ~@5 [a3,bb3,d4,f4]@2, ~@3 a3 ~@12", // Bbmaj7 Bb Am7 Bbmaj7
  I: "~@3 [g3,b3,db4,e4] ~ [g3,b3,db4,e4] ~ [g3,b3,db4,e4] ~ [g3,b3,db4,e4] ~ [g3,b3,db4,e4] ~ [g3,b3,db4,e4] ~ [g3,b3,db4,e4]", // Dbm7b5
  J: "~@2 [g3,b3,db4,e4]@2 ~@2 [g3,b3,db4,e4]@2 ~@2 [g3,b3,db4,e4]@2 ~@2 [g3,b3,db4,e4]@2 ~@2 [g3,b3,db4,e4]@3 ~@11", // Dbm7b5
  K: "~ [a3,c4] ~@14", // Am
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.7)

// chords · electric guitar clean · "Strat Guitar" · soft notes
const electric_guitar_clean_2 = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D ~@8 A B C D A B C D A B C D A B C D A B C D ~@8 A B C D A B C
  D A B C D A B C D A B C D ~@12 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D ~@9
>`.pickRestart({
  A: "~@6 a3 ~ a3 ~ a3@2 ~@2 a3@6 ~@12", B: "~@10 g3 ~ g3 ~ g3 ~ g3 ~ g3 ~@13", C: "~@8 a3@3 ~@3 a3 ~ a3@3 ~@13",
  D: "~@6 g3 ~ g3@5 ~@3 g3 ~@15",
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.7)

// other · electric guitar muted · "Muted guitar"
const electric_guitar_muted = note(`<
  A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 ~@8 A B@3 A B@3 A B@3 A B@3 A B@3 ~@8 A B@3 A B@3 A B@3 A B@3 A B@3 ~@12 A
  B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 C ~@8
>`.pickRestart({
  A: "~@2 c4 ~ c4 ~ c4 ~@2 d4 ~@12 c4 ~@9", B: "~@2 c4 ~ c4 ~ c4 ~ d4 ~@13 c4 ~@9", C: "~@2 c4 ~@29",
})).s("gm_electric_guitar_muted").gain(0.3).pan(0.6)

// other · electric guitar muted · "Funky guitar"
const electric_guitar_muted_2 = note(`<
  A B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 ~@8 C B@3 C B@3 C B@3 C B@3 C B@3 ~@8 C B@3 C B@3 C B@3 C B@3 C B@3 ~@12 C
  B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 D ~@8
>`.pickRestart({
  A: "~@2 [a3,c4]@3 ~@3 d4@2 ~@4 c4@2 ~@2 f4@2 ~@4 d4@2 ~@4 c4 ~", // Am
  B: "~@2 c4@2 ~@4 d4@2 ~@4 c4@2 ~@2 f4@2 ~@4 d4@2 ~@4 c4 ~",
  C: "~@2 c4@3 ~@3 d4@2 ~@4 c4@2 ~@2 f4@2 ~@4 d4@2 ~@4 c4 ~", D: "~@2 c4@3 ~@27",
})).s("gm_electric_guitar_muted").gain(0.35).pan(0.8)

// chords · piano
const piano = note(`<
  ~@4 A@2 B@2 C@2 D@2 E@2 B@2 C@2 F@2 E@2 B@2 C@2 F@2 G@2 H@2 I@2 J K E@2 B@2 E@2 B@2 C@2 F@2 E@2 B@2 C@2 F@2 G@2 H@2
  I@2 J K C@2 D@2 E@2 B@2 C@2 F@2 E@2 B@2 C@2 F@2 G@2 H@2 I@2 J K ~@8 C@2 D@2 E@2 B@2 C@2 F@2 E@2 B@2 C@2 F@2 C@2 D@2
  E@2 B@2 L ~@8
>`.pickRestart({
  A: "[~@2 [a3,c4,d4,f4]@17 ~@3 [g3,c4,e4]@2 ~@7 bb3@19 ~@9 [g3,c4,e4,g4]@3 ~@2, ~@30 [f3,d4]@19 ~@15]/2", // Dm7 C Dm
  B: "[~@3 [a3,c4,d4,f4]@17 ~@3 [g3,c4,e4]@2 ~@6 [f3,bb3,d4]@20 ~@8 [g3,c4,e4]@3 ~@2]/2", // Dm7 C Bb C
  C: "[~@2 [a3,c4,d4,f4]@18 ~@3 [g3,c4,e4]@3 ~@5 [f3,bb3,d4]@19 ~@8 [g3,c4,e4,g4]@4 ~@2]/2", // Dm7 C Bb C
  D: "[~@2 [a3,c4,d4,f4]@17 ~@4 [g3,c4]@2 ~@6 [f3,bb3,d4]@21 ~@6 [g3,c4,e4]@4 ~@2, ~@22 e4@3 ~@39]/2", // Dm7 C5 Bb C
  E: "[~@2 [a3,c4,d4,f4]@17 ~@4 [c4,e4]@2 ~@6 [f3,bb3,d4]@19 ~@9 [g3,c4,e4,g4]@3 ~@2, ~@11 g3 ~@20]/2", // Dm7 C Bb C
  F: "[~@3 c4@16 ~@4 [g3,c4,e4]@3 ~@5 [f3,bb3,d4]@21 ~@6 [g3,c4,e4]@4 ~@2, ~@2 [a3,d4,f4]@17 ~@45]/2", // C Bb C Dm
  G: "[~@2 [bb3,d4,f4,a4]@3 ~@2 [bb3,d4,f4,a4]@3 ~@8 [a3,c4,e4,g4]@3 ~@2 [a3,c4,e4]@3 ~@5 [bb3,d4,f4,a4]@3 ~@30, ~@22 g4@3 ~@39]/2", // Bbmaj7 Am7 Am Bbmaj7
  H: "[~@2 [bb3,d4,f4,a4]@3 ~@2 [bb3,d4,f4,a4]@3 ~@8 [a3,c4,e4,g4]@3 ~@2 [a3,c4,e4]@2 ~@6 [bb3,d4,f4,a4]@3 ~@30, ~@22 g4@3 ~@39]/2", // Bbmaj7 Am7 Am Bbmaj7
  I: "[~@2 [bb3,d4,f4,a4]@3 ~@2 [bb3,d4]@2 ~@9 [a3,c4,e4,g4]@3 ~ [a3,c4,e4,g4]@3 ~@6 bb3@2 ~@31, ~@6 [f4,a4]@3 ~@21 [d4,f4,a4]@3 ~@31, ~@31 db4 ~@32]/2", // Bbmaj7 Bb Am7 F Dm
  J: "~@3 [b3,db4,e4,g4] ~ [b3,db4,e4,g4] ~ [b3,db4,e4,g4] ~ [b3,db4,e4,g4] ~ [b3,db4,e4,g4] ~ [b3,db4,e4,g4] ~ [b3,db4,e4,g4]", // Dbm7b5
  K: "~@2 [b3,db4,e4,g4]@2 ~@2 [b3,db4,e4,g4]@2 ~@2 [b3,db4,e4,g4]@2 ~@2 [b3,db4,e4,g4]@2 ~@3 e4@3 ~@10, ~@18 [b3,db4,g4]@3 ~@11", // Dbm7b5
  L: "~@2 [a3,c4]@5 ~@25, ~@2 [d4,f4]@3 ~@27", // Am Dm
})).s("gm_piano").gain(0.35).pan(0.4)

// chords · electric guitar clean · "Chorus guitar"
const electric_guitar_clean_3 = note(`<
  A B A B A B A B A B A B A C A C A C A C A C A C A C A C ~@8 A C A C A C A C A C A C A C A C A C A C ~@8 A B A B A C A
  C A C A C A C A C A C A C ~@12 A B A B A B A B A C A C A C A C A C A C A C A C A B A B A C A C D ~@8
>`.pickRestart({
  A: "~@2 [d4,f4,a4]@2 c4@2 [d4,f4,a4]@2 c4 ~@13 c4 ~@3 [e4,g4]@3 ~ c4 ~", // Dm Em
  B: "~@2 [d4,f4,gb4]@2 bb3 ~ [d4,f4]@2 bb3 ~@13 bb3 ~@3 [e4,g4]@3 ~ c4 ~", // D Dm Em
  C: "~@2 [d4,f4,gb4]@2 ~ bb3 [d4,f4]@2 ~ bb3 ~@12 bb3 ~@4 [e4,g4]@3 c4 ~", D: "~ [d4,f4,a4] ~@14",
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.1)

// other · distortion guitar · "Solo Guitar"
const distortion_guitar = note("<~@85 A ~ B ~ C@2 D@2 ~@44>".pickRestart({
  A: "~@7 d6@2 c6@2 bb5@2 a5@2 g5@2 f5@2 e5@7 d5@6",
  B: "~@6 f4 ~@2 f4 f4@2 ~@2 f4@2 ~@2 f4@2 ~@2 f4@2 ~@2 g4@6, ~@26 gb4 ~@5",
  C: "[~@7 a4@6 ~ c5@3 ~ ab4 a4@4 ~@2 c5@3 ~@2 ab4 a4@6 ~ c5@2 ~@2 ab4 a4@5 ~@2 c5@4 ab4@2 a4@5 ~ c5@2, ~@7 ab4 ~@56]/2",
  D: "[~@2 d5@4 c5@2 ~@2 a4@2 ~@2 ab4@2 ~@2 g4@2 ~@2 f4@2 ~@3 g4@2 f4 d4@9 ~@25]/2",
})).s("gm_distortion_guitar").gain(0.48)

// other · trumpet
const trumpet = note(`<
  ~@8 A B C D A D A E F G H G ~@8 I@2 J@2 K ~ L@2 M N O G P@6 Q D R ~@7 I@2 J@2 K ~ L@2 M N O G P@6 Q D R ~@7 I@2 J@2 K
  ~ L@2 ~@8 A B C D A D A E F G H G F G H G A B C D A D A E F G H G F G H G F G H G ~
>`.pickRestart({
  A: "~@2 f5 ~ f5 ~ f5 ~ f5 ~@13 e5 ~@7 d5 ~", B: "~@18 d5 ~ d5 ~ d5 ~@4 e5!2 ~ e5 ~",
  C: "~@3 f5!2 ~@2 f5 ~ f5 ~@12 e5 ~@7 d5 ~", D: "~@18 d5 ~ d5 ~ d5 ~@3 e5 ~ e5 ~ e5 ~",
  E: "~@18 d5!2 ~@2 d5 ~@3 e5 ~@5", F: "~@7 f5@2 d5 ~ e5 ~ f5@2 ~ g5@5 ~ f5 ~@3 e5 ~ d5@2 ~@2",
  G: "~@6 f5@2 d5 ~ e5 ~ f5@2 ~@4 d5@5 ~ g5@2 ~@6", H: "~@6 f5 ~ d5 ~ e5 ~ f5 ~@3 g5@5 ~ f5@2 ~@2 e5@2 d5@2 ~@2",
  I: "[~@2 f5@3 ~ f5@2 ~@10 e5@3 ~ e5@2 ~@7 f5@2 ~@31]/2", J: "[~@3 f5@3 ~ f5@2 ~@9 e5@3 ~@2 e5@2 ~@6 d5@2 ~@31]/2",
  K: "~@2 f5@3 ~ f5@2 ~@10 e5@3 ~ e5@2 ~@6 f5@2", L: "[~@3 e5@46 ~ e5 ~@13]/2",
  M: "~@7 f5@2 d5@2 e5 ~ f5 ~@2 g5@5 ~ f5@2 ~@2 e5@2 d5@2 ~@2", N: "~@6 f5@2 d5@2 e5 ~ f5@2 ~@4 d5@4 ~@2 g5@2 ~@6",
  O: "~@6 f5@2 ~ d5@2 e5@2 f5@2 ~@2 g5@5 f5@2 ~@2 e5@2 d5@2 ~@2",
  P: "[~@2 f5 ~ f5 ~ f5 ~ f5 ~@14 e5 ~@7 d5@2 ~@17 d5 ~ d5 ~ d5 ~@3 e5 ~ e5 ~ e5 ~]/2",
  Q: "~@2 f5 ~ f5 ~ f5 ~ f5 ~@14 e5 ~@7 d5", R: "~@2 f5 ~@29",
})).s("gm_trumpet").gain(0.35).pan(0.6)

// other · tenor sax · "Sax"
const tenor_sax = note(`<
  ~@8 A B C B D E C F G H I J ~@8 K@2 L@2 M ~ N@2 O P Q R S@6 T@2 U ~@7 K@2 L@2 M ~ N@2 O P Q R S@6 T@2 U ~@7 K@2 L@2 M
  ~ N@2 ~@8 A B C B D E C F G H I J G H I J A B C B D E C F G H I J G H I J G H I J ~
>`.pickRestart({
  A: "~@2 d5 ~@2 d5 ~ d5 ~ d5 ~@13 c5@2 ~@5 bb4@2", B: "~@18 bb4 ~ bb4 ~ bb4 ~@3 c5 ~ c5 ~ c5 ~",
  C: "~@2 d5 ~ d5 ~ d5 ~ d5 ~@13 c5 ~@7 bb4 ~", D: "~@2 d5 ~ d5 ~ d5 ~ d5 ~@14 c5 ~@6 bb4 ~",
  E: "~@18 bb4 ~ bb4 ~ bb4 ~@3 c5 ~ c5 ~@3", F: "~@18 bb4 ~ bb4 ~ bb4 ~@4 c5 ~@4",
  G: "~@6 d5@2 ~ a4 ~ c5@2 d5@2 ~@2 e5@5 d5@2 ~@2 c5@2 a4@2 ~@2", H: "~@6 d5@2 ~ a4 ~ c5@2 d5 ~@4 bb4@5 ~@2 e5 ~@6",
  I: "~@7 d5@2 a4@2 c5 ~ d5 ~@3 e5@4 ~ d5@2 ~@2 c5@2 a4@2 ~@2", J: "~@6 d5@2 ~ a4 c5 ~ d5 ~@5 bb4@5 ~ e5@2 ~@6",
  K: "[~@2 d5@3 ~ d5@2 ~@10 c5@3 ~ c5@2 ~@7 d5@3 ~@30]/2", L: "[~@3 d5@3 ~ d5@2 ~@9 c5@3 ~ c5@2 ~@7 bb4@2 ~@31]/2",
  M: "~@2 d5@3 ~ d5@2 ~@10 c5@3 ~ c5@2 ~@6 d5@2", N: "[~@3 db5@45 ~@2 db5@3 ~@11]/2",
  O: "~@6 d5@2 ~ a4@2 c5 ~ d5 ~@3 e5@4 ~ d5@2 ~@2 c5 ~ a4@2 ~@2", P: "~@6 d5@2 a4@2 ~ c5@2 d5@2 ~@2 bb4@5 ~@2 e5@2 ~@6",
  Q: "~@6 d5@3 a4 ~ c5 ~ d5 ~@3 e5@4 ~ d5@2 ~@3 c5 ~ a4@2 ~", R: "~@6 d5@2 ~ a4@2 c5 ~ d5 ~@4 bb4@5 ~@2 e5@2 ~@5",
  S: "[~@2 d5 ~ d5 ~ d5 ~ d5 ~@14 c5@2 ~@6 bb4@2 ~@17 bb4 ~ bb4 ~ bb4 ~@4 c5!2 ~ c5 ~]/2",
  T: "[~@3 d5!2 ~ d5 ~@2 d5 ~@13 c5 ~@7 bb4@2 ~@17 bb4 ~ bb4 ~ bb4 ~@4 c5!2 ~ c5 ~]/2", U: "~@3 d5 ~@28",
})).s("gm_tenor_sax").gain(0.35)

// other · trombone
const trombone = note(`<
  ~@8 A@2 B C B C D E F G H I ~@8 J@2 K@2 L ~ M@2 N O P Q R@6 S C T ~@7 J@2 K@2 L ~ M@2 N O P Q R@6 S C T ~@7 J@2 K@2 L
  ~ M@2 ~@8 A@2 B C B C D E F G H I F G H I A@2 B C B C D E F G H I F G H I U G H V ~
>`.pickRestart({
  A: "[~@2 a4 ~ a4 ~ a4 ~ a4 ~@13 g4 ~@8 f4@2 ~@17 f4 ~ f4 ~ f4 ~@3 g4 ~ g4 ~ g4 ~]/2",
  B: "~@2 a4 ~ a4 ~ a4 ~ a4 ~@13 g4 ~@8 f4", C: "~@18 f4 ~ f4 ~ f4 ~@3 g4 ~ g4 ~ g4 ~",
  D: "~@2 a4 ~ a4 ~ a4 ~ a4 ~@13 g4 ~@7 f4 ~", E: "~@18 f4 ~ f4 ~ f4 ~@3 g4 ~@5",
  F: "~@6 a4@2 f4@2 g4 ~@2 a4@2 ~ bb4@5 ~ a4@2 ~@2 g4@2 f4@2 ~@2", G: "~@6 a4@2 f4@2 g4 ~ a4@2 ~@4 g4@5 ~ c5@2 ~@6",
  H: "~@6 a4@2 f4 ~ g4 ~ a4 ~@3 bb4@5 ~ a4@2 ~@2 g4@2 f4@2 ~@2",
  I: "~@6 a4@2 ~@2 g4 ~ a4@2 ~@4 g4@5 ~ c5@2 ~@6, ~@9 f4@2 ~@21",
  J: "[~@2 bb4@3 ~@2 bb4@3 ~@8 a4@3 ~ a4@2 ~@7 bb4@2 ~@31]/2",
  K: "[~@2 bb4@3 ~@2 bb4@2 ~@9 a4@3 ~ a4@2 ~@7 g4@3 ~@30]/2", L: "~@2 bb4@3 ~@2 bb4@2 ~@9 a4@3 ~ a4@2 ~@6 bb4@2",
  M: "[~@3 a4@44 ~@4 a4@3 ~@10]/2", N: "~@7 a4@2 ~ g4@2 a4@2 ~@3 bb4@5 a4@2 ~@2 g4@2 f4@2 ~@2, ~@9 f4@2 ~@21",
  O: "~@6 a4@2 f4@2 g4 ~ a4@2 ~@3 g4@5 ~@2 c5@2 ~@6", P: "~@6 a4@2 f4 ~ g4 ~ a4@2 ~@2 bb4@5 ~ a4@2 ~@2 g4@2 f4@2 ~@2",
  Q: "~@6 a4@2 f4@2 g4 ~ a4@2 ~@4 g4@5 ~@2 c5@2 ~@5",
  R: "[~@2 a4 ~ a4 ~ a4 ~ a4 ~@13 g4@2 ~@7 f4@2 ~@17 f4 ~ f4 ~ f4 ~@4 g4!2 ~ g4 ~]/2",
  S: "~@2 a4 ~ a4 ~ a4 ~ a4 ~@13 g4@2 ~@6 f4@2", T: "~@3 a4@2 ~@27",
  U: "~@8 f4@2 g4 ~@2 a4@2 ~ bb4@5 ~ a4@2 ~@2 g4@2 f4@2 ~@2, ~@7 a4@2 ~@23",
  V: "~@6 a4@2 ~@2 g4 ~@2 a4@2 ~@3 g4@5 ~ c5@2 ~@6, ~@9 f4@2 ~@21",
})).s("gm_trombone").gain(0.35).pan(0.6)

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

// drums · snare
const snare = s("sd").struct("<[~@5 x ~@7 x ~@2]!128 ~@9>").gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<A@30 ~@10 A@22 ~@10 A@30 ~@10 A@16 B@2 A C B D A E ~>".pickRestart({
  A: "~ x ~@3 x ~@3 x ~@3 x ~@2", B: "~@2 x ~@8 x ~@6 x ~@7 x ~@5", C: "~@2 x ~@8 x ~@6 x ~@8 x ~@4",
  D: "~@3 x ~@7 x ~@6 x ~@7 x ~@5", E: "~@3 x ~@7 x ~@6 x ~@8 x ~@4",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A@22 B ~ C ~ C ~ C ~ C ~ A@22 B ~ C ~ C ~ C ~ C ~ A@30 B D@2 ~ C ~ C ~ C ~ A@16 ~@8 E
>`.pickRestart({
  A: "~@3 x ~@3 x ~@3 x ~@3 x", B: "~ x ~@13 x", C: "~ x ~@14", D: "~@15 x", E: "~@3 x ~@28",
})).gain(0.3)

// drums · whistle
const whistle = s("ballwhistle:1").struct(`<
  ~@93 A ~ A ~ A ~ B ~ A ~ A ~ C ~ D ~ C ~ C ~ C ~ C ~@8 C D ~@2 C ~ E F C ~ E F ~
>`.pickRestart({
  A: "~@3 x!2 ~ x ~ x!2 ~ x ~ x ~@2", B: "~@6 x ~ x ~@3 x ~@3 x ~ x ~@3 x ~@4 x ~@4", C: "~@3 x!2 ~ x ~ x!2 ~ x ~@4",
  D: "~@6 x ~ x ~@3 x ~@4 x!2 ~@3 x ~@9", E: "~@22 x ~@4 x!2 ~@3", F: "x!2 ~@14",
// … 12 more lines

More by Donna Summer