Strudelify

The Right Time

The Corrs

KeyD majorTempo94 bpm
0:00/0:00
// The Right Time — The Corrs
// 94 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 96 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(94/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 · piano · "Honky tonk"
const piano = note(`<
  A B A C D ~@3 E@2 F ~ G@2 H@2 I@2 J K L@2 M@2 A B N ~ A C N ~ O@2 F ~ P@2 Q@2 A B N ~ A C N ~ R S T U V S W X Y@3 ~@5
  A B N ~ A C N ~ Z AA AB ~ Z AC AB ~ Z AA AB ~ Z AC AB ~ Z AA AB ~ Z AC AB ~
>`.pickRestart({
  A: "d4@3 e4@3 g4@2 a4@8", B: "g4 f#4 e4@2", C: "g4 f#4 e4 d4", D: "d4 ~@3",
  E: "[~@12 a4 a4@2 a4@3 g4 d4@3 d4 e4@2 d4@3 ~@4]/2", F: "g4@6 b3@4 e4@2 d4@3 ~",
  G: "[~@12 a4 a4@2 a4@3 g4@2 d4 d4@2 e4@2 d4@3 ~@4]/2", H: "[c4@4 b3@4 e4@5 d4 e4 d4@4 ~@13]/2",
  I: "[~@12 f#4 a4@2 b4@2 g4@2 d4@3 b3 c4@2 d4@3 ~@4]/2", J: "e4@4 g4@4 a4@5 g4 a4@2", K: "g4@3 ~@13",
  L: "[~@12 a4 a4@2 a4@3 g4@2 d4@3 e4@2 d4@3 ~@4]/2", M: "[e4@4 g4@4 f#4@5 e4 f#4 g4@2 ~@15]/2", N: "d4@5 ~@11",
  O: "[~@12 f#4 a4@2 b4@2 g4@2 d4@2 b3@2 c4@2 d4@3 ~@4]/2",
  P: "[~@4 a4@8 a4 a4@2 a4@2 g4@2 d4@2 b3@2 c4@2 d4 a3@2 ~@3 a3]/2", Q: "[g4@2 g4@4 g4@4 f#4@3 e4 f#4 g4@3 ~@14]/2",
  R: "~@7 e4", S: "g4@3 a4@3 g4@2 b4@3 a4@3 g4@2", T: "f#4@3 e4 d4@5 ~@7", U: "g4@3 a4@3 g4@2 g4@3 f#4@3 e4@2",
  V: "d4@3 ~@4 e4", W: "b4@3 f#4@3 a4@2 a4 g4@3 ~@2 e4@2", X: "g4@3 a4@3 c5@2 b4@3 a4@3 g4@2",
  Y: "[a4@18 g4@4 f#4@4 e4 d4@9 ~@12]/3", Z: "e4@3 f#4@3 a4@2 b4@8", AA: "a4 g#4 f#4@2", AB: "e4@5 ~@11",
  AC: "a4 g#4 f#4 e4",
})).s("gm_piano").gain(0.36)

// other · violin · "Fiddle"
const violin = note(`<
  ~@4 A B@2 C@2 ~@15 D B@2 E@2 B@2 C@2 ~@7 D B@2 E@2 B@2 C@2 ~@15 D B@2 E@2 B@2 F@2 G@2 H@2 G@2 H@2 G@2 H@2 G@2 H@2 G@2
  ~@5
>`.pickRestart({
  A: "~@7 d4 a4 ~ a4@4 g4 a4",
  B: "[b4@2 b4 c5 b4 a4 g4 f#4 e4 g4!2 e4 g4@2 a4 b4@5 b4 c5 [a4,b4] g4 a4 ~ a4@4 g4 a4]/2", // Asus2
  C: "[b4@2 b4 c5 b4 a4 g4 f#4 e4 g4!2 e4 g4@2 a4 g4@7 ~@10]/2", D: "~@8 a4 ~ a4@4 g4 a4",
  E: "[b4@2 b4 c5 b4 a4 g4 f#4 e4 g4!2 e4 g4@2 a4 g4@7 ~@2 a4 ~ a4@4 g4 a4]/2",
  F: "[b4@2 b4 c5 b4 a4 g4 f#4 e4 g4!2 e4 g4@2 a4 a4@7 ~@2 b4 ~ b4@4 a4 b4]/2",
  G: "[c#5@2 c#5 d5 c#5 b4 a4 g#4 f#4 a4!2 f#4 a4@2 b4 c#5@5 c#5 d5 [b4,c#5] a4 b4 ~ b4@4 a4 b4]/2", // Bsus2
  H: "[c#5@2 c#5 d5 c#5 b4 a4 g#4 f#4 a4!2 f#4 a4@2 b4 a4@7 ~@2 b4 ~ b4@4 a4 b4]/2",
})).s("gm_violin").gain(0.2)

