Strudelify

The Great Beyond

R.E.M.

KeyG majorTempo110 bpm
0:00/0:00
// The Great Beyond — R.E.M.
// 110 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Electric Guitar (Chorus).
setcpm(110/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 · synth bass 2 · "Bass (Verses)"
const bass = note(`<
  ~
  [d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~]!20
  ~@8
  [d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~]!16
  ~@16
  [d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~]!12
  ~@44
>`).s("gm_synth_bass_2").gain(0.69)

// bass · electric bass finger · "Bass (Chorus)"
const bass_2 = note(`<
  ~@21 A B A C A B D E ~@16 A B A C A B D F G H G I G H J K ~@12 A B A C A B D F G H G I G H J L G H G I G H M L G H G I
  G H M L G H G I G H M L N@4
>`.pickRestart({
  A: "c2@3 ~ c2@4 b1@4 b1@4", B: "a1@2 d2 e2@2 d2 e2 d2", C: "a1@2 g1 a1@2 g1 a1 b1", D: "g1@5 ~ g1 ~ g1@5 ~ g1 ~",
  E: "g1@15 ~", F: "g1@3 ~ g1@3 ~ g1@3 ~ g1@2 ~@2", G: "a1@3 b1 c2@2 b1 a1", H: "g1@2 b1@2 c2@2 d2@3 ~ d2 ~ d2 ~ d2 ~",
  I: "g1@2 a1@2 b1@2 g1@3 ~ g1 ~ g1 ~ g1@2", J: "c2@5 ~ c2 ~ c2@5 ~ c2 ~", K: "c2@15 ~",
  L: "c2@5 ~ c2 ~ c2@2 d2@2 c2@2 b1@2", M: "c2@5 ~ c2 ~ c2@6 ~@2", N: "[e1@31 ~]/4",
})).s("gm_electric_bass_finger").gain(0.72)

// chords · ocarina · "Analog Synth"
const ocarina = note(`<
  ~@5 A B C D A B C D A B C D A B C D E F G F E H I@2 A B C D A B C D A B C D A B C D E F G F E H I@2 J K J L J M N@2 A
  B C D ~@8 E F G F E H I@2 O P Q R S T N@2 O P Q R S T N@2 O P Q R S T N@2 O P Q R S T N@2 ~@4
>`.pickRestart({
  A: "[c4,g4,b4]", B: "[d4,a4,d5]", C: "[b3,e4,b4]", D: "[a3,d4,a4]@15 ~", E: "[g4,c5] [g4,b4]", F: "[e4,a4]",
  G: "[g4,c5]@8 [g4,b4]@7 ~", H: "e4, a4@3 ~", I: "[[b3,d4,g4]@31 ~]/2", J: "[a4,c5]", K: "[b4,d5]@5 ~ [a4,d5]@10",
  L: "[b4,d5]", M: "[b4,d5]@3 [a4,d5]@5", N: "[[g4,c5]@31 ~]/2", O: "[a4,c5] [c5,e5]",
  P: "[c5,e5]@2 [b4,d5]@4 [a4,d5]@9 ~", Q: "[a4,c5]@8 [c5,e5]@7 ~", R: "[c5,e5]@2 [b4,d5]@3 ~ [b4,d5]@10",
  S: "[a4,c5]@7 ~ [c5,e5]@7 ~", T: "[c5,e5]@2 [b4,d5]@3 ~ [a4,d5]@9 ~",
})).s("gm_ocarina").gain(0.72)

// chords · overdriven guitar · "Picked Electric Guitar"
const overdriven_guitar = note("<~@4 A@8 B@4 C@5 ~@11 D@8 C@5 ~@19 D@8 E ~@44>".pickRestart({
  A: "[~@3 d4@2 a3@29 ~ d4@2 a3@27, ~ e4@16 e4@15]/8", B: "[~@3 d4@2 a3@27, ~ e4@15]/4",
  C: "[~@3 d4@2 a3@29 ~ d4@2 a3@3, ~@4 e4@63 ~ e4@12]/5", D: "[~@3 d4@2 a3@29 ~ d4@2 a3@27, ~@4 e4@63 ~ e4@60]/8",
  E: "~@3 d4@2 a3@3, ~ e4@3",
})).s("gm_overdriven_guitar").gain(0.57).pan(0.7)

// chords · acoustic guitar steel · "Rhythm Acoustic Guitar"
const acoustic_guitar_steel = note(`<
  A@3 ~ A@3 ~@14 B C D@2 B E F@3 ~@6 A@3 ~@6 B C D@2 B E G@2 H I J K L M N@2 ~@12 B C D@2 B E G@2 H I J K L M O@2 H I J
  K L M O@2 H I J K L M O@2 H I J K L M O@2 ~@4
>`.pickRestart({
  A: "[~ [d3,a3]@2, ~@15 [c4,e4]@32 ~]/3", B: "~@3 [g3,b3,e4], c3, ~ c4@3, ~ [g3,e4]@2 ~, ~ b2",
  C: "~@2 [a3,c4,e4] e4!2 [a3,c4,e4]!3, a2, ~@3 [a3,c4]@2 ~@3", // Am
  D: "[~@2 [g3,c4,e4]@2 ~@6 [a3,c4,e4] [a3,c4,e4]@2 [a3,c4,e4]!3, c3@4 b2@5 ~@7, ~@6 [g3,b3,e4]@3 ~@7, ~ a2]/2", // C Am Em
  E: "~@2 [a3,c4,e4] [a3,c4,e4]@2 [a3,c4,e4]!3, a2", // Am
  F: "[[g2,g3,b3,d4]@6 [g2,g3,b3,d4]@2 [g2,g3,b3,d4]@6 [g2,g3,b3,d4]@4 [g2,g3,b3,d4]@2 [g2,g3,b3,d4]@4 [g2,g3,b3,d4]@4 [g2,g3,b3,d4]@3 ~ [d3,a3]@11 ~@5, ~@31 [c4,e4]@11 ~@6]/3", // G D5 C
  G: "[[g2,g3,b3,d4]@6 [g2,g3,b3,d4]@2 [g2,g3,b3,d4]@6 [g2,g3,b3,d4]@4 [g2,g3,b3,d4]@2 [g2,g3,b3,d4]@4 [g2,g3,b3,d4]@4 [g2,g3,b3,d4]@3 ~]/2", // G
  H: "[a3,c4,e4]@4 ~@2 a2@2 [g3,c4,e4]@4 [g3,c4,e4]@2 c3 ~, a2@3 ~ c3@3 ~, ~ [a3,c4,e4] ~@2", // Am C Am
  I: "[g3,b3,d4] ~ g2 [d2,f#3,a3,d4]@2 [d2,f#3,a3,d4]!3, g2 ~@3, ~ [g3,b3,d4]@2 ~@5", // G D G
  J: "[a3,c4,e4]@4 [a3,c4,e4]@2 a2 ~ [g3,c4,e4]@4 [g3,c4,e4]@2 c3 ~, a2@3 ~ c3@3 ~", // Am C
  K: "[g2,g3,b3,d4]@2 [g2,g3,b3,d4]@4 [g2,g3,b3,d4]@4 [g2,g3,b3,d4]@2 [g2,g3,b3,d4]@2 [g2,g3,b3,d4] ~", // G
  L: "[a2,a3,c4,e4]@4 [a2,a3,c4,e4]@2 a2 ~ [g3,c4,e4]@4 [g3,c4,e4]@2 c3 ~, ~@4 c3@3 ~", // Am C
  M: "[g3,b3,d4]@2 ~@2 g2@2 [f#3,a3,d4]@4 [f#3,a3,d4]@2 [d2,f#3,a3,d4]@3 ~, g2@2 ~ d2@3 ~@2, ~ [g3,b3,d4]@2 ~@5", // G D G
  N: "[[c3,e3,g3,c4]@3 [c3,e3,g3,c4] [c3,e3,g3,c4]@3 [c3,e3,g3,c4]@9]/2", // C
  O: "[[c3,e3,g3,c4]@3 [c3,e3,g3,c4] [c3,e3,g3,c4]@3 [c3,e3,g3,c4]@8 ~]/2", // C
})).s("gm_acoustic_guitar_steel").gain(0.72)

// chords · distortion guitar · "Rhythm Electric Guitar"
const distortion_guitar = note(`<
  ~ A B A C@3 ~@22 A B A D A B A D A B A D A B A D ~@20 A B A D A B A D ~@44
>`.pickRestart({
  A: "[d3,a3,c4]@3 [d3,a3,c4]@3 [d3,a3] [d3,a3,b3], d2, ~@3 c4", B: "[d3,a3]@6 [d3,a3]@6 [d3,a3]@2 [d3,b3] ~",
  C: "[[d3,a3,d4]@3 [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@13 ~@5]/3", // D5
  D: "[d3,a3,d4]@6 [d3,a3,d4]@4 [d3,a3,d4]@2 [d3,a3,d4]@3 ~", // D5
})).s("gm_distortion_guitar").gain(0.35)

// chords · distortion guitar · "Electric Guitar (Chorus)"
const distortion_guitar_2 = note(`<
  ~@28 A ~@23 A ~@3 B ~ C ~@21 A ~@3 B ~ C ~ D ~@3 B ~ C ~ D ~@3 B ~ C ~ D ~@3 B ~ C ~ D E@2 ~@2
>`.pickRestart({
  A: "~@3 d3 ~@4", B: "~@2 [g2,d3,g3] ~@5", C: "~@14 [d2,f#3,a3,d4] ~",
  D: "g3@2 [c3,e3,g3,c4]@2 [c3,e3,g3,c4]@4 [c3,e3,g3,c4]@4 [c3,e3,g3,c4]@3 ~", E: "[e2,e3,g3,b3]/2",
})).s("gm_distortion_guitar").gain(0.55)

// other · string ensemble 1 · "String Section"
const string_ensemble_1 = note("<~@60 A B@4 ~@23 C@7 D A E@6 F G H@6 I@2 J@4>".pickRestart({
  A: "~@4 d5 e5 f#5 g5", B: "[a5@13 f#5 g5 ~ a4@4 g4@4 f#4@8, d4 ~, ~@15 d5@17]/4",
  C: "[~ c6 b5 a5@2 f#5 g5 a5@10 c6 b5 a5@2 f#5 g5 a5@10 c6 b5 a5@2 f#5 g5 a5@10 c6 b5 a5@2 f#5 g5 a5]/7", D: "g5",
  E: "[a5@9 c6 b5 a5@2 f#5 g5 a5@10 c6 b5 a5@2 f#5 g5 a5@10 c6 b5 a5@2 f#5 g5 a5]/6", F: "g5@3 e5@2 d5@2 c5",
  G: "~ c5@2 d5@2 e5 f#5 g5",
  H: "[a5@18 c6@2 b5@2 a5@4 c6@2 b5@2 a5@20 c6@2 b5@2 a5@4 c6@2 b5@2 a5@19 ~ f#5@2 g5@2 a5@4 f#5@2 g5@2 a5@2]/6",
  I: "[e5@11 d5 e5 f#5 g5 a5]/2", J: "[b5@63 ~]/4",
})).s("gm_string_ensemble_1").gain(0.66)

// other · piano · "Acoustic Piano"
const piano = note("<~@59 A B ~@26 C@2 ~@6 A B ~@6 A B ~@6 A B ~@4>".pickRestart({
  A: "a4@3 g4@3 e4 d4", B: "e4@3 c4@5", C: "[a4@3 ~ a4@2 g4@2 a4@2 g4@4 e4@10 ~@8]/2",
})).s("gm_piano").gain(0.8).pan(0.3)

// other · pad halo · "Spacey Synth"
const pad_halo = note("<~ A@4 ~@4 B@4 C@4 D@4 ~@12 E@4 F@4 E@4 ~@16 C@8 B@4 ~@44>".pickRestart({
  A: "[[d2,d3]@31 ~]/4", B: "[[d2,d3]@29 ~@3]/4", C: "[[d2,d3]@15 ~]/4", D: "[[d2,d3]@13 ~@3, e2 ~@63]/4",
  E: "[[d2,d3]@55 ~@9]/4", F: "[[d2,d3]@59 ~@5]/4",
})).s("gm_pad_halo").gain(0.71)

// other · reed organ · "Synth Solo"
const reed_organ = note("<~@37 A B C D ~@29 E F@2 ~@44>".pickRestart({
  A: "~@3 c5@2 a4 b4 g4", B: "a4 f#4 g4 e4@2 f#4@2 d4", C: "c4 b3@2 a3@2 g3@2 b3", D: "a3@15 ~",
  E: "~@2 b4 c5@2 a4@2 g4", F: "[f#4@25 ~@7]/2",
})).s("gm_reed_organ").gain(0.56)

// chords · electric guitar muted · "Guitar Harmonics"
const electric_guitar_muted = note("<~@3 A@2 ~@2 A@2 B@2 A@2 ~@16 B@2 A@2 B@2 A@2 ~@24 B@2 A@2 ~@52>".pickRestart({
  A: "[~@7 d4@8 ~, ~@5 g4@10 ~]/2", B: "[~@7 f#4@9, ~@5 b4@11]/2",
})).s("gm_electric_guitar_muted").gain(0.58)

// drums · kick
const kick = s("bd").struct(`<
  ~@21 A B A B A B C D ~@16 A B A B A B C E C F C F C F C D ~@12 A B A B A B C E C F C F C F C A C F C F C F C A C F C F
  C F C G C F C F C F C H E ~@3
>`.pickRestart({
  A: "x!2", B: "x ~@4 x ~@2", C: "x ~@2 x!2 ~@3", D: "x ~@4 x!2 ~", E: "x", F: "x ~@2 x ~ x ~@2", G: "x!2 ~@2",
  H: "x ~ x!2",
})).gain(0.71)

// drums · snare
const snare = s("sd").struct("<~@21 A@7 B ~@16 A@7 C A@7 B ~@12 A@7 C A@7 D A@7 D A@7 C A@7 B ~@4>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@4 x ~@3 x ~@2 x!5", D: "~@2 x ~@2 x!3",
})).gain(0.71)

