Strudelify
She's a River cover art

Good News From The Next World

She's a River

Simple Minds

KeyD majorTempo93 bpm
0:00/0:00
// She's a River — Simple Minds
// 93 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 5 "DISTORTION" distortion guitar (copy of ch 6 "CLEAN GTR" electric guitar clean)
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(93/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 · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@5 A@8 B@4 C@2 D@2 E F G@4 B@4 C@2 D@2 E F ~@4 B@4 C@2 D@2 E F ~@4 B@4 C@2 D@2 E F H@2 ~@4 B@4 C@2 D@2 E F ~@3 I G@2
  ~ I G@2 ~ I G@2 ~ I G@2 ~
>`.pickRestart({
  A: "[[d1,d2]@63 [g1,g2]@32 [d1,d2]@32 ~]/8", B: "[d1,d2,d3]/4", C: "[g1,g2,g3]/2",
  D: "[d1@15 ~ d1@15 ~, [d2,d3]@31 ~]/2", E: "[b3,e4,g4]@15 ~", F: "[b3,d4,e4,g4]@15 ~",
  G: "[[d3,a3,c4]@22 [d3,g3,b3]@9 ~]/2", H: "[[a1,a2,g3,d4,e4,a4,d5,e5,a5], [d#4,g4] ~@31]/2", I: "~@6 [d3,g3,b3]@9 ~",
})).s("gm_string_ensemble_1").gain(0.25)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~ A B A C D E D F G H I J K E D F G H I J L M A B A C D E D F G H I J L M A B A C D E D F G H I J L M D N O P D E D F
  G H I J L M Q R A B A C D E D F G H I J L M D N A B A C A B A C A B A C A B A C ~
>`.pickRestart({
  A: "d1@2 ~ d1 d2@3 d1 d1@2 ~ d1 d2@3 d1", B: "c2@3 ~ c2@2 g1@3 ~ g1 ~ g1@3 ~", C: "c2@3 ~ c2@2 g1@4 g1@2 g1@3 ~",
  D: "d1 ~@2 d2 ~ d2 ~ d2 ~@2 d2!2 ~ d2 ~ d2, ~@2 d1@13 ~", E: "~@3 d2 ~ d2 ~ d2 ~ d2!3 ~ d2 ~ d2, d1@15 ~",
  F: "d1 ~@2 d2 ~ d2 ~ d2 ~@2 d2!2 ~ d2 ~@2, ~ d1@7", G: "~@3 d2 ~ d2 ~ d2 ~@2 d2!2 ~ d2 ~ d2, g1",
  H: "~@3 d2 ~ d2!3 ~ d2 ~ d2 ~ d2 ~ d2, g1", I: "~@3 d2 ~ d2!3 ~ d2 ~ d2 ~ d2 ~ d2, d1@15 ~",
  J: "~@3 d2 ~@2 d2!2 ~ d2 ~ d2 ~ d2!3, d1", K: "d1@2 ~ d2 ~ d2 ~ d2 ~@2 d2!2 ~ d2 ~ d2, ~ d1@7",
  L: "e1 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1 e1@2", M: "g1 g1@2 g1@2 g1@2 g1@2 g1@2 g1@2 g1 a1@2",
  N: "d1 ~@2 d2 ~ d2 ~ d2 ~@2 d2!2 ~ d2 ~@2, ~@2 d1@13 ~", O: "d2@15 ~", P: "c2@6 g1@9 ~",
  Q: "a1 a1@2 a1@2 a1@2 a1!2 a1@2 a1@2 a1@2 a1", R: "a1 ~@2 a1@2 a1@2 a1 g3 e3 f#3 d3 e3 c3 d3 c3",
})).s("gm_electric_bass_finger").gain(0.5).pan(0.6)

