Strudelify

Haste to the Wedding

The Corrs

KeyE♭ majorTempo201 bpm
0:00/0:00
// Haste to the Wedding — The Corrs
// 201 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 109 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(201/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 · ocarina · "Tin whistle (ocarina)"
const ocarina = note(`<
  ~@12 A B C D B E F B C D B E G H I J@2 E K H I J@2 E L M N O M P Q M N O M P R S T U@2 P R S T U@2 P V ~@23 W X Y Z X
  AA AB X Y Z X AA AC AD AE AF AG AA AH ~@6
>`.pickRestart({
  A: "~@6 bb5!2", B: "g5 bb5!2 ab6 g6 f6 eb6 f6", C: "g6 eb6 c6 bb5 g5 bb5!2 ab5", D: "g5 ab5 g5 ab5 f5 g5 ab5 bb5",
  E: "g6 eb6 c6 bb5 c6 bb5 g6 bb6", F: "g6 eb6 f6 eb6 eb6@2 bb5!2", G: "g6 eb6 f6 eb6 eb6@2 ab6 bb6",
  H: "g6 bb6!2 g6 eb6 c7 ab6 c7", I: "c7 bb6 ab6 g6 ab6 bb6!2 ab6",
  J: "[g6 ab6 g6 ab6 f6 g6 ab6 bb6@3 g6@3 f6 eb6 f6]/2", K: "g6 eb6 f6 eb6!2 ~ ab6 bb6", L: "g6 eb6 f6 eb6!2 bb5!2 g5",
  M: "bb5!2 ab6 g6 f6 eb6 f6 g6", N: "eb6 c6 bb5 g5 bb5!2 ab5 g5", O: "ab5 g5 ab5 f5 g5 ab5 bb5 g5",
  P: "eb6 c6 bb5 c6 bb5 g6 bb6 g6", Q: "eb6 f6 eb6 eb6@2 bb5!2 g5", R: "eb6 f6 eb6 eb6@2 ab6 bb6 g6",
  S: "bb6!2 g6 eb6 c7 ab6 c7!2", T: "bb6 ab6 g6 ab6 bb6!2 ab6 g6",
  U: "[ab6 g6 ab6 f6 g6 ab6 bb6@3 g6@3 f6 eb6 f6 g6]/2", V: "eb6 f6 eb6 eb6@4 ~", W: "~@5 bb5 g5 bb5",
  X: "bb5 ab6 g6 f6 eb6 f6 g6 eb6", Y: "c6 bb5 g5 bb5!2 ab5 g5 ab5", Z: "g5 ab5 f5 g5 ab5 bb5 g5 bb5",
  AA: "c6 bb5 c6 bb5 g6 bb6 g6 eb6", AB: "f6 eb6 eb6@2 bb5!2 g5 bb5", AC: "f6 eb6 eb6@2 ab6 bb6 g6 bb6",
  AD: "bb6 g6 eb6 c7 ab6 c7!2 bb6", AE: "ab6 g6 ab6 bb6!2 ab6 g6 ab6", AF: "g6 ab6 f6 g6 ab6 bb6@3",
  AG: "g6@3 f6 eb6 f6 g6 eb6", AH: "f6 eb6!2 ~@5",
})).s("gm_ocarina").gain(0.56)

