Strudelify

Only When I Sleep

The Corrs

KeyB minorTempo95 bpm
0:00/0:00
// Only When I Sleep — The Corrs
// 95 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 75 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(95/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 · fiddle
const fiddle = note("<~@19 A B C D E@2 F G H ~@9 I J@2 K I L C K H ~@29>".pickRestart({
  A: "f#5@4 d6@3 c#6@4 b5@4 ~", B: "a5 c6 b5 a5", C: "g#5@4 d6@4 c#6@4 b5@3 ~", D: "b5@4 d6@4 c#6@4 b5@3 ~",
  E: "[b5@4 d6@4 c#6@3 b5@4 a5@4 ~ c6@4 b5@4 a5@4]/2", F: "g#5@4 d6@4 c#6@3 b5@3 ~@2", G: "b5 d6 c#6 a5", H: "f#5 ~@3",
  I: "f#5 d6 c#6 b5", J: "[a5@4 c6@4 b5@4 a5@3 g#5@4 ~ d6@4 c#6@4 b5@3 ~]/2", K: "b5@4 d6@3 c#6@4 ~ b5@4",
  L: "a5@3 c6@4 b5@4 ~ a5@4",
})).s("gm_fiddle").gain(0.2)

// other · violin
const violin = note("<~@45 A B C D C B C E F ~@3 G H I J@4 K L ~@9>".pickRestart({
  A: "f#5 b4!2 a4 b4 ~ b4 a4 b4 ~ b4 c#5 d5 c#5 d5 e5", B: "f#5 b4!2 a4 b4 ~ b4!2 b5 a5 f#5 e5 f#5 e5 d5 e5",
  C: "f#5 b4!2 a4 b4@2 b4 a4 b4 ~ b4 c#5 d5 c#5 d5 e5", D: "f#5 ~ f#5 g5 f#5 e5 d5 e5 f#5 b4!2 a4 b4 ~ b4!2",
  E: "f#5 ~ f#5 [f#5,g5] f#5 e5 d5 f#5@2 ~ e5@2 d5@2 c#5 [c#5,d5], ~@7 e5 ~@8", F: "b4 ~@3", G: "f#5 d6 c#6 b5",
  H: "a5 c6 b5 a5", I: "g#5@4 d6@4 c#6@4 b5@3 ~",
  J: "[b5@4 d6@3 c#6@4 b5@4 f#5@4 ~ d6@4 c#6@4 b5@3 a5@4 ~ c6@4 b5@4 a5@3 g#5@4 ~ d6@4 c#6@4 b5@3 ~]/4",
  K: "b5@4 d6@3 c#6@4 ~ a5@4", L: "b5@5 ~@3",
})).s("gm_violin").gain(0.64)

// other · acoustic guitar nylon · "Nylon guitar" · Asus2
const acoustic_guitar_nylon = note("<~@28 [a4@3 ~ a4@4 c5@3 b4@2 g4@2 [a4,b4]] [a4@5 ~@11] ~@45>")
  .s("gm_acoustic_guitar_nylon").gain(0.32)

// other · overdriven guitar · "Driven guitar"
const overdriven_guitar = note("<~@18 [a#2 b2 c#3 a#2 ~@4] ~@17 [a#2 b2 c#3 a#2 ~@4] ~@38>")
  .s("gm_overdriven_guitar").gain(0.36)

// bass · fretless bass
const bass = note(`<
  ~ A B C D E F G H I J I J I J K L K M N L J O N L J O N J I J I J K L K M N L J O N L J O N L J O N L J O P Q P R S Q
  T U S Q T V A B C D E F W X Y@2
>`.pickRestart({
  A: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", B: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ f#1@2",
  C: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", D: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1@2",
  E: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@2 e1 ~ e1@2", F: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1@2",
  G: "b1 ~ b1@2 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1@2", H: "~@2 e1@2 e1 ~ f#1 ~ f#1 ~ a1 ~ a1@4", I: "b1!4 a1!4", J: "e1!8",
  K: "g1!8", L: "d2!8", M: "f#1!8", N: "b1!8", O: "e1!4 a1!4", P: "g1!2 g2 g1!3 g2 g1", Q: "d2!2 d3 d2!3 d3 d2",
  R: "f#1!2 f#2 f#1!2 f#2 f#1 f#2", S: "b1!2 b2 b1!3 b2 b1", T: "e1!2 e2 e1!3 e2 e1", U: "e1!2 e2 e1 a1 a2 a1!2",
  V: "e1!2 e2 e1 a1 a2 a1 a2", W: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2 g1 ~ g1@2",
  X: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ f#1@2", Y: "[b1@2 ~@4 b1@23 ~@3]/2",
})).s("gm_fretless_bass").gain(0.17)

