Strudelify

Don't Let the Sun Go Down

Elton John

KeyG majorTempo62 bpm
0:00/0:00
// Don't Let the Sun Go Down — John Elton
// 62 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 49 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(62/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano · "Unnamed-001"
const piano = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU
  AV
>`.pickRestart({
  A: "[g2,g3,b3,d4,g4]@3 ~ [b3,d4,g4]@2 g3 d3 g2 b3 d4 [b3,d4,g4] g3@2 b3 [g3,b3,d4,g4]", // G
  B: "a3 [f#2,f#3,a3,d4,f#4]@3 [b3,d4,f#4] f#3 b3 [b3,d4,f#4] [f#2,f#3] b3 [d4,f#4] [b3,d4,f#4,b4] f#3@2 b3 f#4", // D Bm F# D Bm
  C: "[d2,d3,e3,a3,d4,f4]@3 [a3,d4,f4] d3 a3 [d3,g3] f3 [g2,f3,g3,b3,d4]@3 [f3,g3,d4] d3 g3 c4 d4", // Dm G5 G7
  D: "[c2,c3,g3,c4,e4]@3 c4 c3 [c4,f4,g4] c3 [c4,d4] c2 [g3,c4,g4]@2 g3 [c3,g3,c4,g4] g3 [g2,c4] g3", // C Csus4 Csus2 C5
  E: "[c2,c4,d#4,g4]@3 g3 [c3,g3,c4,g4] d#4 g4 b3 [g2,g3,d4,g4]@3 b3 [g3,b3,d4,g4] b3 [g3,b3] a3", // Cm C5 G5 G
  F: "[a2,c4,e4]@3 [b3,e4] a2 c4 e4@2 [d2,d3,a3,d4] f#4@3 a3 d3 [a3,d4,f#4,a4] d3", // Am E5 D5 D
  G: "[g2,g3,b3,d4,g4]@3 [b3,d4,g4] g3 d4 [d4,g4,b4] g3 g2@2 b3 [b3,d4,g4] b3 [g3,b3,d4,b4] f#4 [g3,b3]", // G
  H: "[g2,g3,b3,d4,f#4]@3 [b3,d4,f#4] g3 b3 [d4,f#4,b4] g3 g2 [b3,d4,f#4]@2 b3 g3 [b3,d4,f#4,b4] [a2,g3]@2", // Gmaj7 Bm A7
  I: "[d2,d3,a3,d4,f4]@3 a3 d3 [a3,d4,f4] d3 f3 [g2,d3,f3,g3,b3,d4]@3 [f3,g3,d4] d3 f3 d4 g3", // Dm G7
  J: "[c2,c3,c4,e4]@3 ~ c3 [c4,f4,g4] c3 g2 c2 [g3,c4,e4,g4]@2 g3 c3 [g3,c4,e4] c3 g3", // C Csus4 C
  K: "[c2,c3,c4,d#4]@3 g3 c3 [g3,c4,d#4,g4] c3 b3 [g2,g3,b3,d4,g4]@3 b3 g3 [b3,d4,g4] g3 [g3,a3]", // Cm G Gsus2
  L: "[a2,a3,c4,e4]@3 [a3,c4,a4] [a2,e4]@2 a4@2 [d2,d3,a3,d4,f#4]@3 a3 d3 [a3,d4,f#4,a4] d3 b3", // Am A5 D
  M: "[g2,g3,b3,d4,g4]@3 [b3,d4,g4] g3 [d4,g4,b4] g3 d3 g2 b3 d4 [b3,d4,g4] g3 b3 [g3,b3,d4,g4] b3", // G
  N: "[g2,g3,b3,d4,f#4]@3 [b3,d4,f#4,b4] g3 b3 [b3,d4,f#4] g3 g2 b3 [b3,d4,f#4,b4] b3 g3 [b3,d4,f#4] g3 a3", // Gmaj7 Bm
  O: "[d2,d3,a3,d4,f4]@3 a3 d3 [a3,d4,f4] d3 f3 [g2,d3,f3,g3,a#3,b3,d4,e4]@3 f3 d3 [f3,g3,c4,d4] d3 g3", // Dm G7 Fsus2
  P: "[c2,c3,g3,c4,e4]@3 [g3,c4,e4] c3 c4 [c4,f4,g4] c3 c2 g3 [g3,c#4,g4] g3 c3 [g3,c4,d#4,g4] c3 g3", // C Csus4 Gdim Cm
  Q: "[c2,g3,c4,d#4,g4]@3 g3 c3 [g3,c4,d#4,g4] c3 b3 [g2,g3,b3,d4,g4,a4]@3 [d4,g4,b4] g3 [b3,d4,g4] g3 a3", // Cm G
  R: "[a2,a3,c4,e4]@3 [b3,e4] [a2,c4] e4 a3 d4 [d2,d3,a3,d4,f#4,a4]@3 ~ [d#2,d#3] [d4,f#4,a4] d#3 b3", // Am E5 Am D D# D
  S: "[g2,g3,b3,d4,g4]@3 d4 g3 [d4,g4,b4] g3 f#3 [f#2,f#3,a#3,c#4,f#4]@3 f#3!2 [a#3,f#4] f#3 a3", // G F# D#m
  T: "[f2,f3,a3,c4,f4]@3 a3 f3 [a3,c4,f4] f3 b3 [e2,e3,b3,e4,g#4,b4]@2 b3@2 [b3,e4,g#4,b4] e3 [b3,g#4] [e3,b3]", // F E E5
  U: "a3 [a2,a3,c4,e4]@2 a3 a2 [a3,c4,e4] a2 a3 [d2,d3,a3,d4,f#4,a4]@3 ~@3 a3@2", // Am D
  V: "[g2,g3,b3,d4,g4]@3 b3 [g3,d4,g4] e4 [g3,d4] a3 [a2,a3,c4,e4]@2 c#4@2 [d#2,d#3,d#4,a#4,d#5]@2 d4!2", // G G5 Am D#5
  W: "[g2,g3,b3,d4,g4]@2 b3 [d4,g4] [g3,d4,e4] d4 [a3,b3]@2 [f#2,f#3,a#3,c#4,f#4]@2 f#3 [f#3,a#3,f#4] f#3 c#4 [f#3,f#4,g4] a3", // G G5 Em7 Asus2 F# Gmaj7
  X: "[f2,f3,a3,c4,f4] a3 c4 [a3,c4,f4] f3 [a3,b3] [b3,a4,b4] b3 [e2,e3,e4] b3 [b3,e4,b4] [b3,g#4] e3 [b3,g#4] [e3,b3,e4] a3", // F Asus2 B7 E E5 E E5
  Y: "[a2,a3,c4,e4]@2 a3 [c4,a4] a3 e4 a4 [d2,a3] [d3,d4,f#4,a4] g4 [a3,f#4]@2 d3 [a3,a4] [d3,d4] g4", // Am F D5 D A D
  Z: "[g2,g3,b3,d4,g4]@2 b3!2 [b3,d4,g4] b3 [b3,d4,g4] b3 [a2,g3,a3,b3,c4,d4,e4]@3 ~ [d2,d3,a3,d4,f#4,a4]@2 a3@2", // G Am7 D
  AA: "[g2,g3,b3,d4,g4]@3 b3 [g3,c4,d4,g4] e4 d4 c4 [d2,d3,d4,f#4,a4]@3 c4 [d4,f#4,a4] c4 d4 g4", // G Gsus4 D
  AB: "[g2,g3,b3,d4,g4]@2 b3@2 [b3,d4,g4]@2 g3 d3 g2 b3 d4 [b3,d4,g4] g3 b3 [d3,b3,d4,g4] b3", // G
  AC: "[f#2,f#3,b3,d4,f#4]@3 b3 [b3,d4,f#4]@2 f#3 b3 f#2 b3 d4 [b3,d4,f#4,a4,b4] f#3 b3 [d4,b4] b3", // Bm Bm7 G
  AD: "[d2,d3,a3,d4,f4]@3 a3 d3 [a3,d4,f4] d3 f3 [g2,d3,f3,g3,d4]@3 f3 d3 [f3,g3,d4] d3 g3", // Dm G7
  AE: "[c2,c3,g3,c4,e4]@3 [g3,c4,e4] c3 c4 [c4,f4,g4] c3 c2 [g3,c4,g4]@2 g3 [c3,g3,c4,g4] e4 [g2,g4] g3", // C Csus4 C5 G
  AF: "[c2,c3,g3,c4,d#4,g4]@3 g3 c3 [g3,c4,g4] c3 b3 [g2,g3,b3,d4,g4]@2 b3 g3 ~ [b3,d4,g4] g3 a3", // Cm C5 G
  AG: "[a2,a3,c4,e4]@3 [b3,e4] [a2,c4] e4 a3@2 [d2,d3,a3,d4,f#4,a4]@3 ~ a3 d3 [a3,d4,a4] d3", // Am E5 Am D D5
  AH: "b3 [g2,g3,b3,d4,g4]@2 [b3,d4,g4] g3 [d4,g4,b4] g3 d3 g2 b3 d4 [d4,f#4,g4] g3 e4 [d3,g4] b3", // G Gmaj7 G5
  AI: "[f#2,f#3,b3,d4,f#4]@3 [b3,d4,f#4] [f#3,d4] b3 [b3,f#4,b4] f#3 f#2 [b3,d4,f#4] b3!2 f#3 [b3,d4,f#4,b4] f#3 a3", // Bm D B5 Bm
  AJ: "[d2,d3,a3,d4,f4]@3 [c4,f4] [d3,d4] [f4,g4] [g3,a3]!2 [g2,d3,e3,f3,g3,d4]@3 f3 d3 [f3,g3,d4] d3 g3", // Dm F5 D Fsus2 Gsus2 G7
  AK: "[c2,d2,c3,g3,c4,e4]@3 [g3,c4,e4] c3 c4 [c4,f4,g4] c3 c2 g3 [g3,c4,g4] g3 c3 [g3,c4,g4] c3 [g2,g3]", // C Csus4 C5 G
  AL: "[c2,c3,g3,c4,d#4,g4]@3 g3 [c3,g3,c4,g4] [g3,d#4] [g3,c4] d#4 [g2,g3,b3,d4,g4]@3 b3 [g3,d4,g4] e4 d4 [a3,b3]", // Cm C5 Cm C5 G G5 Asus2
  AM: "c4 [a2,a3,c4,e4]@2 d4 [a3,f4,b4] g4 f4 d4 [d2,d3,f#4,a4,d5]@3 d4 [d3,d4,g4,a4,d5] d4 [d#2,d#3,d4] d4", // Am Bm7b5 D Dsus4 D#maj7
  AN: "[g2,g3,d4,f#4,g4,b4]@2 b3 [c4,d4,g4] g3 e4 g3 f#3 [f#2,f#3,a#3,c#4,f#4]@3 [f#4,a#4,c#5,f#5] f#3 [f#3,f#4] [f#3,g#3,f#4] [a3,b3]", // Gmaj7 Csus2 F# F#sus2 Asus2
  AO: "[f2,f3,a3,c4,f4]@3 [c4,d4,a4,b4] f3 [c4,f4] f3 d4 [e2,e3,e4,d5,e5] e4 [e4,g#4,e5] [e4,b4] e3 [e4,d5,e5] [e3,g#4,b4] a3", // F D7 F5 E7 E E5 E7 E
  AP: "[a2,a3,c4,e4]@3 [b3,e4] a3 c4 e4 a3 [d2,d3,a3,d4,f#4]@3 a3 [d3,a3,d4,a4] [a3,d4,a4] [d3,f4] [c4,d4]", // Am E5 D D5 Dm Csus2
  AQ: "[g2,g3,b3,d4,g4]@3 [b3,d4,g4] [g3,b3]@3 ~ [a2,a3,c4,e4]@3 a3 [d2,d3,a3,d4,f#4,a4]@2 a3 [d4,a4]", // G Am D D5
  AR: "[g2,g3,b3,d4,g4]@2 d4 [d4,g4,b4] g3 [b3,d4,f#4,g4] g3 f#3 [f#2,f#3,a#3,c#4,f#4]@3 [f#4,a#4,c#5,f#5] f#3!2 [f#3,a#3,f#4] a3", // G Gmaj7 F#
  AS: "[f2,f3,c4,f4]@2 a3 c4 [c4,f4] [f3,d4] f3 b3 [e2,e3,e4,g#4,b4] e4 [e4,g#4,e5] [e4,b4] e3 [e4,g#4,e5] [e3,c4,d4] a3", // F5 Dm E E5 E C
  AT: "[a2,c4,e4]@2 [g3,a3]@2 [a3,b3,e4] d4 e4 [a3,d4] [d2,d3,f#4,a4]@3 ~ a3 [a3,d4,a4] [d4,f#4,a4] d4", // Am Gsus2 Asus2 D5 D D5 D
  AU: "[a2,a3,b3,d4,g4]@2 b3 [d4,g4] [a3,e4,g4] d4 g4 g3 [c2,c3,g3,c4,e4,g4]@2 g3 a3 [d2,d3,a3,d4,f#4]@2 b3@2", // G G5 A7 C D
  AV: "[g2,b3,d4,g4]@3 ~@13", // G
})).s("gm_piano").gain(0.72)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B C@3 D E F G C H I C@3 J C K L C M N O P D Q ~ R F C@3 I S K C@3 I P K T C P@2 D C ~
>`.pickRestart({
  A: "x ~@6 x!2 ~ x ~@5", B: "x ~@3 x ~@2 x!2 ~@2 x ~@4", C: "x ~@2 x ~@3 x!2 ~@2 x ~@4", D: "x ~@2 x ~@3 x ~@8",
  E: "x!4", F: "x ~@2 x ~@3 x ~@3 x ~@4", G: "x ~@2 x ~@3 x!2 ~@2 x ~@2 x ~", H: "x ~@2 x ~@4 x ~@2 x ~@4",
  I: "x ~@2 x ~@12", J: "x ~@2 x ~@4 x ~@7", K: "x ~@2 x ~@3 x!2 ~@3 x ~@3", L: "x!2 ~@14",
  M: "x!2 ~@2 x ~@3 x!2 ~@2 x ~@3", N: "x!2 ~@2 x ~@3 x ~@3 x ~@3", O: "~ x ~ x ~@3 x!2 ~@2 x ~@3 x",
  P: "x ~@2 x ~@3 x!2 ~@2 x ~@3 x", Q: "x ~@2 x ~@3 x!2 ~@7", R: "x ~@2 x ~@3 x!2 ~ x ~@5",
  S: "~ x ~ x ~@3 x!2 ~@2 x ~@4", T: "x!2 ~ x ~@12",
})).gain(0.72)

