Strudelify
KeyE majorTempo115 bpm
0:00/0:00
// home — Edward Sharpe & The Magnetic Zeros
// 115 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 35, 4/4 at bar 36, 3/4 at bar 38, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/2793706; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(115/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 · trombone · "Bass Trombone"
const trombone = note(`<
  ~ A B C D A B C D E F G H I@2 J K E F G H I@2 J L M N O L M P O K Q R Q S T U Q V W X@3 Y Z AA AB AC AD AE AF@2 AG
  AH@3 AI AJ@3 S AK Q R AL AM AN AO AP AQ@2 E F G H E F G AR E F G H E F G AR AS
>`.pickRestart({
  A: "[b2,d3] ~ [b2,d3]@2 [b2,d3]!2 [b2,d3]@2 [b2,d3] ~ [b2,d3]@2 [b2,d3]!2 [b2,d3]@2", // Bm
  B: "[d3,a3] ~ [d3,a3]@2 [d3,a3]!2 [d3,a3]@2 [d3,a3] ~ [d3,a3]@2 [d3,a3]!2 [d3,a3]@2", // D5
  C: "[d3,f#3] ~ [d3,f#3]@2 [d3,f#3]!2 [d3,f#3]@2 [d3,a3] ~ [d3,a3]@2 [d3,a3]!2 [d3,a3]@2", // D D5
  D: "[g2,b2] ~ [g2,b2]@2 [g2,b2]!2 [g2,b2]@2 [g2,b2] ~ [g2,b2]@2 [g2,b2]!2 [g2,b2]@2", // G
  E: "[b2,d3] ~ [b2,d3]@2 [b2,d3] ~ [b2,d3]@2 [b2,d3] ~ [b2,d3]@2 [b2,d3] ~ [b2,d3]@2", // Bm
  F: "[d3,a3] ~ [d3,a3]@2 [d3,a3] ~ [d3,a3]@2 [d3,a3] ~ [d3,a3]@2 [d3,a3] ~ [d3,a3]@2", // D5
  G: "[d3,f#3] ~ [d3,f#3]@2 [d3,f#3] ~ [d3,f#3]@2 [d3,a3] ~ [d3,a3]@2 [d3,a3] ~ [d3,a3]@2", // D D5
  H: "[g2,b2] ~ [g2,b2]@2 [g2,b2] ~ [g2,b2]@2 [g2,b2] ~ [g2,b2]@2 [g2,b2] ~ [g2,b2]@2", // G
  I: "f#3 ~ d3@2 f#3 ~ d3@2 f#3 d3@2 f#3@5", J: "f#3@2 f#3@2 f#3@2 f#3@2 a3 ~ a3!3 f#3@3", K: "d3 b2@2 ~",
  L: "d3@2 b2@4 d3 b2", M: "d3@8 ~ b2@3 d3 f#3@3", N: "a3 f#3", O: "a3 a3@2 a3@2 a3@2 f#3", P: "a3 f#3 d3@2",
  Q: "~ [b2,g3] ~ [b2,g3] ~ [b2,g3] ~ [b2,g3]", R: "~ [a2,f#3] ~ [a2,f#3] ~ [e2,e3] ~ [e2,e3]",
  S: "~ [b2,g3] ~ [b2,g3] ~ [a2,f#3] ~ [a2,f#3]", T: "~ [e2,e3] ~ [e2,e3] ~ [e2,b2] ~ [e2,b2]",
  U: "~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [b2,g3]", V: "~ [b2,f#3] ~ [b2,f#3] ~ [a2,e3] ~ [a2,e3]",
  W: "~ [d2,d3] ~ [d2,d3] ~ [g2,d3] ~ [g2,d3]", // D G5
  X: "[~@2 [b2,g3]@2 ~@2 [b2,g3]@2 [c#3,c#4]@4 [c#3,c#4] ~ [c#3,c#4]@4 [c#3,c#4] ~ [c#3,c#4] ~ [d3,d4]@18 ~@8]/3", // Em C# D
  Y: "~@8 [b2,d3] ~ [b2,d3]@2 [b2,d3] ~ [b2,d3]@2", // Bm
  Z: "[b2,d3] ~ [b2,d3]@2 [b2,d3] ~ [b2,d3]@2 [d3,a3] ~ [d3,a3]@2 [d3,a3] ~ [d3,a3]@2", // Bm D5
  AA: "[d3,a3] ~ [d3,a3]@2 [d3,a3] ~ [d3,a3]@2 [d3,f#3] ~ [d3,f#3]@2 [d3,f#3] ~ [d3,f#3]@2", // D5 D
  AB: "[d3,a3] ~ [d3,a3]@2 [d3,a3] ~ [d3,a3]@2 [g2,b2] ~ [g2,b2]@2 [g2,b2] ~ [g2,b2]@2", // D5 G
  AC: "[g2,b2] ~ [g2,b2]@2 [g2,b2] ~ [g2,b2]@2 f#3 ~ d3@2 f#3 ~ d3@2", AD: "f#3 d3@2 f#3@5 f#3 ~ d3@2 f#3 ~ d3@2",
  AE: "f#3 d3@2 f#3@5 f#3@2 f#3@2 f#3@2 f#3@2", AF: "[a3 ~ a3!3 f#3@3 d3@4 b2@8 d3@2 b2@2 d3@8]/2",
  AG: "~ b2@3 d3 f#3@3 a3@8", AH: "[f#3@4 a3 a3@2 a3@2 a3@2 f#3 d3@2 b2@4 d3 b2 d3@4]/3",
  AI: "~ b2@3 d3 f#3@3 a3@4 f#3@4", AJ: "[d3@4 a3 a3@2 a3@2 a3@2 f#3 d3@2 b2@4 ~@3 [b2,g3] ~ [b2,g3]]/3",
  AK: "~ [e2,e3] ~ [e2,e3] ~ [b2,g3] ~ [b2,g3]", AL: "~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2]",
  AM: "~ [e2,b2] ~ [b2,g3] ~ [b2,g3] ~ [b2,g3]", AN: "~ [b2,g3] ~ [b2,g3] ~ [b2,f#3] ~ [b2,f#3]",
  AO: "~ [a2,e3] ~ [a2,e3] ~ [d2,d3] ~ [d2,d3]", AP: "~ [g2,d3] ~ [g2,d3] ~ [b2,g3] ~ [b2,g3]",
  AQ: "[[c#3,c#4]@4 [c#3,c#4] ~ [c#3,c#4]@4 [c#3,c#4] ~ [c#3,c#4] ~ [d3,d4]@18]/2", // C# D
  AR: "[b2,g3] ~ [b2,g3]@2 [b2,g3] ~ [b2,g3]@2 [b2,g3] ~ [b2,g3]@2 [b2,g3] ~ [b2,g3]@2", AS: "b2 ~@7",
})).s("gm_trombone").gain(0.25)

