Strudelify

Forces of Attraction

Jóhann Jóhannsson

KeyD majorTempo100 bpm
0:00/0:00
// Forces of Attraction — Jóhann Jóhannsson
// 100 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/4788649; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 28 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 A B C B C B D E D E F G H G D E D E I J H K L@4>".pickRestart({
  A: "~@7 a3, [d2,d3], f#4!2, ~ a3@2 a3@2 a3@2 ~, ~ d4@2 d4", // D
  B: "~@7 a3, [f#3,f#4], f#2 [f#2,g3,g4], ~ a3@2 a3@2 a3@2 ~, ~ d4@2 d4", // F# Gmaj7
  C: "~@7 a3, [d2,d3,f#4], ~ a3@2 a3@2 a3@2 ~, ~ d4@2 d4, ~ a4", // D
  D: "~@7 [f#4,a5], b2@3 d4 [d3,a4] [a3,a5] [d4,a4]@2, f#4 b3@3, ~ f#3@7, ~ f#5 f#4 f#5@5", // F#m D5 A D5
  E: "~@3 b3@5, g2, d4 g3@3, ~ d3@7, ~ d5 d4 d5@2 ~@3", F: "~@7 d4, [d2,d3], d4@3 d4@4 ~, ~ f#4@4 f#4@3, ~ a3@2 a3",
  G: "~@7 d5, f#3, f#2 [f#2,g3], d4!4, ~ d5@2 d5@2 d5@2 ~", H: "~@7 e2, [d3,f#4]@3 d2, d2@5 d4@3, ~ d4@2 g3@5, ~ a3@3",
  I: "~@7 [e2,d4], d3, d2@5 f#4@3, d4 a3@2 [d2,a3], ~ f#4@2 d4@4 ~", // E7 D5
  J: "~ [g2,g3], [f#2,f#3], d4!2 ~@2, ~ d5@2 d5@2 ~@3", // G F#
  K: "f#4@2 ~ d4 g4@2 ~ d4, [f#2,f#3], d4@3 ~ [g2,g3]@4, ~ f#4@3, ~@2 d4 g4", L: "[[d2,a2,d3,d4,a4]@61 ~@3]/4",
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note("<~@9 A ~ A ~@5 A ~ A ~ A ~@6>".pickRestart({
  A: "~@7 d5, ~@2 d4!2, ~@5 d5@2 ~",
})).s("gm_piano").gain(0.15)

stack(piano, piano_soft)