Strudelify

Game Of Thrones Theme

2016

KeyE♭ majorTempo165 bpm
0:00/0:00
// Game Of Thrones Theme — 2016
// 165 bpm, 6/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/2896106; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 46 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(165/6)

// 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 · french horn · "Violonchelo"
const french_horn = note("<~@3 A B C D ~ E F G ~ H I J ~ K L M ~@9 N O P Q R S T@2 N O P Q R U V@2 ~@2>".pickRestart({
  A: "~@10 e3 f3", B: "g3 c3", C: "eb3 f3 g3@4 c3@4 eb3 f3", D: "d3", E: "f3 bb2", F: "eb3 d3 f3@4 bb2@4 eb3 d3",
  G: "c3", H: "[c3,g3] c3", I: "[c3,eb3] f3 [c3,g3]@4 c3@4 eb3 f3", J: "[bb2,d3]", K: "[bb2,f3] bb2",
  L: "[bb2,eb3] d3 [bb2,f3]@4 bb2@4 eb3 d3", M: "[g2,c3]", N: "c5", O: "bb4", P: "ab4 c4@5", Q: "g4", R: "eb4",
  S: "[c4,eb4]@2 eb4 [d4,f4]@2 f4", T: "g4/2", U: "eb4 c4 eb4 d4 bb3 d4",
  V: "c4@2 ~@2 g3@2 ~@2 ab3 ~ bb3 ~ c4@2 ~@2 g3@2 ~@2 ab3 ~ bb3 ~",
})).s("gm_french_horn").gain(0.4)

// other · harpsichord · "Violín"
const harpsichord = note(`<
  A@2 B@2 ~@2 C D ~@2 E F ~@2 C D ~@2 G H I J K@2 L M N@2 ~@5 O P@2 Q R S T U V W X Y Z
>`.pickRestart({
  A: "[g4,c5]@2 ~@2 c4@2 ~@2 eb4 ~ f4 ~ g4@2 ~@2 c4@2 ~@2 eb4 ~ f4 ~", // C5
  B: "[c4,g4]@2 ~@2 c4@2 ~@2 e4 ~ f4 ~ g4@2 ~@2 c4@2 ~@2 e4 ~ f4 ~", // C5
  C: "[bb3,d4]@2 ~@2 g3@2 ~@2 bb3 ~ c4 ~ d4@2 ~@2 g3@2 ~@2 bb3 ~ c4 ~", // Bb
  D: "d4@2 ~@2 g3@2 ~@2 bb3 ~ c4 ~ d4@2 ~@2 g3@2 ~@2 bb3 ~ c4 ~",
  E: "[ab3,c4]@2 ~@2 f3@2 ~@2 ab3 ~ bb3 ~ c4@2 ~@2 f3@2 ~@2 ab3 ~ bb3 ~", // Ab
  F: "c4@2 ~@2 f3@2 ~@2 ab3 ~ bb3 ~ c4@2 ~@2 f3@2 ~@2 ab3 ~ bb3 ~",
  G: "[g3,c4]@2 ~@2 g3@2 ~@2 ab3 ~ bb3 ~ c4@2 ~@2 g3@2 ~@2 ab3 ~ bb3 ~", // C5
  H: "c4@2 ~@2 g3@2 ~@2 ab3 ~ bb3 ~ c4@2 ~@2 g3@2 ~@2 ab3 ~ bb3 ~", I: "[eb5,g5] [g4,c5]",
  J: "eb5 f5 g5@4 [g4,c5]@4 eb5 f5", K: "[bb4,d5]/2", L: "[bb4,f5] [f4,bb4]", M: "[bb4,d5] [bb4,eb5] [bb4,d5] [f4,bb4]",
  N: "[g4,c5]/2", O: "eb4@2 eb4 f4@2 f4", P: "g4/2", Q: "[c4,eb4,ab4,c5]", R: "[bb3,eb4,bb4]", S: "[ab3,f4,ab4]",
  T: "[g3,c4,eb4,g4]", U: "[eb3,ab3,eb4]", V: "[c5,eb5]@2 eb5 [bb4,d5]@2 d5", W: "c5 ~@11",
  X: "c5@2 ~@2 g4@2 ~@2 ab4 ~ bb4 ~ c5@2 ~@2 g4@2 ~@2 ab4 ~ bb4 ~", Y: "c5@2 g5@2 ab5 bb5 c6@2 g5@2 ab5 bb5",
  Z: "c6@2 g5@2 ab5 bb5 c6@6",
})).s("gm_harpsichord").gain(0.3)