// drums · hihat
const hihat = s("hh").struct("<~@53 A@7 B ~@20 A@7 C A@7 C A@7 C A@7 D ~@4>".pickRestart({
  A: "x!8", B: "x!4 ~@4", C: "x!5 ~@3", D: "x!3 ~@5",
})).gain(0.71)

// drums · low tom
const low_tom = s("lt").struct("<~@28 [~@5 x!2 ~] ~@31 [~@5 x!2 ~] ~@51 [~@3 x] ~@4>").gain(0.71)

// drums · mid tom
const mid_tom = s("mt").struct("<~@26 A ~@23 A ~@27 A ~@33 B ~@4>".pickRestart({
  A: "~@7 x", B: "~ x",
})).gain(0.71)

// drums · open hat
const open_hat = s("oh").struct("<~@52 A ~@27 A ~@7 B ~@7 B ~@7 A ~@12>".pickRestart({
  A: "~ x!2 ~ x!3 ~", B: "~@5 x!2 ~",
})).gain(0.71)

// drums · crash
const crash = s("cr").struct(`<
  ~@21 A ~@5 A ~@17 A ~@5 A ~ A ~@5 A ~@13 A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@3
>`.pickRestart({
  A: "x",
})).gain(0.71)

// drums · ride
const ride = s("rd").struct("<~ A ~@3 A ~@7 B@8 ~@8 A ~@7 B@8 ~@7 C ~@8 A ~@3 B@8 ~@7 C ~@23 C ~@12>".pickRestart({
  A: "x", B: "x ~@2 x ~@2 x ~", C: "~@2 x!2",
})).gain(0.71)

