Strudelify

intro

The XX

KeyA minorTempo120 bpm
0:00/0:00
// intro — The XX
// 120 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5855056; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 42 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// other · vibraphone · "Vibrafono"
const vibraphone = note("<~@17 A@2 B C A@2 B C ~@8 A@2 B C A@2 B C ~>".pickRestart({
  A: "a3!2 c4!2 d4!2 c4!2", B: "a3!2 c4!2 e4!2 c4!2", C: "d4!2 c4!2 e4!2 c4!2",
})).s("gm_vibraphone").gain(0.3)

// chords · piano
const piano = note("<~ A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I J K L M J K N E@2 F@2 G@2 H@2 I J K L M J K N O>".pickRestart({
  A: "[[f2,a3]@15 ~]/2", B: "[[a2,a3,c4]@15 ~]/2", C: "[[a3,d4]@15 ~@13 c3@4, f2@27 ~@5]/2",
  D: "[[a3,e4]@15 ~@15 e2@2, a2@7 ~]/2", E: "[f2@13 ~ f2@2 f2@11 ~ c3@4, [f3,a4]@15 ~]/2",
  F: "[a2@13 ~ a2@2 a2@11 ~ c3@4, [a3,c4,a4]@15 ~]/2", // Am
  G: "[[d4,a4]@14 f2@2 f2@11 ~ e3@2 d3@2, f3@27 ~ c4@4, f2@13 ~@19]/2", // D5
  H: "[[e4,a4]@14 d2@2 e2@3 e2@3 e2@4 e2@4 [e1,e3]@2, a3@7 ~, a2@13 ~@19]/2", // A5 E
  I: "a3!2 c4!2 d4!2 c4 [e1,c4], f1@2 ~ f2@3 ~@2", J: "f1@2 ~ f1 c4@2 c4@2 d4@2 d4@2 c4@2 c4@2, ~ a3 ~ f2@3 g2@2",
  K: "a3!2 c4 [a2,c4] e4!2 [a2,c4] [d2,c4], a2@3 ~ a2@2 ~@2", // Am D7
  L: "[e2,d4] ~ c4!2 e4!2 c4 [e1,c4], ~ d4 ~@6, ~@3 e2@3 e2@4 e2@4 ~@2", // E7 C
  M: "~ a3 c4!2 d4!2 c4 [e1,c4], f1@2 ~ f2@3 ~@2", // C
  N: "[e2,d4] ~ c4!2 e4 [e2,e4] e2 e1, ~ d4 ~@4 c4@2, ~@3 e2@3 e2@4 ~@6", O: "[a2,f3]@15 ~",
})).s("gm_piano").gain(0.3)

stack(vibraphone, piano)