// bass · electric bass finger · "FINGERDBAS" · soft notes
const bass_soft = note(`<
  ~@5 A ~ A B C D@2 E A ~ A B C D@2 E ~@6 A ~ A B C D@2 E ~@6 A ~ A B C D@2 E ~@2 A B ~@2 A ~ A B C D@2 E ~@3 F ~@4 A ~
  A B C D@2 E ~@2 A B ~@17
>`.pickRestart({
  A: "~@9 d2 ~@6", B: "~@9 d2 ~@5 d2", C: "~@2 d2 ~@6 d2 ~@6", D: "~@2 d2 ~@13", E: "~@2 d2 ~@2 d2 ~@10",
  F: "~ a1 ~@14",
})).s("gm_electric_bass_finger").gain(0.29).pan(0.6)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~ A B A B C D E F G H I J C D E F G H I J K L A B A B C M E F G H I J K L N O P Q R@2 S@2 T@2 U@2 V W X@2 Y ~ Z AA AB
  AC AD AE AF AG AH AI AJ@2 AK O P AL R@2 S@2 T@2 U@2 V W X@2 A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "d3", B: "c3@6 g2@2 ~@2 g2 ~@2 g2 ~@2", C: "~ d3 ~@3 d3 ~ d3 ~ d3 ~ e4@2 ~@2 d3",
  D: "~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ e4@2 ~ d3!2", E: "~ d3 ~ d3 ~ d3 ~@3 d3 ~ e4@2 ~ d3!2",
  F: "~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ f#4@2 ~@2 d3", G: "~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ e4@2 ~@2 d3",
  H: "~ d3 ~ d3 ~ d3 ~@3 d3 ~@3 d3 ~@2", I: "~ d3 ~@3 d3 ~@3 d3 ~ e4@2 ~@3", J: "d3!2 ~@3 d3 ~@3 d3 ~ e4@3 ~@2",
  K: "e2", L: "g2", M: "~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3!3", N: "d3@15 ~", O: "c3@3 g2@5", P: "[d2,d3]",
  Q: "c3@6 g2@9 ~", R: "[[d2,d3]@27 ~@3 [c3,d3,e3,f3,g3] [e2,f2,g2,a2,b2]]/2", S: "[d2,d3]/2", T: "[g2,g3]/2",
  U: "[[d2,d3] ~@3 [d2,d3]@28]/2", V: "[e2,e3]@7 [f#2,f#3]", W: "[g2,g3]", X: "[[d2,d3]@31 ~]/2", Y: "d2",
  Z: "~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~@2 d4@4", AA: "~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 e4@4",
  AB: "~ d4 ~ d4 ~ d4 ~@3 d4 ~@2 d4@2 d4!2", AC: "~@3 d4 ~ d4 ~ d4 ~ d4 ~ d4!2 ~@2 d4",
  AD: "~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~@2 d4@3 ~", AE: "d4 ~ d4!2 ~ d4 ~ d4 ~ d4 ~ d4 e4@2 e4!2",
  AF: "~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4!2 ~@2 d4", AG: "~@3 d4 ~@3 d4 ~ d4 ~@2 d4@2 ~@2", AH: "e2@7 f#2", AI: "g2@15 ~",
  AJ: "[a2@29 ~@3]/2", AK: "~ d3@3, d2", AL: "[c2,c3]@6 g2@9 ~",
})).s("gm_distortion_guitar").gain(0.21).pan(0.7)

// other · distortion guitar · "DISTORTION" · soft notes
const distortion_guitar_soft = note(`<
  ~@2 A ~ B C ~ D E@2 F G H C ~ D E@2 F G H ~@3 A ~ B C ~ D E@2 F G H ~@7 I ~@12 J K L M N ~@2 O ~@9 I ~@11 A ~ B ~ A ~
  B ~ A ~ B ~ A ~ B ~
>`.pickRestart({
  A: "~@12 g2 ~@2 g2", B: "~@12 g2 ~@3", C: "d3 ~@2 d3 ~@12", D: "~@7 d3 ~@8", E: "~@14 d3 ~",
  F: "~@7 d3 ~@3 d3 ~@3 d3", G: "~@3 d3 ~@3 d3 ~@6 d3 ~", H: "~@3 d3 ~@3 d3 ~@8",
  I: "~@12 [b4,c5,d5,e5,f5,g5,a5] [b3,c4,d4,e4,f4,g4,a4] a3 ~", J: "d4 ~@10 d4 ~@4", K: "d4 ~@15",
  L: "~@7 d4 ~@3 d4 ~@4", M: "~ d4 ~@12 d4 ~", N: "~@11 d4 ~@3 d4", O: "~ d4 ~@3 d4 ~@5 d4 ~@2 c4 ~",
})).s("gm_distortion_guitar").gain(0.11).pan(0.7)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A B A B ~@16 C D A B A B ~@8 C D ~@26 C D A B E F G F ~@12 A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "a4 d4 c5@2 a4 d4 c5@2", B: "a4 d4 c5 b4@2 a4 g4@2", C: "e3 b3 e4 g4@2 e4 d5@2", D: "g3 b3 e4 g4@2 e4 d5@2",
  E: "[d2,a2,d3]@4 [d3,a3,d4]@11 ~", F: "[c3,g3,c4]@5 ~ [d3,g3,b3]@9 ~", G: "[d3,a3,d4]@15 ~",
})).s("gm_electric_guitar_clean").gain(0.38).pan(0.7)