// chords · epiano1 · "Rhodes"
const epiano1 = note(`<
  ~ A@4 B@2 C@2 ~ D E F G F H I J K L M N O L P N O Q F G F G R J I H K L P N O L P N O L P N O L P N O S T S U V W X Y
  V T X Y A@4 Z@6
>`.pickRestart({
  A: "[c#4@2 ~@2 f#3@2 c#4@2 ~@2 f#3@2 c#4@2 ~@2 f#3@2 c#4@2 ~@2 f#3@2 ~@4 f#3@2 ~@2 c#4@2 ~@2 f#3@2 c#4@2 ~@2 f#3@2 c#4@2 ~@2 f#3@2 ~@6 c#4@2 ~ c#4 ~@3 c#4, ~@2 b3@2 ~@4 b3@2 ~@4 b3@2 ~@4 b3@2 ~@3 f#3@2 c#4@2 ~@2 f#3@2 ~@2 c#4@2 ~@4 c#4@2 ~@4 c#4@2 ~ c#4@2 b3@2 f#3@2 ~@5 d4@2 ~, ~@3 c#4@2 ~@4 c#4@2 ~@4 c#4@2 ~@4 c#4@2 ~ c#4@2 b3@2 ~@2 b3@2 ~@2 b3@2 ~@4 b3@2 ~@4 b3@2 ~@3 f#3@2 c#4@2 b3@2 ~ d4@2 c#4@2 b3@2]/4",
  B: "[~ b3 ~@2 f#3@2 c#4@2 ~@2 f#3@2 c#4@2 ~@2 f#3@2 c#4@2 ~@4 c#4@2 ~@2 f#3@2 b3@2, c#4@2 b3@2 ~@4 b3@2 ~@4 b3@2 ~@4 b3@2 f#3@2 ~@3 c#4@2 ~@3, ~@3 c#4@2 ~@4 c#4@2 ~@4 c#4@2 ~@4 c#4@2 b3@2 ~ b3@2 ~@4]/2",
  C: "[c#4@2 b3@2 f#3@2 c#4@2 ~@2 f#3@2 c#4@2 ~ c#4@2 b3 [e3,b3]@2 [e3,b3]@2 [f#3,d4]@2 [f#3,d4]@2 [f#3,c#4]@2 [f#3,c#4]@4, ~@8 b3@2 ~@4 b3@3 ~@15, ~@9 c#4@2 ~@21]/2", // E5 D F#5
  D: "~@2 a4@2 ~ a4 ~ e5 ~ a4 ~@4 g#4@2, ~@4 e5@2 a4@2 e5@2 a4@3 a4@3, ~@11 e5@5", E: "[d4,e4] d4@7 [c#4,a4]@8, b4 ~",
  F: "~@2 a4@2 ~ a4 ~ e5 ~ a4 ~ e5 ~ a4 ~ e5, ~@2 e5 a4 e5 a4 e5 g#4", G: "d4 d4@7 [c#4,a4]@8, b4 ~", H: "g4!16",
  I: "d4!16", J: "g4 ~ g4!14", K: "f#4!16", L: "~@4 e4@3 d4, b4, ~ f#4@3", M: "[f#4,a4,c5]@7 ~",
  N: "~@4 a4@3 g#4, e5, ~ b4@3", O: "[g4,b4,e5]@4 [c#4,e4,a4]@3 ~", P: "[f#4,a4,d5]@7 ~", Q: "[d4,e4] d4@15, b4",
  R: "~@2 a4@2 ~ a4 ~ e5 ~ a4 ~ e5 ~@3 e5, ~@2 e5 a4 e5 a4 e5 g#4, ~@13 a4@3",
  S: "[d5,g5,b5]@3 [d5,g5,b5] [d5,g5,b5]@12", T: "f#5 ~@6 d5, d5 ~ a4@8 a4@6, ~@3 d5@3 e5@2",
  U: "a#5 ~@5 g#5@2, f#5 ~ c#5@8 c#5@6, ~@3 f#5@3 ~@2", V: "[f#4,b4,d5]@3 [f#4,b4,d5] [f#4,b4,d5]@12",
  W: "f#5 ~@4 d5@3, d5 ~@5 a4@10", X: "[b4,e5,g#5]@3 [b4,e5,g#5] [b4,e5,g#5]@12",
  Y: "g5 ~@2 e5 e4 ~ b4@2, e5 ~ b4@6 a4@4 ~@4, ~@5 e4@3",
  Z: "[~ b3 ~@2 f#3@2 c#4@2 ~@2 f#3@2 c#4@2 ~@2 f#3@2 c#4@2 ~@18 c#4@2 ~@24 [b3,f#4] c#4@2 ~@3 [b2,f#3]@24 ~@2, c#4@2 b3@2 ~@4 b3@2 ~@4 b3@2 ~@4 b3@2 f#3@2 f#4@2 c#4@2 b3@2 f#3@2 c#4@2 b3@2 f#3@2 ~@3 c#4@2 b3@2 f#4@2 c#4@2 b3@2 f#3@2 c#4@2 b3@2 f#3@2 c#4@2 b3@2 f#3@2 ~@31, ~@3 c#4@2 ~@4 c#4@2 ~@4 c#4@2 ~@4 c#4@2 b3@2 f#3@2 f#4@2 c#4@2 b3@2 f#3@2 c#4@2 b3@2 ~ b3@2 f#4@2 c#4@2 b3@2 f#3@2 c#4@2 b3@2 f#3@2 c#4@2 b3@2 f#3@2 c#4@2 ~@32]/6", // B5
})).s("gm_epiano1").gain(0.14).pan(0.7)

