Strudelify

Dreams

The Corrs

KeyA minorTempo125 bpm
0:00/0:00
// Dreams — The Corrs
// 125 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 122 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(125/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.

// bass · synth bass 2
const bass = note(`<
  ~@22 A B C D E F G H I D J D K L K M K N O D E B P Q A R G Q A B G H S F T D ~@4 A R T N U R G D S V P H S V G Q S B T
  D O N J M J N I L O W O X E F C N S F C N A F P Q E R C N E B P N U V C D ~@4
>`.pickRestart({
  A: "a1 ~@2 g1 ~@2 a1 ~@3 a1 ~@3 g1@2", B: "d1 ~@2 d1 ~@2 d1 ~@3 d1 ~@3 d1 ~", C: "f1@2 ~ f1 ~@2 f1 ~@3 f1 ~@3 f1@2",
  D: "g1 ~@2 g1 ~@2 g1 ~@3 d1 ~ e1 ~ g1@2", E: "a1@2 ~ g1 ~@2 a1 ~@3 a1 ~@3 g1@2",
  F: "d1 ~@2 d1 ~@2 d1 ~@3 d1 ~@3 d1@2", G: "f1 ~@2 f1 ~@2 f1 ~@3 f1 ~@3 f1 ~",
  H: "g1@2 ~ g1 ~@2 g1 ~@3 d1 ~ e1 ~ g1 ~", I: "f1 ~@2 f1 ~@2 f1 ~@3 f1@2 ~@2 d1 ~",
  J: "f1 ~@2 f1 ~@2 f1 ~@3 f1@2 ~@2 d1@2", K: "f1 ~@2 f1 ~@2 f1 ~@3 f1 ~@3 d1 ~",
  L: "g1 ~@2 g1 ~@2 g1 ~@3 d1 ~ e1@2 g1@2", M: "g1 ~@2 g1 ~@2 g1 ~@3 d1@2 e1@2 g1 ~",
  N: "g1 ~@2 g1 ~@2 g1 ~@3 d1 ~ e1 ~ g1 ~", O: "f1 ~@2 f1 ~@2 f1 ~@3 f1 ~@3 d1@2",
  P: "f1 ~@2 f1 ~@2 f1 ~@3 f1 ~@3 f1@2", Q: "g1@2 ~ g1 ~@2 g1 ~@3 d1 ~ e1 ~ g1@2",
  R: "d1@2 ~ d1 ~@2 d1 ~@3 d1 ~@3 d1@2", S: "a1 ~@2 g1 ~@2 a1 ~@3 a1 ~@3 g1 ~", T: "f1@2 ~ f1 ~@2 f1 ~@3 f1 ~@3 f1 ~",
  U: "a1@2 ~ g1 ~@2 a1 ~@3 a1 ~@3 g1 ~", V: "d1@2 ~ d1 ~@2 d1 ~@3 d1 ~@3 d1 ~",
  W: "g1 ~@2 g1 ~@2 g1 ~@3 d1 ~ e1@2 g1 ~", X: "g1 ~@2 g1 ~@2 g1 ~@3 d1@2 e1 ~ g1 ~",
})).s("gm_synth_bass_2").gain(0.37)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@6 A B C D A B C D A B C D A B C D A B C D A B C D C D C D C D C D C D C D A B C D A B C D A B C D A B C D ~@8 A B C
  D A B C D A B C D A B C D C D C D C D C D C D C D A B C D A B C D A B C D A B C D A B C D A B C D ~@4
>`.pickRestart({
  A: "~@5 c4@3, a2, ~ a3@7, ~@2 c4@3 ~@3, ~@3 b3@5", B: "~@5 c4@3, d3, ~ a3@7, ~@2 c4@3 ~@3, ~@3 b3@5",
  C: "~@5 c4@3, f3, ~ a3@7, ~@2 c4@3 ~@3, ~@3 b3@5", D: "~@7 c4, g3@3 g3@3 g3@2, ~ c4@3 c4@3 ~, ~@2 b3@3 b3@3",
})).s("gm_acoustic_guitar_steel").gain(0.22)

// other · pan flute
const pan_flute = note(`<
  ~@14 A@2 B@2 C@2 ~@2 D@2 E@2 F@2 G@2 H@3 I@2 J@2 K L M@2 N O@3 ~ P@4 Q@3 ~ R@2 S T U@2 ~@6 V@2 W@2 X@3 ~ Y@2 Z@2 AA@4
  AB@3 AC@2 J@2 AD AE AF@2 ~ AG@3 ~ AH@4 AI@4 AJ@2 S AK AL T AL T AL T AL T AL ~@3