// chords · orchestral harp · "Harp"
const orchestral_harp = note(`<
  ~@12 A B C D E F G E H D E I J K L M N O J K P M Q@2 R E H D E S J T@2 D E I U V W X Y Z AA AB AC AD AE@2 AF ~@23 AG
  AH AI AJ AK AL AA AM AN AO AK AP AA AQ AC AD AR AS AT AQ AC AD AU@2 AV
>`.pickRestart({
  A: "~@6 eb4 [c3,g4]", B: "bb4 eb4 [bb2,g4] bb4 ab3 [ab2,c4] eb4!2", C: "[g2,g4] bb4 [f2,eb4] g4 bb4 [eb2,eb4] g4 bb4",
  D: "[d2,bb3] d4 f4 [eb2,bb3] d4 f4 [c3,eb4] g4", E: "bb4 [bb2,eb4] g4 bb4 [ab2,ab3] c4 eb4 [g2,eb4]",
  F: "g4 bb4 [f2,eb4] g4 bb4 bb3 [eb2,d4] [eb4,f4]", G: "eb4 [d2,g4] bb4 eb4 [eb2,g4] bb4 eb4 [c3,g4]",
  H: "g4 bb4 [f2,eb4] g4 bb4 [eb2,eb4] g4 bb4", I: "g4 bb4 [f2,eb4] g4 bb4 [eb2,bb3] d4 f4",
  J: "[d2,eb4] g4 bb4 [eb2,eb4] g4 bb4 [c3,eb4] g4", K: "bb4 [bb2,eb4] g4 bb4 [ab2,ab3] c4 eb4 [g2,ab3]",
  L: "c4 eb4 [f2,eb4] g4 bb4 [eb2,eb4] g4 bb4", M: "[d2,bb3] d4 f4 [eb2,bb3] d4 f4 [c3,eb4,g4,bb4] ~",
  N: "~ [bb2,eb4,g4,bb4] ~@2 [ab2,bb3,d4,f4] ~@2 [g2,eb4,g4,bb4]", O: "~@2 [f2,eb4] g4 bb4 [eb2,bb3] d4 f4",
  P: "[c4,eb4] ~ [f2,eb4] g4 bb4 [eb2,eb4] g4 bb4", // Cm F7 Eb
  Q: "[~ [eb4,g4,bb4]@2 ~ [d4,f4]@2 ~ [eb4,g4,bb4]@3 [f2,eb4] g4 bb4 [eb2,bb3] d4 f4, ~ bb2 ~@2 [ab2,bb3] ~@2 g2 ~@8]/2", // Eb Dm Eb F7 Eb5 Absus2
  R: "[d2,eb4] g4 bb4 [eb2,eb4] ~@2 [c3,eb4] g4", S: "g4 bb4 [f2,eb4] g4 bb4 [eb2,bb3] d4 [eb4,f4]",
  T: "[bb4 [bb2,eb4] ~ bb4 [ab2,ab3,c4] eb4!2 g4@2 bb4 [f2,eb4] g4 bb4 [eb2,eb4] g4 bb4, ~ g4@2 ~@4 g2 ~@8]/2", // Eb5 Ab F7 Eb
  U: "[d2,eb4] g4 bb4 [eb2,eb4] [g4,bb4] eb4 [c3,g4] bb4", V: "eb4 [bb2,g4] bb4 ab3 [ab2,c4] eb4 ab3 [g2,c4]",
  W: "eb4!2 [f2,g4] bb4 eb4 [eb2,g4] bb4 [d2,bb3]", X: "d4 f4 bb3 [eb2,d4] f4 [eb4,g4,bb4] c3 ~",
  Y: "~ [bb2,eb4,g4,bb4] ~@2 [ab2,bb3,d4,f4] ~ [eb4,g4,bb4] g2", Z: "~ [f2,eb4] g4 bb4 bb3 [eb2,d4] f4 eb4",
  AA: "[d2,g4] bb4 eb4 [eb2,g4] bb4 eb4 [c3,g4] bb4", AB: "eb4 [bb2,g4] bb4 ab3 [ab2,c4] eb4 [g2,ab3] c4",
  AC: "eb4 [f2,eb4] g4 bb4 [eb2,eb4] g4 bb4 [d2,bb3]", AD: "d4 f4 [eb2,bb3] d4 f4 [c3,eb4,g4,bb4] ~@2",
  AE: "[bb2 [eb4,g4,bb4] ~ [ab2,bb3] [d4,f4] ~ [eb4,g4,bb4]@3 [f2,eb4] g4 bb4 [eb2,bb3] d4 f4 eb4, ~@6 g2 ~@9]/2", // Eb Absus2 Dm Eb F7 Eb5
  AF: "[d2,g4] bb4 eb4 eb2 ~@4", AG: "~@6 [c3,eb4,g4] bb4", AH: "eb4 [bb2,g4] bb4 ab3 [ab2,c4] eb4!2 [g2,g4]",
  AI: "bb4 eb4 [f2,g4] bb4 eb4 [eb2,g4] bb4 bb3", AJ: "[d2,d4] f4 bb3 [eb2,d4] f4 eb4 [c3,g4] bb4",
  AK: "[bb2,eb4] g4 bb4 [ab2,ab3] c4 eb4 [g2,eb4] g4", AL: "bb4 [f2,eb4] g4 bb4 bb3 [eb2,d4] [eb4,f4] eb4",
  AM: "eb4 [bb2,g4] bb4 ab3 [ab2,c4] eb4 [g2,eb4] g4", AN: "bb4 [f2,eb4] g4 bb4 [eb2,eb4] g4 bb4 [d2,bb3]",
  AO: "d4 f4 [eb2,bb3] d4 f4 eb4 [c3,g4] bb4", AP: "bb4 [f2,eb4] g4 bb4 [eb2,bb3] d4 f4 eb4",
  AQ: "[bb2,eb4] g4 bb4 [ab2,ab3] c4 eb4 [g2,ab3] c4", AR: "[bb2,eb4,g4,bb4] ~@2 [ab2,bb3,d4,f4] ~@2 [g2,eb4,g4,bb4] ~",
  AS: "~ [f2,eb4] g4 bb4 [eb2,bb3] d4 f4 [d2,eb4]", AT: "g4 bb4 [eb2,eb4] g4 bb4 [c3,eb4] g4 bb4",
  AU: "[[eb4,g4,bb4]@2 ~ [d4,f4]@2 ~ [eb4,g4,bb4]@3 [f2,eb4] g4 bb4 [eb2,bb3] d4 f4 [d2,eb4], bb2 ~@2 [ab2,bb3] ~@2 g2 ~@9]/2", // Eb Dm Eb F7 Eb5 Ebmaj7 Absus2
  AV: "~ g4@2 bb4@2 [eb2,eb4]@2 ~@9", // Eb
})).s("gm_orchestral_harp").gain(0.35)