// other · guitar harmonics · "GTHARMONIC"
const guitar_harmonics = note(`<
  ~@40 A B@4 C@2 D@2 E F@3 ~@17 A B@4 C@2 D@2 E G@2 H@4 I J@2 K@2 L M@3 L N O@2 P
>`.pickRestart({
  A: "~@14 g3 f#3", B: "[d3@24 g3 f#3 d3@2 e3@2 f#3@2]/2", C: "[b3@12 f#3@2 b3@10 g3 f#3 d3@2 e3@2 f#3@2]/2",
  D: "[d3@12 e3@2 f#3@16 g3 f#3]/2", E: "e3@7 f#3", F: "[g3@14 ~ f#3 d3@31 ~, ~@7 g3@7 ~@10]/3",
  G: "[g3@14 ~ f#3 d3@16, ~@7 g3@7 ~@2]/2", H: "[~@6 d2@14 g3@2 f#3@12 a2@3 ~ g3@8 f#3@18]/4", I: "d3@4 a2@2 g3@9 f#3",
  J: "[d3@18 a2@4 g3@8 g3 f#3]/2", K: "[d3@11 ~@2 a2 g3@2]/2", L: "f#3@3 d3@5", M: "[e3@3 f#3@6 e3 d3@2 a3@10 g3@2]/3",
  N: "e3@3 f#3@3 g3@2", O: "[f#3 e3 d3@2 a3@9 a2 g3@2]/2", P: "f#3 ~@15",
})).s("gm_guitar_harmonics").gain(0.72).pan(0.2)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar_2 = note(`<
  A B C B D ~@36 E F G H I J K L M N O P ~@14 Q R S T E F G H I J K L M N O P B C B C B R B U B C B U B C Q V ~
>`.pickRestart({
  A: "~@12 [c4,d4] [d#3,f3,f#3,g3,g#3,a3,a#3,b3] [c#2,d#2,f#2,g#2,a#2,c#3,e3] [c#1,d#1,f#1,g#1,a#1]", B: "d2",
  C: "c2@3 g1@5", D: "c2@6 g2@9 ~", E: "~@4 [c5,e5] ~@3 [g4,b4]@2 ~@2 a4 [f4,g4] ~@2, ~@11 [g4,b4]@2 ~@3",
  F: "[g3,c4]@2 ~ [g3,c4] ~@2 [g3,c4] ~@5 [a3,d4]@4", // C5 D5
  G: "~@4 [c5,e5]@2 ~@2 [g4,b4]@2 ~@2 [g4,a4] [c4,d4,e4,f4] ~@2, ~@11 [g4,b4]@2 ~@3", // C G Gsus2 Dm7 G
  H: "[g3,c4]@3 ~ [f3,a3] [d3,e3] [a3,d4]@10, ~@3 [g3,b3]@2 ~@11", // C5 F Dsus2 D5 G
  I: "~@4 [c5,e5] ~@3 [g4,b4]@2 ~ [g4,b4]@2 [a3,b3,c4,d4,e4] ~@2", J: "b3 g3 c4 b3@2 g3@3",
  K: "~@4 [c5,e5] ~@3 [g4,b4]@3 [g4,b4] ~@4", L: "[a3,e4] d4 c4 [a3,d4]@5, ~ a3@2 ~@5", M: "~@3 [a3,d4] [b3,e4]@4",
  N: "~@2 e4 f#4 g4@4, ~ [g3,d4]@7", O: "~@4 [c5,e5] ~@3 [g4,b4]@2 ~ [g4,b4]@2 [c4,d4,e4,f4,a4] ~@2",
  P: "[g4,c5]!7 ~@9", Q: "~ d3@3, d2", R: "[c2,c3]@3 [g1,g2]@5", S: "[d2,d3]", T: "c2@6 [g1,g2]@9 ~", U: "c2@3 g2@5",
  V: "c2@6 g1@9 ~",
})).s("gm_distortion_guitar").gain(0.6).pan(0.8)

