Strudelify
More Than Words cover art

1990 · Extreme II - Pornograffitti

More Than Words

Extreme

KeyG majorTempo86 bpm
0:00/0:00
// More Than Words — Extreme
// 86 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 6 "Acoustic Guitar (steel)" acoustic guitar steel (copy of ch 2 "harpsistrings" orchestral harp)
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(86/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 · orchestral harp · "harpsistrings"
const orchestral_harp = note(`<
  ~ A@8 B@6 C@4 D@2 E@2 F@2 G H I@2 J@4 K L@3 M@4 K N@8 O@8 P@7 Q@5 R S@8 T U@8 V@8 W@8 ~
>`.pickRestart({
  A: "[~@2 [d4,g4]@2 ~@2 [d4,g4]@3 ~ [d4,g4]@2 ~@2 [d4,g4]@4 [d4,g4]@3 ~@3 [d4,g4] ~ [d4,g4]@2 ~@2 g4@4 e4@2 ~@4 g4@2 g3@3 ~ g3@4 e4@2 ~@2 f#4@4 g4@2 ~@2 d4@4 d4@4 [d4,g4]@4 d4@4 [d4,g4]@4 d4@6 d4@2 g4@2 ~@2 g4@4 e4@2 ~@4 g4@2 g3@3 ~ g3@4 e4@2 ~@2 f#4@4 g4@2 ~@2 [d4,g4]@2, ~@30 c4@7 ~@3 c4@5 ~ c4@6 ~@2 d4@6 ~@2 g4@2 ~@2 g4@2 ~@6 g4@2 ~@6 g4@2 ~@4 g4 ~ d4@28 d4@8 ~@2, ~@94 c4@7 ~@3 c4@5 ~ c4@6 ~@12]/8", // G5
  B: "[~@2 d4@4 [d4,g4]@4 d4@4 [d4,g4]@4 d4@6 d4@2 g4@2 ~@2 g4@4 e4@2 ~@4 g4@2 g3@3 ~ g3@4 e4@2 ~@2 f#4@4 g4@2 ~@2 g4@2 ~@2 [e3,g3,b3]@3 ~ [e3,b3]@4 [e3,b3]@3 ~ [e3,c4]@4 [e3,c4]@2 ~@4 [e3,c4] ~ [c3,a3]@5 ~, ~@2 g4@2 ~@6 g4@2 ~@6 g4@2 ~@4 g4 ~ d4@28 d4@8 d4@34, ~@30 c4@7 ~@3 c4@5 ~ c4@6 ~@44]/6", // G5 Em E5 C F
  C: "[f#3@3 ~ [f#3,e4] ~ f#3@3 ~ [f#3,c4]@2 ~@2 [d3,g3,b3]@4 [d3,g3,b3]@2 ~@2 [d3,b3]@4 [f#3,b3] ~@3 d4@4 ~@4 b3 ~ [c4,e4] ~ [c4,e4]@3 ~ e4@10 [a3,c4]@6 ~@2, d4@3 d4@12 ~@2 d4@15, ~@22 f#3@3 ~@5 [g3,b3]@6 ~@10 c4@7 ~@11]/4", // F#7 F#dim G B5 C Am G
  D: "[[d4,f#4]@4 f#4@2 [c4,e4]@3 ~ [c4,f#4]@2 g4 ~ [b3,d4,f4]@4 [b3,d4,f4]@4 [b3,d4]@4 [e4,g4]@2 [d4,f4] ~ [d4,f4]@2, ~@2 d4@5 ~@4 f4 ~@4]/2", // D C Cdim Bdim Bm Em Dm
  E: "[~@2 [c4,e4]@5 ~ g3@2 [g3,c4]@2 ~@2 [d#4,g4]@4 [c4,d#4]@2 c#4 ~ [g3,d4]@3 ~ [g3,c4]@3 ~ c4@2, ~@8 d4 ~@23]/2", // C C5 D# Cm G5 C5
  F: "[d4 c4 b3@4 ~@2 [d3,g3,b3] ~ [d3,g3,b3]@4 [g3,b3,d4]@4 [b3,d4]@2 [c4,e4]@8 ~@2 [c4,e4]@2]/2", // G Bm C
  G: "[c4,e4]@5 ~@3 [a3,c4]@6 ~@2", H: "[d4,f#4]@6 [b3,d4] ~ [b3,d4]@7 ~",
  I: "[~@2 [d4,g4]@2 ~@2 [d4,g4]@4 [d4,g4]@2 ~@2 [d4,g4]@4 [d4,g4]@2 ~@2 [d4,g4]@3 ~ [d4,g4]@3 ~@3]/2", // G5
  J: "[e4@2 f#4@2 d4@2 a3 ~ [a3,d4] ~ [a3,d4]@3 ~ d4@4 g4@3 ~ a4@3 ~ a4@2 b4@2 g4@8 ~@2 [c4,e4] ~ [c4,e4]@4 [c4,e4]@6 [c4,e4] ~ [c4,e4]@4 [a3,c4]@3 ~ [c4,e4] d4, ~@7 a4 ~@23 b3]/4", // D5 C Am C
  K: "[c4,e4]@7 ~ [c4,e4] ~ [c4,e4] ~@3 [d4,f#4]@2", // C D
  L: "[~@2 [d4,f#4]@3 ~ [d4,f#4]@4 [c4,e4]@2 [b3,d4] ~ [b3,d4]@5 ~@3 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@4 ~@2 d4 ~ [d4,g4]@2 ~@2 [d4,g4]@3 ~ d4@2, ~@34 b3@6 ~@6 g4 ~]/3", // D C Bm G5
  M: "[e4@2 f#4@2 d4@2 a3 ~ [a3,d4] ~ [a3,d4]@3 ~ d4@4 g4@3 ~ a4@3 ~ a4@2 b4@2 g4@8 ~@2 [c4,e4] ~ [c4,e4]@3 ~ [c4,e4]@6 [c4,e4] ~ [c4,e4]@4 [a3,c4]@3 ~ [c4,e4] d4, ~@7 a4 ~@23 b3]/4", // D5 C Am C
  N: "[~@2 [d4,f#4]@3 ~ [d4,f#4]@4 [c4,e4]@2 [b3,d4] ~ d4@4 d4@4 [d4,g4]@4 d4@4 [d4,g4]@4 d4@6 d4@2 g4@2 ~@2 g4@4 e4@2 ~@4 g4@2 g3@3 ~ g3@4 e4@2 ~@2 f#4@4 g4@2 ~@2 d4@4 d4@4 [d4,g4]@4 d4@4 [d4,g4]@4 d4@6 d4@2 g4@2 ~@2 [c4,g4]@2 ~ e4@15, ~@7 b3@57, ~@18 g4@2 ~@6 g4@2 ~@6 g4@2 ~@4 g4 ~ d4@28 d4@8 g4@2 ~@2 g4@2 ~@6 g4@2 ~@6 g4@2 ~@4 g4 ~@7 [g3,c4]@16, ~@46 c4@7 ~@3 c4@5 ~ c4@6 ~@38 d4@22]/8", // D C Bm G5 C5
  O: "[~@18 d4@4 [d4,g4]@4 d4@4 [d4,g4]@4 d4@6 d4@2 g4@2 ~@2 g4@4 e4@2 ~@4 g4@2 g3@3 ~ g3@4 e4@2 ~@6 g4@2 ~@2 d4@4 d4@4 [d4,g4]@4 d4@4 [d4,g4]@4 d4@6 d4@2 g4@2 ~@2 g4@4 e4@2 ~@4 g4@2 g3@3 ~ [g3,c4]@2, c4@23 c4@5 c4@3 c4@24 c4@5 c4@3 ~, a3@16 ~@2 g4@2 ~@6 g4@2 ~@6 g4@2 ~@4 g4 ~ d4@28 d4@8 g4@2 ~@2 g4@2 ~@6 g4@2 ~@6 g4@2 ~@4 g4 ~ d4@22, ~ f#4@69 f#4@58]/8", // G5 C5
  P: "[~@2 e4@2 ~@6 g4@2 ~@2 g4@2 ~@2 [e3,b3]@4 [e3,b3]@4 e3@3 ~ [e3,c4]@4 c4@6 e3 ~ [c3,a3]@5 ~ f#3@3 ~ [f#3,e4] ~ f#3@2 ~@2 f#3@2 ~@2 [d3,g3,b3]@4 [d3,g3]@2 ~@2 [d3,b3]@4 b3@4 d4@4 ~@6 c4@2 [c4,e4]@4 [c4,e4]@10 c4@8, ~@3 f#4@53, ~@3 d4@4 d4@17 d4@3 d4@12 b3@4 b3@13, ~@18 g3@2 ~@6 b3@36 ~@4 b3@4 f#3@3 ~ f#3 ~@3 g3@4 d4@30, ~@34 e3@2 ~@4 c4@18 c4@30 e4 ~@15 a3@6 ~@2]/7", // E5 C F F#7 G G5 G C
  Q: "[[d4,f#4]@4 ~@2 [c4,e4]@4 ~@2 g4 ~ [b3,d4,f4]@4 [b3,d4,f4]@4 f4@2 ~@2 [e4,g4]@2 d4@2 f4@2 ~@2 e4@4 ~@2 g3@2 g3 ~@3 [d#4,g4]@4 d#4@2 c#4 ~ g3@3 ~ [g3,c4]@4 c4@2 ~@2 b3@6 [d3,g3] ~ [d3,g3,b3]@4 [g3,b3,d4]@2, ~@2 d4@5 ~@4 b3@22 ~@3 b3 ~@3, ~@2 f#4@3 f#4@35, ~@10 c4@24 c4@8 c4@8 c4@8 ~@7 c4@15, ~@22 d4@6 f4 ~ d4@10 d4@14 d4@10 d4@14 ~@2]/5", // D C Bdim Em D# C5 G5 G
  R: "~@2 c4@5 [c4,e4], ~ [b3,d4]@7, ~ e4@2 ~", // C Bm
  S: "[c4@8 a3@6 ~@2 d4@6 [b3,d4]@2 d4@10 d4@2 ~@2 [d4,g4]@4 [d4,g4]@2 ~@2 [d4,g4]@4 [d4,g4]@2 ~@2 [d4,g4]@3 ~ [d4,g4]@3 ~@3 e4@2 ~@2 d4@2 a3 ~ [a3,d4] ~ [a3,d4]@3 ~ d4@4 g4@3 ~ a4@3 ~ a4@2 b4@2 g4@8 ~@2 c4@2 [c4,e4]@4 [c4,e4]@6 c4@2 [c4,e4]@4 [a3,c4]@4 e4 d4, e4@4 ~@4 c4@96 e4 ~@11 e4 ~@11, ~@8 f#4@25 f#4@31, ~@12 b3@51 [b3,c4], ~@34 g4 ~@43 a4@2 ~@48]/8", // Bm G5 D5 C Am Cmaj7
  T: "[c4,e4]@8 c4@2 e4 ~@3 [d4,f#4]@2, ~@8 e4 ~ c4@6", // C D
  U: "[~@2 [d4,f#4]@4 d4@4 e4@2 b3@2 d4@5 ~@3 [d4,g4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@4 ~@2 d4 ~ [d4,g4]@2 ~@2 [d4,g4]@3 ~ d4@2 e4@2 ~@2 d4@2 a3 ~ [a3,d4] ~ [a3,d4]@3 ~ d4@4 g4@3 ~ a4@3 ~ a4@2 b4@2 g4@8 ~@2 c4@2 [c4,e4]@4 [c4,e4]@6 c4@2 [c4,e4]@4 [a3,c4]@4 e4 d4 [c4,e4]@8 c4@2 e4 ~@3 [d4,f#4]@2, ~@3 f#4@22 f#4@38 ~, ~@10 c4@78 e4 ~@11 e4 ~@9 c4@2 ~@8 e4 ~ c4@6, ~@12 d4 ~ b3@20 b3@76 b3@18, ~@46 g4 ~@15 a4@2 ~@64]/8", // D G5 D5 C Am C D
  V: "[~@2 [d4,f#4]@4 d4@4 e4@2 b3@2 d4@4 d4@4 [d4,g4]@4 d4@4 [d4,g4]@4 d4@6 d4@2 g4@2 ~@2 g4@4 e4@2 ~@4 g4@2 g3@3 ~ g3@4 e4@2 ~@6 g4@2 ~@2 d4@4 d4@4 [d4,g4]@4 d4@4 [d4,g4]@4 d4@6 d4@2 g4@2 ~@2 [c4,g4]@2 ~ e4@15, ~@3 f#4@32 f#4@29, ~@5 c4@18 c4@5 c4@3 c4@24 ~ [g3,c4]@8, ~@12 d4 ~ b3@114, ~@18 g4@2 ~@6 g4@2 ~@6 g4@2 ~@4 g4 ~ d4@28 d4@8 g4@2 ~@2 g4@2 ~@6 g4@2 ~@6 g4@2 ~@4 g4 ~ d4@22]/8", // D G5 C5
  W: "[~@8 [g3,g4,b4,d5,g5]@21 ~@35, c4, a3 d4@7, ~ f#4@127]/8", // G
})).s("gm_orchestral_harp").gain(0.64)

// bass · acoustic bass
const bass = note(`<
  ~ A@12 B C D E@3 D F@2 G H@2 I J K L M@3 N@2 O@2 L M@3 N@2 J A@4 P@2 Q J A@8 B C D E@3 D F@2 G H@2 I J K L M@3 N@2 O@2
  L M@3 N@2 J A@4 P@2 Q J R@2 ~@6
>`.pickRestart({
  A: "[g1@2 a1 b1@3 g1 c2@4 g1 c2 b1@2 a1@4 e1 g1 b1@2 c2@4 d2@3 f#1@2]/4", B: "e1@3 b1@4 g1", C: "a1 c2@3 a1 c2@2 a1",
  D: "d2@3 d2@3 d2@2", E: "[g1@2 d2 f#1@3 d2 e1@3 e2 ~ b1 b1@2 a1@4 e2 a1 a1@3]/3",
  F: "[g1@3 b1@3 g1 c2@4 g1 c2 c2@2 g1]/2", G: "c2@3 g1 c2@2 d#2@2", H: "[g1@3 g1!2 g1@2 e2@2 b1@2 e2@2 b1@3]/2",
  I: "a1", J: "d2", K: "g1@3 b1@4 a1", L: "g1@3 b1@5", M: "[f#1@3 f#1@4 e1@2 b1@2 b1@3 b1 c2@3 c2 ~ c2 c2@2 g1]/3",
  N: "[c2 g2@2 c2!2 b1@2 a1@4 e2 a1 a1@2 a2]/2", O: "[d2 a2@2 a1 d2 f#2@2 g2@4 b1@4 a1]/2",
  P: "[g1@2 a1 b1@3 g1 c2@4 g1 c2 b1@2 ~]/2", Q: "g1", R: "[g1@21 ~@11]/2",
})).s("gm_acoustic_bass").gain(0.72)

// other · piano · "Acoustic Grand"
const piano = note(`<
  ~ A@12 B C D E@3 D F@2 G H@2 I J K L M@3 N@2 O@2 L M@3 N@2 J A@4 P@2 Q J A@8 B C D E@3 D F@2 G H@2 I J K L M@3 N@2 O@2
  L M@3 N@2 J A@4 P@2 Q J R@2 ~@6
>`.pickRestart({
  A: "[g3@2 a3 b3@3 g3 c4@4 g3 c4 b3@2 a3@4 e3 g3 b3@2 c4@4 d4@3 f#3@2]/4", B: "e3@3 b3@4 g3", C: "a3 c4@3 a3 c4@2 a3",
  D: "d4@3 d4@3 d4@2", E: "[g3@2 d4 f#3@3 d4 e3@3 e4 ~ b3 b3@2 a3@4 e4 a3 a3@3]/3",
  F: "[g3@3 b3@3 g3 c4@4 g3 c4 c4@2 g3]/2", G: "c4@3 g3 c4@2 d#4@2", H: "[g3@3 g3!2 g3@2 e4@2 b3@2 e4@2 b3@3]/2",
  I: "a3", J: "d4", K: "g3@3 b3@4 a3", L: "g3@3 b3@5", M: "[f#3@3 f#3@4 e3@2 b3@2 b3@3 b3 c4@3 c4 ~ c4 c4@2 g3]/3",
  N: "[c4 g4@2 c4!2 b3@2 a3@4 e4 a3 a3@2 a4]/2", O: "[d4 a4@2 a3 d4 f#4@2 g4@4 b3@4 a3]/2",
  P: "[g3@2 a3 b3@3 g3 c4@4 g3 c4 b3@2 ~]/2", Q: "g3", R: "[g3@21 ~@11]/2",
})).s("gm_piano").gain(0.64)

// drums · congas
const congas = s("conga:13").struct("<[~ x ~ x]!97 ~@8>").gain(2.3)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<[x!8]!97 ~@8>").gain(3.24)

stack(orchestral_harp, bass, piano, congas, cabasa)