// chords · string ensemble 1 · "Violonchelo"
const string_ensemble_1 = note(`<
  A B C@2 D@2 E@2 F G H@2 I@2 J K L@2 I@2 M@2 N@2 O@2 P@2 Q R S T U V W@2 X Y Z AA AB AC AA@2 ~@2
>`.pickRestart({
  A: "c3", B: "c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2", C: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3@2 ~@2",
  D: "[c3,g3]@3 ~@3 [c3,g3]@2 ~@4 [c3,g3]@3 ~@3 [c3,g3]@2 ~@4", // C5
  E: "[g2,d3]@3 ~@3 [g2,d3]@2 ~@4 [g2,d3]@3 ~@3 [g2,d3]@2 ~@4", // G5
  F: "[bb2,f3]@3 ~@3 [bb2,f3]@2 ~@4 [bb2,f3]@3 ~@3 [bb2,f3]@2 ~@4", // Bb5
  G: "[bb2,f3]@4 ~@2 [bb2,f3]@3 ~@3 [bb2,f3]@4 ~@2 [bb2,f3]@3 ~@3", // Bb5
  H: "[f2,c3]@3 ~@3 [f2,c3]@2 ~@4 [f2,c3]@3 ~@3 [f2,c3]@2 ~@4", // F5
  I: "[g2,c3]@2 ~@4 [g2,c3] ~ [g2,c3]@2 ~@2 [g2,c3]@2 ~@4 [g2,c3] ~ [g2,c3]@2 ~@2", // C5
  J: "[g2,d3,g3]@2 ~@4 [g2,d3,g3] ~ [g2,d3,g3]@2 ~@2 [g2,d3]@2 ~@4 [g2,d3] ~ [g2,d3]@4", // G5
  K: "[g2,d3]@2 ~@4 [g2,d3] ~ [g2,d3]@2 ~@2 [g2,d3]@2 ~@4 [g2,d3] ~ [g2,d3]@4", // G5
  L: "[bb2,f3]@2 ~@4 [bb2,f3] ~ [bb2,f3]@2 ~@2 [bb2,f3]@2 ~@4 [bb2,f3] ~ [bb2,f3]@2 ~@2", // Bb5
  M: "c2 g2 c3 eb3 g3@2 c2 g2 c3 eb3 g3@2", N: "g2 d3 g3 d3 g3@2 g2 d3 g3 d3 g3@2",
  O: "bb2 f3 bb3 f3 bb3@2 bb2 f3 bb3 f3 bb3@2", P: "c2 g2 c3 g2 c3@2 c2 g2 c3 g2 c3@2",
  Q: "c4@2 ~@2 eb3@2 ~@2 ab3 ~ bb3 ~ c4@2 ~@2 eb3@2 ~@2 ab3 ~ c4 ~",
  R: "bb3@2 ~@2 eb3@2 ~@2 g3 ~ ab3 ~ bb3@2 ~@2 eb3@2 ~@2 g3 ~ bb3 ~",
  S: "ab3@2 ~@2 c3@2 ~@2 f3 ~ g3 ~ ab3@2 ~@2 c3@2 ~@2 f3 ~ ab3 ~",
  T: "g3@2 ~@2 c3@2 ~@2 eb3 ~ f3 ~ g3@2 ~@2 c3@2 ~@2 eb3 ~ f3 ~",
  U: "eb3@2 ~@2 ab2@2 ~@2 c3 ~ d3 ~ eb3@2 ~@2 ab2@2 ~@2 c3 ~ d3 ~", V: "eb3 c3 eb3 f3 d3 f3",
  W: "c3@2 ~@4 c3 ~ c3@2 ~@2 c3@2 ~@4 c3 ~ c3@2 ~@2", X: "ab3@2 ~@4 ab3 ~ ab3 ~ ab3 ~ ab3@2 ~@4 ab3 ~ ab3 ~ ab3 ~",
  Y: "eb3@2 ~@4 eb3 ~ eb3 ~ eb3 ~ eb3@2 ~@4 eb3 ~ eb3 ~ eb3 ~", Z: "f3@2 ~@4 f3 ~ f3 ~ f3 ~ f3@2 ~@4 f3 ~ f3 ~ f3 ~",
  AA: "c3@2 ~@4 c3 ~ c3 ~ c3 ~ c3@2 ~@4 c3 ~ c3 ~ c3 ~",
  AB: "[ab2,eb3]@2 ~@4 [ab2,eb3] ~ [ab2,eb3]@2 ~@2 [ab2,eb3]@2 ~@4 [ab2,eb3] ~ [ab2,eb3]@2 ~@2", // Ab5
  AC: "[f2,c3]@2 ~@4 [f2,c3] ~ [f2,c3]@2 ~@2 [g2,d3]@2 ~@4 [g2,d3] ~ [g2,d3]@2 ~@2", // F5 G5
})).s("gm_string_ensemble_1").gain(0.39)