// other · violin · "Fiddle" · soft notes
const violin_soft = note("<~@91 A@2 B@2 ~>".pickRestart({
  A: "[c#5@2 c#5 d5 c#5 b4 a4 g#4 f#4 a4!2 f#4 a4@2 b4 a4@7 ~@2 b4 ~ b4@4 a4 b4]/2",
  B: "[c#5@2 c#5 d5 c#5 b4 a4 g#4 f#4 a4!2 f#4 a4@2 b4 c#5@5 c#5 d5 [b4,c#5] a4 b4 ~ b4@4 ~@2]/2", // Bsus2
})).s("gm_violin").gain(0.05)

// bass · electric bass finger · "Fingered bass"
const bass = note(`<
  ~@4 A B C D E B C D F B C D E B C D E B C D E B C D E B C D G B C D E B C D E B C D E B C H I J K J K J K J L B C D E
  B C M ~@8 N O P Q R O P Q R O P Q R O P Q R O ~@6
>`.pickRestart({
  A: "~@8 d2!2 ~@5 d2", B: "e2!2 ~@5 b1 c2!2 ~@5 d2", C: "g2!2 ~ g2 ~ a2 b2@2 d2!2 ~@5 d2",
  D: "e2!2 ~@5 e2 a2!2 ~@5 b2", E: "c3!2 ~ b2 ~ a2 g2@2 d2!2 ~@5 d2", F: "c3!2 ~ b2 ~ a2 g2 e2 d2!2 ~@5 d2",
  G: "c3!2 ~ b2 ~ a2 g2 ~ d2!2 ~@5 d2", H: "e2!2 ~@5 e2 a2!2 ~@4 a1@2", I: "b1@4 d2@4 e2@2 g1 b1 e2 b1 e1@2",
  J: "g1 c2 ~ g1 e1 ~ g1 c2 e2 g1 e1@2 a1 g1 ~ g1", K: "f#1 ~ f#1 g1 a1 f1 d1@2 e1 ~ g1 b1 e2 b1 e1@2",
  L: "f#1 ~ f#1 g1 a1 f1 d1@2 d1@2 ~@5 d2", M: "e2!2 ~@3 d2 g2@2 a2@5 ~@3", N: "~@8 e2@2 ~@5 e2",
  O: "f#2!2 ~@5 c#2 d2!2 ~@5 e2", P: "a2!2 ~ a2 ~ b2 c#3@2 e2!2 ~@5 e2", Q: "f#2!2 ~@5 f#2 b2!2 ~@5 c#3",
  R: "d3!2 ~ c#3 ~ b2 a2@2 e2!2 ~@5 e2",
})).s("gm_electric_bass_finger").gain(0.41)

// bass · electric bass finger · "Fingered bass" · soft notes
const bass_soft = note(`<
  ~@90
  [a2!2 ~ a2 ~ b2 c#3@2 e2!2 ~@5 e2]
  [f#2!2 ~@5 f#2 b2!2 ~@5 c#3]
  [d3!2 ~ c#3 ~ b2 a2@2 e2!2 ~@5 e2]
  [f#2!2 ~@5 c#2 d2!2 ~@5 e2]
  [a2!2 ~ a2 ~ b2 c#3@2 e2!2 ~@6]
  ~
>`).s("gm_electric_bass_finger").gain(0.15)