// drums · rim
const rim = s("rim").struct("<~ A B A@3 C D A@4 C A@3 E A C F ~@8 A E A@3 G A E A@3 C ~@9>".pickRestart({
  A: "~ x ~ x", B: "~@5 x ~@6 x ~@3", C: "~ x ~@2", D: "~@5 x ~@7 x ~@2", E: "~@4 x ~@8 x ~@2",
  F: "~@3 x ~@3 x!2 ~@2 x ~@3 x", G: "~ x!2 ~",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct("<~@15 A ~@3 B@2 C@2 B@2 A B ~@6 A ~@6 B D E B@3 A B F>".pickRestart({
  A: "~ x ~@2", B: "~ x ~ x", C: "~@5 x ~@7 x ~@2", D: "~@4 x ~@8 x ~@2", E: "~@5 x ~@10", F: "x",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@7 A ~@10 B ~@4 C ~@15 B ~@9>".pickRestart({
  A: "~@5 x ~@10", B: "~@15 x", C: "x",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~ A B C@3 D E C F G C D C@3 H C D ~@9 C I J K L M A I N C@2 D ~@9>".pickRestart({
  A: "~ x!7", B: "x ~ x ~@2 x!2 ~ x ~ x ~ x ~ x ~", C: "x!8", D: "x!4 ~@4", E: "x ~ x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~",
  F: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x", G: "~ x!6 ~", H: "x ~ x ~ x ~ x!9 ~", I: "x ~ x ~ x ~ x ~ x!7 ~",
  J: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", K: "x ~ x!3 ~ x!3 ~ x!5 ~", L: "x ~ x!3 ~ x!4 ~ x!4 ~", M: "x ~ x!3 ~ x!2 ~@8",
  N: "x ~ x ~ x!2 ~@2 x ~ x ~ x ~ x ~",
})).gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~@2 B ~@16 C ~@3 D ~@5>".pickRestart({
  A: "x", B: "~@15 x", C: "~@7 x", D: "~@14 x!2",
})).gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~ A B@4 ~ B@2 ~ C B ~ B@5 ~@10 B@5 ~ B@5 D ~@9>".pickRestart({
  A: "x ~@14 x", B: "~@15 x", C: "~@7 x", D: "~@7 x ~@8",
})).gain(0.72)