// bass · tuba
const bass = note(`<
  ~ A B@2 C A B@2 C D E F G D E F G D E F G D E F G H I J K H I J K L M@3 N@2 O P Q@4 R@4 S@4 T U V W X U V W Y@2 Z L AA
  AB AC@2 AD AE AF@2 A B@2 C A B@2 AG A B@2 C A B@2 AG AH
>`.pickRestart({
  A: "b1!4", B: "d2!4", C: "g1!4", D: "b1", E: "d2@6 ~ a1", F: "d2@5 d2 e2 f#2", G: "g2@2 d2 b1", H: "b1 f#1 b1 f#1",
  I: "d2 a1 d2 a1", J: "d2@4 ~ d2 e2 f#2", K: "g2 d2 g2 d2", L: "e2", M: "[d2 a1@2 e2@2 d2]/3",
  N: "[a1@8 e2@12 e2@4 d2@4 d2 d#2 [e2,f2] f#2]/2", O: "g2 g2@3", P: "b2 a2",
  Q: "[d2@4 g2@4 g2@4 a2@16 ~@2 a2 ~, ~ g1@2 ~@5]/4", R: "[b2 ~ c#3 ~ b1@8 d2@6 ~ a1 d2@5 d2 e2 f#2 g2@4]/4",
  S: "[d2@2 b1@2 b1@8 d2@6 ~ a1 d2@5 d2 e2 f#2 g2@4]/4", T: "d2 b1!2 f#1", U: "b1 f#1 d2 a1", V: "d2 a1 d2@2",
  W: "~ d2 e2 f#2 g2@2 d2@2", X: "g2 d2 b1 f#1", Y: "[g2 d2 e2@4 d2@2]/2", Z: "a1", AA: "d2 a1", AB: "e2@3 e2",
  AC: "[d2@4 d2 d#2 [e2,f2] f#2 g2@4 g2@12 b2@8]/2", AD: "a2 d2", AE: "g2!2, g1", AF: "a2/2", AG: "g1", AH: "b1 ~@7",
})).s("gm_tuba").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~ A@32 ~@12 B A@15 C ~@11 A@16 ~>".pickRestart({
  A: "x!4", B: "~@2 x!2", C: "x!2 ~@2",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct("<~@25 A@8 ~@20 B A@7 C ~@11 A@16 ~>".pickRestart({
  A: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2", B: "~@10 x!2 ~@2 x!2", C: "~@2 x!2 ~@2 x!2 ~@8",
})).gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@81 [~ x ~ x]!8 x>").gain(0.45)

// drums · tambourine
const tambourine = s("tb").struct("<~ A@32 ~@12 B A@15 C ~@11 A@8 ~@9>".pickRestart({
  A: "~ x ~ x", B: "~@3 x", C: "~ x ~@2",
})).gain(0.45)

stack(trombone, bass, kick, snare, crash, tambourine)