// chords · piano · "Bright piano"
const piano_2 = note(`<
  ~@4 A B C B D B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C E F ~@23 G H I J K J I J L H
  I J K J M J L H I N ~@4
>`.pickRestart({
  A: "~@10 [f#3,d4] ~@3 [f#3,d4] ~", B: "~@2 [f#3,d4] ~@3 [f#3,d4] ~@3 [f#3,d4] ~@3 [e3,c4] ~",
  C: "~@2 [e3,c4] ~@3 [d3,b3] ~@3 [f#3,d4] ~@3 [f#3,d4] ~", D: "~@2 [e3,b3] ~@3 [d3,b3] ~@3 [f#3,d4] ~@3 [f#3,d4] ~",
  E: "~@2 [f#3,d4] ~@3 [f#3,d4] ~@3 [e3,c4] ~@3 [e3,c4] ~", F: "b3 [a3,d4] ~@2", G: "~@10 [g#3,e4] ~@3 [g#3,e4] ~",
  H: "~@2 [g#3,e4] ~@3 [g#3,e4] ~@3 [f#3,d4] ~@3 [f#3,d4] ~", // C#m D
  I: "~@2 [e3,c#4] ~@3 [e3,c#4] ~@3 [g#3,e4] ~@3 [g#3,e4] ~", // C#m
  J: "~@2 [g#3,e4] ~@3 [g#3,e4] ~@3 [g#3,e4] ~@3 [f#3,d4] ~", // C#m D
  K: "~@2 [f#3,d4] ~@3 [e3,c#4] ~@3 [g#3,e4] ~@3 [g#3,e4] ~", L: "~@2 [e3,b3] ~@3 [e3,c#4] ~@3 [g#3,e4] ~@3 [g#3,e4] ~",
  M: "~@2 [f3,c#4] ~@3 [e3,c#4] ~@3 [g#3,e4] ~@3 [g#3,e4] ~", N: "~@2 e4 ~@3 e4 ~@9",
})).s("gm_piano").gain(0.26)

// chords · piano · "Bright piano" · soft notes · C#m D C#m D C# C#m
const piano_soft = note(`<
  ~@91
  [~@2 g#3 ~@3 g#3 ~@3 [g#3,e4] ~@3 [f#3,d4] ~]
  [~@2 [f#3,d4] ~@3 [e3,c#4] ~@3 [g#3,e4] ~@3 [g#3,e4] ~]
  [~@2 [g#3,e4] ~@3 [g#3,e4] ~@3 [g#3,e4] ~@3 [f#3,d4] ~]
  [~@2 [f3,c#4] ~@3 [e3,c#4] ~@3 [g#3,e4] ~@5]
  ~
>`).s("gm_piano").gain(0.1)

// other · electric guitar jazz · "Jazz guitar"
const electric_guitar_jazz = note(`<
  ~@4 A B C D E ~@3 F ~ G B H ~@2 I J ~@2 K ~@10 A B L ~@2 I J ~@15 M N O P Q R S@2 ~@32
>`.pickRestart({
  A: "~@10 d3 ~ f#3@2 a3 ~", B: "b3@2 d4 ~@13", C: "~@12 f#3@2 a3 ~", D: "e3@2 d3 ~@5 e4!2 d4!2 b3!2 d4 b3",
  E: "a3!2 f#3!2 e3!2 d3!2 d3@2 ~@6", F: "~ a3 b3 a3 d4 e4 b3 a3 f#3 ~@7", G: "~@8 d3@2 d3 ~ f#3@2 a3 ~",
  H: "~@4 e3 g3 a3 b3 d3@2 ~@6", I: "~ a3 b3 d4 ~@5 d4 e4 g4 ~ d4 e4 g4", J: "~@2 g4 ~ g4!2 ~ a4@2 a4 ~@6",
  K: "~@7 f#5 a4 e5 a4 d5 g4 b4 e4 a4", L: "~@4 e3 g3 a3 b3 d3 ~@7", M: "~@8 d3@2 ~ a3@3 ~ f#3",
  N: "g3@2 ~ d4@3 g3 c4@2 c4 b3 [b3,c4] a3 g3 ~ a3", O: "b3!2 a3@2 g3 e3@2 ~ d3!2 e3 ~@5",
  P: "~@6 g3 c4@2 c4 b3 [b3,c4] a3 g3 ~ a3", Q: "b3!2 a3@2 g3@2 e3@2 d3@2 ~ a3@2 g3@2 f#3",
  R: "g3!2 ~ d4 ~ c4 ~ b3 c4!2 b3 [b3,c4] a3 g3 ~ a3", S: "[b3!2 a3@2 g3 e3@2 ~ d3@10 d3 e3 g3 a3 b3 d4 a3@8]/2",
})).s("gm_electric_guitar_jazz").gain(0.26)