// chords · distortion guitar · "DISTORTION" · soft notes
const distortion_guitar_soft_2 = note("<~@3 A ~@37 B ~ C D E ~@5 F ~@18 G B ~ C D E ~@5 F ~@5 H ~@12>".pickRestart({
  A: "g1 ~@15", B: "~@13 [b3,c4,d4,e4] ~@2", C: "~@13 [f3,g3,a3,b3] e3 ~", D: "~@5 [b2,c3] ~@10",
  E: "~@13 [f4,a4] g3 ~", F: "~@13 b3 [e3,f3,g3,a3] ~", G: "c3@3 ~@5", H: "d3",
})).s("gm_distortion_guitar").gain(0.36).pan(0.8)

// chords · rock organ · "ORGAN 3"
const rock_organ = note("<~@35 A B@4 C ~@13 D ~@5 E ~@7 F G@2 ~@12 H@2 I@2 J@3 K@2 ~@2 L@3 ~@3>".pickRestart({
  A: "~@5 [d6,a6]@3", B: "[~@7 [d6,a6]@26 ~@7 [d6,a6]@11 ~@13]/4", C: "~ [d6,a6]@7", D: "~@2 [d5,a5,d6,a6]@5 ~",
  E: "~@3 [d6,a6]@5", F: "~@3 [a5,d6,a6]@5", G: "[~@3 [a5,d6,a6]@15 ~@14]/2", H: "[~ [a5,d6]@7]/2",
  I: "[~ [d6,a6]@15]/2", J: "[~ [d6,a6,d7]@39 ~@8]/3", K: "[~@9 [d6,a6,d7,a7]@23]/2", L: "[~ [d6,a6,d7]@44 ~@3]/3",
})).s("gm_rock_organ").gain(0.12).pan(0.9)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@21 A B C D C D ~@8 A B E F E F E G@3 H I E G J K E G ~@2 E G@3 H I E G J K L M G N E N E G@3 H I E G J K E G O D C D
  C D C P Q D C D C D C D ~
