Strudelify

Schindler's List Theme

John Williams

KeyD minorTempo60 bpm
0:00/0:00
// Schindler's List Theme — John Williams
// 60 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (3/4 at bar 1, 4/4 at bar 4) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5832583; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 48 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · flute
const flute = note(`<
  ~ A B C ~@9 D E F G H I J K L M N O P Q R S@2 T@2 U V W X Y Z ~@3 AA U AB AC AD@2 AE
>`.pickRestart({
  A: "~@8 a4@4 e5@4 a5@11 ~ c5@2 b4@2", B: "a4@2 a4 f4", C: "e4@23 ~@9", D: "~@3 a4", E: "a5 d5 a5 d5 bb5 a5 f5 a4",
  F: "f5@4 g4@4 f5@4 g5@4 a5@15 ~", G: "a5 d5 a5 d5 c6 bb5 a5!2", H: "c5 bb4 e5 g5 bb5 a5 g5 f5",
  I: "g5 bb4 g5 bb4 a5 g5 f5 g5", J: "a5@23 ~ a4@8", K: "g5 bb4 g5 bb4 a5 g5 f5 e5", L: "d5@15 ~ e5@15 ~",
  M: "f5 g4 f5 g4 a5 g5 f5 e5", N: "d5@15 ~", O: "~@8 bb4@6 a4 g4", P: "d5@4 g4@4 a4@3 g4 a4 d5 f5 a5",
  Q: "d6@8 d6 g6 e6 d6 bb5 g5 e5 d5", R: "bb4@8 g5@5 g4@3 g5@6 f5@2 e5@8",
  S: "[~@4 e6@2 d6@2 f6@5 e6@3 b5@6 c6@2 d6@12 c6@2 d6@2 b5@4 a5@2 ab5@2 b5@5 a5@11]/2",
  T: "[~@4 e6@2 d6@2 g6@5 f6@3 b5@6 c6@2 d6@13 ~@19 eb4 gb4 ~ b4 eb5 gb5 ~ b5]/2",
  U: "e6@5 a5@3 e6@5 a5@3 f6@5 e6@3 c6@5 e5@3", V: "c6@5 d5@3 c6@5 d6@3 e6@15 ~",
  W: "e6@5 a5@3 e6@5 a5@3 g6@5 f6@3 e6@5 d6@3", X: "g5@5 f5@3 b5@5 d6@3 f6@5 e6@3 d6@5 c6@3",
  Y: "d6@5 f5@3 d6@5 f5@3 e6@5 d6@3 c6@5 d6@3", Z: "e6@9 c6 b5 a5 e5 c5 b4 a4@9 ~@8", AA: "~@12 e5 a5 c6 d6",
  AB: "g6@5 f6@3 e6@5 d6@3 c6@2 d6@2 c6@2 b5@2 a5 g5 [e5,f5] d5 c5 b4 [g4,a4] f4", // Fmaj7 Gsus2
  AC: "e4@5 c5@3 b4@5 f4@3 d5@5 c5@3 b4@5 d4@3", AD: "[f5@5 e5@3 d5@5 b5@3 d6@5 f5@3 e5@5 ab6@8 a5@11 a5@16]/2",
  AE: "a5@15 ~",
})).s("gm_flute").gain(0.25)

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  A B@2 C ~@10 D E F G H I J K L M ~@3 N O P Q R S T U V W X Y Z AA AB AC AD C AE AF AG
>`.pickRestart({
  A: "~@6 e4 d4", B: "[f4@2 e4@2 c4 b3 d4@3 c4 b3 d4 c4@2 b3@2]/2", C: "a3@3 ~", D: "a4@4 bb4 a4@3", E: "f4@2 g4 f4",
  F: "f4!2", G: "f4 g4 bb4 a4", H: "g4 a4", I: "d4@2 e4@2 e4 f4 a4 d4", J: "bb3@3 bb3 e4@4", K: "a4 g4", L: "bb4 a4",
  M: "a4@2 e4 d4", N: "~@3 d4", O: "c4 b3 c4 a3 c4 b3 c4 a3 f4 e4 f4 b3 f4 e4 f4 b3",
  P: "d4 c4 d4 b3 d4 c4 d4 e3 c4 b3 c4 e3 c4 b3 c4 e3", Q: "c4 b3 c4 a3 c4 b3 c4 e3 d4 c4 d4 a3 d4@4", R: "a4@2 a4 gb4",
  S: "e5@5 a4@3 e5@5 a4@3 f5@5 e5@3 c5@5 e4@3", T: "c5@5 d4@3 c5@5 d5@3 e5@16",
  U: "e5@5 a4@3 e5@5 a4@3 g5@5 f5@3 e5@5 d5@3", V: "g4@5 f4@3 b4@5 d5@3 f5@5 e5@3 d5@5 c5@3",
  W: "d5@5 f4@3 d5@5 f4@3 e5@5 d5@3 c5@5 d5@3", X: "e5 ~", Y: "a4@2 a4 ab4", Z: "e4@5 e4@8 e4@3 a4@8 ab4@8",
  AA: "f4@2 a4 ab4", AB: "a4@13 b3@3 c4@2 e4@2 a4@2 c5@2 e5@5 ~@3", AC: "e5@3 ~", AD: "g4 f4@2 ~", AE: "f4@2 d4 e4",
  AF: "f4@16 e4@5 a4@3 c5@5 e5@3", AG: "e5",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note("<~@4 A B C D E A F G F H ~@10 I J K@2 ~@20>".pickRestart({
  A: "f4", B: "d4@3 e4 f4@4", C: "f4 d4", D: "e4 c4", E: "d4 e4", F: "d4@2 d4 db4", G: "~ f4 e4 d4@3 db4@2",
  H: "d4@3 ~", I: "f4@5 f4@8 f4@3 d4@5 d4@8 d4@3", J: "d4@5 d4@8 d4@3 d4@5 d4@8 d4@3",
  K: "[f4@5 f4@8 f4@3 e4@5 e4@8 e4@8 e4@8 e4@8 e4@3 ~@8]/2",
})).s("gm_clarinet").gain(0.2)

// other · french horn · "Horn in F"
const french_horn = note(`<
  ~ A@2 B C D E F G H I J K@2 L M N O P Q R S T U V W X@2 Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR
>`.pickRestart({
  A: "[a3@3 a3@3 a3@2]/2", B: "d4@2 db4 ~", C: "d4", D: "bb3@3 g3 c4@2 db4@2", E: "d4 bb3", F: "bb3@4 g3 a3@3",
  G: "g3@2 d4 db4", H: "e4 d4 e4 a3", I: "~@2 bb3@2 bb3 d4 db4@2", J: "f3@4 g3@3 a3",
  K: "[bb3@4 g3@4 a3@10 g3 bb3 a3@8 ~@4]/2", L: "f4!2", M: "d4 c4", N: "d4!2", O: "bb3 c4", P: "bb3@2 d4@3 c4 g3 e4",
  Q: "bb3 a3 db4 e4 e4@2 f4@2", R: "d4 db4", S: "d4@10 g3 bb3 a3@4", T: "g3 bb3 d4 e4", U: "f4",
  V: "d4@5 d4@8 d4@3 d4@5 d4@8 d4@3", W: "bb3@5 bb3@8 bb3@3 a3@5 a3@8 a3@3",
  X: "[d4@5 d4@8 d4@3 d4@5 d4@8 d4@8 d4@8 d4@8 d4@3 bb3@8]/2", Y: "e4@5 e4@8 e4@3 d4@5 d4@8 d4@3",
  Z: "b3@5 b3@8 b3@3 e4@5 e4@8 e4@3", AA: "e4@5 e4@8 e4@3 d4@5 f4@8 f4@3", AB: "f4@2 f4 eb4", AC: "e4@13 e4@3 c4@16",
  AD: "c4@13 d4@3 b3@16", AE: "c4 a3", AF: "a3@5 b3@3 d4@16 g3@8", AG: "a3@2 d4 b3", AH: "c4 a3@2 ~", AI: "f4@2 b3 d4",
  AJ: "c4@5 c4@8 c4@3 e4@16", AK: "c4@2 a3 b3", AL: "c4 ~", AM: "a4@3 ~", AN: "c4@3 ~", AO: "f3@3 ~", AP: "d4@2 a3 b3",
  AQ: "c4@16 a3@5 c4@3 e4@5 c4@3", AR: "a3",
})).s("gm_french_horn").gain(0.25)

// other · bassoon
const bassoon = note(`<
  A B@2 C D E F G H I J K L M N O P Q R S T U V W X Y Z@2 AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