// other · electric guitar jazz · "Jazz guitar" · soft notes
const electric_guitar_jazz_2 = note("<~@58 [~@11 d3!2 e3 d3!2] [e3 d3!2 e3 d3!2 ~@10] ~@36>")
  .s("gm_electric_guitar_jazz").gain(0.15)

// other · string ensemble 2 · "Strings2"
const string_ensemble_2 = note(`<
  ~@24 A@2 B C D@2 E@2 B F G H@2 I@2 J K L M N@2 L M O@2 P Q P Q P Q P R S@4 T U@2 V W B C B C X Y@3 Z AA@2 AB@2 AA@2 AC
  AD AA@2 AE@2 AC Z AC ~@6
>`.pickRestart({
  A: "[~ f#3@2 e3]/2", B: "d3 f#3", C: "g3 f#3 e3@2", D: "[d3@2 a3@3 f#3 e3@2]/2", E: "[d3 f#3@2 e3]/2", F: "g3",
  G: "g3 f#3", H: "[g3 a3@3]/2", I: "[g3@3 f#3]/2", J: "~ a3 b3 d4 ~@5 d4 e4 g4 ~ d4 e4 g4, g3 a3",
  K: "~@2 g4 ~ g4!2 ~@3 a4 ~@6, a3@7 a4@2 ~@7, ~ d2", L: "e2", M: "d2", N: "[e2 a2@2 d2]/2", O: "[e2 a2@2 b3]/2",
  P: "c4", Q: "a3 b3", R: "~ d3", S: "[e3@3 d3]/2", T: "e3 c3", U: "[g3 d3@2 ~]/2", V: "~ f#3", W: "g3 e3", X: "d3",
  Y: "[g3 f#3 e3@8 ~@2]/3", Z: "~ e2", AA: "[f#2 b2@2 e2]/2", AB: "[f#2@5 ~ e2@2]/2", AC: "f#2", AD: "e2!2",
  AE: "[f#2@3 e2]/2",
})).s("gm_string_ensemble_2").gain(0.15)

// other · string ensemble 2 · "Strings2" · soft notes
const string_ensemble_2_soft = note("<~@90 [~ e2] [f#2 b2] [~ e2] [f#2 b2] ~@2>").s("gm_string_ensemble_2").gain(0.05)

