Strudelify

Nightswimming

R.E.M.

KeyG majorTempo113 bpm
0:00/0:00
// Nightswimming — R.E.M.
// 113 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: Full arrangement: all 118 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(113/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 · piano
const piano = note(`<
  A B C D E F E G H I E F E G H I E F E G H I E F E G H I J K L M E F E G H I E F E G H I E F E G H I E F E G H I E F E
  G H I E F E G H I E F E G H I E F E G H I J K L M E F E G H I E F E G H I E F E G H I E F E G H I E F E G H N@5
>`.pickRestart({
  A: "d4 g4 a4 [g2,d3,g3,d4]@2 [d3,g3,b3,g4]@3, [g2,d3,g3]@3 ~@5", B: "[c3,g3,c4,c5]",
  C: "d4 g4 a4 [g2,d3,g3,d4]@2 [b2,d3,g3,b3,b4]@3, [g2,d3,g3]@3 ~@5", D: "[d3,a3,d4,d5]",
  E: "d4 g4 b4 [g2,d3,g3,g4]@2 g4!2 [d3,d4,d5], [g2,d3,g3]@3 ~@2 [b2,d3,b3]@2 ~", // G5 D G5 Bm
  F: "d5 c5!2 b4!2 a4 f#4 d4, [c3,g3,c4] [d3,a3], ~@4 d4@3 ~", // C5 D5
  G: "d5 c5!2 b4!2 a4 f#4 d4, [c3,g3,c4] [a2,a3], ~@4 c#4@3 ~", // C5 A
  H: "g4 a4 d4 [g2,d3,g4]@2 a4@2 d4, [c3,g3]@3 ~@2 [c3,g3]@3", // G5 C5
  I: "g4 a4 d4 [d3,a3,g4] g4 f#4 e4 f#4, [d3,a3]@3 ~ [d3,a3]@2 [d3,a3]@2, d4@2 ~@2 d4@3 ~", // Dsus4 D5
  J: "d4 g4 a4 [g2,d3,g3]@2 [g2,d3,g3,d4]@3, [g2,d3,g3]@3 ~@5", K: "[c3,g3,c4]",
  L: "d4 g4 a4 [g2,d3,g3,d4]@2 [b2,d3,g3,b3]@3, [g2,d3,g3]@3 ~@5", M: "[d3,a3,d4]",
  N: "[g4@2 a4@2 d4@2 [d3,a3,g4]@2 g4@3 f#4@3 e4@2 f#4@3 [g2,d3,g3]@48 ~@13, [d3,a3]@6 ~@2 [d3,a3]@5 ~ [d3,a3]@6 ~@60, d4@4 ~@4 d4@8 ~@3 d4@36 ~@25]/5", // Dsus4 G5 D5
})).s("gm_piano").gain(0.4)

// other · synth brass 2 · "Brass Section"
const synth_brass_2 = note(`<
  ~@27 A B C D E ~@23 A F G H I J K ~@17 A L C F K ~@5 A F G H I J K H G H I J M F G H I J M F G H I J N@4 ~
>`.pickRestart({
  A: "~@8 g3@3 ~ g3@3 ~", B: "d3@11 ~ d3@3 ~", C: "e3@8 g3@3 ~ g3@3 ~", D: "d3@11 ~ b2@3 ~", E: "d3@3 ~",
  F: "d3@11 b2@5", G: "c3 d3", H: "g3@5 b2@2 d3", I: "c3 a2", J: "c3", K: "d3", L: "d3@11 d3@5",
  M: "d3@7 ~ g3@3 ~ g3@3 ~", N: "[d3@19 g3@30 ~@15]/4",
})).s("gm_synth_brass_2").gain(0.32)

// other · string ensemble 1 · "String Ensemble"
const string_ensemble_1 = note(`<
  ~@28 A B C D ~@16 E F G H C I B D G H C I B D J ~@3 K F G H C I B D G H C I B D G B C D G H C I B D ~@6 G H C I B D G
  H C I B D G H C I B L@4 ~
>`.pickRestart({
  A: "g4@5 f#4@3", B: "e4", C: "g4@5 b3@3", D: "d4", E: "~@6 a4@3 ~@7", F: "~@3 a4@3 f#4@2", G: "g4 f#4", H: "e4 d4",
  I: "c4 c#4", J: "g4", K: "~@6 a4@7 ~@3", L: "[d4@19 g4@30 ~@15]/4",
})).s("gm_string_ensemble_1").gain(0.4)

stack(piano, synth_brass_2, string_ensemble_1)

More by R.E.M.