Strudelify

Ezio's Family

Jesper Kyd

KeyF majorTempo126 bpm
0:00/0:00
// Ezio's Family — Jesper Kyd
// 126 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 7 "Double Bass" named as a bass, played on acoustic bass (its contrabass patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 12 "Soprano" voice oohs (copy of ch 4 "Violin" violin)
// note: Transcription provider: pdmx. https://musescore.com/score/5097851; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 126 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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 · violin
const violin = note(`<
  ~@36 A B A C D E F@2 A C A B G H I J ~@22 K L K M K L K M N@8 ~@8 K L K M K L K M O@8 ~@12
>`.pickRestart({
  A: "~ a5", B: "d6@3 a5", C: "bb5@3 a5", D: "~ g5", E: "a5@3 g5", F: "[~@2 a5@3 f5 g5 e5]/2", G: "~ bb5", H: "f6@3 d6",
  I: "~ d6", J: "a5@2 f5 e5", K: "d5 f5", L: "g5 a5", M: "g5 f5", N: "d5 f5 d5 a4 d5 f5 d5 a4",
  O: "f5 ~@2 d5 ~@2 f5 ~@2 d5 ~@2 f5 ~@2 d5 ~@2 f5 ~@2 d5 ~@2",
})).s("gm_violin").gain(0.3)

// other · violin · soft notes
const violin_soft = note("<~@90 [d5 f5 d5 a4 d5 f5 d5 a4]!8 ~@28>").s("gm_violin").gain(0.2)

// bass · acoustic bass · "Double Bass"
const bass = note(`<
  ~@12 A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E ~@34 F@2 G@2 H@2 ~@2 I J I K I J
  I K I J I K A@2 B@2 C@2 D E ~@12
>`.pickRestart({
  A: "d2/2", B: "c2/2", C: "bb1/2", D: "a1", E: "g2@2 f2 e2", F: "a1/2", G: "g1/2", H: "d1/2", I: "d2 f2", J: "g2 a2",
  K: "g2 f2",
})).s("gm_acoustic_bass").gain(0.3)

// chords · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel = note("<~@12 A@40 ~@46 A@16 ~@12>".pickRestart({
  A: "[~@8 f4 ~@2 d3@4 ~@20 f4 ~@2 d3 ~@2 f4 ~@2 d3@4 ~@11 [c3,d3]@4 ~@44 [bb2,f3]@4 ~@8 d4@4 ~@8 d4@4 ~@17 f4 ~@2 d3@4 ~@14 d3@7 ~@8 e4@4, d3@6 d3@5 ~@4 d3@6 d3@6 d3@6 d3@5 ~ d3@4 d4@6 [d3,g3]@6 [d3,g3]@3 [g3,d4]@6 [d3,g3]@6 [d3,g3]@6 d3@42 f3@5 a3 d4 g4@5 f3@42 [d4,f4]@9 [a3,d4]@2 g4 d4 a3 e3 [a3,d4]@5, ~ [a3,d4]@6 [a3,d4]@3 [a3,d4]@6 [a3,d4]@6 [a3,d4]@6 [a3,d4]@6 [a3,d4]@3 [a3,d4]@3 [a3,d4]@3 a3@46 [d4,f4] f4@2 [c3,e3]@43 a3 d4 g4@45 f4@10, ~@2 f4@6 ~ f4@8 f4@6 f4@6 f4@6 ~ f4@5 ~ f4@8 [d4,f4]@6 [d4,f4] f4@8 [d4,f4]@6 [d4,f4]@5 g3@5 c3@2 [d4,f4] f4@2 [c3,e3] c3@4 g3@39 a3 f4@13 d3 [a3,d4] f4@4 d3 [a3,d4]@2 f4 [a3,d4]@5 d3 [a3,d4] f4@4 d3 [a3,d4] f4 d3 a3@11 d3@12, ~@48 c3@6 c3@5 ~@4 c3@6 c3@6 c3@2 [d4,f4]@5 [e3,g3]@3 [g3,d4]@3 [e3,g3]@3 d4@5 bb2 [f3,a3] [d4,f4]@4 bb2 [f3,a3] [d4,f4] f4 [a3,d4]@5 bb2 [f3,a3] [d4,f4]@4 bb2 a3 f4@10 bb2@40 d4 f4 a4@21]/8", // Csus2 Bb5 G5 Dm D5 Dm C Dm …
})).s("gm_acoustic_guitar_steel").gain(0.25)

// chords · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel_2 = note(`<
  ~@4 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2
  A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@4 C@2 B@2 C@2
  B@2 C@2 B@2