// other · electric guitar jazz · "Jazz guitar"
const electric_guitar_jazz_3 = note(`<
  ~@4 A B C D E ~@3 F ~ A B G ~@2 H I ~@13 A B G ~@2 H I ~@15 J K L M N O P@2 Q ~@15 R S T U V W X ~ R S Y ~@5
>`.pickRestart({
  A: "~@12 b2@2 d3 ~", B: "f#3@2 a3 ~@13", C: "~@12 b3@2 d4 ~", D: "e3@2 d3 ~@5 g4!2 e4!2 d4!2 g4 e4",
  E: "d4!2 b3!2 a3!2 g3!2 d3@2 ~@6", F: "~ d3 e3 d3 a3 b3 g3 f#3 d3 ~@7", G: "~@4 a3 b3 d4 e4 f#3@2 ~@6",
  H: "~ f#3 g3 a3 ~@5 a3 b3 d4 ~ a3 b3 d4", I: "~@2 e4 ~ e4!2 ~ f#4@2 f#4 ~@6", J: "~@8 d3@2 ~ a3@3 ~ f#3",
  K: "g3@2 ~ d4@3 g3 c4@2 c4 b3 [b3,c4] a3 g3 ~ a3", L: "b3!2 a3@2 g3 e3@2 ~ d3!2 e3 d3!2 e3 ~@2",
  M: "~ d3!2 e3 ~@2 g3 c4@2 c4 b3 [b3,c4] a3 g3 ~ a3", N: "b3!2 a3@2 g3@2 e3@2 d3@2 ~ a3@2 g3@2 f#3",
  O: "g3!2 ~ d4 ~ c4 ~ b3 c4!2 b3 [b3,c4] a3 g3 ~ a3", // Cmaj7
  P: "[b3!2 a3@2 g3 e3@2 ~ d3@3 d3@7 ~@3 d3 g3@2 a3@3 a3@3 a3@2]/2", Q: "~ a3@3 ~@12", R: "~@8 e3@2 ~ b3@3 ~ g#3",
  S: "a3@2 ~ e4@3 a3 d4@2 d4 c#4 [c#4,d4] b3 a3 ~ b3", T: "c#4!2 b3@2 a3 f#3@2 ~ e3!2 f#3 e3!2 f#3 e3!2",
  U: "f#3 ~@5 a3 d4@2 d4 c#4 [c#4,d4] b3 a3 ~ b3", V: "c#4!2 b3@2 a3@2 f#3@2 e3@2 ~ b3@2 a3@2 g#3",
  W: "a3!2 ~ e4 ~ d4 ~ c#4 d4!2 c#4 [c#4,d4] b3 a3 ~ b3", X: "c#4!2 b3@2 a3 f#3@2 ~ e3@8",
  Y: "c#4!2 b3@2 a3 f#3@2 ~ e3!2 f#3 e3!2 f#3 ~@2",
})).s("gm_electric_guitar_jazz").gain(0.2)

// other · electric guitar jazz · "Jazz guitar" · soft notes
const electric_guitar_jazz_4 = note("<~@23 A ~@34 B C ~@23 D ~@6 E F G H I ~>".pickRestart({
  A: "~@7 f#5 a4 e5 a4 d5 g4 b4 e4 a4", B: "~@14 d3!2", C: "e3 ~@3 d3!2 ~@10", D: "~ e3!2 f#3 e3!2 ~@10",
  E: "~@14 e3!2", F: "f#3 e3!2 f#3 e3!2 a3 d4@2 d4 c#4 [c#4,d4] b3 a3 ~ b3",
  G: "c#4!2 b3@2 a3@2 f#3@2 e3@2 ~ b3@2 a3@2 g#3", H: "a3!2 ~ e4 ~ d4 ~ c#4 d4!2 c#4 [c#4,d4] b3 a3 ~ b3",
  I: "c#4!2 b3@2 a3 f#3@2 ~ e3@8",
})).s("gm_electric_guitar_jazz").gain(0.1)

// other · flute
const flute = note(`<
  ~@4 A B@2 C@2 ~@15 D B@2 E@2 B@2 C@2 ~@7 D B@2 E@2 B@2 C@2 ~@15 D B@2 E@2 B@2 F@2 G@2 H@2 G@2 I@2 G@2 H@2 G@2 I@2 G@2
  ~@5
>`.pickRestart({
  A: "~@7 d5 a5 ~ a5@4 g5 a5",
  B: "[b5@2 b5 c6 b5 a5 g5 f#5 e5 g5 [g5,a5] e5 g5@2 a5 b5@5 b5 c6 [a5,b5] g5 a5 ~ a5@4 g5 a5]/2", // Gsus2 Asus2
  C: "[b5@2 b5 c6 b5 a5 g5 f#5 e5 g5 [g5,a5] e5 g5@2 a5 g5@7 ~@10]/2", D: "~@8 a5 ~ a5@4 g5 a5",
  E: "[b5@2 b5 c6 b5 a5 g5 f#5 e5 g5!2 e5 g5@2 a5 g5@7 ~@2 a5 ~ a5@4 g5 a5]/2",
  F: "[b5@2 b5 c6 b5 a5 g5 f#5 e5 g5 [g5,a5] e5 g5@2 a5 a5@7 ~@2 b5 ~ b5@4 a5 b5]/2", // Gsus2
  G: "[c#6@2 c#6 d6 c#6 b5 a5 g#5 f#5 a5 [a5,b5] f#5 a5@2 b5 c#6@5 c#6 d6 [b5,c#6] a5 b5 ~ b5@4 a5 b5]/2", // Asus2 Bsus2
  H: "[c#6@2 c#6 d6 c#6 b5 a5 g#5 f#5 a5!2 f#5 a5@2 b5 a5@7 ~@2 b5 ~ b5@4 a5 b5]/2",
  I: "[c#6@2 c#6 d6 c#6 b5 a5 g#5 f#5 a5 [a5,b5] f#5 a5@2 b5 a5@7 ~@2 b5 ~ b5@4 a5 b5]/2", // Asus2
})).s("gm_flute").gain(0.2)