>`.pickRestart({
  A: "[~@4 a4@3 ~ c5 ~ d5@2 ~@2 e5@5 ~ d5@2 c5@4 a4 ~ c5@3 ~]/2", B: "[~@4 a4 ~ c5@4 a4 ~ d5@6 a4 ~ a4@5 ~@7]/2",
  C: "[~@4 a4@4 c5@2 d5@2 ~@2 e5@5 ~ d5@2 c5@3 ~ d5 ~ a4@4]/2",
  D: "[~@4 a5 ~ a5@4 g5 ~ c6@2 b5@6 g5 ~ g5@2 ~@2 g5@5 ~]/2",
  E: "[e5@2 ~@2 e5 ~ e5@2 ~@2 e5@2 ~@2 e5@6 a4@4 ~@6 a4@2]/2", F: "[e5@2 a4 ~@5 e5@4 a4 ~ e5@4 d5@6 c5@2 a4 ~ d5@4]/2",
  G: "[c5@9 ~ a4 ~ a4 ~ e5@5 ~ d5@4 c5@3 ~ c5@2 a4 ~]/2",
  H: "[d5@3 ~ c5@2 ~@2 c5@4 d5 ~ d5@4 c5@5 ~@3 a4 ~ a4 ~ e5@5 ~ d5@4 c5@4 a4@2 e5@2]/3",
  I: "[d5 ~ d5@2 c5@3 ~ d5 ~ d5 ~ d5@2 c5@15 ~@3]/2", J: "[~@6 d5 ~ d5 ~ e5@2 d5@2 c5@15 ~@3]/2",
  K: "~@6 c5 ~ c5 ~ c5 ~ a5@4", L: "g5@15 ~", M: "[~@6 d5 ~ d5 ~ e5 ~ d5@2 c5@18]/2", N: "~@12 e5@3 ~",
  O: "[e5@2 ~@2 e5@2 ~@2 e5 ~ e5@2 ~@2 e5@4 d5 ~ d5@4 c5 ~ c5@3 ~ d5@6 a4@11 ~]/3",
  P: "[e5 ~ e5@2 ~@4 e5 ~ e5@2 ~@2 a5@4 g5 ~ g5@4 e5 ~ e5@3 ~ e5@6 d5@2 c5@12 ~@10 e5@3 ~]/4",
  Q: "[e5@2 e5@2 ~@4 e5 ~ e5@2 ~@2 e5@5 ~ d5@3 ~ c5@2 g4@4 b4@4 a4@12 ~@2]/3",
  R: "[e5@2 ~@2 e5 ~ e5@2 ~@2 e5@2 ~@2 a5@4 g5 ~ g5@4 e5@3 ~ e5@3 ~]/2", S: "d5@4 c5@11 ~", T: "~ e5",
  U: "[d5@4 c5@17 ~@11]/2", V: "[~@4 a4@3 ~ c5 ~ d5@2 ~@2 e5@5 ~ [c5,d5] ~ c5@4 a4 ~ c5@3 ~]/2",
  W: "[~@4 a4 ~ c5@3 ~ a4 ~ d5@6 a4 ~ a4@4 ~@8]/2",
  X: "[~@4 a4@3 ~ c5 ~ d5@2 ~@2 e5@4 ~@2 d5@3 ~ c5@2 g4@3 ~ a4@7 ~@11]/3",
  Y: "[~@2 a5 ~ a5 ~ a5@4 g5 ~ c6@2 b5@6 g5 ~ g5@2 ~@2 g5@5 ~]/2",
  Z: "[e5@2 ~@2 e5 ~ e5@2 ~@2 e5@2 ~@2 e5@5 ~@11 e5 ~]/2",
  AA: "[e5@2 a4@2 ~@4 e5@2 a4@2 ~@2 e5@5 ~ d5@3 ~ c5@3 ~ g4 ~ a4@5 ~@7 g4 ~ g4 ~ e5@5 ~ d5@4 c5@2 ~@2 c5@2 a4 ~]/4",
  AB: "[d5@3 ~ c5@2 ~@2 c5@4 d5 ~ d5@4 c5@4 ~@4 a4 ~ a4 ~ e5@5 ~ d5@4 c5@4 a4@2 e5@2]/3",
  AC: "[d5 ~ d5@2 c5@4 d5 ~ d5 ~ d5@2 c5@15 ~@3]/2", AD: "~@6 c5 ~ c5 ~ c5 ~ a5@3 ~", AE: "g5@11 ~ d5@4",
  AF: "[~@2 c5@2 ~@4 d5 ~ e5@2 d5@2 c5@14 ~@4]/2",
  AG: "[e5@2 ~@2 e5@2 ~@2 e5 ~ e5@2 ~@2 e5@4 d5 ~ d5@4 c5 ~ c5@2 ~@2 d5@6 a4@10 ~@2]/3",
  AH: "[e5 ~ e5@2 ~@4 e5 ~ e5@2 ~@2 a5@4 g5 ~ g5@4 e5 ~ e5@3 ~ e5@6 d5@2 c5@12 ~@10 e5@2 ~@2]/4",
  AI: "[e5 ~ e5@2 ~@4 e5 ~ e5@2 ~@2 e5@4 ~@2 d5@3 ~ c5@2 g4@3 ~ b4@4 c5@2 b4@2 a4@16 ~@10]/4",
  AJ: "[e5@2 ~@2 e5 ~ e5@2 ~@2 e5@3 ~ a5@4 g5 ~ g5@4 e5@3 ~ e5@4]/2", AK: "~@8 e5@7 ~", AL: "d5 c5@3",
})).s("gm_pan_flute").gain(0.39)

// chords · piano
const piano = note("<~@42 A@3 ~ B@3 ~@5 C@2 D@2 E ~@35 A@3 ~ B@3 ~@5 C@2 D@2 E F E F E F E ~@5>".pickRestart({
  A: "[[e4,g4,c5]@2 [e4,g4,c5]@2 [e4,g4,c5] [e4,g4,c5]@2 [e4,g4,c5]@2 [c4,e4,a4] [c4,e4,a4]@2 [c4,e4,g4] [c4,e4,g4]@2 [c4,f4,a4]@3 [c4,f4,a4]@6]/3", // C Am C F
  B: "[[g4,c5,e5] [g4,c5,e5]@3 [g4,c5,e5] [g4,c5,e5]@2 [c5,e5,a5]@2 [c5,e5,g5] [c5,e5,g5]@2 [c5,e5,g5] [c5,e5,g5]@2 e5@3 d5 c5@5, ~@5 [f4,a4]@3]/3", // C Am C F
  C: "[[g4,c5,e5]@2 [g4,c5,e5] [g4,c5,e5]@2 [g4,c5,e5]@2 [c5,e5,a5]@2 [g4,d5,g5] [g4,d5,g5]@2 [g4,c5,e5]@2 [g4,c5,e5]@2]/2", // C Am G5 C
  D: "[[f4,a4,c5]@3 [g4,c5,e5]]/2", E: "[e4,a4,c5]", F: "~ [g4,c5,e5]",
})).s("gm_piano").gain(0.02)

// chords · pad halo
const pad_halo = note("<~ A@8 ~@49 B@8 ~@56>".pickRestart({
  A: "[~ [e4,a4]@15]/8", B: "[a3,e4,a4]/8",
})).s("gm_pad_halo").gain(0.03)

// other · pad sweep
const pad_sweep = note("<~@3 A@4 B@3 C D E F ~@48 C D E F ~@56>".pickRestart({
  A: "[~ d5@7]/4", B: "e5/3", C: "g5", D: "d5", E: "c5", F: "b4",
})).s("gm_pad_sweep").gain(0.15)

// other · fiddle
const fiddle = note(`<
  ~@5 A B C D E B C D F ~@16 B C D C B C G C G C H@2 ~@7 A B C D C H@2 I J K L K M K L K N O@2 ~@9 P Q ~@3 B C D C B C G
  C G C H@2 ~@7 A B C D C H@2 I J K L K M K L K R ~@4
