Strudelify

Beautiful World

Devo

KeyE majorTempo151 bpm
0:00/0:00
// Beautiful World — Devo
// 151 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 5 "Lower Chord" brass section (copy of ch 2 "Lower Chord" string ensemble 2); ch 7 "More Low Stuff" ocarina (copy of ch 2 "Lower Chord" string ensemble 2); ch 6 "Guitar 1" acoustic guitar steel (copy of ch 3 "Guitar 1" electric guitar clean)
// note: Full arrangement: all 130 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(151/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 · string ensemble 1 · "Upper Chord"
const string_ensemble_1 = note(`<
  A@2 B@2 C@2 B@2 D@4 E F E F E F E F E G@2 H E F E F E G@4 F E F I F I F I G@2 J@2 G@2 H E F E F E G@4 F E F I F I F I
  G@2 K@2 ~@15 L M N O L M L M L M N O L M L M I F I F I G@2 K@2 ~@7 E F E F E F P Q R Q R Q R ~
>`.pickRestart({
  A: "d4/2", B: "e4/2", C: "c4/2", D: "[b3,e4]/4", E: "d#4 e4 f#4 ~", F: "a4@2 b4 a4@2 f#4 e4@2",
  G: "[a4@3 b4@7 e4@2 f#4@2 ~@2]/2", H: "a4@3 b4@5", I: "~ e4 f#4 ~",
  J: "[a4@3 ~@5 d#4@2 e4@2 f#4@2 ~@2, ~@3 b4@7 ~@6]/2", K: "[a4@3 b4@7 ~@6]/2", L: "~@2 [b3,f#4] ~ [b3,f#4] ~@3",
  M: "[b3,f#4] ~@2 [b3,f#4] ~ [g#3,d#4]@3", N: "~@2 [e4,b4] ~ [e4,b4] ~@3", O: "[e4,b4] ~@2 [e4,b4] ~ [c#4,g#4]@3",
  P: "d#4@2 ~ g#4 ~ a4!2 ~", Q: "~ g#4!2 a4 ~@4", R: "~@3 g#4 ~ a4!2 ~",
})).s("gm_string_ensemble_1").gain(0.41)

// other · string ensemble 2 · "Lower Chord"
const string_ensemble_2 = note(`<
  A@2 B@2 C@2 D@2 E@4 F@8 ~@2 G@2 H@6 G@2 I@4 B@2 J@2 K@4 L@2 G@2 H@6 G@2 I@4 B@2 J@2 K@4 A@2 B@2 A@2 B@2 C@2 M@2 N@4 O
  P Q R O P O P O P Q R O P O P B@2 J@2 K@4 F@8 ~@14
>`.pickRestart({
  A: "[g1,g2]/2", B: "[a1,a2]/2", C: "[f1,f2]/2", D: "[c1,c2]/2", E: "[e2 e2, e1]/4", F: "[b1,b2]/8", G: "[e1,e2]/2",
  H: "[b1,b2]/6", I: "[b1,b2]/4", J: "[g#1,g#2]/2", K: "[e1,e2]/4", L: "[b1,b2]/2", M: "[c2,c3]/2", N: "[e2,e3]/4",
  O: "~@2 [b1,b2] ~ [b1,b2] ~@3", P: "[b1,b2] ~@2 [b1,b2] ~ [g#1,g#2]@3", Q: "~@2 [e2,e3] ~ [e2,e3] ~@3",
  R: "[e2,e3] ~@2 [e2,e3] ~ [c#2,c#3]@3", // E C#
})).s("gm_string_ensemble_2").gain(0.41)

// chords · electric guitar clean · "Guitar 1"
const electric_guitar_clean = note(`<
  A@2 B@2 C@2 B@2 D@2 E@2 F ~ F ~ F ~ F ~ F ~ G ~ F ~ F ~ F ~ G ~ F ~ F ~ H ~ I ~ D@2 E@2 F ~ G ~ F ~ F ~ F ~ G ~ F ~ F
  ~ H ~ I ~ D@2 E@2 J ~ H ~ J ~ H ~ K@2 L M N@2 O@2 ~@16 P ~ Q ~ D@2 E@2 F ~ F ~ F ~ F ~ F ~ F ~ F ~ F ~ F ~ F ~ F ~
>`.pickRestart({
  A: "d3/2", B: "e3/2", C: "c3/2", D: "[[e3,g#3,b3]@13 [e3,g#3,b3] [e3,g#3,b3]@2]/2", E: "[e3,g#3,b3]/2",
  F: "[b3,f#4,b4]", G: "[e3,b3,e4]", H: "[a3,e4,a4]", I: "[g#3,d#4,g#4]", J: "[g3,d4,g4]",
  K: "[c3@3 e3 f3@6 c3 e3 f3 e3 f3@2]/2", L: "c3 a3", M: "g3@2 f3 e3", N: "[e2@9 e2!3 g2 e2 g2@2, g#2 ~]/2",
  O: "[e2@6 e4@3 e3!3 g3@2 e3@2, ~@3 g#4 ~@4]/2", P: "[a3,e4]", Q: "[g#3,d#4]",
})).s("gm_electric_guitar_clean").gain(0.41)

// drums · kick
const kick = s("bd").struct("x ~@2 x!2 ~@3").gain(0.41)

// drums · snare
const snare = s("sd").struct("~ x ~ x").gain(0.41)

// drums · low tom
const low_tom = s("lt").struct("<~@10 A ~@31 A ~@23 A ~@39 A ~@23>".pickRestart({
  A: "~@2 x!2 ~ x!2 ~",
})).gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct("<~@11 A ~@23 B ~@3 B ~@3 A ~@9 B ~@5 B ~@3 B ~@3 A ~@35 B ~@3 A ~@22>".pickRestart({
  A: "~@4 x!4", B: "~@5 x!2 ~",
})).gain(0.41)

// drums · open hat
const open_hat = s("oh").struct(`<
  A ~@7 A ~ A ~ A ~@9 A ~@7 A ~@5 A ~ A ~ A ~@3 A ~@9 A ~ A ~ A ~ A ~ A ~ A ~@35 A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x",
})).gain(0.41)

// drums · high tom
const high_tom = s("ht").struct("<~@11 A ~@31 A ~@23 A ~@39 A ~@22>".pickRestart({
  A: "x!4 ~@4",
})).gain(0.41)

// drums · crash
const crash = s("cr").struct(`<
  A ~@7 A ~ A ~ A ~@9 A ~@7 A ~@5 A ~ A ~ A ~@3 A ~@9 A ~ A ~ A ~ A ~ A ~ A ~@35 A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x",
})).gain(0.41)

// drums · tambourine
const tambourine = s("tb").struct("<[x!8]!129 [x!7 ~]>").gain(0.41)

stack(
  string_ensemble_1, string_ensemble_2, electric_guitar_clean, kick, snare, low_tom, mid_tom, open_hat, high_tom, crash,
  tambourine
)

More by Devo