// chords · acoustic guitar steel · "Steel guitar"
const acoustic_guitar_steel = note("<~@60 A@4 B@8 C@3 D@3 E@3 F@3 G ~@24>".pickRestart({
  A: "[~@12 [eb4,g4]@4 [eb4,g4]@2 ~@10 [eb4,ab4]@2 [eb4,ab4]@4 [eb4,ab4]@2 [eb4,ab4]@2 ~@2 [eb4,ab4]@2 ~@6 c4@4 [eb4,ab4] ~ [eb4,ab4]@4 [eb4,ab4]@2 [eb4,g4]@2 ~@2, ~@12 bb3@12 bb3@12 c4@12 ~@4 c4@9 ~@3, ~@18 [eb4,g4]@9 ~@15 [eb4,ab4]@10 ~@8 bb3@4]/4", // Eb Ab5 Eb Ab5
  B: "[[eb4,g4] ~ [eb4,g4]@6 ~@4 [eb4,ab4]@2 [eb4,ab4]@4 [eb4,ab4]@2 [eb4,ab4]@2 ~@2 [eb4,ab4]@2 ~@6 c4@4 [eb4,ab4] ~ [eb4,ab4]@4 eb4@2 [eb4,g4]@4 [eb4,g4]@2 ~@10 [eb4,ab4]@2 [eb4,ab4]@4 [eb4,ab4]@2 [eb4,ab4]@2 ~@2 [eb4,ab4]@2 ~@6 c4@4 [eb4,ab4] ~ [eb4,ab4]@4 eb4@2 [eb4,g4]@4 [eb4,g4]@2 ~@10 [eb4,ab4]@2 [eb4,ab4]@4 [eb4,ab4]@2 [eb4,ab4]@2 ~@2 [eb4,ab4]@2 [eb4,ab4]@6, ~@8 bb3@12 c4@12 ~@4 c4@23 ~@9 c4@12 ~@4 c4@23 ~@9 c4@12, ~@26 [eb4,ab4]@10 ~@6 ab4@17 ~@31 ab4@17 ~@21, ~@11 bb3@3 bb3@3 ~@6 bb3@3 bb3@3 ~@3, ~@50 [eb4,g4]@9 ~@15 [eb4,ab4]@10 ~@14 [eb4,g4]@9 ~@21]/8", // Eb Ab5 Eb Ab5 Eb Ab5 Eb Ab5 …
  C: "[c4@4 [eb4,ab4] ~ [eb4,ab4]@6 [bb3,eb4,g4]@12 [ab3,c4,eb4,g4]@12 [c4,eb4,f4,bb4]@12, ~ c4@2 ~@9]/3", // Ab5 Eb Abmaj7 Cm7
  D: "[~ [d4,f4]@5 ~ g4@5 ~ [c4,g4]@5 ~@5 f4, bb3 [bb3,eb4] [ab3,eb4] c4, ~@20 f4@3 ~, ~@10 eb4!2, ~@7 bb4]/3", // Dm C5 Eb5 Ab5
  E: "[~@4 g4@2 [eb4,g4]@5 ~@3 [eb4,g4]@9 ~ [ab3,c4,eb4]@12 ~@4 [f4,bb4]@6 ~@2, bb3@11 ~ bb3@11 ~@13 c4@10 ~@2, ~ eb4@2 ~@16 eb4@4 ~]/3", // Eb Ab Bb5
  F: "[~@3 f4@3 ~ g4@5 ~@3 g4@3 ~@5 f4, bb3@11 ~ [bb3,eb4]@12 ab3@11 ~ bb3@12, ~@2 d4@9 ~@15 c4@9 ~@5 f4@6 ~@2, ~@14 eb4@4 ~ eb4@3 eb4@2, ~@7 bb4]/3", // Eb5
  G: "~@2 [eb4,g4] [bb3,eb4,g4]@2 ~@3, bb3@3 ~@5", // Eb
})).s("gm_acoustic_guitar_steel").gain(0.31)