>`.pickRestart({
  A: "~@6 e5 ~ e5@2 d5@2 c5@2 b4@2", B: "a4", C: "b4", D: "c5", E: "b4@6 e5 ~ e5@2 d5@2 c5@2 b4@2",
  F: "b4@4 a4 b4 a4 g4", G: "c5@14 d5 c5", H: "g5/2", I: "d5", J: "g4", K: "e5 a4@2 a4 c5 b4 c5 d5",
  L: "e5 a4@2 a4 a5 g5 e5 d5", M: "e5@4 e5@2 f5 e5@3 d5@2 c5@2 d5@2", N: "e5@4 e5@2 f5 e5@3 d5@2 c5@2 b4@2", O: "a4/2",
  P: "~ f4 e4 d4 e4@2 e4 a4", Q: "a3", R: "e5@4 e5@2 f5 e5@3 d5@2 c5@2 ~@2",
})).s("gm_fiddle").gain(0.11).pan(0.1)

// other · piccolo
const piccolo = note(`<
  ~@5 A B C D E B C D F ~@16 B C D C B C G C G C H@2 ~@7 A B C D C ~@4 I J I K I J I L M@2 ~@14 B C D C B C G C G C H@2
  ~@7 A B C D C ~@4 I J I K I J I N ~@4