// chords · epiano1 · "Rhodes" · soft notes
const epiano1_soft = note("<~ A B C D A E@2 ~@57 A B C D A F G ~@3>".pickRestart({
  A: "~@5 b3@2 f#3@2 ~@2 b3@2 f#3@2 ~", B: "~ b3@2 f#3@2 ~@2 b3@2 ~@4 b3 ~@2",
  C: "~ b3 ~@3 b3@2 f#3@2 ~@2 b3@2 f#3@2 ~", D: "~ b3@2 ~@6 f#3@2 ~@5",
  E: "[~ b3@2 f#3@2 ~@4 f#3@2 ~@2 b3 ~ f#3@2 b3 ~ c#4@2 b3@2 f#3@2 ~@2 b3@2 f#3@2 ~]/2", F: "~ b3@2 f#3@2 ~@11",
  G: "~@7 f#3@2 ~@7",
})).s("gm_epiano1").gain(0.09).pan(0.7)

// chords · acoustic guitar steel · "Steel guitar"
const acoustic_guitar_steel = note(`<
  ~ A B C D E B A F G H G I@2 H J@2 K@3 L M N O P Q R S@3 H G T U@5 V W X Y Z AA AB AC V W X Y Z AA AB AD AE AD AF AG AE
  AH AI AG AE AH AI AJ AK AL AM AN AK AJ AN AO@2
>`.pickRestart({
  A: "~ f#4 ~ f#4 ~ f#4 ~ f#4, b3!4", B: "b3 f#4 b3 f#4 b3 f#4 ~ f#4, ~@3 b3", C: "~ f#4 ~ f#4 ~ f#4 b3 f#4, b3!3 ~",
  D: "~ f#4 ~ f#4 b3 f#4 ~ f#4, b3!2 ~ b3", E: "b3 f#4 ~ f#4 ~ f#4 b3 f#4, ~ b3!2 ~",
  F: "b3 f#4 ~ f#4 ~ f#4 ~ f#4, ~ b3!3", G: "~@3 d4@2 ~@3, ~ f#3@4 ~@3, ~@2 c#4@3 ~@3",
  H: "~@5 f#4@3, ~ e4@3, ~@3 b4@5", I: "[~@10 f#4@7 ~@5 d4@4 ~@6, ~@4 e4@13 ~ f#3@8 ~@6, ~@3 b4@6 ~ c#4@3 ~@3]/2",
  J: "[~@3 g3 ~@3 d4@2 e4 d4 d5 ~@2 e4 d4, ~@2 d4@5 ~ d4@4 g3@6 ~@8 a4@6, ~@4 a3@5 ~ a3@7 ~@7 d5@6 ~@2]/2",
  K: "[~@6 g3@2 ~@6 d4@3 ~@5 f#4@2 ~@8 b3!6 b3@2 b3!8, ~@2 d4@6 d4@4 g3@6 ~@2 g#4@5 ~ g#4@8 ~@14, ~@2 a3@2 ~ a3@4 c#5@3 c#5@5 ~@7, ~@14 f#4@3 ~@7]/3",
  L: "d4!6 d4@2 d4!8", M: "e4!12 e4@2 e4@2", N: "e4!8 a3!8", O: "b3!6 b3@2 b3!4 b3@2 b3@2",
  P: "d4!6 d4@2 d4!4 d4@2 d4@2", Q: "e4!16", R: "e4!8 a3!6 a3@2",
  S: "[~@6 d4@12 ~@8 f#4@7 ~@5 d4@4 ~@6, ~ f#3@8 ~@2 b4@6 ~ c#4@3 ~@3, ~@4 c#4@14 ~@2 e4@13 ~ f#3@8 ~@6]/3",
  T: "~@3 e4, ~ e4@2 ~, ~@3 b4@5, ~@5 f#4@3",
  U: "[~@6 g3@2 ~@6 d4@3 ~@5 d4@2 ~@4 d4@6 ~@4 g3@2 ~@6 d4@4 c#5@2 ~@2 f#4@2 ~@8 b3!12 b3@2 b3@2, ~@2 d4@6 d4@4 g3@6 ~@2 e4@5 ~ e4@8 d4@5 ~ d4@4 g3@6 ~@6 c#5@4 f#4@6 ~@14, ~@4 a3@4 ~@2 a3@8 a4@6 a4@10 ~@2 a3@5 ~ a3@7 ~@3 g#4@5 ~ g#4@7 ~@15, ~@31 c#5@2 ~@7]/5",
  V: "d4!16", W: "e4!6 e4@2 e4!4 e4@2 e4@2", X: "e4!6 e4@2 a3!4 a3@2 a3@2", Y: "b3!16", Z: "d4!14 d4@2",
  AA: "e4!6 e4@2 e4!8", AB: "e4!6 e4@2 a3!8", AC: "b3!12 b3@2 b3@2", AD: "[d4,g4]!15 g4", AE: "[a4,d5]!15 d5",
  AF: "[c#5,f#5]!15 f#5", AG: "[f#4,b4]!15 b4", AH: "[b4,e5]!15 e5", AI: "[b4,e5]!8 [e4,a4]!7 a4",
  AJ: "~ f#4 ~ a3 ~ f#4 ~ a3, b3 d4 b3 d4", AK: "b3 f#4 d4 a3 b3 f#4 ~ a3, ~@3 d4",
  AL: "~ f#4 ~ a3 ~ f#4 d4 a3, b3 d4 b3 ~", AM: "~ f#4 ~ a3 b3 f#4 ~ a3, b3 d4 ~ d4",
  AN: "b3 f#4 ~ a3 ~ f#4 d4 a3, ~ d4 b3 ~", AO: "[[b3,f#4]@2 ~@4 [a3,d4]@23 ~@3]/2",
})).s("gm_acoustic_guitar_steel").gain(0.13).pan(0.3)