>`.pickRestart({
  A: "[e3,g3,b3,e4] [e3,g3] [e3,g3,b3,e4] [g3,b3,e4,g4] [e3,g3,b3] [e4,g4] [e3,g3,b3,e4,g4] [g3,b3,e4,g4] [e3,g3,b3,e4,g4] [e3,g3] [e3,g3,b3,e4] [g3,b3,e4,g4] [e3,g3,b3] [g3,b3,e4,g4] [e3,g3,b3,e4,g4] ~, g4@3 ~@13", // Em
  B: "[d3,g3,b3,d4,g4] [d3,g3] [d3,g3,b3,d4] [g3,b3,d4,g4] [d3,g3,b3] [d4,g4] [d3,g3,b3,d4,g4] [g3,b3,d4,g4] [d3,g3,b3,d4,g4] [d3,g3] [d3,g3,b3,d4] [g3,b3,d4,g4] [d3,g3,b3] [g3,b3,d4,g4] [d3,g3,b3,d4,g4] ~", // G G5 G G5 G G5 G
  C: "[d3,a3,c4,d4] [d3,a3] [d3,a3,c4,d4] [a3,c4,d4,a4] [d3,a3,c4] [d4,a4] [d3,a3,c4,d4,a4] [a3,c4,d4,a4] [d3,a3,c4,d4,a4] [d3,a3] [d3,a3,c4,d4] [a3,c4,d4,a4] [d3,a3,c4] [a3,c4,d4,a4] [d3,a3,c4,d4,a4] ~, a4@3 ~@13", // D7 D5 D7 D5 D7 D5 D7
  D: "[c3,g3,c4,e4] [c3,g3] [c3,g3,c4,e4] [g3,c4,e4,g4] [c3,g3,c4] [e4,g4] [d3,g3,b3,d4,g4] [g3,b3,d4,g4] [d3,g3,b3,d4,g4] [d3,g3] [d3,g3,b3,d4] [g3,b3,d4,g4] [d3,g3,b3] [g3,b3,d4,g4] [d3,g3,b3,d4,g4] ~, g4@3 ~@13", // C C5 C C5 Em G G5 G
  E: "[d2,d3,a3,d4]!3 [d3,a3,d4,a4] [d2,d3,a3] [d3,a3,d4,a4] [d2,d3,a3,d4,a4]!3 [d2,d3,a3,d4]!2 [d3,a3,d4,a4] [d2,d3,a3] [d3,a3,d4,a4] [d2,d3,a3,d4,a4]!2, a4@3 ~@13", // D5
  F: "[c3,g3,c4,e4]!3 [g3,c4,e4,g4] [c3,g3,c4] [g3,b3,e4,g4] [d3,g3,b3,d4,g4]!3 [d3,g3,b3,d4]!2 [g3,b3,d4,g4] [d3,g3,b3] [g3,b3,d4,g4] [d3,g3,b3,d4,g4]!2, g4@3 ~@13", // C C5 Em G
  G: "[d2,d3,a3,d4,a4] [d2,d3,a3,d4]!2 [d3,a3,d4,a4] [d2,d3,a3] [d3,a3,d4,a4] [d2,d3,a3,d4,a4]!3 [d2,d3,a3,d4]!2 [d3,a3,d4,a4] [d2,d3,a3] [d3,a3,d4,a4] [d2,d3,a3,d4,a4]!2", // D5
  H: "[d2,g3,b3,d4] [d2,g3,d4] [d2,g3,b3,d4] [g3,b3,d4,g4] [d2,g3,b3] [d4,g4] [d2,g3,b3,d4,g4]!2 [d2,g3,b3,d4]!3 [g3,b3,d4,g4] [d2,g3,b3] [g3,b3,d4,g4] [d2,g3,b3,d4,g4] [d2,b3,d4], g4@3 ~@13", // G G5 G G5 G
  I: "[d2,g3,b3,d4,g4] [d2,g3,d4] [d2,g3,b3,d4] [g3,b3,d4,g4] [d2,g3,b3] [d4,g4] [d2,g3,b3,d4,g4]!2 [d2,g3,b3,d4]!3 [g3,b3,d4,g4] [d2,g3,b3] [g3,b3,d4,g4] [d2,g3,b3,d4,g4] [d2,b3,d4]", // G G5 G G5 G
  J: "[e3,g3,b3,e4]!3 [g3,b3,e4,g4] [e3,g3,b3] [g3,b3,e4,g4] [e3,g3,b3,e4,g4] [g3,b3,e4,g4] [e3,g3,b3,e4,g4] [e3,g3,b3,e4]!2 [g3,b3,e4,g4] [e3,g3,b3] [g3,b3,e4,g4] [e3,g3,b3,e4,g4]!2, g4@3 ~@13", // Em
  K: "[d3,g3,b3,d4,g4] [d3,g3,b3,d4]!2 [g3,b3,d4,g4] [d3,g3,b3] [g3,b3,d4,g4] [d3,g3,b3,d4,g4] [g3,b3,d4,g4] [d3,g3,b3,d4,g4] [d3,g3,b3,d4]!2 [g3,b3,d4,g4] [d3,g3,b3] [g3,b3,d4,g4] [d3,g3,b3,d4,g4]!2", // G
  L: "[e3,a3,b3,e4]!3 [a3,b3,e4,a4] [e3,a3,b3] [a3,b3,e4,a4] [e3,a3,b3,e4,a4] [a3,b3,e4,a4] [e3,a3,b3,e4,a4] [e3,a3,b3,e4]!2 [a3,b3,e4,a4] [e3,a3,b3] [a3,b3,e4,a4] [e3,a3,b3,e4,a4]!2, a4@3 ~@13", // Esus4 Asus2 Esus4 Asus2 Esus4 Asus2 Esus4 Asus2 …
  M: "[e3,a3,b3,e4,a4] [e3,a3,b3,e4]!2 [a3,b3,e4,a4] [e3,a3,b3] [a3,b3,e4,a4] [e3,a3,b3,e4,a4] [a3,b3,e4,a4] [e3,a3,b3,e4,a4] [e3,a3,b3,e4]!2 [a3,b3,e4,a4] [e3,a3,b3] [a3,b3,e4,a4] [e3,a3,b3,e4,a4]!2", // Esus4 Asus2 Esus4 Asus2 Esus4 Asus2 Esus4 Asus2 …
  N: "[c3,g3,c4,e4]!3 [g3,c4,e4,g4] ~ [g3,b3,e4,g4] [d3,g3,b3,d4,g4]!3 [d3,g3,b3,d4]!2 [g3,b3,d4,g4] [d3,g3,b3] [g3,b3,d4,g4] [d3,g3,b3,d4,g4]!2, g4@3 ~@13", // C Em G
  O: "[d3,a3,c4,d4,a4] [d3,a3] [d3,a3,c4,d4] [a3,c4,d4,a4] [d3,a3,c4] [d4,a4] [d3,a3,c4,d4,a4] [a3,c4,d4,a4] [d3,a3,c4,d4,a4] [d3,a3] [d3,a3,c4,d4] [a3,c4,d4,a4] [d3,a3,c4] [a3,c4,d4,a4] [d3,a3,c4,d4,a4] ~", // D7 D5 D7 D5 D7 D5 D7
  P: "~@8 [c3,g3,c4,e4] [c3,g3] [c3,g3,c4,e4] [g3,c4,e4,g4] [c3,g3,c4] [e4,g4] [d3,g3,b3,d4,g4] [g3,b3,d4,g4], ~@8 g4@3 ~@5", // C C5 C C5 Em G
  Q: "[d3,g3,b3,d4,g4] [d3,g3] [d3,g3,b3,d4] [g3,b3,d4,g4] [d3,g3,b3] [g3,b3,d4,g4] [d3,g3,b3,d4,g4] ~@9", // G G5 G
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.4)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@21 A B C D C D ~@8 A B ~@8 E@2 ~@2 F G ~@8 E@2 ~@2 F G F@2 ~ H ~ H ~@4 E@2 ~@2 F G ~@2 C D C D C D C I J D C D C D C
  D ~
>`.pickRestart({
  A: "~ [b3,e4] ~@3 [g3,b3] ~ e3 ~ [b3,e4] ~@5 [e3,g3,b3,e4,g4]", // E5 G E5 Em
  B: "~ [b3,d4] ~@3 [g3,b3] ~ d3 ~ [b3,d4] ~@5 [d3,g3,b3,d4,g4]", // Bm G Bm G
  C: "~ [c4,d4] ~@3 [a3,c4] ~ d3 ~ [c4,d4] ~@5 [d3,a3,c4,d4,a4]", // Csus2 Am Csus2 D7
  D: "~ [c4,e4] ~@3 [g3,b3] ~ d3 ~ [b3,d4] ~@5 [d3,g3,b3,d4,g4]", E: "~ b3 ~@3 [g3,b3] ~@2 g4 ~@6 [g3,g4]",
  F: "~@7 e3 ~@8", G: "~@7 d3 ~@8", H: "~@4 [c3,g3,c4] ~@11", I: "~@9 [c4,e4] ~@3 [g3,b3] ~ d3",
  J: "~ [b3,d4] ~@5 [d3,g3,b3,d4,g4] ~@8", // Bm G
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.4)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~ A@3 B A@15 C A D A@3 B A@7 C A D A@3 B A@7 C A D A B E ~ A@7 C A D F ~ A@3 B A@7 C F D A B A@3 B A@3 B A@3 B A@3 B ~
>`.pickRestart({
  A: "~@3 x ~@3 x ~@3 x ~@3 x", B: "~@7 x ~@8", C: "~@3 x ~@3 x ~@7 x", D: "~@3 x ~@3 x ~@8", E: "~@15 x",
  F: "~@3 x ~@3 x ~@3 x ~@4",
})).gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  A ~@3 B ~@21 C ~@7 A ~@5 D ~@7 A ~@3 E ~@9 B ~@3 F ~@3 D ~@11 B ~@7 F ~@7 C ~
>`.pickRestart({
  A: "~@15 x", B: "~@7 x", C: "~@12 x!4", D: "~@7 x ~ x ~ x ~@2 x!2", E: "~@13 x!3", F: "~@14 x!2",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  A ~@4 B C D E F G H I B C D E F G H J A K ~@4 B C D L F G H J A K ~@12 A K ~@2 M N ~@8 A K ~@14 A K ~@19
>`.pickRestart({
  A: "x!8", B: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x", C: "x ~@3 x ~@2 x!2 ~@2 x!2 ~ x!2", D: "x ~@2 x!2 ~@3 x ~@3 x ~@2 x",
// … 96 more lines

More by Simple Minds