>`.pickRestart({
  A: "~@6 e6 ~ e6@2 d6@2 c6@2 b5@2", B: "a5", C: "b5", D: "c6", E: "b5@6 e6 ~ e6@2 d6@2 c6@2 b5@2",
  F: "b5@4 a5 b5 a5 g5", G: "c6@14 d6 c6", H: "g6/2", I: "e6 a5@2 a5 c6 b5 c6 d6", J: "e6 a5@2 a5 a6 g6 e6 d6",
  K: "e6@4 e6@2 f6 e6@3 d6@2 c6@2 d6@2", L: "e6@4 e6@2 f6 e6@3 d6@2 c6@2 b5@2", M: "a5/2",
  N: "e6@4 e6@2 f6 e6@3 d6@2 c6@2 ~@2",
})).s("gm_piccolo").gain(0.08).pan(0.9)

// other · violin
const violin = note("<~@8 A B ~@3 A B ~@54 C@2 ~@51>".pickRestart({
  A: "~@3 b4@5 g4@3 e4@2 g4@3", B: "e4@3 ~@5", C: "[~@4 a3 b3 a3@10]/2",
})).s("gm_violin").gain(0.25)

// other · acoustic guitar steel
const acoustic_guitar_steel_2 = note("<~@48 A@2 ~@50 A@2 ~@6 A@2 ~@6 A@2 ~@4>".pickRestart({
  A: "[~ c5@2 b4@2 g4@2 c4@2 a4@2 g4@5]/2",
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.3)

// chords · synth strings 2
const synth_strings_2 = note(`<
  ~ A@8 ~@49 B@8 C@2 D@2 C@2 E@2 C@2 D@2 C@2 E@2 F G F G F G F G F G F G ~@28
>`.pickRestart({
  A: "[~ g3@15]/8", B: "[g3,e4,g4]/8", C: "[e3 d3, [a3,c4]]/2", D: "[[f3,a3] [d3,g3], c4]/2",
  E: "[[f3,a3] [g3,d4], c4]/2", F: "[f3,a3,c4]", G: "[g3,b3,d4]",
})).s("gm_synth_strings_2").gain(0.04)

// drums · kick
const kick = s("bd").struct("<~@3 A@11 ~@8 A@19 ~ A@16 ~@4 A@31 ~ A@24 ~@4>".pickRestart({
  A: "x!4",
})).gain(0.4)

// drums · clap
const clap = s("cp").struct("<~@3 [~ x ~ x]!115 ~@4>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<[x!2] [x!4] ~ [x!2 ~ x!3 ~ x!3 ~ x!3 ~ x]!55 ~@4 [x!2 ~ x!3 ~ x!3 ~ x!3 ~ x]!56 ~@4>")
  .gain(0.25)

// drums · open hat
const open_hat = s("oh").struct("<~@3 [~ x ~ x ~ x ~ x]!55 ~@4 [~ x ~ x ~ x ~ x]!56 ~@4>").gain(0.25)

// drums · crash
const crash = s("cr").struct("<~@42 A ~@51 A ~@7 A ~@7 A ~@11>".pickRestart({
  A: "x",
})).gain(0.3)

// drums · mt
const mt = s("mt").struct("<~@3 [x ~@2 x ~@3 x]!55 ~@8 [x ~@2 x ~@3 x]!52 ~@4>").gain(0.2)

// drums · shaker
const shaker = s("sh").struct("<~@3 [x!8]!115 ~@4>").gain(0.25)

// drums · lt
const lt = s("lt").struct("<~@3 [x ~@2 x!2 ~ x!2 ~ x!2 ~@5]!115 ~@4>").gain(0.25)

stack(
  bass, acoustic_guitar_steel, pan_flute, piano, pad_halo, pad_sweep, fiddle, piccolo, violin, acoustic_guitar_steel_2,
  synth_strings_2, kick, clap, hihat, open_hat, crash, mt, shaker, lt
)

More by The Corrs