Strudelify

On My Father's Wings

The Corrs

KeyG♭ majorTempo132 bpm
0:00/0:00
// On My Father's Wings — The Corrs
// 132 bpm, 4/4, key Gb major. 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 (4/4 at bar 1, 2/4 at bar 4, 4/4 at bar 5, 2/4 at bar 22, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 3 "Bass" named as a bass, played on electric bass finger (its contrabass patch is not one)
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(132/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 · string ensemble 1 · "Accomp"
const string_ensemble_1 = note(`<
  A@8 B@2 C@7 D@4 E@2 F@2 E@2 G H I@2 J K L M N@2 O@2 P Q R S T U@2 V@2 U@2 W X Y Z AA AB AC AD AE AF AE AG AH AI@2 AJ@3
  AK@2 AL@2 AM AN@4 AO@2 AP@4 AQ@2
>`.pickRestart({
  A: "[~@5 f5@3 ~ gb5@10 f5@3 eb5@13 ~@4 eb5@3 db5@5 eb5@2 bb5@3 ab5@7 f5@3 ~ eb5@13 [gb3,bb3,eb4]@7 [ab3,d4,f4]@7 gb4@7 bb4@7 [db4,bb4]@14 [b3,ab4]@10, ~@45 [bb3,eb4]@7 ~@12]/8", // Ebm Ddim Gb E Eb5
  B: "[~@4 [gb3,bb3,eb4]@7 [ab3,b3,d4,f4]@7 gb4@7 bb4@7, ~@9 [bb3,eb4]@7]/2", // Ebm Abdim Eb5
  C: "[[db4,eb4,gb4,db5]@14 [b3,eb4,gb4,b4]@14 b4@3 ~ db5@3 ~@7 gb4@7 f4@7 [g4,bb4,eb5]@7 [f4,bb4,d5,f5]@7 [g4,bb4,eb5,g5]@14 [eb4,g4,c5]@7 [f4,bb4,d5]@7 [g4,c5,eb5]@14, ~ d4 ~@2, ~@2 ab4 ~@5, ~@5 bb4@3 ~@8]/7", // Ebm7 B Eb Bb Eb Cm Bb Cm
  D: "[ab4@3 ~ g4@3 [bb3,d4,f4]@7 d4@2 eb4@2 ~ d4@2 [c4,eb4]@2 f4@2 ~ g4@2 ab4@3 ~@2 f4@2 eb4@3 ~ g4@3 eb4@7 d4@7 ~@2 bb3@2 eb4@2 g4@2, [c4,eb4]@7 ~@7 ab3@7 g3@7 [ab3,db4]@14 [ab3,f4]@14 ~@8, ~@9 f4 ~@6 g4 ~@15]/4", // Bb Cm Db5 Db
  E: "[bb4@3 ab4@2 bb4@2 g4@2 eb4@2 bb3@3 ~ bb3]/2", F: "[c4@2 c4 d4@2 f4@2 g4@2 eb4@2 bb3@3 eb4 g4]/2",
  G: "c4@2 c4 d4@3 ~ c4", H: "d4@2 f4 eb4@2 c4!2 d4", I: "[[c4,eb4] g4@2 [bb3,f4]@7 f4 g4 ab4 bb4@3]/2",
  J: "[bb3,eb4,g4,bb4]@3 [bb3,d4,f4]@4 ab4", K: "[bb3,eb4,g4] ab4 bb4 [g3,bb3,eb4]@3 eb5 d5",
  L: "[eb4,ab4,c5]@3 [d4,f4,bb4]@4 ab4", M: "[eb4,g4] ab4 bb4 [g3,bb3,eb4]@4 bb3",
  N: "[[g3,bb3,eb4]@2 eb4 [bb3,d4,f4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@7 ~ bb3]/2", // Eb Bb Eb
  O: "[[eb3,g3,c4]@2 c4 [g3,b3,d4]@2 [g3,d4,f4]@2 [g3,c4,eb4]@7 ~ bb3]/2", P: "[eb3,ab3,c4]@2 c4 [f3,bb3,d4]@4 c4",
  Q: "[f3,bb3,d4]@4 f4@2 [g3,c4,eb4]@5 f4@2 g4@3", R: "ab4@3 g4@2 f4@3 eb4@3 f4@2 g4@3, [ab3,db4]!2",
  S: "[ab3,eb4,f4]@7 eb4", T: "[d4,f4] [eb4,g4] [f4,ab4] [ab4,c5]",
  U: "[[bb3,eb4,g4,bb4]@3 [c4,eb4,ab4]@2 bb4@2 [bb3,eb4,g4]@2 eb4@2 [g3,bb3]@3 ~ bb3]/2", // Eb Ab Eb Gm
  V: "[[eb3,ab3,c4]@2 c4 [f3,bb3,d4]@2 f4@2 [bb3,eb4,g4]@2 eb4@2 [g3,bb3]@3 eb4 g4]/2", // Ab Bb Eb Gm
  W: "[eb3,ab3,c4]@2 c4 [f3,bb3,d4]@3 ~ c4", X: "[f3,bb3,d4]@2 f4 [g3,c4,eb4]@2 c4!2 d4",
  Y: "[g3,c4,eb4] g4@2 [f3,bb3,d4,f4]@5", Z: "[f3,bb3]@2 f4 g4 ab4@2 bb4@2", AA: "[bb3,eb4,g4,bb4]@3 [ab3,c4,f4]@4 ab4",
  AB: "[bb3,eb4,g4] ab4 bb4 [ab3,c4,f4]@4 ab4", AC: "[bb3,eb4,g4] ab4 bb4 [ab3,c4,f4]@2 bb4!2 ab4",
  AD: "[bb3,eb4,g4] ab4 bb4 [g3,bb3,eb4]@5", AE: "bb4@3 ab4@5", AF: "~@3 f4@2 g4@3 ab4@3 ab4@2 g4@3",
  AG: "~@3 f4@2 g4@3 ab4@3 bb4@2 ab4@3", AH: "[ab3,eb4,g4]@3 f4 [ab3,db4,f4]@4",
  AI: "[[f3,ab3,d4]@9 f4@3 g4@3 ab4@3 [e4,g4,c5]@8 g3@3 d4@3]/2", // Ddim C
  AJ: "[eb4@3 [bb3,d4,f4]@9 [d4,f4,c5]@9 [c4,f4,a4,c5]@6 [d4,f4,bb4]@4 c5@4 [c4,f4,a4]@4 f4@4 [a3,c4]@5]/3", // Bb Dm7 F Bb F Am
  AK: "[~@3 c4@2 [f3,bb3,d4]@4 d4@2 [g3,c4,e4]@4 g4@4 [c4,f4,a4]@4 f4@4 [a3,c4]@5]/2", // Bb C F Am
  AL: "[~ f4@2 a4@2 [c4,f4,a4,c5]@6 [d4,f4,bb4]@4 c5@4 [c4,f4,a4]@4 f4@4 [a3,c4]@5]/2", // F Bb F Am
  AM: "~@3 c4@2 [f3,bb3,d4]@4 d4@2 [g3,c4,e4]@5", // Bb C
  AN: "[~@3 d4@2 [g3,c4,e4]@4 g4@2 [a3,d4,f4]@4 d4@2 d4@2 e4@2 [a3,d4,f4]@2 a4@4 [g3,c4,e4,g4]@16 bb3@4 a3@4 g3@2 ~@2 bb4@3 a4@3 bb4@3]/4", // C Dm C
  AO: "[~ a4@4 [c4,f4,a4]@6 ~@8 bb4@2 [c4,f4,a4]@2 bb4@2 c5@2 [a3,c4,f4]@5, ~@5 c5@14 ~@13, ~@11 [bb3,d4,f4]@10 ~@11]/2", // F Bb
  AP: "[~ f5@2 e5@2 [f4,bb4,d5]@6 [e4,g4,c5]@8 bb4@2 [c4,f4,a4]@2 bb4@2 c5@2 [a3,c4,f4]@5]/2", // Bb C F
  AQ: "[~ f5@2 e5@2 [f4,a4,c5]@16 ~@11]/2", // F
})).s("gm_string_ensemble_1").gain(0.14)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A@3 B@5 C@2 D@7 E F@3 G H I H G H I J K L M N M N O P Q P R S T U V W@2 X W@3 X Y Z@2 W@4 AA@2 AB@2 AC AD AE@8 AF@4
  AG@7 AH@2
>`.pickRestart({
  A: "[~@22 bb4@13 ~@7 bb4@6, ~@3 [eb4,gb4]@9 [eb4,f4]@4]/3", // Ebm Ebsus2
  B: "[~@8 eb4@7 [ab3,bb3,eb4]@13 eb3@7 eb3@7 eb3@14 [eb3,ab3]@7 eb3@7 [ab2,eb3]@10, ~ [ab3,b3]@13 ~@66]/5", // Absus2 Ab5 Abm
  C: "[~@4 eb3@7 eb3@7 eb3@14]/2", D: "[[b2,gb3]@4 [bb2,ab3]@4 [eb3,bb3]!2 [eb3,bb3]@2 c4 g3 c3@2]/7",
  E: "[ab2,eb3]@7 [bb2,f3]@7 bb2@2", F: "[c3@2 ~ bb2@2 c3@7 ~@4 ab2@3 f3@7 ~@4 f3@10 ~@8, ~ d3 ~@4 db2@7 bb2@7 ~@4]/3",
  G: "~ g3 bb3 [eb3,ab3,c4]@5, eb3@3 ~@5", H: "~@3 g3@5, eb3", I: "~ eb3@2 [bb2,f3]@5, ab2@3 ~@5",
  J: "~ f3@2 [c3,g3]@5, bb2@3 ~@5", K: "[c3,g3]@3 [d3,f3]@5", L: "~ bb2, bb1", M: "eb2", N: "eb2@7 bb1",
  O: "eb2@3 eb2@2 eb2@3", P: "eb2@3 eb2@2 eb2 g2 bb2", Q: "c3@3 g2@2 g2@3", R: "ab2@3 bb2@2 bb2@3",
  S: "bb1 c2 d2 c2@4 c2", T: "db2!2", U: "[bb1,bb2]@3 bb2@2 bb2@3", V: "[bb1,bb2]@3 bb1 bb2@4", W: "~ bb2 eb3@6, eb2",
  X: "~ ab2@2 [bb1,bb2]@5, ab1@3 ~@5", Y: "bb1 c2 d2 c2@5", Z: "[[c2,c3]@3 [d2,d3]@4 ~ d2@8, ~@7 d3@9]/2",
  AA: "[[f3,ab3]@5 bb3 ab3 g3 f3@8, db4]/2", AB: "[[eb3,ab3,c4]@3 bb3 ab3 eb3 db3 [c3,eb3,ab3]@6 bb2 ab2 g2]/2",
  AC: "~ ab2 f3@5 ab2, db2", AD: "db2",
  AE: "[~@2 [c2,g2,f3]@17 [c2,c3]@18 ~@2 c3@2 f3@12 ~@2 c3@2 f3@12 ~@2 bb2@4 [c2,c3]@10 ~@2 c3@2 f3@12 ~@2 c3@2 f3@12 ~@2 c3@2 f3@7, ~@37 f2@16 f2@16 bb1@6 ~@10 f2@16 f2@16 f2@11]/8", // Csus4 C
  AF: "[~@11 [c2,c3]@10 c2@2 d2@2 e2@2 d2@10 [d2,d3]@6 [e2,e3]@8 [d2,d3]@2 [c2,c3]@6 bb2@4 a2, ~@5 bb1@6 ~@53, ~@9 bb2@4 ~@51]/4", // C D E D C
  AG: "[~@3 g2@2 [c2,a2]@16 ~@2 c3@2 ~@6 f2@6 f2@6 f2@4 f2@6 [bb1,bb2]@6 [c2,c3]@4 c2@6 f2@6 f2@4 f2@6 [bb1,bb2]@6 [c2,c3]@4 c2@6 f2@6 f2@4 f2, ~@21 f2@10 ~@81, ~@25 f3@12 ~@75]/7", // F Bb C Bb C
  AH: "[~@5 [f2,c3,a3]@16 ~@11]/2", // F
})).s("gm_electric_bass_finger").gain(0.14)

stack(string_ensemble_1, bass)

More by The Corrs