Strudelify

Along With the Girls

The Corrs

KeyF majorTempo130 bpm
0:00/0:00
// Along With the Girls — The Corrs
// 130 bpm, 6/8, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 44 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/3)

// 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(`<
  ~@2 A B ~@2 A B ~@2 A B ~@2 A C D E F G F H I J K L F M D N O P Q R S T U V W X Y Z AA ~
>`.pickRestart({
  A: "~ f5@5 f5@2 f5@3 e5@2 d5@3, g5 ~@7", B: "c5@3 a4@2 f4@3 f4@3 ~@5", C: "c5@3 a4@2 f4@3 f4@3 ~@3 g4@2",
  D: "a4@5 c5@3 d5@2 c5@3 a4@3", E: "c5@2 a4@3 g4 ~@2 g4@2 a4@3 bb4@3", F: "a4@5 c5@3 d5@3 c5@2 a4@3",
  G: "c5@2 a4@3 f4 ~@2 f4@5 g4@3", H: "c5@3 a4@2 g4@3 g4@3 d5@2 e5@3",
  I: "f5 ~ f5@2 ~@2 f5 ~ f5@3 e5@2 d5@3, ~ g5@3 ~@12", J: "c5@3 a4@3 f4 ~ f4@5 g4@3", K: "a4@5 c5@2 ~ d5@2 c5@3 a4@3",
  L: "c5@2 a4@3 g4@2 ~ g4@2 a4@3 bb4@3", M: "c5@3 a4@2 f4 ~@2 f4@5 g4@3", N: "c5@2 a4@3 g4 ~@2 g4@3 d5@2 e5@2 ~",
  O: "f5@5 f5@2 ~ f5@2 e5@3 d5@3, g5 ~@7", P: "c5@2 a4@3 f4 ~@2 f4@3 a4@2 ~ c5@2",
  Q: "d5@2 ~ g4 ~ g4@3 e5@2 ~ g4 ~ g4@3", R: "d5@2 ~ g4@2 ~ g4@2 e5@3 g4 ~ g4 ~@2",
  S: "~ f5@3 ~@2 f5 ~ f5@2 e5@3 d5@3, g5 ~@7", T: "c5@2 a4@3 f4 ~@2 f4@2 ~ a4@2 c5@3",
  U: "d5@2 ~ g4 ~@2 g4@2 e5@3 g4 ~ g4@3", V: "d5@2 ~ g4 ~ g4@3 e5@2 ~ g4 ~@2 g4 ~",
  W: "~ f5@4 ~ f5 ~ f5@2 e5@3 d5@3, g5@3 ~@13", X: "c5@2 a4@3 f4 ~@4 a4@3 ~ c5@2", Y: "~ d5@2 g4 ~@2 g4@2 e5@3 ~@5",
  Z: "~@8 e5@3 ~@5", AA: "g5 ~@7",
})).s("gm_ocarina").gain(0.31)

// other · ocarina · "Tin whistle (ocarina)" · soft notes
const ocarina_soft = note(`<
  ~@39
  [~@4 f4 ~@3]
  [~@11 g4 ~@2 g4@2]
  [d5@2 ~ g4 ~ g4@3 ~@3 g4 ~ g4 ~@2]
  [~ f5@4 f5 ~@2 f5@2 e5@3 d5@3]
  [c5@3 a4@2 f4@3 f4@3 ~@5]
