Strudelify

Dragon Age: Inquisition - Main Theme

Trevor Morris

KeyD minorTempo96 bpm
0:00/0:00
// Dragon Age: Inquisition - Main Theme — Trevor Morris
// 96 bpm, 6/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (6/4 at bar 1, 3/4 at bar 29, 6/4 at bar 29, 3/4 at bar 33, ...) are rendered on a constant 6/4 grid of one bar per cycle
// note: ch 1 "Violins" named as a string part, played on violin (its french horn patch is not one); ch 4 "Violas" named as a string part, played on string ensemble 1 (its choir aahs patch is not one); ch 11 "Double Bass" named as a bass, played on acoustic bass (its contrabass patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5136999; 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(96/6)

// 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 · violin · "Violins"
const violin = note("<~@4 A@2 B@3 C@5 ~@4 D E F G H I J K L M@2 N O@2 P Q R@2 S@3 T U V@3 W@2>".pickRestart({
  A: "[~@22 d4@6 a4@13 d4@7]/2", B: "[f4@7 e4@6 c4@20 d4@7 a4@13 a4@3 b4@3 ~ c5@6 d5@6]/3",
  C: "[~ g4@6 a4@13 ~ d4@6 a4@13 ~ d4@6 f4@7 e4@6 c4@20 a3@7 d4@33]/5",
  D: "d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2",
  E: "d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 a4 f4 e4", F: "[bb2,bb4]@2 [g2,g4] [d3,d5]@2 [bb2,bb4]",
  G: "[f3,f5]@2 [d3,d5] [g3,e5]@3", H: "[d3,d5]@2 [bb2,bb4] [f3,f5]@2 [d3,d5]", I: "[e3,e5]@2 [d3,d5] [bb2,bb4]@3",
  J: "bb4 a4 bb4@2 g4@2 d5 c5 d5@2 bb4@2, bb2 d3", K: "f5 e5 f5@2 d5@2 [g3,g5]@3 [e3,e5]@3, f3 ~",
  L: "d5 c5 d5@2 bb4@2 f5 e5 f5@2 d5@2, d3 f3", M: "[e3@12 ~@18 a4 ~ a4 ~@15, e5@7 ~@5, ~ e2@2 ~]/2",
  N: "~@12 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2",
  O: "[d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2, ~ [d2,d3]@2 ~]/2", // D
  P: "d4 ~@2 d4 ~@2 d4 ~@2 a4 f4 e4 d4 ~@11", Q: "d4@2 a4@4 a4 b4", R: "[c5 b4 a4@3 ~@3]/2",
  S: "[d5@2 f5@2 e5@2 c5@6 d5@2 a5@4 a5 b5 c6@2 d6@2]/3", T: "a5", U: "d5 a5@2 d3",
  V: "[f3 e3 c3@3 [a2,a5] [d3,d6]@6]/3", W: "[~@4 [f2,a2,d3]@6 ~@15 d3@11 ~@12, ~ d2@8 ~@3, ~@2 [f2,a2] ~]/2",
})).s("gm_violin").gain(0.3)

// other · cello · "Violoncello"
const cello = note("<~@4 A@2 B@3 C@5 ~@2 D@3 E F G H I J K L M@2 N@3 O ~ P D@9 ~@2>".pickRestart({
  A: "[~@22 d2@6 a2@13 d2@7]/2", B: "[f2@7 e2@6 c2@20 d2@7 a2@13 a2@3 b2@3 ~ c3@6 d3@6]/3",
  C: "[~ a2@20 d2@6 a2@13 ~ d2@6 f2@7 e2@6 c2@20 a2@7 d3@33]/5",
  D: "d3 e3 f3 d3 e3 f3 d3 e3 f3 d3 e3 g3 d3 e3 f3 d3 e3 f3 d3 e3 f3 g3 f3 e3",
  E: "d3 e3 f3 d3 e3 f3 d3 e3 f3 d3 e3 g3 d3 e3 f3 d3 e3 f3 d3 e3 f3 a3 f3 e3", F: "bb2@2 g2 d3@2 bb2",
  G: "f3@2 d3 g3@3", H: "d3@2 bb2 f3@2 d3", I: "e3@2 d3 bb2@3", J: "bb2 d3", K: "f3@2 g3 e3", L: "d3 f3",
  M: "[e3@12 e2@24 d3 e3 f3 d3 e3 f3 d3 e3 f3 d3 e3 g3]/2",
  N: "d3 e3 f3 d3 e3 f3 d3 e3 f3 g3 f3 e3 d3 e3 f3 d3 e3 f3 d3 e3 f3 d3 e3 g3",
  O: "d3 e3 f3 d3 e3 f3 d3 e3 f3 a3 f3 e3 d3 ~@11", P: "~@12 d3 e3 f3 d3 e3 f3 d3 e3 f3 g3 f3 e3",
})).s("gm_cello").gain(0.3)

