Strudelify

Einstein's Wrong

Steve Jablonsky

KeyB majorTempo140 bpm
0:00/0:00
// Einstein's Wrong — Steve Jablonsky
// 140 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 7 "Flute" named as a pipe, played on flute (its string ensemble 1 patch is not one); ch 8 "Horn in F" named as a brass, played on brass section (its pizzicato strings patch is not one); ch 13 "Horn in F" named as a brass, played on brass section (its tremolo strings patch is not one); ch 9 "Marimba (Single Staff)" named as a mallet, played on marimba (its tremolo strings patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 13 "Horn in F" brass section (copy of ch 8 "Horn in F" brass section)
// note: Transcription provider: pdmx. https://musescore.com/score/5939266; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 65 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140/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 · flute
const flute = note(`<
  A@2 B C A@2 B D E F E G H@2 I J ~@8 K L@2 M N@2 K L@2 O P@2 Q R@2 O P@2 R@2 ~@4 S@3 J T@3 U S@3 Q V@2 W@2 M
>`.pickRestart({
  A: "[g#2@3 e2]/2", B: "g#2", C: "a#2 b2", D: "c#3 d#3", E: "e3", F: "d#3", G: "b2 a#2", H: "[g#2@3 ~]/2", I: "e2",
  J: "d#2", K: "c2", L: "g#2/2", M: "f2", N: "g2/2", O: "d2", P: "a#2/2", Q: "g2", R: "a2/2", S: "f2/3",
  T: "[f5 g#5 g5 ~ f5 g#5 g5 ~ f5 g#5 g5 ~@5 f5 g#5 g5 ~ f5 g#5 g5 ~, c#2]/3", U: "f5 g#5 g5 ~@5, d#2",
  V: "[f5 g#5 g5 ~ f5 g#5 g5 ~ f5 g#5 g5 ~@5, g#2]/2", W: "[f5 g#5 g5 ~ f5 g#5 g5 ~ f5 g#5 g5 ~ g#2@2 g2@2, a#2@3 ~]/2",
})).s("gm_flute").gain(0.4)

// other · brass section · "Horn in F"
const brass_section = note(`<
  A@2 B C A@2 B D E F E G H@2 I J ~@8 K L@2 M N@2 O P@2 Q R@2 Q P@2 Q R@2 S@2 ~@21
>`.pickRestart({
  A: "[g#2@3 e2]/2", B: "g#2", C: "a#2 b2", D: "c#3 d#3", E: "e3", F: "d#3", G: "b2 a#2", H: "[g#2@3 ~]/2", I: "e2",
  J: "d#2", K: "g3", L: "g#3/2", M: "g#3", N: "a#3/2", O: "c4", P: "c4/2", Q: "d4", R: "d4/2", S: "e4/2",
})).s("gm_brass_section").gain(0.45)

// other · trombone
const trombone = note("<A@2 B C D@2 E F G H G I J@2 K L ~@49>".pickRestart({
  A: "[g#1@3 e1]/2", B: "g#1", C: "a#1 b1", D: "[[g#1,g#2]@3 [e1,e2]]/2", E: "[g#1,g#2]",
  F: "[c#1,c#2,c#3] [d#1,d#2,d#3]", G: "[e1,e2,e3]", H: "[d#1,d#2,d#3]", I: "[b1,b2] [a#1,a#2]", J: "[g#1@3 ~]/2",
  K: "e1", L: "d#1",
})).s("gm_trombone").gain(0.3)

// bass · tremolo strings · "Timpani"
const bass = note("<A@16 ~@49>".pickRestart({
  A: "[c#1,c#2]/2", // C#
})).s("gm_tremolo_strings").gain(0.5)

// chords · string ensemble 1 · "Women"
const string_ensemble_1 = note(`<
  A@2 B C D@2 E F G H I J K@2 L M N O N P N O N P Q R@2 S T@2 Q R@2 U V@2 W X@2 U V@2 Y@2 ~@4 Z@3 M AA@3 M Z@3 AB AC@2
  AD@2 AE
>`.pickRestart({
  A: "[g#1@3 e1]/2", B: "g#1", C: "a#1 b1", D: "[[g#1,g#2]@3 [e1,e2]]/2", E: "[g#1,g#2]", F: "[c#1,c#2] [d#1,d#2]",
  G: "g#3 a#3 b3 a#3, [e1,e2]", H: "g#3 c#4 b3 a#3, [d#1,d#2]", I: "g#3 c#4 b3 a#3, [e1,e2]",
  J: "g#3 a#3 g3 g#3, [b1,b2] [a#1,a#2]", K: "[g#1@3 ~]/2", L: "e1", M: "d#1",
  N: "g#4 ~ a#4 ~ b4 ~@3 g#4 ~ a#4 ~ b4 ~@3", O: "g#4 ~ a#4 ~ b4 ~@3 c#5 ~@3 b4 ~@3",
  P: "g#4 ~ a#4 ~ b4 ~@3 g4 ~@3 g#4 ~@3", Q: "c5 ~ d#5 ~ d5 ~@3 c5 ~ d#5 ~ d5 ~@3, c1",
  R: "[c5 ~ d#5 ~ d5 ~@3 c5 ~ d#5 ~ d5 ~@3 c5 ~ d#5 ~ d5 ~@3 c5 ~ d#5 ~ d5 ~@3, g#1]/2",
  S: "c5 ~ d#5 ~ d5 ~@3 c5 ~ d#5 ~ d5 ~@3, f1",
  T: "[c5 ~ d#5 ~ d5 ~@3 c5 ~ d#5 ~ d5 ~@3 c5 ~ d#5 ~ d5 ~@3 c5 ~ d#5 ~ d5 ~@3, g1]/2", U: "d5 f5 e5 ~ d5 f5 e5 ~, d1",
  V: "[d5 f5 e5 ~ d5 f5 e5 ~ d5 f5 e5 ~ d5 f5 e5 ~, a#1]/2", W: "d5 f5 e5 ~ d5 f5 e5 ~, g1",
  X: "[d5 f5 e5 ~ d5 f5 e5 ~ d5 f5 e5 ~ d5 f5 e5 ~, a1]/2",
  Y: "[d5 f5 e5 a4 d5 f5 e5 a4 d5 f5 e5 a4 d5 f5 e5 a4, a1]/2", Z: "f1/3", AA: "c#1/3", AB: "g1", AC: "g#1/2",
  AD: "[a#1@6 g#1 g1]/2", AE: "f1",
})).s("gm_string_ensemble_1").gain(0.5)