// chords · pad warm · "Warm pad"
const pad_warm = note(`<
  ~@2 A@7 B C B D E F G H I J K L M N K L M N O D E F E F I L I J P H Q R P H Q R P H Q R P H Q R S T U V W T X Y W T X
  Y Z AA@8 ~
>`.pickRestart({
  A: "[~@5 b5@2, f#5, ~@3 f#4@4, ~@9 c#6@5]/7", B: "[b3,f#4] [a3,e4]", C: "[e4,b4]", D: "~ f#5, [e4,b4]",
  E: "[b3,f#4,b4] [a3,e4,a4]", F: "[e4,b4,e5]", G: "[g3,a3,b4]", H: "[d4,e4,f#5]", I: "[g3,a3,d4]", J: "[f#4,g#4,c#5]",
  K: "[b3,c#4,f#4]", L: "[d4,e4,a4]", M: "[e4,f#4,g#5]", N: "[e4,f#4,g5] [a3,b3,c#5]", O: "[b3,f#4]", P: "[b3,c#4,d5]",
  Q: "[e4,f#4,b4]", R: "[e4,f#4,b4] [a3,b3,e4]", S: "[g4,a4,d5]", T: "[d5,e5,a5]", U: "[g4,b4,d5]", V: "[f#5,a#5,c#6]",
  W: "[b4,c#5,f#5]", X: "[e5,g#5,b5]", Y: "[e5,g5,b5] [a4,c#5,e5]", Z: "b4",
  AA: "[~@5 c#6 ~@5 c#6 ~@2 b6@2, ~@3 b4@29, ~@2 f#5@5 f#5@9, ~@3 b5@3 b5@2, ~@9 f#6@7]/8",
})).s("gm_pad_warm").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~ A@7 B A@6 C@12 A@5 D C@20 A@20 E ~>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~ x!2 ~ x ~ x", C: "x!2 ~@2 x!2 ~ x", D: "x ~@2 x!2 ~@2 x", E: "~@3 x ~@4",
})).gain(0.16)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@3 B A@2 B C A@3 B A@3 B A@3 B A@3 B A@3 B A@3 D A@3 B A@3 B A@3 B A@3 B A@3 B A@3 E A@3 F A@3 E A@3 B A@3 B G ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~ x ~@2 x ~ x ~", D: "~@2 x ~@2 x!2 ~", E: "~ x ~@2 x ~@3 x ~ x ~ x ~ x ~",
  F: "~@4 x ~@4 x ~@2 x ~ x ~", G: "x",
})).gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~ [x!8]!8 ~@10 [x!8]!8 ~@10 [x!8]!36 [~ x ~@2] ~>").gain(0.1)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@9 A@3 B A@3 B A B A B A B A B A B A B A@3 B A B A B A B A B A B A B A B A B A B A B ~@22
>`.pickRestart({
  A: "x!8", B: "x!7 ~",
})).gain(0.16)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 [~@4 x ~@2 x ~ x ~@6]!8 ~@10 [~@4 x ~@2 x ~ x ~@6]!36 [~@2 x!2 ~@12] ~>")
  .gain(0.12)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@19 A ~@2
>`.pickRestart({
  A: "~@7 x",
})).gain(0.16)