>`.pickRestart({
  A: "~@6 a2 e3", B: "[a3 d4 a3@2 a2 e3 a3@4 a3@4 a3@2]/2", C: "a2 e3 a3 e4@3 ~@2", D: "d3@3 d3",
  E: "g2@2 c3@2 f2 c3 a2 f3", F: "d3@4 g2@2 a2 bb2", G: "c3 f3 g3 bb3 f3@2 f2@2", H: "bb2@4 a2 d3 db3 a3",
  I: "d3 a2 f3 a3 e4@2 f4@2", J: "bb2@2 e3 a2", K: "bb2 f3 bb3 d4 a2 d3 e3 a3", L: "g2 f3 g3 d3 a2 d3 a3 a2",
  M: "d2 a2 f3 a2 d2@2 ~@2", N: "d3 d2@3", O: "bb2@3 c3@2 f3 a3@2", P: "d3@4 g2@3 bb2", Q: "c3 f2",
  R: "e2@3 bb2 a2@2 a2@2", S: "d3@2 a2 d2", T: "f2 bb2 bb3@2 e3@2 a2@2", U: "f2 a2 d3 a2", V: "d3@2 f2 db3",
  W: "f2 d3@3", X: "d3@5 d3@8 d3@3 bb2@5 bb2@8 bb2@3", Y: "bb2@5 bb3@8 g3@3 f3@5 f3@8 f3@3",
  Z: "[d3@5 d3@8 d3@3 bb2@5 bb2@8 bb2@8 a2@8 a2@8 a2@3 bb2@8]/2", AA: "a2@5 e3@8 e3@3 a2@5 f3@8 f3@3",
  AB: "a2@5 f3@8 f3@3 a2@5 e3@3 a3@5 e3@3", AC: "a2@5 e3@8 a3@3 f3@6 e3@2 d3@2 c3@2 b2@2 a2@2", AD: "b2@2 b2!2",
  AE: "a2@5 e3@3 a3@5 c4@3 a2@5 e3@3 a3@5 c4@3", AF: "d3@5 a3@3 g2@5 b3@3 c3@5 g3@3 c4@5 g3@3",
  AG: "a2@5 e3@3 c4@5 a3@3 d3@5 a3@3 c4@5 d4@3", AH: "g2@5 d3@3 b3@5 g3@3 c3@5 g3@3 e4@5 c4@3",
  AI: "b2@5 a3@3 g3@5 d3@3 e3@8 e2@8", AJ: "a2@5 e3@3 c4@5 e3@3 a2@8 ~@8", AK: "b2 e3", AL: "f3@5 f3@8 f3@3 e3@16",
  AM: "d3 e3", AN: "a2@5 e3@3 a3@5 e3@3 a2@8 ~@8", AO: "a2@3 ~", AP: "d3@3 ~", AQ: "b2@3 ~", AR: "a3 ab3 f3 e3",
  AS: "a2@5 c3@3 e3@5 a3@3 c4@5 e3@3 c3@5 b2@3", AT: "a2",
})).s("gm_bassoon").gain(0.25)

stack(flute, clarinet, clarinet_soft, french_horn, bassoon)

More by John Williams