// chords · string ensemble 1 · "Men"
const string_ensemble_1_2 = note(`<
  A B C D E F G H I J@2 K A D L M ~@8 N O@2 P Q@2 R S@2 T U@2 T S@2 T U@2 V@2 ~@21
>`.pickRestart({
  A: "g#3 ~ a#4@2 b4@2 c#5@2, ~@2 g#3 ~ g#3 ~ g#3 ~", B: "b4 a#4 b4 c#5, g#3 ~ g#3 ~ g#3 ~ g#3 ~",
  C: "b4 a#4 d5 c#5, g#3 ~ g#3 ~ g#3 ~ g#3 ~", D: "b4@4 a#4@4 g#3 ~ g#3 ~ g#4@4, g#3 ~ g#3 ~ g4@2 g#3 ~",
  E: "g#3@2 ~@2 a#4@4 g#3 ~ g#3 ~ c#5@4, ~@2 g#3 ~ b4@2 g#3 ~",
  F: "b4@4 a#4@4 g#3 ~ g#3 ~ c#5@4, g#3 ~ g#3 ~ d5@2 g#3 ~", G: "b4 a#4 d5 d#5, g#3 ~ g#3 ~ g#3 ~ g#3 ~",
  H: "e5@4 d#5@4 g#3 ~ g#3 ~ g5@4, g#3 ~ g#3 ~ f#5@2 g#3 ~", I: "[g#3,g#5] [a#3,a#5] [b3,b5] [a#3,a#5]",
  J: "[g#3,g#5] [c#4,c#6] [b3,b5] [a#3,a#5]", K: "[g#3,g#5] [a#3,a#5] [g3,g5] [g#3,g#5]",
  L: "g#3 ~ a#3@2 b3@2 c#4@2, ~@2 g#3 ~ g#3 ~ g#3 ~", M: "b3@4 a#3@4 g#3 ~ g#3 ~ g#3@4, g#3 ~ g#3 ~ g3@2 ~@2", N: "g3",
  O: "g#3/2", P: "g#3", Q: "a#3/2", R: "c4", S: "c4/2", T: "d4", U: "d4/2", V: "e4/2",
})).s("gm_string_ensemble_1").gain(0.5)

// other · string ensemble 1 · "Violins"
const string_ensemble_1_3 = note("<A B C D A C E F G H@2 I J@4 ~@17 K L@2 M N@2 M O@2 N@2 ~@21>".pickRestart({
  A: "~ a#4 b4 c#5", B: "b4 a#4 b4 c#5", C: "b4 a#4 d5 c#5", D: "b4 a#4 g4 g#4", E: "b4 a#4 d5 d#5", F: "e5 d#5 f#5 g5",
  G: "g#5 a#5 b5 a#5", H: "g#5 c#6 b5 a#5", I: "g#5 a#5 g5 g#5", J: "g#3 ~ a#3 ~ c#4 ~ b3 ~ g#3 ~ a#3 ~ c#4 ~ b3 ~",
  K: "d5", L: "d5/2", M: "f5", N: "e5/2", O: "f5/2",
})).s("gm_string_ensemble_1").gain(0.15)

// other · string ensemble 1
const string_ensemble_1_4 = note("<A@3 B@3 A B C D@2 E F@4 ~@49>".pickRestart({
  A: "g#3 ~ g#3 ~ g#3 ~ g#3 ~", B: "g#3@2 ~@2 g#3@2 ~@2 g#3 ~ g#3 ~ g#3@2 ~@2", C: "g#3 a#3 b3 a#3",
  D: "g#3 c#4 b3 a#3", E: "g#3 a#3 g3 g#3", F: "g#3 ~ a#3 ~ c#4 ~ b3 ~ g#3 ~ a#3 ~ c#4 ~ b3 ~",
})).s("gm_string_ensemble_1").gain(0.5)

// other · pizzicato strings
const pizzicato_strings = note("<~@16 A@8 B@9 C@11 D E D F D E D F D E D F D E D F D E D F ~>".pickRestart({
  A: "g#3 a#3 b3 d#4 g#3 a#3 b3 d#4", B: "c4 d4 d#4 g4 c4 d4 d#4 g4", C: "d4 e4 f4 a4 d4 e4 f4 a4",
  D: "f3 g3 g#3 c4 f3 g3 g#3 c4", E: "f3 g3 g#3 c4 f3 g3 g#3 c#4", F: "f3 g3 g#3 c4 f3 g3 g#3 a#3",
})).s("gm_pizzicato_strings").gain(0.5)

// drums · tambourine
const tambourine = s("tb").struct("<~@44 [x!8]!20 ~>").gain(0.05)

// drums · shaker
const shaker = s("sh").struct("<~@48 [x!4]!16 ~>").gain(0.15)

stack(
  flute, brass_section, trombone, bass, string_ensemble_1, string_ensemble_1_2, string_ensemble_1_3,
  string_ensemble_1_4, pizzicato_strings, tambourine, shaker
)

More by Steve Jablonsky