>`.pickRestart({
  A: "[~@3 a4, d4, ~ f4@3, ~ g4]/2", B: "[~@3 f4, d4, ~ f4@2 ~, ~ g4]/2",
  C: "[~@24 g4@12 ~ a4@11, d4, ~ f4@3, ~@3 g4]/2",
})).s("gm_acoustic_guitar_steel").gain(0.3)

// chords · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel_3 = note("<~@52 [~@7 a4, ~ f5@4 f5@3, ~ d5@2 d5, ~@3 a4@4 ~]!62 ~@12>")
  .s("gm_acoustic_guitar_steel").gain(0.3)

// chords · piano · "Grand Piano"
const piano = note(`<
  A B A C D@8 E@2 F@2 G@2 H I E@2 F@2 G@2 H I J@2 K@2 L@2 M N E@2 F@2 G@2 H I E@2 F@2 G@2 H I ~@14 O P O Q O P O Q O P O
  Q O P O Q O P O Q R@2 S@2 T@2 O Q O P O Q U@2 F@2 G@2 H I E@2 F@2 G@2 H I ~@12
>`.pickRestart({
  A: "~@7 f3, [d2,d5]@4 a3 d4 a3@2, ~ a2@7, ~ d3@3, ~@3 f3 f5@4", // D
  B: "~@7 f3, [d2,g5]@4 a3 d4 a3@2, ~ a2@7, ~ d3@3, ~@3 f3 a5@4", // G5
  C: "~@7 f3, [d2,g5]@4 a3 d4 a3@2, ~ a2@7, ~ d3@3, ~@3 f3 f5@4", // G5
  D: "[~@7 f3 ~@7 f3, d6@11 f3 a3 d4 a3@2, d2@3 f3 a3 d4 a3@2 ~@2 d3@6, ~ a2@7 d2@8, ~@2 d3@6 ~ a2@7]/2",
  E: "[~@12 [a3,d4,f4]@11 ~@13 [a3,d4,f4]@11 ~, [d1,d2]@23 ~]/2", // Dm D
  F: "[~@12 [c4,d4,f4]@11 ~@13 [c4,d4,f4]@11 ~, [c1,c2]@23 ~]/2", // Dm7 C
  G: "[~@12 [bb3,d4,f4]@11 ~@13 [bb3,d4,f4]@11 ~, [bb0,bb1]@23 ~]/2", H: "~@12 [a3,d4,f4]@11 ~, [a0,a1]@23 ~",
  I: "[a1,a2]@11 ~ [g1,g2]@6 [f1,f2]@6", // A G F
  J: "[~@3 d6 ~@3 d6, [d1,d2], d6@3 ~@2 f6@3, ~ e6@3 g6@4, ~ [a3,d4,f4,f6] ~ [a3,d4,f4,e6]]/2", // D Dm
  K: "[~@3 d6 ~@3 f6, [c1,c2], d6@3 ~@2 f6@2 ~, ~ e6@3 g6@4, ~ [c4,d4,f4,f6] ~ [c4,d4,f4,e6]]/2", // C Dm7
  L: "[~@3 d6 ~@3 d6, [bb0,bb1], d6@3 ~@2 f6@3, ~ e6@3 g6@4, ~ [bb3,d4,f4,f6] ~ [bb3,d4,f4,e6]]/2", // Bb
  M: "~@3 d6, [a0,a1], d6@3 ~, ~ e6@3, ~ [a3,d4,f4,f6]", N: "~@3 [f1,f2,f6], [a1,a2,g6], ~ d6@3, ~ [g1,g2,e6]",
  O: "~@7 f3, [d2,d5,d6]@4 a3 d4 a3@2, ~ a2@7, ~ d3@3, ~@3 f3 [f5,f6]@4", // D F
  P: "~@7 f3, [d2,g5,g6]@4 a3 d4 a3@2, ~ a2@7, ~ d3@3, ~@3 f3 [a5,a6]@4", // G5 A
  Q: "~@7 f3, [d2,g5,g6]@4 a3 d4 a3@2, ~ a2@7, ~ d3@3, ~@3 f3 [f5,f6]@4", // G5 F
  R: "[a2 ~@6 f3 ~@7 f3, a1@11 f3 [a3,a5,a6] d4 a3@2, [d5,d6]@3 f3 [a3,f5,f6] d4 a3@2 ~@2 d3@6, ~ a2@8 a2@7, ~ d3@3 [d2,g5,g6]@4]/2", // A D Dm G5
  S: "[~@7 f3 ~@7 f3, [g1,g2]@11 f3 [a3,f5,f6] d4 a3@2, [d5,d6]@3 f3 [a3,f5,f6] d4 a3@2 [g5,g6]@8, ~ a2@7 ~ a2@7, ~ d3@3 ~ d3@3]/2", // G Dm D Dm G
  T: "[~@7 f3 ~@7 f3, [d1,d2]@11 f3 [a3,a5,a6] d4 a3@2, [d5,d6]@3 f3 [a3,f5,f6] d4 a3@2 [g5,g6]@8, ~ a2@7 ~ a2@7, ~ d3@3 ~ d3@3]/2", // D A D Dm G
  U: "[~@12 [a3,d4,f4]@12 ~@12 [a3,d4,f4]@11 ~, [d1,d2]@23 ~]/2", // Dm D
})).s("gm_piano").gain(0.3)

stack(violin, violin_soft, bass, acoustic_guitar_steel, acoustic_guitar_steel_2, acoustic_guitar_steel_3, piano)