Strudelify

Carraroe Jig

The Corrs

KeyD majorTempo204 bpm
0:00/0:00
// Carraroe Jig — The Corrs
// 204 bpm, 6/8, 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 65 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(204/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.

// chords · piano
const piano = note(`<
  A B C D E F G H I J K L M@2 N O P Q@2 R P S@2 H P Q@2 R P S@2 H A B C D E F G H I J K L M@2 N O P Q@2 T P U@2 V ~@9
>`.pickRestart({
  A: "[d3,a3]@3 ~@5 [d4,a4]@8, ~@5 [d3,a3]@11", B: "[d4,a4]@5 [d4,a4]@3 [d4,a4]@7 ~, [d3,a3]@15 ~",
  C: "[d4,g4,b4]@8 [d4,g4,b4]@7 ~, [g2,d3]@15 ~", D: "[d4,f#4]@5 [d4,f#4]@3 e4@3 d4@2 e4@3, [d3,a3]@8 [a2,e3]@5 ~@3",
  E: "d4@5 d4@3 [d4,a4]@7 ~, [d3,a3]@15 ~", F: "d4@3 ~@2 a4@3 [d4,a4]@7 ~, [d3,a3]@15 ~, a4@5 ~@11, ~@3 d4@5 ~@8",
  G: "[g2,d3,d4,g4,b4]@7 ~", H: "[d3,a3,d4,f#4,a4]@6 ~@5 d4@3 e4@2, ~@8 [a2,e3,e4]@7 ~",
  I: "d4@5 d4@3 [d4,f#4,a4]@6 ~@2, [d3,a3]@7 ~", J: "[d4,a4]@8 [d4,a4]@7 ~, [d3,a3]@15 ~", K: "[g2,d3,d4,g4,b4]@15 ~",
  L: "[d4,f#4]@5 [d4,f#4]@3 ~@5 e4@3, [d3,a3] [a2,e3], ~@8 e4@5 ~@3, ~@11 d4@5", // D D5 A5
  M: "[[d3,a3,d4] [d3,a3,d4,a4]@2 [d3,a3,d4,a4]]/2", N: "[g2,d3,d4,g4]@15 ~", O: "[d3,a3,d4,f#4,a4] [a2,e3]",
  P: "d4 [d4,f#4,a4], [b2,f#3]", // D B5
  Q: "[[g2,d3,d4,a4]@8 ~@5 e4@4 ~@2 d4@5 [d4,f#4,a4]@7 ~, ~@8 [a2,e3]@10 ~ [b2,f#3]@12 ~, ~@8 e4@5 ~@19, ~@11 d4@7 ~@14]/2", // Gsus2 D A5 B5
  R: "[g2,d3,d4,g4,b4]@8 [a2,e3,c#4]@3 ~@5", // G A
  S: "[[g2,d3,d4,a4]@4 ~@4 [g2,d3,d4,g4,b4]@7 ~, ~@4 [a2,e3]@11 ~, ~@8 e4@5 e4@17 ~@2, ~@11 d4@5 ~@16]/2", // Gsus2 G A5
  T: "[g2,d3,g4]@8 [a2,e3]@3 ~@5", U: "[[g2,d3,d4,a4]@8 e4@5 e4@17 ~@2, ~@4 a2@11 ~]/2", V: "~@4 e4@3 ~",
})).s("gm_piano").gain(0.29)