// drums · high tom
const high_tom = s("ht").struct("<~@18 A ~@3 A ~@16 B ~@7 C ~>".pickRestart({
  A: "~@13 x!2 ~", B: "~@13 x ~@2", C: "~@14 x!2",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct("<~ A ~@17 B ~@3 C ~ D E ~@6 F A ~@4 D A ~ D ~ A ~ D ~ C>".pickRestart({
  A: "x", B: "x!2 ~@8 x ~@5", C: "~ x ~@14", D: "~ x", E: "~@3 x", F: "~@15 x",
})).gain(0.72)

// drums · ride
const ride = s("rd").struct("<~@6 A ~@5 A ~@5 A B C D E F C G H I ~@5 A J ~@5 C K L M C@2 G M N>".pickRestart({
  A: "~ x", B: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~", C: "x!8", D: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
  E: "~ x ~ x ~ x ~ x ~ x ~ x ~@4", F: "~ x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~", G: "x!4 ~@4",
  H: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", I: "x!3 ~@13", J: "x!2 ~@14", K: "x ~ x ~ x ~ x ~ x ~ x ~@2 x!2 ~",
  L: "~ x!2 ~ x ~@2 x!2 ~@7", M: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~@2", N: "~ x ~@14",
})).gain(0.72)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@48 [~ x ~@14]>").gain(8.46)

stack(piano, kick, rim, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash, ride, vibraslap)

More by Elton John