>`).s("gm_ocarina").gain(0.15)

// chords · piano · "Ac. piano"
const piano = note("<A B C D A B E F A@2 E G A@2 H I J@6 K L M@2 N@2 J@2 K O P@2 Q R P S T U V ~ W X>".pickRestart({
  A: "d6@3 g5@2 g5@3 e6@3 g5@2 g5@3, [f4,d5]@5 ~@3 [f4,e5]@5 ~@3", // Dm Fmaj7
  B: "d6@3 g5@2 g5@3 [e5,e6]@3 g5@2 g5@3, [f4,d5]@5 ~@3 f4@5 ~@3", // E Dm
  C: "[f4,f5]@5 f6@3 f6@3 e6@2 d6@3, f6@3 ~@5 [f4,f5]@5 ~@3", // F
  D: "[c5,c6]@3 a5@2 f5@3 [f4,f5]@3 a5@2 c6@3, f4@5 ~@3 c5@5 ~@3", // C F
  E: "[f4,f5,f6]@5 f6@3 f6@3 e6@2 d6@3, ~@8 [f4,f5]@5 ~@3", // F
  F: "[c5,c6]@3 a5@2 f5@3 [c5,f5]@3 a5@2 c6@3, f4@5 ~@3 f4@5 ~@3", // C F5
  G: "[c5,c6]@3 a5@2 f5@3 f5@3 a5@2 c6@3, f4@5 ~@3 [f4,c5]@5 ~@3", // C F5
  H: "[f4,f5]@5 f6@3 [f5,f6]@3 e6@2 d6@3, f6@3 ~@5 f4@5 ~@3", I: "[f4,c5,c6]@3 a5@2 f5@3 [f4,c5,f5]@5 ~@3",
  J: "[[f4,c5]@3 [d4,g4,d5,g5], [f5,a5]@21 ~@11]/2", K: "[f4,bb4,c5]@13 ~@3",
  L: "[f4,c5,f5,c6]@3 ~@2 [c4,f4,c5,f5]@5 ~@6", M: "[[f4,c5,f5]@21 ~@3 [d4,g4,d5,g5]@8, a5@19 ~@13]/2",
  N: "[[f4,c5,f5]@3 [d4,g4,d5,g5], a5@21 ~@11]/2", O: "[f4,c5,f5,c6]@3 ~@2 [c4,f4,c5,f5]@5 ~ a5@2 c6@3",
  P: "d6@3 g5@2 g5@3 e6@3 g5@2 g5@3, [f4,d5]@5 ~@3 [f4,g4,e5]@5 ~@3", // Dm C
  Q: "f6@5 f6@3 ~@3 e6@2 d6@3, [f4,bb4,c5]@11 ~@5, ~@8 f6@5 ~@3", // Fsus4
  R: "[f4,c5,c6]@3 a5@2 f5@3 f5@3 a5@2 c6@3, ~@5 [c4,f4]@5 ~@6", // F5
  S: "d6@3 g5@2 g5@3 e6@3 g5@2 ~@3, [f4,d5]@5 ~@3 [f4,g4,e5]@5 ~@3", T: "f6@5 f6@3 f6@3 e6@2 d6@3, [f4,bb4,c5]@13 ~@3",
  U: "[f4,c5,c6]@3 a5@2 f4@8 c6@3, ~@5 f5@3 ~@8", V: "[f4,d5]@5 ~@3 [f4,g4,e5]@5 ~@3, d6@3 ~@5 e6@3 ~@5",
  W: "f4@11 ~@5", X: "f4@3 ~@13",
})).s("gm_piano").gain(0.31)

// chords · piano · "Ac. piano" · soft notes · Dm C Bbsus2 C F5
const piano_soft = note(`<
  ~@37
  [~@13 g5@3]
  ~
  [~@8 f5@3 a5@3 ~@2, ~@5 c4@5 ~@6]
  [~@3 g5@2 g5@3 ~@3 g5@2 g5@3]
  [d6@3 g5@2 g5@3 e6@3 g5@2 g5@3, [f4,d5]@5 ~@3 [f4,g4,e5]@5 ~@3]
  [f6@3 ~@2 f6@3 f6@3 e6@2 d6@3, [bb4,c5]@11 ~@5]
  [[c5,c6]@3 a5@2 f5@3 f5@3 ~@5, ~@5 [c4,f4]@8 ~@3]
>`).s("gm_piano").gain(0.15)

// drums · congas
const congas = s("conga:13").struct("<~@16 A@16 B C A@2 B@2 A@2 B A ~@2>".pickRestart({
  A: "x ~@4 x ~@2 x ~@7", B: "x!2", C: "x ~@7 x ~@4 x ~@2",
})).gain(1.31)

// drums · congas · soft notes
const congas_soft = s("conga:13").struct("<~@42 [x ~@4 x ~@2 x ~@7]!2>").gain(0.82)

stack(ocarina, ocarina_soft, piano, piano_soft, congas, congas_soft)

More by The Corrs