// drums · bongos
const bongos = s("bongo:4").struct("<~ [~ x ~ x]!4 ~@56 [~ x ~ x]!4 ~@52>").gain(1.88)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@20 [~@3 x] ~@23 [~@3 x] ~@27 [~@3 x] ~@44>").gain(1.88)

// drums · congas
const congas = s("conga:18").struct("<~ A@4 B@15 C ~@8 B@15 C ~@16 A@4 B@7 C ~@44>".pickRestart({
  A: "~@3 x!4 ~", B: "~@3 x!3 ~@2", C: "~@3 x!3 ~ x",
})).gain(2.29)

// drums · claves
const claves = s("clave:2").struct(`<
  ~@5 A@3 B A@3 B A@3 B A@3 C D E D E D E D E A@3 B A@3 B A@3 B A@2 F C D E D E D E D E D E D E D E D G ~@4 A@3 B A@3 C
  D E D E D E D E D E D E D E D G D E D E D E D G D E D E D E D G D E D E D E D ~@5
>`.pickRestart({
  A: "~@3 x", B: "~@6 x!2", C: "~@10 x!3 ~@3", D: "~ x ~ x", E: "~@2 x ~@2 x!3", F: "~@10 x!3 ~ x ~", G: "~ x ~@2",
})).gain(3.5)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@44 x ~@72>").gain(1.04)

// drums · shaker
const shaker = s("sh").struct("<~@29 [x!8]!16 ~@72>").gain(0.43)

stack(
  bass, bass_2, ocarina, overdriven_guitar, acoustic_guitar_steel, distortion_guitar, distortion_guitar_2,
  string_ensemble_1, piano, pad_halo, reed_organ, electric_guitar_muted, kick, snare, hihat, low_tom, mid_tom, open_hat,
  crash, ride, bongos, bongos_2, congas, claves, woodblocks, shaker
)

More by R.E.M.