// chords · piano · soft notes
const piano_soft = note("<~@51 A ~ B@2 C D E@2 F D G@2 H ~>".pickRestart({
  A: "[d4,b4]@8 c#4@3 ~@5", B: "[~@11 d4@5 [g2,d3,d4,g4,b4]@14 ~@2, ~@4 e3@11 ~]/2",
  C: "[d3,a3,d4,f#4,a4]@6 ~@5 d4@3 e4@2, ~@8 [a2,e3]@7 ~", D: "d4 [d4,f#4,a4], [b2,f#3]",
  E: "[[g2,d3,d4,a4]@8 ~@5 e4@4 ~@2 d4@5 [d4,f#4,a4]@7 ~, ~@8 [a2,e3]@10 ~ [b2,f#3]@12 ~, ~@8 e4@5 ~@19, ~@11 d4@7 ~@14]/2", // Gsus2 D A5 B5
  F: "[g2,d3,g4,b4]@8 [a2,e3,c#4]@3 ~@5", // G A
  G: "[[g2,d3,d4,a4]@8 e4@5 ~@3 [g2,d3,g4]@14 ~@2, ~@4 [a2,e3]@11 ~, ~@13 e4@17 ~@2]/2", H: "[d3,f#4]@6 ~@2 e4@7 ~",
})).s("gm_piano").gain(0.1)

// other · ocarina · "Tin whistle (ocarina)"
const ocarina = note("<~@32 A B C D A E F G A B C D A E F H I J I K I L M ~ N ~@8>".pickRestart({
  A: "d5@3 ~@2 d5@3 f#5@5 a5@3", B: "e6@3 f#6@2 e6@3 d6@3 ~@2 a5@3", C: "b5@3 d6@2 b5@3 a5@3 ~@2 a5@3",
  D: "f#5@3 ~@2 f#5@3 e5@3 d5@2 e5@3", E: "e6@3 f#6@2 e6@3 d6@5 a5@3", F: "b5@3 d6@2 b5@3 a5@3 d6@2 f#6@3",
  G: "a6@3 f#6@2 d6@3 e6@3 d6@2 e6@3", H: "a6@3 f#6@2 d6@3 e6@5 ~@3", I: "d6@3 f#6@2 a6@3 a6@3 f#6@2 a6@3",
  J: "b6@3 g6@2 e6@3 e6@3 d6@2 c#6@3", K: "b6@3 g6@2 e6@3 e6@5 ~@3", L: "b6@3 g6@2 e6@3 e6@5 c#6@3",
  M: "d6@5 b5@3 a5@3 ~@2 a5@3", N: "~@8 a6@3 ~@5",
})).s("gm_ocarina").gain(0.35).pan(0.4)

// other · ocarina · "Tin whistle (ocarina)" · soft notes
const ocarina_soft = note("<~@51 A ~@3 B C D E F E F G H ~>".pickRestart({
  A: "~@13 d6@3", B: "f#5@3 ~@2 f#5@3 e5@5 ~@3", C: "d6@3 f#6@2 a6@3 ~@3 f#6@2 a6@3",
  D: "b6@3 g6@2 e6@3 e6@3 d6@2 c#6@3", E: "d6@3 f#6@2 a6@3 a6@3 f#6@2 a6@3", F: "b6@3 ~@2 e6@3 e6@5 ~@3",
  G: "~@13 a5@3", H: "~@5 f#5@3 e5@3 ~@5",
})).s("gm_ocarina").gain(0.15).pan(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@32 [x ~@4 x ~@2 x ~@7]!21 [x!2] [~ x]!3 ~@8>").gain(0.29)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@53 [~@5 x ~@10] [x ~@4 x ~@10]!3 [x ~@4 x ~@2 x ~@7]!6 [x!2] ~>").gain(0.1)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@32
  [x ~@4 x ~@2 x ~@2 x ~ x ~@2]!22
  [x ~@4 x ~@2 x ~@2 x ~@4]
  [x ~@10 x ~@4]
  x!2
  ~
  x!2
  ~@4
>`).gain(1.09)

// drums · congas · soft notes
const congas_soft = s("conga:13").struct(`<
  ~@54
  [~@13 x ~@2]
  [~@5 x ~@2 x ~@4 x ~@2]
  [~@5 x ~@2 x ~@2 x ~ x ~@2]!2
  [x ~@4 x ~@2 x ~@2 x ~ x ~@2]
  [~@5 x ~@2 x ~@2 x ~ x ~@2]!2
  [x ~@4 x ~@2 x ~@2 x ~ x ~@2]!3
  ~
>`).gain(0.47)

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

More by The Corrs