// other · flute · soft notes
const flute_soft = note("<~@91 A@2 B@2 ~>".pickRestart({
  A: "[c#6@2 c#6 d6 c#6 b5 a5 g#5 f#5 a5!2 f#5 a5@2 b5 a5@7 ~@2 b5 ~ b5@4 a5 b5]/2",
  B: "[c#6@2 c#6 d6 c#6 b5 a5 g#5 f#5 a5 [a5,b5] f#5 a5@2 b5 c#6@5 c#6 d6 [b5,c#6] a5 b5 ~ b5@4 ~@2]/2", // Asus2 Bsus2
})).s("gm_flute").gain(0.05)

// other · lead 2 sawtooth · "Sawtooth"
const lead_2_sawtooth = note("<~@48 A B C D C E C B ~@40>".pickRestart({
  A: "~@8 b3@2 ~ b3@2 ~ b3@2", B: "c4@2 ~ c4@2 ~ c4@2 c4@2 ~ c4@2 ~ c4@2", C: "a3@2 ~ a3@2 ~ a3@2 b3@2 ~ b3@2 ~ b3@2",
  D: "c4@2 ~ c4@2 ~ c4@2 g3@2 ~ g3@2 ~ g3@2", E: "c4@2 ~ c4@2 ~ c4@2 c4@2 ~ c4@2 ~ g3@2",
})).s("gm_lead_2_sawtooth").gain(0.15)

// other · string ensemble 1 · "Strings1"
const string_ensemble_1 = note("<~@24 A@4 B@5 ~@7 C@8 ~@24 D@16 E@6 ~@2>".pickRestart({
  A: "[~ d4@7]/4", B: "[b3 d4@4 d4@5]/5", C: "[~ d5@8 d5@7]/8", D: "[~ e5@8 e5@7]/8", E: "[~ e5@8 e5@3]/6",
})).s("gm_string_ensemble_1").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B@18 C D E F B@2 G B H@2 B H I J B@2 K D E F B@2 G B H L M@4 H@4 N H@5 O ~@8 F K P K B K Q K P K P K B K Q K L K
  J ~@5
>`.pickRestart({
  A: "~@2 x!2", B: "~@4 x ~@6 x!2 ~@3", C: "~@4 x!6 ~@5 x", D: "x ~@2 x ~@4 x ~@6 x", E: "x ~@3 x!6 ~ x ~@4",
  F: "~@11 x!2 ~@3", G: "~@4 x!6 ~ x ~@4", H: "~ x ~ x", I: "~@4 x!6 ~@6", J: "~ x ~@2", K: "~@4 x!6 ~ x!2 ~@3",
  L: "~@3 x", M: "~@3 x!2 ~@7 x ~@3", N: "~@4 x!6 ~@2 x ~@3", O: "~@4 x ~@6 x ~@3 x", P: "~@4 x!3 ~ x ~@2 x!2 ~@3",
  Q: "~@4 x!3 ~ x ~@3 x ~@3",
})).gain(0.41)

// drums · kick · soft notes
// … 73 more lines

More by The Corrs