// bass · acoustic bass · "Double Bass"
const bass = note("<~@8 A B ~@2 C@2 ~@2 D@4 E F G H E F G I@2 D@3 J K L@5 M K N@3 O@2>".pickRestart({
  A: "~ a1", B: "~ g1@20 ~@3", C: "[~@5 d2@11]/2", D: "d2@2 ~ d2@2 ~ d2@2 ~@4 d2@2 ~ d2@2 ~ d2@2 ~@4", E: "g1 bb1",
  F: "d2 e2", G: "bb1 d2", H: "c2 g1", I: "[c2@12 a1@24 d2@2 ~ d2@2 ~ d2@2 ~@4]/2",
  J: "d2@2 ~ d2@2 ~ d2@2 ~@4 d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~", K: "d2", L: "[a2@2 d2@8 c2 a1@3 d2@4 a1@2]/5", M: "g1",
  N: "[c2@2 a1@3 a1 bb1@6]/3", O: "[~ [d1,d2]@8 ~@3]/2",
})).s("gm_acoustic_bass").gain(0.3)

// bass · acoustic bass · "Double Bass" · soft notes
const bass_soft = note("<A@8 ~ B@4 ~@33>".pickRestart({
  A: "[~@3 d1@29]/8", B: "[~@21 d1@26 f1@7 e1@6 c1@20 a1@7 ~@9]/4",
})).s("gm_acoustic_bass").gain(0.15)

// other · trumpet · "C Trumpet"
const trumpet = note("<~@10 A@3 ~@7 B C D E F G H I@2 ~@6 J K@2 ~@2 L M@3 ~@2>".pickRestart({
  A: "[~@17 d4@6 f4@7 e4@6 c4@20 ~@16]/3", B: "bb3@2 g3 d4@2 bb3", C: "f4@4 d4@2 g4@3 e4@3", D: "d4@2 bb3 f4@2 d4",
  E: "e4@2 d4 bb3@3", F: "bb3 a3 bb3@2 g3@2 d4 c4 d4@2 bb3@2", G: "f4 e4 f4@2 d4@2 g4@3 e4@3",
  H: "d4 c4 d4@2 bb3@2 f4 e4 f4@2 d4@2", I: "[e4@3 ~]/2", J: "~ d4 a4@2", K: "[d4 f4 e4 c4@3 ~@2]/2", L: "~@3 d4",
  M: "[f4 e4 c4@3 a3 d4@6]/3",
})).s("gm_trumpet").gain(0.4)

// chords · trombone
const trombone = note("<~@20 A B C D A B C E@2 ~ F@2 ~@9 G ~@2 H@2>".pickRestart({
  A: "g3 bb3", B: "d4 e4", C: "bb3 d4", D: "c4 g3", E: "[c4 a3@2 ~]/2", F: "[~ [f2,a2,d3]@2 ~]/2",
  G: "[d3,a3] [c3,g3] ~@2", H: "[~@4 [f2,a2,d3]@6 ~@15 d3@11 ~@12, ~ d2@8 ~@3, ~@2 [f2,a2] ~]/2",
})).s("gm_trombone").gain(0.25)

// chords · trombone · soft notes
const trombone_soft = note("<~@40 A B@3 ~@2>".pickRestart({
  A: "~@3 [a2,f3]", B: "[~@2 [a2,e3]@3 [e2,c3] [bb2,f3]@6]/3",
})).s("gm_trombone").gain(0.15)

// bass · tuba
const bass_2 = note("<~@20 A B C D A B C E@2 ~ F@2 ~@9 G ~@4>".pickRestart({
  A: "g2 bb2", B: "d3 e3", C: "bb2 d3", D: "c3 g2", E: "[c3 a2@2 ~]/2", F: "[~ [d2,d3]@2 ~]/2", G: "f2 e2 ~@2",
})).s("gm_tuba").gain(0.25)

// bass · tuba · soft notes
const bass_soft_2 = note("<~@40 A B@3 C@2>".pickRestart({
  A: "~@3 d2", B: "[~@2 c2@3 a2 bb2@6]/3", C: "[~ [d1,d2]@8 ~@3]/2",
})).s("gm_tuba").gain(0.15)

// drums · kick
const kick = s("bd").struct("<~@4 A ~@2 B ~ C ~@2 D E F@14 G@4 H F@11 E I>".pickRestart({
  A: "~@9 x!2 ~", B: "~@3 x ~@4", C: "~@17 x ~ x ~@4", D: "~@8 x ~@6 x ~@6 x ~", E: "~@4 x!20",
  F: "x ~ x!5 ~ x!5 ~ x!5 ~ x ~ x ~", G: "x ~ x!5 ~ x ~ x ~ x ~ x!5 ~ x!4", H: "x ~ x!5 ~ x ~ x ~ x ~ x!5 ~ x ~ x ~",
  I: "x!13 ~@11",
})).gain(0.25)

// drums · snare
const snare = s("sd").struct("<~@22 [~@9 x!3]!2 ~@22>").gain(0.15)

// drums · tambourine
const tambourine = s("tb").struct("<~@20 [~ x ~ x]!24 ~@2>").gain(0.15)

// drums · ride
const ride = s("rd").struct("<~@14 A ~@3 A ~ A ~@12 A ~@12>".pickRestart({
  A: "x",
})).gain(0.3)

// drums · shaker
const shaker = s("sh").struct("<~@18 [~ x ~ x]!2 ~@26>").gain(0.15)

// drums · bell tree
const bell_tree = s("marktrees:0").struct("<~@29 [~ x]!2 ~ [~@7 x ~@16] ~@13>").gain(0.89)

stack(
  violin, cello, bass, bass_soft, trumpet, trombone, trombone_soft, bass_2, bass_soft_2, kick, snare, tambourine, ride,
  shaker, bell_tree
)