Strudelify
Missionary Man cover art

Missionary Man

Annie Lennox

KeyB♭ minorTempo123 bpm
0:00/0:00
// Missionary Man — Annie Lennox
// 123 bpm, 4/4, key Bb minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 27.
setcpm(123/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 · clavinet
const bass = note(`<
  ~ A ~ B C D E F G H@2 I@2 J K L@2 M ~ D N B ~ O P Q@2 R@2 S@2 T@2 ~@8 U V W X Y Z AA AB ~@9 AC ~ AD ~@13 AE@2 AF@2 AG
  AH AI AJ AK AL AM@3 AN AM AN AO AP AQ AR AS AT AU@2 AV AW AX@2 AQ AR AS AT AU AY J AZ BA@2 AQ BB AS AT AU BC ~@2
>`.pickRestart({
  A: "bb1 ~ bb1 db2 ab1@2 ~@2", B: "bb1@3 ~ bb1@2 db2@2 ab1@4 ~@4", C: "~@8 db2 eb2 f2 ~ f2 ~ db2 ~, ~@13 eb2@2 ~",
  D: "bb1@3 ~ bb1@2 db2@2 ab1@4 ab1@2 ~@2", E: "~@2 bb1@2 bb1@2 db2@2 ~@2 f1@2 ab1@2 f1 ~",
  F: "bb1 ~ bb1 db2 ab1@2 ab1 ~", G: "~@8 db3@2 eb3 ~ eb3@2 db3 ~", H: "[bb1@6 bb1@5 ~ bb1@6 f1@2 f1@3 ~ f1@8]/2",
  I: "[bb1@6 bb1@5 ~ bb1@6 f1@2 f1@4 f1@8]/2", J: "bb1@5 ~ bb1@5 ~ bb1@4", K: "~ f1 f1@2 f1@4",
  L: "[bb1@5 ~ bb1@5 ~ bb1@6 f1 ~ f1@4 f1@4 ~@4]/2", M: "bb1@3 ~ bb1@2 db2@2 ab1@3 ~@5", N: "~@3 ab1",
  O: "bb1@3 ~ bb1@2 db2@2 ab1@3 ~ bb1@3 ~", P: "f1", Q: "[bb1@5 ~ bb1@5 ~ bb1@7 ~ f1@4 f1@3 ~ f1@4]/2",
  R: "[bb1@6 bb1@5 ~ bb1@8 f1@4 f1@3 ~ f1@4]/2", S: "[bb1@6 bb1@5 ~ bb1@6 f1@2 f1@4 f1@3 ~ f1@4]/2",
  T: "[bb1@6 bb1@5 ~ bb1@6 f1@2 f1@4 f1@4 f1@4]/2", U: "bb1 ~ bb1 ab1 bb1 ~@3", V: "~@7 ab1",
  W: "bb1@3 ~ bb1@2 ab1@2 bb1@3 ~@5", X: "~@8 db2@2 eb2@2 f2@2 db2 ~", Y: "bb1@2 ~@2 bb1@2 ~@2 bb1@2 bb1@2 ~@2 bb1 ~",
  Z: "bb1@3 ~ bb1@3 ~ bb1@2 bb1@3 ~ bb1 ~", AA: "bb1@3 ~ bb1@3 ~@3 bb1@3 ~ bb1 ~", AB: "bb1@3 ~@13",
  AC: "bb1 ~ bb1 db2 ab1 ~@3", AD: "bb1@2 ~@2 bb1@2 db2 ~ ab1@3 ~ bb1@3 ~",
  AE: "[bb1@5 ~ bb1@6 bb1@6 f1@2 f1@3 ~ f1@7 ~]/2", AF: "[bb1@5 ~ bb1@6 bb1@6 f1@2 f1@4 f1@8]/2",
  AG: "bb1@6 bb1@5 ~ bb1@4", AH: "~@2 f1@2 f1@3 ~ f1@8", AI: "bb1@5 bb1@6 ~ bb1@4", AJ: "~@2 f1 ~ f1@4 f1@7 ~",
  AK: "bb2 ~ bb2 ~ bb2@2 bb3 ~ bb2 ~@3 bb2@2 bb3 ~", AL: "bb2 ~@3 bb2 ~ bb3 ~ bb2 ~ bb2 ~ bb2@2 bb3 ~",
  AM: "bb2 ~ bb2 ~ bb2@2 bb3 ~ bb2 ~ bb2 ~ bb2@2 bb3 ~", AN: "bb2 ~@3 bb2@2 bb3 ~ bb2 ~@3 bb2@2 bb3 ~",
  AO: "~@2 bb2 ~ bb2@2 bb3 ~ bb2 ~ bb2 ~ bb2@2 bb3 ~", AP: "bb2 ~@3 bb2 ~@3 bb2 ~ bb2 ~ bb2 ~ bb2 ~",
  AQ: "ab1 ~ ab1@3 ~ ab1 ~ ab1 ~ ab1@3 ~ ab1 ~", AR: "ab1 ~ ab1@3 ~ ab1 ~ ab1 ~ ab1@3 ~ ab1@2",
  AS: "g1 ~ g1@3 ~ g1 ~ g1 ~ g1@3 ~ g1 ~", AT: "g1 ~ g1@3 ~ g1 ~ g1 ~ g1@3 ~ g1@2",
  AU: "gb1 ~ gb1@3 ~ gb1 ~ gb1 ~ gb1@3 ~ gb1 ~", AV: "bb1 ~ bb1@3 ~ bb1 ~ bb1 ~ bb1@3 ~ bb1@2",
  AW: "~@2 f1 ~ f1@3 ~ f1@7 ~", AX: "[bb1@5 ~ bb1@5 ~ bb1@6 f1 ~ f1@3 ~ f1@3 ~ f1@4]/2",
  AY: "gb1 ~ gb1@3 ~ gb1@2 f1 ~ f1@3 ~ f1@2", AZ: "~@2 f1 ~ f1@4 f1@8",
  BA: "[bb1@5 ~ bb1@5 ~ bb1@6 f1 ~ f1@3 ~ f1@3 ~ f1@3 ~]/2", BB: "ab1 ~ ab1@4 ab1 ~ ab1 ~ ab1@3 ~ ab1@2",
  BC: "gb1 ~ gb1@3 ~ gb1@2 f1 ~ f1@4 f1 ~",
})).s("gm_clavinet").gain(0.27).pan(0.7)

// bass · slap bass 2
const bass_2 = note(`<
  ~ A B C D E B F@2 G H I@4 J@2 K ~ L ~ M ~ N O G H I@6 P@2 Q R S B T U V ~ W B X@3 Y ~ I@2 Z@2 I@2 AA@2 AB B AC ~ AD@2
  AE ~ AF ~ AG ~ AB B AH ~ I@2 Z@4 AI@2 AJ AK AL AM AN AO AP AQ AR ~ AS AT AU AV AW AX AY AZ G BA BB BC AU AV AW BD BE@2
  BF@2 BB BG AU AV AW BH ~@2
>`.pickRestart({
  A: "bb1@2 ~@2 bb1@2 db2@2 ab1@5 ~@3", B: "~@7 ab1", C: "bb1 ~ bb1 ~ bb1@2 db2@2 ab1@4 ~@2 f1@2", D: "eb1@3 ~@5",
  E: "bb1 ~ bb1 ~ bb1@2 db2@2 ab1@4 ~@4", F: "[bb1 ~ bb1 ~ bb1@2 db2@2 ab1@4 f1@8 ~@6 f1@2 ab1@2 ~@2]/2",
  G: "bb1@3 bb1@3 bb1@2", H: "~@2 f1@2 f1@4 f1@7 ~", I: "[bb1@6 bb1@6 bb1@6 f1@2 f1@4 f1@7 ~]/2",
  J: "[bb1@3 bb1@3 bb1@3 f1 f1@2 f1!2 ab1@2]/2", K: "bb1@2 bb1@2 bb1@2 db2@2 ab1@3 ~@5",
  L: "bb1@2 ~@2 bb1@2 db2@2 ab1@3 ~ bb1@4", M: "bb1 ~ bb1 db2 ab1 ~@3", N: "bb1@2 ~@2 bb1@2 db2@2 ab1@3 ~ bb1@3 ~",
  O: "f1", P: "[bb1 ~ bb1@2 bb1@2 ab1@2 bb1@13 ~@11]/2", Q: "bb1@2 bb1@3 ~ ab1@2 bb1@3 ~@5", R: "~@5 ab1!2 ~",
  S: "bb1 bb1@2 ab1 bb1 ~@3", T: "bb1@3 ~ bb1@2 ab1@2 bb1@2 ~@6", U: "~@2 db3 ~ db3!2 ~@10",
  V: "bb1 ~ bb1 ab1 bb1@2 ~@2", W: "bb1 ~ bb1 ab1 bb1 ~@3", X: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  Y: "bb1@3 ~", Z: "[bb1@3 bb1@3 bb1@3 f1 f1@2 f1@4]/2", AA: "[bb1@3 bb1@3 bb1@3 f1 f1@2 f1@3 ~]/2",
  AB: "bb1@2 ~@2 bb1@2 db2@2 ab1@3 ~@5", AC: "bb1@2 bb1 ~ bb1@2 db2@2 ab1@2 ~@2 bb1@4",
  AD: "[bb1 ~ bb1 db2 ab1@2 f1@3 ~@7]/2", AE: "bb1@2 bb1@2 bb1@2 db2@2 ab1@3 ~ bb1@3 ~",
  AF: "bb1@3 ~ bb1@2 db2@2 ab1@2 ~@6", AG: "bb1 ~ bb1@2 bb1@2 db2@2 ab1@3 ~ bb1@3 ~",
  AH: "bb1@2 bb1@2 bb1@2 db2@2 ab1@3 ~ bb1@4", AI: "[bb1@6 bb1@6 bb1@6 f1@2 f1@4 f1@5 ~@3]/2",
  AJ: "bb1@2 ~@4 db2 ~ ab1 ~@7", AK: "~@6 ab1 ~ bb1 ~@3 bb1 ~ ab1 ~", AL: "bb1 ~ bb1 ~ bb1 ~ db2 ~ ab1 ~@3 ab1@3 ~",
  AM: "~@3 f1 ab1 ~ ab1 ~", AN: "bb1@2 ~@2 bb1@2 db2 ~ ab1@3 ~@5", AO: "~@10 ab1 ~ ab1@2 ~@2",
  AP: "bb1 ~ bb1 ~ bb1@2 db2 ~ ab1@2 ~@2 bb1@2 ~@2", AQ: "~@3 f1", AR: "eb1@3 ~@13",
  AS: "ab1 ~ ab1@3 ~ ab1 ~ ab1 ~ ab1@4 ab1 ~", AT: "ab1 ~ ab1@3 ~ ab1 ~ ab1 ~ ab1@4 ab1@2",
  AU: "g1 ~ g1@3 ~ g1 ~ g1 ~ g1@3 ~ g1 ~", AV: "g1 ~ g1@3 ~ g1 ~ g1 ~ g1@3 ~ g1@2",
  AW: "gb1 ~ gb1@3 ~ gb1 ~ gb1 ~ gb1@3 ~ gb1 ~", AX: "gb1 ~ gb1@3 ~ gb1 ~ gb1 ~ gb1@3 ~ gb1@2",
  AY: "bb1 ~ bb1@3 ~ bb1 ~ bb1 ~ bb1@3 ~ bb1@2", AZ: "f1 ~ f1 ~ f1@3 ~ f1@3 ~ f1@4", BA: "~ f1 f1@2 f1@2 f1@2",
  BB: "ab1@2 ab1@3 ~ ab1@2 ab1@2 ab1@3 ~ ab1 ~", BC: "ab1 ~ ab1@3 ~ ab1@2 ab1 ~ ab1@3 ~ ab1@2",
  BD: "gb1 ~ gb1@3 ~ gb1@2 f1@2 f1@3 ~ f1@2", BE: "[bb1@3 bb1@3 bb1@3 f1 f1@2 f1@2 f1@2]/2",
  BF: "[bb1@6 bb1@6 bb1@6 f1 ~ f1@4 f1@3 ~ f1@3 ~]/2", BG: "ab1 ~ ab1@3 ~ ab1 ~ ab1 ~ ab1@3 ~ ab1@2",
  BH: "gb1 ~ gb1@3 ~ gb1@2 f1 ~ f1@3 ~ f1@2",
})).s("gm_slap_bass_2").gain(0.36)

// chords · tremolo strings
const tremolo_strings = note("<~@33 A@8 B@8 ~@43 C@2 D@4 E ~@3 F@2 G@4 ~@12>".pickRestart({
  A: "[eb4 f4 g4 ab4, [bb3,db4]@127 ~]/8", B: "[~@16 eb4@16 f4@32 g4@32 ab4@17 ~@15, [bb3,db4,bb4]@113 ~@15]/8",
  C: "[ab3,bb3,d4]/2", D: "[bb3 bb3, [eb4,f4]]/4", E: "f4", F: "[ab3,bb3,db4]/2",
  G: "[[bb3,eb4]@31 ~ [bb3,db4]@23 ~ c4@7 ~, f4@31 ~, ~@55 [a3,eb4]@7 ~@2]/4", // Eb5 Bbm Adim
})).s("gm_tremolo_strings").gain(0.25).pan(0.6)

// other · piano
const piano = note(`<
  ~@16 A B C D E F G H I J K L K J K J ~@6 M N O ~@4 P@2 Q R@8 ~@25 S@2 T@2 U F V W X@2 Y ~@5 K L ~@3 L ~ L ~ L K L ~@3
  Z ~@7
>`.pickRestart({
  A: "~@5 ab4!2 f4", B: "ab4@2 f4 ab4@2 f4!2 eb4", C: "f4@2 f4 ab4@2 ab4!2 f4", D: "ab4@2 ab4 f4 ab4@2 f4 eb4",
  E: "f4 f4@2 f4@2 f4 ab4@2", F: "ab4 ab4@2 ab4@2 f4!2 eb4", G: "f4 f4@2 ab4@3 ab4 f4", H: "ab4@2 ab4 f4 ab4 f4@3",
  I: "~ eb4 ab4@2 ab4@2 f4 eb4", J: "ab4 f4!2 eb4 f4@2 ~@2", K: "~@2 ab4@2 ab4@2 f4 eb4",
  L: "ab4@2 f4@2 f4@2 eb4@2 f4@5 ~@3", M: "~@6 ab4 f4", N: "ab4@2 ab4 f4 ab4 f4!2 eb4", O: "f4!2 ab4@2 f4 ~@3",
  P: "[ab4@2 ab4 f4 ab4!2 f4 ab4@2 f4 ab4 f4 ab4@2 ab4 f4]/2", Q: "ab4!2 f4 ab4@3 ab4 f4",
  R: "[ab4!2 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ~@3 f4 ~]/8",
  S: "[~@3 f4 ab4 ab4@2 ab4@3 f4 eb4 f4 eb4 f4@2]/2", T: "[f4 ab4@3 ab4 ab4@2 ab4@3 f4 eb4 f4 eb4 f4@2]/2",
  U: "f4@5 ~@3 ab4@2 ab4@2 ab4@2 f4@2", V: "f4 f4@2 ab4@2 ab4!2 f4", W: "ab4@2 ab4 f4 ab4 f4 ab4 f4",
  X: "ab4 f4 ab4 f4 ab4 f4 ab4 f4", Y: "ab4 f4 ab4 ~@5", Z: "ab4 f4!2 eb4 f4@4",
})).s("gm_piano").gain(0.28)

// other · piano · soft notes
const piano_soft = note("<~@55 A@5 ~@31 B ~@28>".pickRestart({
  A: "[~@3 ab4@3 ~ ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 f4 ab4@3 ~@6]/5", B: "~@3 f4 ab4 f4 ab4 f4",
})).s("gm_piano").gain(0.16)

// other · lead 3 calliope
const lead_3_calliope = note(`<
  ~@25 A B C@2 D@2 E@2 ~@23 F G ~ H ~ I ~@5 H ~ I ~@4 J K ~@2 L M@2 ~@11 N@2 O P O Q R S T@2 O U V@2 ~ W O X Y Z AA@2 O
  AB ~@4
>`.pickRestart({
  A: "~@7 db5", B: "c5@2 bb4@3 ~@11", C: "[~@5 ab4@2 bb4@2 db5@2 bb4@2 ab4 ~@2]/2",
  D: "[~@10 db5@4 bb4@4 db5@4 bb4@5 ~@5]/2", E: "[~@10 db5@4 bb4@4 bb4 ab4 f4@5 ~@7]/2", F: "~@10 db5@2 ~ bb4@3",
  G: "bb4@2 ab4 f4 ~ db4 bb3@2 bb3@2 bb3@4 bb3@2, ~@2 eb4 ~@5", H: "~@6 f5 ~", I: "~@6 bb4 ~",
  J: "bb5@5 ~ bb5@5 ~ bb5@4", K: "~@6 eb6@4 db6 ~ bb5@2 ab5@2", L: "db6@4 bb5@2 db6 ~@3 bb5@2 db6@2 ~@2",
  M: "[~@6 bb5 ~ db6@2 c6@2 bb5 ~ bb5 f5@5 ~@12, ~@7 ab5 ~@8]/2", N: "[~@14 db5@4 c5 bb4 ~@2 bb4 ab4 f4@2 ~@6]/2",
  O: "~@10 db5@3 bb4@3", P: "eb5@3 bb4@3 db5@2 bb4@4 ~@4", Q: "f5@4 eb5@4 db5 c5 bb4@4 ~@2", R: "~@5 db5 bb4@2",
  S: "db5@4 bb4@3 ~ ab4 f4@4 ~@3", T: "[~@10 db5@3 bb4 ab4 bb4@4 ~ bb4@4 ~@8]/2", U: "f5@3 eb5@3 db5@2 bb4@3 bb4@4 ~",
  V: "[~@14 ab4@4 bb4@4 db5@3 bb4@2 ~ bb4@4]/2", W: "~ ab4@2 bb4@3 ~@2", X: "db5@3 bb4@3 bb4@2 bb4 ab4 f4@3 ~@3",
  Y: "~@10 ab4@3 ab4@3", Z: "ab4@3 ab4@2 ab4@2 ~ ab4@2 bb4@2 ab4@2 ~@2", AA: "[~@14 eb5 f5@7 eb5@4 db5@2 bb4 ~@3]/2",
  AB: "db5@3 ~@5",
})).s("gm_lead_3_calliope").gain(0.3).pan(0.4)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@9 A B A B C@2 A D ~@8 A B A B C@2 A D ~@17 E B E B E F E D G@16 E B E B E F E D ~@10 H@2 I@2 J@2 C@2 K@2 H@2 I@2 L@2
  M@2 A N O@2 I@2 P@2 ~@2
>`.pickRestart({
  A: "[bb2,f3]@3 [bb2,f3]@3 [bb2,f3]@2", B: "~ [f2,c3] [f2,c3]@2 [f2,c3]@4",
  C: "[[bb2,f3]@3 [bb2,f3]@3 [bb2,f3]@3 [f2,c3] [f2,c3]@2 [f2,c3]@4]/2", D: "~ [f2,c3] [f2,c3]@2 [f2,c3]@3 ~",
  E: "[bb2,f3]@3 [bb2,f3] [bb2,f3]@2 [bb2,f3]@2", F: "~@2 [f2,c3]@2 [f2,c3]@4 [f2,c3]@7 ~",
  G: "~@4 [db4,f4,bb4] ~@7 [db4,f4,bb4] ~@3", H: "[ab2@3 ab2@3 ab2@3 ab2 ab2@2 ab2@2 ab2@2]/2",
  I: "[g2@3 g2@3 g2@3 g2 g2@2 g2@2 g2@2]/2", J: "[gb2@3 gb2@3 gb2@3 gb2 gb2@2 gb2@2 gb2@2]/2",
  K: "[[bb2,f3]@6 [bb2,f3]@6 [bb2,f3]@6 [f2,c3]@2 [f2,c3]@4 [f2,c3]@7 ~]/2", // Bb5 F5
  L: "[gb2@3 gb2@3 gb2@3 gb2 f2@2 f2@2 f2@2]/2",
  M: "[[bb2,f3]@6 [bb2,f3]@6 [bb2,f3]@6 [f2,c3]@2 [f2,c3]@4 c3@4 c3@3 ~, ~@24 f2@7 ~]/2", // Bb5 F5
  N: "~ [f2,c3] [f2,c3]@2 [f2,c3]@2 [f2,c3]@2", O: "[ab2@3 ab2@3 ab2@3 ab2 ab2@2 ab2@4]/2",
  P: "[gb2@3 gb2@3 gb2@3 gb2 gb2@2 f2@2 f2@2]/2",
})).s("gm_overdriven_guitar").gain(0.22).pan(0.1)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@18 A ~ B ~ C ~@10 D ~@2 E ~@5 F G ~@76>".pickRestart({
  A: "~@5 [f4,bb4]!3", B: "~@5 [db4,f4]@2 ~", C: "~@3 f4 eb4@2 f4 ~", D: "~@4 [db4,f4,bb4] ~@11",
  E: "~@12 [db4,f4,bb4] ~@3", F: "~@10 f4@2 eb4 db4 bb3 ~", G: "bb3 ~@15",
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.7)

// other · harmonica
const harmonica = note(`<
  ~@8 A B C D E F G D H ~@41 I J K@2 L M N O P Q R@2 S T U V W@2 D E W@2 D E ~@16 X Y Z@2 ~@6 D E F AA ~@8
>`.pickRestart({
  A: "~@10 f4 ~ g4 ~ f4 ~", B: "bb4@5 ~ bb4@5 ~ bb4@4", C: "~@2 f5 [bb4,c5] f4@4 f4@4 [c5,f5]@2 eb5 ~, ~@4 ab4 ~@11",
  D: "f5 ab5 [f5,ab5]!3 f5 [f5,ab5]!2 ab5 [f5,ab5] f5 [f5,ab5] ab5 [f5,ab5]!2 f5", // Fm
  E: "[f5,ab5]!2 c5 [ab4,bb4] f4@4 f4@4 g4@2 f4 ~", F: "bb4@3 bb4@3 bb4@2",
  G: "~@2 [ab4,bb4,c5] f4@5 f4@3 ~ [c5,f5]@2 eb5 ~", H: "[f5,ab5]!2 c5 [ab4,bb4] f4@4 f4@4 bb4@2 ~@2",
  I: "~ ab4@5 ab4 ~", J: "ab4 bb4@4 ~ bb4@4 bb4@2 db5 ~@3",
  K: "[~@4 [f5,ab5]@2 bb5@4 bb5 ~ [db5,eb5,f5] bb4@2 bb4@4 ~ db5@2 eb5 ~ db5@4 bb4@4]/2", // Fm Db
  L: "f5 ab5 [f5,ab5] f5 [f5,ab5]!2 ab5 [f5,ab5]!2 f5 [f5,ab5] ab5 [f5,ab5]!3 f5", // Fm
  M: "[f5,ab5] ab5 [f5,ab5]!3 f5 [f5,ab5] ab5 [f5,ab5] f5 [f5,ab5] ab5 ~ db5 bb4 ~, ~@6 f5 ~", // Fm
  N: "bb4@2 bb4@2 ab4@2 ~@2 bb4@2 bb4@2 db5@2 bb4 ~", O: "bb4@2 f4!2 g4 bb4 ~ bb4 d5 ~ eb5 d5 f5@2 [db5,eb5] bb4",
  P: "f5 bb5 ~@6", Q: "~@8 f5@3 ~ g5@3 f5",
  R: "[g5 ab5 g5 f5 eb5 db5 f5 eb5 db5 bb4 ab4 bb4 ab4 f4 bb4@4 db5@2 eb5@2 eb5 ~ f5 ~ g5 f5@2 g5 f5 d5]/2",
  S: "f5@8 eb5 ~@3 f5@2 ~@2", T: "[g5,ab5]@2 ~@2 ab5@2 ~@2 ab5@2 ~@2 g5@2 ~ f5, ~@4 g5 ~@3 g5 ~@7",
  U: "g5 ab5 g5 ~ f5 eb5@2 d5 db5 eb5 ~ db5 c5 bb4@3", V: "ab4",
  W: "[bb4@6 bb4@5 ~ bb4@6 bb4 f4@4 ~ f4@6 ~@2, ~@19 ab4 ~@12]/2", X: "~@4 f5@8 [db5,eb5] bb4@2 ~",
  Y: "bb4@4 bb4 ab4 f4@2 f4@4 g4@2 f4 ~", Z: "[bb4@6 bb4@6 bb4@6 f4@2 f4@4 f4@4 g4@2 f4 ~]/2",
  AA: "~@2 [ab4,bb4,c5] f4@5 f4@3 ~@5", // Ab
})).s("gm_harmonica").gain(0.31)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@82
  [bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~]
  [bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~@3]
  [bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~]!5
  [bb3 ~ bb3 ~ bb3 ~ bb3!3 ~ bb3 ~ bb3 ~ bb3 ~]
  [bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~]!8
  [bb3 ~@7 bb3 ~@7]
  ~@21
>`).s("gm_electric_guitar_muted").gain(0.19).pan(0.6)

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

// drums · snare
const snare = s("sd").struct("<~ A@15 B A@7 C A@20 ~@2 D C ~ A@7 B A@7 E A@16 ~@7 F A@28 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x!2 ~@2", C: "x", D: "~@15 x", E: "~@4 x ~@7 x ~ x!2", F: "~@3 x",
})).gain(0.49)

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

// … 21 more lines

More by Annie Lennox