// drums · clap
const clap = s("cp").struct("<~@11 [~@3 x ~@2 x ~] [~ x ~@2 x ~@3] ~@70 [~@2 x ~@2 x ~@2] [x ~@2 x ~@4] ~@24>")
  .gain(0.48)

// drums · low tom
const low_tom = s("lt").struct(`<
  A B C D B C D B C D ~@2 A B C D B C D B C D B C D B C D B C D B C D B C E F G H F G H F G H F G H F G H F G H F G H F
  G H F G H F G H F G H F G H ~@5 I F G H ~@2 I C D B C D B C D B C D B C D B C D B C D B C D J
>`.pickRestart({
  A: "~@6 x!2", B: "~ x!5 ~ x", C: "x!4 ~ x!3", D: "x!2 ~ x!5", E: "x!2 ~ x!4 ~", F: "x!5 ~ x!2", G: "x!3 ~ x!4",
  H: "x ~ x!5 ~", I: "~@3 x", J: "~@3 x ~ x ~@10",
})).gain(0.48)

// drums · congas
const congas = s("conga:13").struct(`<
  A B C D B C D B C D ~@2 A B C D B C D B C D B C D B C D B C D B C D B C E F G H F G H F G H F G H F G H F G H F G H F
  G H F G H F G H F G H F G H ~@5 I F G H ~@2 I C D B C D B C D B C D B C D B C D B C D B C D J
>`.pickRestart({
  A: "~@6 x!2", B: "~ x!5 ~ x", C: "x!4 ~ x!3", D: "x!2 ~ x!5", E: "x!2 ~ x!4 ~", F: "x!5 ~ x!2", G: "x!3 ~ x!4",
  H: "x ~ x!5 ~", I: "~@3 x", J: "~@3 x ~ x ~@10",
})).gain(2.05)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@37 A B C A B D A B C A B D A B C A B C A B C A B D E B C A B C A B C A B C ~@12 F G H I G H I G H I G J I G H I K H
  I G H I G ~
>`.pickRestart({
  A: "~ x ~@5 x", B: "~@5 x ~@2", C: "~@3 x ~@4", D: "~@3 x ~ x ~@2", E: "~@3 x ~@10 x ~", F: "~@2 x ~@10 x ~@2",
  G: "~ x", H: "~ x ~@2", I: "x ~@2 x", J: "~ x!2 ~", K: "~@9 x ~@6",
})).gain(0.4)

stack(ocarina, orchestral_harp, acoustic_guitar_steel, clap, low_tom, congas, shaker)

More by The Corrs