// chords · string ensemble 1 · "Contrabajo"
const string_ensemble_1_2 = note(`<
  A B C@2 ~@2 D@2 ~@2 E@2 F@2 G H I@2 F@2 A@2 J@2 K@2 A@2 L M N O P Q R@2 S T U V W X V@2 ~@2
>`.pickRestart({
  A: "c2", B: "c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2", C: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2 ~@2",
  D: "[g1,d2]", E: "[f1,c2]", F: "[g1,c2]@2 ~@4 [g1,c2] ~ [g1,c2]@2 ~@2 [g1,c2]@2 ~@4 [g1,c2] ~ [g1,c2]@2 ~@2",
  G: "[g1,d2,g2]@2 ~@4 [g1,d2,g2] ~ [g1,d2,g2]@2 ~@2 [g1,d2]@2 ~@4 [g1,d2] ~ [g1,d2]@4", // G5
  H: "[g1,d2]@2 ~@4 [g1,d2] ~ [g1,d2]@2 ~@2 [g1,d2]@2 ~@4 [g1,d2] ~ [g1,d2]@4", // G5
  I: "[bb1,f2]@2 ~@4 [bb1,f2] ~ [bb1,f2]@2 ~@2 [bb1,f2]@2 ~@4 [bb1,f2] ~ [bb1,f2]@2 ~@2", J: "g1", K: "f1",
  L: "[ab2,eb3] ~@2 [ab2,eb3] ~@2 [ab2,eb3] ~@2 [ab2,eb3] ~@2", // Ab5
  M: "[eb2,bb2] ~@2 [eb2,bb2] ~@2 [eb2,bb2] ~@2 [eb2,bb2] ~@2", N: "[f2,c3] ~@2 [f2,c3] ~@2 [f2,c3] ~@2 [f2,c3] ~@2",
  O: "[c2,g2] ~@2 [c2,g2] ~@2 [c2,g2] ~@2 [c2,g2] ~@2", P: "[ab1,eb2] ~@2 [ab1,eb2] ~@2 [ab1,eb2] ~@2 [ab1,eb2] ~@2",
  Q: "[f2,c3] ~@2 [f2,c3] ~@2 [g2,d3] ~@2 [g2,d3] ~@2", // F5 G5
  R: "[c2,g2]@2 ~@4 [c2,g2] ~ [c2,g2]@2 ~@2 [c2,g2]@2 ~@4 [c2,g2] ~ [c2,g2]@2 ~@2", // C5
  S: "[ab2,eb3]@2 ~@4 [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3]@2 ~@4 [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~", // Ab5
  T: "[eb2,bb2]@2 ~@4 [eb2,bb2] ~ [eb2,bb2] ~ [eb2,bb2] ~ [eb2,bb2]@2 ~@4 [eb2,bb2] ~ [eb2,bb2] ~ [eb2,bb2] ~", // Eb5
  U: "[f2,c3]@2 ~@4 [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3]@2 ~@4 [f2,c3] ~ [f2,c3] ~ [f2,c3] ~", // F5
  V: "[c2,g2]@2 ~@4 [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2]@2 ~@4 [c2,g2] ~ [c2,g2] ~ [c2,g2] ~", // C5
  W: "[ab1,eb2]@2 ~@4 [ab1,eb2] ~ [ab1,eb2]@2 ~@2 [ab1,eb2]@2 ~@4 [ab1,eb2] ~ [ab1,eb2]@2 ~@2", // Ab5
  X: "[f1,c2]@2 ~@4 [f1,c2] ~ [f1,c2]@2 ~@2 [g1,d2]@2 ~@4 [g1,d2] ~ [g1,d2]@2 ~@2", // F5 G5
})).s("gm_string_ensemble_1").gain(0.39)