// drums · high tom
const high_tom = s("ht").struct("<~@19 [~@3 x]!8 ~@10 [~@3 x]!31 ~ [~@3 x]!4 [~ x ~@14] ~>").gain(0.12)

// drums · crash
const crash = s("cr").struct(`<
  A B ~@3 B ~ C D B ~@7 B ~@7 B ~@7 B ~@7 B ~@7 B ~@7 B ~@7 B ~@3 B ~@2 D E ~
>`.pickRestart({
  A: "~@13 x!3", B: "x", C: "~@7 x", D: "~@3 x", E: "~@3 x ~@4",
})).gain(0.14)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<[~@8 x!5 ~@3] ~@74>").gain(0.02)

// drums · ride bell
const ride_bell = s("rd").struct("<~ A B@3 A B@2 ~@45 B@4 A B@7 A B@3 A B@2 C ~@2>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x!3 ~",
})).gain(0.12)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~ A B A B A B A B A B A B A B@13 A B A B A B@21 A B@3 A B A B A B@3 A B A B A B A B ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2",
})).gain(0.36)

stack(
  fiddle, violin, acoustic_guitar_nylon, overdriven_guitar, bass, epiano1, epiano1_soft, acoustic_guitar_steel,
  pad_warm, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash, crash_soft, ride_bell, bongos
)

More by The Corrs