// other · timpani · "Timbal de concierto"
const timpani = note(`<
  A B A B C@2 D E F@2 G H C@2 D E F@2 G H C@2 D E F@2 G H G I G J K L C J G I G J K M G@2 ~@2
>`.pickRestart({
  A: "[g2,g3] ~@2 [g2,g3] ~@2", B: "[g2,g3]@2 ~@4 [g2,g3]@2 ~@2 [g2,g3]!2",
  C: "[g2,g3]@2 ~@2 [g2,g3]!2 [g2,g3]@2 ~@2 [g2,g3]!2", D: "[d2,d3]@2 ~@2 [d2,d3]!2 [d2,d3]@2 ~@2 [d2,d3]!2",
  E: "[d2,d3]@2 ~@2 [d2,d3]!2 [d2,d3]@2 [d2,d3]@2 [d2,d3]@2", F: "[f2,f3]@2 ~@2 [f2,f3]!2 [f2,f3]@2 ~@2 [f2,f3]!2",
  G: "[c3,c4]@2 ~@2 [c3,c4]!2 [c3,c4]@2 ~@2 [c3,c4]!2", H: "[c3,c4]@2 ~@2 [c3,c4]!2 [c3,c4]@2 [c3,c4]@2 [c3,c4]@2",
  I: "[bb2,bb3]@2 ~@2 [bb2,bb3]!2 [bb2,bb3]@2 ~@2 [bb2,bb3]!2", // Bb
  J: "[g2,g3]@2 ~@2 [g2,g3]!2 [g2,g3]@2 [g2,g3]@2 [g2,g3]@2", // G
  K: "[ab2,ab3]@2 ~@2 [ab2,ab3]!2 [ab2,ab3]@2 ~@2 [ab2,ab3]!2", L: "[c3,c4]@2 ~@2 [c3,c4]!2 [f2,f3]@2 ~@2 [f2,f3]!2",
  M: "[c3,c4]@2 ~@2 [c3,c4]!2 [d2,d3]@2 ~@2 [d2,d3]!2", // C D
})).s("gm_timpani").gain(0.72)

// drums · kick
const kick = s("bd").struct("<A@7 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@4 ~@2>".pickRestart({
  A: "x ~@2 x!2 ~ x ~@2 x!2 ~", B: "x ~@2 x!2 ~ x ~ x ~ x ~",
})).gain(0.22)

stack(french_horn, harpsichord, string_ensemble_1, string_ensemble_1_2, timpani, kick)